ldso: remove redundant runtime checks in static TLS logic
authorRich Felker <dalias@aerifal.cx>
Sun, 11 Aug 2019 15:57:38 +0000 (11:57 -0400)
committerRich Felker <dalias@aerifal.cx>
Sun, 11 Aug 2019 15:57:38 +0000 (11:57 -0400)
as a result of commit ffab43602b5900c86b7040abdda8ccf6cdec95f5,
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.

ldso/dynlink.c

index 93ef363..531811c 100644 (file)
@@ -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;
 
                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 "
                                "resolves to dynamic definition in %s",
                                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
 #endif
                case REL_TLSDESC:
                        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);
                                if (!new) {
                                        error(