Browse Source

aarch64: Apply relocations to use TLS GD access model.

In aarch64 when the general dynamic access model is used for tls data
the linker emits two dynamic relocs (R_AARCH64_TLS_DTPMOD(64) and
R_AARCH64_TLS_DTPREL(64)) that must be applied by ld.so during object
loading.

Signed-off-by: Dmitry Chestnykh <dm.chestnykh@gmail.com>
Dmitry Chestnykh 2 weeks ago
parent
commit
225478e84d
1 changed files with 6 additions and 0 deletions
  1. 6 0
      ldso/ldso/aarch64/elfinterp.c

+ 6 - 0
ldso/ldso/aarch64/elfinterp.c

@@ -238,6 +238,12 @@ _dl_do_reloc (struct elf_resolve *tpnt, struct r_scope_elem *scope,
 					}
 				}
 			break;
+		case R_AARCH64_TLS_DTPMOD:
+			*reloc_addr = tls_tpnt->l_tls_modid;
+			break;
+		case R_AARCH64_TLS_DTPREL:
+			*reloc_addr = symbol_addr + rpnt->r_addend;
+			break;
 #endif
 		default:
 			return -1; /*call _dl_exit(1) */