[PATCH 1/5] glibc: Perform rseq(2) registration at C startup and thread creation (v10)
Florian Weimer
fweimer@redhat.com
Fri Jun 14 13:09:00 GMT 2019
* Mathieu Desnoyers:
> But my original issue remains: if I define a variable called __rseq_handled
> within either the main executable or the preloaded library, it overshadows
> the libc one:
>
> efficios@compudjdev:~/test/libc-sym$ ./a
> __rseq_handled main: 0 0x56135fd5102c
> __rseq_abi.cpu_id main: 29 0x7fcbeca6d5a0
> efficios@compudjdev:~/test/libc-sym$ LD_PRELOAD=./s.so ./a
> __rseq_handled s.so: 0 0x558f70aeb02c
> __rseq_abi.cpu_id s.so: -1 0x7fdca78b7760
> __rseq_handled main: 0 0x558f70aeb02c
> __rseq_abi.cpu_id main: 27 0x7fdca78b7760
>
> Which is unexpected.
Why is this unexpected? It has to be this way if the main program uses
a copy relocation of __rseq_handled. As long as there is just one
address across the entire program and ld.so initializes the copy of the
variable that is actually used, everything will be fine.
Thanks,
Florian
More information about the Libc-alpha
mailing list