Sfoglia il codice sorgente

- Fix thumb2 PIE (Joseph S. Myers)
This patch fixes position-independent executables (PIEs) for Thumb-2. In
Thumb assembly, instructions reading pc give a value 4 greater than the
address of the instruction, rather than 8 greater as in ARM mode, so the
offset to the GOT needs to have the right offset. (The Thumb-1 code
already gets this right; it's the code shared by ARM and Thumb-2 that
needs fixing.)

Bernhard Reutner-Fischer 15 anni fa
parent
commit
e737aa03ea
1 ha cambiato i file con 4 aggiunte e 0 eliminazioni
  1. 4 0
      libc/sysdeps/linux/arm/crt1.S

+ 4 - 0
libc/sysdeps/linux/arm/crt1.S

@@ -238,7 +238,11 @@ _start:
 
 #ifdef __PIC__
 .L_GOT:
+#ifdef __thumb__
+	.word	_GLOBAL_OFFSET_TABLE_-(.L_GOT_OFF+4)
+#else /* __thumb2__ */
 	.word	_GLOBAL_OFFSET_TABLE_-(.L_GOT_OFF+8)
+#endif
 	.word _fini(GOT)
 	.word _init(GOT)
 	.word main(GOT)