Re: switching ARC to 64-bit time_t (Re: [RFC v6 07/23] RISC-V: Use 64-bit time_t and off_t for RV32 and RV64)

Joseph Myers
2020-02-25T00:04:14Z

On Mon, 24 Feb 2020, Lukasz Majewski wrote:

> I'm probably not aware of something - but as done in the following
> patch:
>
> https://github.com/lmajewski/y2038_glibc/commit/c96eeb73175961c4ac80fdd3b6adc132805387c9
>
> I do need to remove librt_hidden_proto / librt_hidden_def to have
> proper symbols visible when I do want to use redirections.

You'll need to explain the actual problem you see, because
lib<name>_hidden_proto / lib<name>_hidden_def are correct for any symbol
that satisfies both of the following properties: (a) it is exported from
shared lib<name> (whether at a public symbol version or version
GLIBC_PRIVATE) and (b) it is also used within the library that defines it.
They are useless but harmless for other symbols.

lib<name>_hidden_proto / lib<name>_hidden_def always need to be used
together, and always need to have <name> matching the name of the shared
library with the symbol. In C code, lib<name>_hidden_proto causes the
function, for both definition and calls, to be redirected to an internal,
hidden-visibility alias, while lib<name>_hidden_def then adds back the
exported name as a non-hidden alias to cause it to be exported from the
shared library in question.

It's true that the redirection from lib<name>_hidden_proto doesn't work
when there is another redirection for the same symbol in effect, but that
should not be a concern here (there should be no reason to have an asm
redirection from __mq_timedreceive_time64 to another name, for example).

--
Joseph S. Myers
joseph@codesourcery.com