Преглед изворни кода

- 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 година
родитељ
комит
e737aa03ea
1 измењених фајлова са 4 додато и 0 уклоњено
  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)