Skip to content
  • Florian Bezdeka's avatar
    y2038: lib/cobalt: Implement necessary wrappers for y2038 support · c2b88344
    Florian Bezdeka authored and Jan Kiszka's avatar Jan Kiszka committed
    
    
    COBALT_IMPL_TIME64():
      This macro is based on COBALT_IMPL() and will add the necessary
      __wrap_ function as weak symbol to the cobalt implementation
      (starting with __cobalt_) when y2038 support has been requested.
      This allows the usage of the __RT() macro in combination with
      y2038/time64 wrappers.
    
    COBALT_DECL_TIME64():
      This macro is based on COBALT_DECL() and allows the usage of __STD()
      in combination with y2038/time64 wrappers.
    
    Both macros will fall back to their basements if y2038 support was
    not requested.
    
    Examples, assuming code is located in application code:
      select():       will be redirected by glibc to __select64() when
                      y2038 support is requested. We additionally wrap the
                      __select64() function so __wrap___select64() will be
                      called - which is a weak symbol aliased to
                      __cobalt_select(). That allows users to overwrite
                      __wrap___select64() if they need to.
    
      __RT(select()): result after preprocessor: __cobalt_select()
                      __cobalt_select() is y2038 safe when y2038 has been
                      requested.
    
    Signed-off-by: default avatarFlorian Bezdeka <florian.bezdeka@siemens.com>
    Signed-off-by: default avatarJan Kiszka <jan.kiszka@siemens.com>
    c2b88344