Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix linking to 64-bit time_t versions of functions on musl #14895

Merged
merged 1 commit into from
Feb 20, 2023

Commits on Feb 19, 2023

  1. Fix linking to 64-bit time_t versions of functions on musl

    musl switched to 64-bit time_t across all architectures in version
    1.2.0:
    
    https://musl.libc.org/time64.html
    
    This change was done in a way which attempted to preserve ABI
    compatibility. To achieve this, the 32-bit versions of functions were
    left at their original names in the compiled library, and new 64-bit
    versions of functions were introduced. The header files then
    redirected calls to the standard function names to use the new 64-bit
    versions using the __asm__("name") construct, which is similar to D's
    pragma(mangle, "name").
    
    This change is a fix-up for commit
    ca0b670, which tried addressing this
    change in musl by changing time_t to 64-bit when targeting new musl
    versions (the default). However, that change was incomplete, as it did
    not implement the function redirection part of the change, which is
    required to actually call the implementations using 64-bit time_t. As
    a result, it caused programs to link but return incorrect results at
    runtime on 32-bit architectures when targeting new musl versions.
    
    Fix this by adjusting the mangled name of the D declarations of
    affected functions when targeting musl on 32-bit platforms.  Affected
    functions in musl can be found by grepping for _REDIR_TIME64 and uses
    of the __REDIR macro.
    
    Fixes issue 23608.
    CyberShadow committed Feb 19, 2023
    Configuration menu
    Copy the full SHA
    c13f8b5 View commit details
    Browse the repository at this point in the history