mirror of
https://github.com/mirror/tinycc.git
synced 2024-12-28 04:00:06 +08:00
Control symbol table of which to relocate symbols
Pass pointer to symbol table to relocate the symbols of in relocate_syms
This commit is contained in:
parent
c4bec037be
commit
097cf3aa5e
2
tcc.h
2
tcc.h
@ -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);
|
||||
|
||||
|
6
tccelf.c
6
tccelf.c
@ -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;
|
||||
|
2
tccpe.c
2
tccpe.c
@ -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) {
|
||||
|
Loading…
Reference in New Issue
Block a user