run: Always create .got relocs
When output is memory we applied the correct GOT offset for certain relocations (e.g. _GOT32), but we forgot to actually fill the got entries with the final symbol values, so unconditionally create relocs against .got as well.
This commit is contained in:
parent
f2c8491fc0
commit
2024c44541
1 changed files with 7 additions and 0 deletions
7
tccelf.c
7
tccelf.c
|
|
@ -1173,6 +1173,13 @@ static unsigned long put_got_entry(TCCState *s1,
|
||||||
put_elf_reloc(s1->dynsym, s1->got,
|
put_elf_reloc(s1->dynsym, s1->got,
|
||||||
s1->got->data_offset,
|
s1->got->data_offset,
|
||||||
reloc_type, index);
|
reloc_type, index);
|
||||||
|
} else {
|
||||||
|
/* Without .dynsym (i.e. static link or memory output) we
|
||||||
|
still need relocs against the generated got, so as to fill
|
||||||
|
the entries with the symbol values (determined later). */
|
||||||
|
put_elf_reloc(symtab_section, s1->got,
|
||||||
|
s1->got->data_offset,
|
||||||
|
reloc_type, sym_index);
|
||||||
}
|
}
|
||||||
/* And now create the GOT slot itself. */
|
/* And now create the GOT slot itself. */
|
||||||
ptr = section_ptr_add(s1->got, PTR_SIZE);
|
ptr = section_ptr_add(s1->got, PTR_SIZE);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue