From b5c2620bee9fb698c642fa609ee03d6a87ac1552 Mon Sep 17 00:00:00 2001 From: Julian Brown Date: Thu, 22 Oct 2009 19:22:35 +0000 Subject: [PATCH] Fix locating GOT for Thumb-2 PIE binaries. * sysdeps/arm/elf/start.S (_start): Avoid dependency on PC pipeline offset. --- ChangeLog.arm | 5 +++++ sysdeps/arm/elf/start.S | 6 +++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/ChangeLog.arm b/ChangeLog.arm index 4fcce61..643a071 100644 --- a/ChangeLog.arm +++ b/ChangeLog.arm @@ -1,3 +1,8 @@ +2009-10-22 Julian Brown + + * sysdeps/arm/elf/start.S (_start): Avoid dependency on PC pipeline + offset. + 2009-10-03 Joseph Myers * sysdeps/unix/sysv/linux/arm/bits/fcntl.h: Define F_SETOWN_EX and diff --git a/sysdeps/arm/elf/start.S b/sysdeps/arm/elf/start.S index 0cf4339..d21102e 100644 --- a/sysdeps/arm/elf/start.S +++ b/sysdeps/arm/elf/start.S @@ -87,8 +87,8 @@ _start: #ifdef SHARED ldr sl, .L_GOT -.L_GOT_OFF: - add sl, pc, sl + adr a4, .L_GOT + add sl, sl, a4 ldr ip, .L_GOT+4 /* __libc_csu_fini */ ldr ip, [sl, ip] @@ -125,7 +125,7 @@ _start: #ifdef SHARED .L_GOT: - .word _GLOBAL_OFFSET_TABLE_-(.L_GOT_OFF+8) + .word _GLOBAL_OFFSET_TABLE_ - .L_GOT .word __libc_csu_fini(GOT) .word __libc_csu_init(GOT) .word main(GOT) -- 2.7.4