tccelf.c: Reset sym after call to build_got.

The call to build_got can cause symtab_section->data to be reallocated
(build_got -> add_elf_sym -> put_elf_sym -> section_ptr_add ->
section_realloc -> tcc_realloc). This is not obvious on a cursory
inspection, but fortunately Valgrind spotted it immediately.
Are there other, similar bugs that Valgrind did not detect?
This commit is contained in:
Edmund Grimley Evans 2015-10-16 20:33:41 +01:00
parent 743684fe39
commit f0b7566181

View File

@ -1446,8 +1446,10 @@ ST_FUNC void build_got_entries(TCCState *s1)
break;
}
if (!s1->got)
if (!s1->got) {
build_got(s1);
sym = &((ElfW(Sym) *)symtab_section->data)[sym_index];
}
if (type == R_X86_64_GOT32 || type == R_X86_64_GOTPCREL ||
type == R_X86_64_PLT32) {
unsigned long ofs;