rtld/arm64: Remove checks for undefined symbols when processing TPREL64
lld emits several GOT relocations referencing the null sumbol in libc.so when compiled with -ftls-model=initial-exec. This symbol is specified to be undefined. We generally do not handle dynamic TLS relocations against weak, undefined symbols, so avoid printing a warning here. This makes it possible to compile libc.so using the initial-exec TLS model on arm64. Reviewed by: jrtc27, kib MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D31069
This commit is contained in:
parent
ad1f608fb2
commit
f238ebd142
@ -479,25 +479,8 @@ reloc_non_plt(Obj_Entry *obj, Obj_Entry *obj_rtld, int flags,
|
|||||||
return (-1);
|
return (-1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* Test weak undefined thread variable */
|
*where = def->st_value + rela->r_addend +
|
||||||
if (def->st_shndx != SHN_UNDEF) {
|
defobj->tlsoffset;
|
||||||
*where = def->st_value + rela->r_addend +
|
|
||||||
defobj->tlsoffset;
|
|
||||||
} else {
|
|
||||||
/*
|
|
||||||
* XXX We should relocate undefined thread
|
|
||||||
* weak variable address to NULL, but how?
|
|
||||||
* Can we return error in this situation?
|
|
||||||
*/
|
|
||||||
rtld_printf("%s: Unable to relocate undefined "
|
|
||||||
"weak TLS variable\n", obj->path);
|
|
||||||
#if 0
|
|
||||||
return (-1);
|
|
||||||
#else
|
|
||||||
*where = def->st_value + rela->r_addend +
|
|
||||||
defobj->tlsoffset;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user