Proposed CHOST change for the 64bit time_t transition

Bruno Haible bruno@clisp.org
Sat Sep 7 00:24:06 GMT 2024


Arsen Arsenović wrote:
> An alternative that I pondered was to teach the linker about some notion
> of "compatibility strings" that it would compare and reject if
> different, plus teaching the compiler how to emit those, plus teaching
> glibc to tell the compiler to emit those..  We could have key-value
> pairs in some section.  For each key K, we could have the linker check
> that, for each (shared or otherwise) object either does not contain K or
> contains K with the same value as all the other ones, and produce an
> error otherwise.  On the resulting object, the KV pairs would be the
> union of all KV pairs of all constituent objects.

This sounds much like the arm eabi attributes: If a .s file does not
start with
        .eabi_attribute 20, 1
        .eabi_attribute 21, 1
        .eabi_attribute 23, 3
        .eabi_attribute 24, 1
        .eabi_attribute 25, 1
        .eabi_attribute 26, 2
        .eabi_attribute 30, 2
        .eabi_attribute 34, 0
        .eabi_attribute 18, 4
the resulting .o file cannot be linked with other .o files on the system.

Is it a hassle even for packages that don't use time_t of off_t (such as
GNU libffcall or libffi).

Yes, it would be useful to have a way to have the linker warn if a binary
that depends on 32-bit time_t and a binary that depends on 64-bit time_t
get linked together. But PLEASE implement this in a way that is a no-op
when time_t is not used by either of the two binaries.

Bruno





More information about the Libc-alpha mailing list