summaryrefslogtreecommitdiff
path: root/rts/linker/elf_got.c
diff options
context:
space:
mode:
Diffstat (limited to 'rts/linker/elf_got.c')
-rw-r--r--rts/linker/elf_got.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/rts/linker/elf_got.c b/rts/linker/elf_got.c
index 9be2490a17..83d0f39a4e 100644
--- a/rts/linker/elf_got.c
+++ b/rts/linker/elf_got.c
@@ -86,9 +86,13 @@ fillGot(ObjectCode * oc) {
if(0x0 == symbol->addr) {
symbol->addr = lookupSymbol_(symbol->name);
if(0x0 == symbol->addr) {
- errorBelch("Failed to lookup symbol: %s\n",
- symbol->name);
- return EXIT_FAILURE;
+ if(0 == strncmp(symbol->name,"_GLOBAL_OFFSET_TABLE_",21)) {
+ symbol->addr = oc->info->got_start;
+ } else {
+ errorBelch("Failed to lookup symbol: %s\n",
+ symbol->name);
+ return EXIT_FAILURE;
+ }
}
} else {
// we already have the address.