提交 71af5309 编写于 作者: R Rich Felker

ldso: remove redundant runtime checks in static TLS logic

as a result of commit ffab4360,
static_tls_cnt is now valid during relocations at program startup, so
it's no longer necessary to condition the check against static_tls_cnt
on this being a runtime (dlopen) relocation.
上级 ffab4360
...@@ -390,7 +390,7 @@ static void do_relocs(struct dso *dso, size_t *rel, size_t rel_size, size_t stri ...@@ -390,7 +390,7 @@ static void do_relocs(struct dso *dso, size_t *rel, size_t rel_size, size_t stri
tls_val = def.sym ? def.sym->st_value : 0; tls_val = def.sym ? def.sym->st_value : 0;
if ((type == REL_TPOFF || type == REL_TPOFF_NEG) if ((type == REL_TPOFF || type == REL_TPOFF_NEG)
&& runtime && def.dso->tls_id > static_tls_cnt) { && def.dso->tls_id > static_tls_cnt) {
error("Error relocating %s: %s: initial-exec TLS " error("Error relocating %s: %s: initial-exec TLS "
"resolves to dynamic definition in %s", "resolves to dynamic definition in %s",
dso->name, name, def.dso->name); dso->name, name, def.dso->name);
...@@ -450,7 +450,7 @@ static void do_relocs(struct dso *dso, size_t *rel, size_t rel_size, size_t stri ...@@ -450,7 +450,7 @@ static void do_relocs(struct dso *dso, size_t *rel, size_t rel_size, size_t stri
#endif #endif
case REL_TLSDESC: case REL_TLSDESC:
if (stride<3) addend = reloc_addr[1]; if (stride<3) addend = reloc_addr[1];
if (runtime && def.dso->tls_id > static_tls_cnt) { if (def.dso->tls_id > static_tls_cnt) {
struct td_index *new = malloc(sizeof *new); struct td_index *new = malloc(sizeof *new);
if (!new) { if (!new) {
error( error(
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册