From f98c2306a0857ad3f8800f91e0554a27adc7f675 Mon Sep 17 00:00:00 2001 From: grischka Date: Wed, 18 Apr 2012 18:48:26 +0200 Subject: [PATCH] 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) --- libtcc.c | 1 + tcc.h | 3 +++ tccelf.c | 4 ++-- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/libtcc.c b/libtcc.c index 1c5e6199..c6b8d382 100644 --- a/libtcc.c +++ b/libtcc.c @@ -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, diff --git a/tcc.h b/tcc.h index 3e297a10..95d50301 100644 --- a/tcc.h +++ b/tcc.h @@ -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 */ diff --git a/tccelf.c b/tccelf.c index 04975d9f..90e48155 100644 --- a/tccelf.c +++ b/tccelf.c @@ -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); -- 2.11.4.GIT