Control symbol table of which to relocate symbols

Pass pointer to symbol table to relocate the symbols of in relocate_syms
master
Thomas Preud'homme 2016-11-12 23:16:09 +08:00
parent c4bec037be
commit 097cf3aa5e
4 changed files with 6 additions and 6 deletions

2
tcc.h
View File

@ -1375,7 +1375,7 @@ ST_FUNC void put_stabn(int type, int other, int desc, int value);
ST_FUNC void put_stabd(int type, int other, int desc);
ST_FUNC void relocate_common_syms(void);
ST_FUNC void relocate_syms(TCCState *s1, int do_resolve);
ST_FUNC void relocate_syms(TCCState *s1, Section *symtab, int do_resolve);
ST_FUNC void relocate_section(TCCState *s1, Section *s);
ST_FUNC void relocate_plt(TCCState *s1);

View File

@ -652,13 +652,13 @@ ST_FUNC void relocate_common_syms(void)
/* relocate symbol table, resolve undefined symbols if do_resolve is
true and output error if undefined symbol. */
ST_FUNC void relocate_syms(TCCState *s1, int do_resolve)
ST_FUNC void relocate_syms(TCCState *s1, Section *symtab, int do_resolve)
{
ElfW(Sym) *sym;
int sym_bind, sh_num;
const char *name;
for_each_elem(symtab_section, 1, sym, ElfW(Sym)) {
for_each_elem(symtab, 1, sym, ElfW(Sym)) {
sh_num = sym->st_shndx;
if (sh_num == SHN_UNDEF) {
name = (char *) strtab_section->data + sym->st_name;
@ -1898,7 +1898,7 @@ static int final_sections_reloc(TCCState *s1)
int i;
Section *s;
relocate_syms(s1, 0);
relocate_syms(s1, s1->symtab, 0);
if (s1->nb_errors != 0)
return -1;

View File

@ -1872,7 +1872,7 @@ ST_FUNC int pe_output_file(TCCState *s1, const char *filename)
;
else if (filename) {
pe_assign_addresses(&pe);
relocate_syms(s1, 0);
relocate_syms(s1, s1->symtab, 0);
for (i = 1; i < s1->nb_sections; ++i) {
Section *s = s1->sections[i];
if (s->reloc) {

View File

@ -211,7 +211,7 @@ static int tcc_relocate_ex(TCCState *s1, void *ptr)
}
/* relocate symbols */
relocate_syms(s1, 1);
relocate_syms(s1, s1->symtab, 1);
if (s1->nb_errors)
return -1;