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);
|
||||
}
|
||||
}
|
||||
/* Test weak undefined thread variable */
|
||||
if (def->st_shndx != SHN_UNDEF) {
|
||||
*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;
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user