diff options
| author | grischka <grischka> | 2012-04-18 18:48:26 +0200 |
|---|---|---|
| committer | grischka <grischka> | 2012-04-18 18:48:26 +0200 |
| commit | f98c2306a0857ad3f8800f91e0554a27adc7f675 (patch) | |
| tree | ee3546311e05e66d1bce05d1cff80915f6b1b4df | |
| parent | 32a411914b5bc5ad9549c43f25c737d891016f68 (diff) | |
| download | tinycc-f98c2306a0857ad3f8800f91e0554a27adc7f675.tar.gz tinycc-f98c2306a0857ad3f8800f91e0554a27adc7f675.tar.bz2 | |
libtcc: tcc_get_symbol uses the TCCState parameter
This allows using tcc_get_symbol on some other than the
current TCCState. (Suggested by David Mertens)
| -rw-r--r-- | libtcc.c | 1 | ||||
| -rw-r--r-- | tcc.h | 3 | ||||
| -rw-r--r-- | tccelf.c | 4 |
3 files changed, 6 insertions, 2 deletions
@@ -1001,6 +1001,7 @@ LIBTCCAPI TCCState *tcc_new(void) ".strtab", ".hashtab", SHF_PRIVATE); strtab_section = symtab_section->link; + s->symtab = symtab_section; /* private symbol table for dynamic symbols */ s->dynsymtab_section = new_symtab(s, ".dynsymtab", SHT_SYMTAB, SHF_PRIVATE, @@ -527,6 +527,9 @@ struct TCCState { /* exported dynamic symbol section */ Section *dynsym; + /* copy of the gobal symtab_section variable */ + Section *symtab; + int nostdinc; /* if true, no standard headers are added */ int nostdlib; /* if true, no standard libraries are added */ int nocommon; /* if true, do not use common symbols for .bss data */ @@ -162,8 +162,8 @@ static void *get_elf_sym_addr(TCCState *s, const char *name, int err) int sym_index; ElfW(Sym) *sym; - sym_index = find_elf_sym(symtab_section, name); - sym = &((ElfW(Sym) *)symtab_section->data)[sym_index]; + sym_index = find_elf_sym(s->symtab, name); + sym = &((ElfW(Sym) *)s->symtab->data)[sym_index]; if (!sym_index || sym->st_shndx == SHN_UNDEF) { if (err) tcc_error("%s not defined", name); |
