fix visibility mismatch in dynamic linker stage 2 function definition
since commits2907afb8dband6fc30c2493, __dls2 is no longer called via symbol lookup, but instead uses relative addressing that needs to be resolved at link time. on some linker versions, and/or if -Bsymbolic-functions is not used, the linker may leave behind a dynamic relocation, which is not suitable for bootstrapping the dynamic linker, if the reference to __dls2 is marked hidden but the definition is not actually hidden. correcting the definition to use hidden visibility fixes the problem. the static-PIE entry point rcrt1 was likewise affected and is also fixed by this patch.
This commit is contained in:
@@ -1330,6 +1330,7 @@ static void update_tls_size()
|
||||
* linker itself, but some of the relocations performed may need to be
|
||||
* replaced later due to copy relocations in the main program. */
|
||||
|
||||
__attribute__((__visibility__("hidden")))
|
||||
void __dls2(unsigned char *base, size_t *sp)
|
||||
{
|
||||
if (DL_FDPIC) {
|
||||
|
||||
Reference in New Issue
Block a user