aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Preud'homme <robotux@celest.fr>2016-11-12 23:16:09 +0800
committerThomas Preud'homme <robotux@celest.fr>2016-12-03 17:26:51 +0000
commitc4bec037be0da6bfd19484c34cc19e358cbb6822 (patch)
treebe88d5d1b6b97ec3b57571831fad5b847b0b0163
parent25927df3b75c5ce2b64ab8acdcc5974b4e1c89c1 (diff)
downloadtinycc-c4bec037be0da6bfd19484c34cc19e358cbb6822.tar.gz
tinycc-c4bec037be0da6bfd19484c34cc19e358cbb6822.tar.bz2
Code simplification in relocate_syms
-rw-r--r--tccelf.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/tccelf.c b/tccelf.c
index f2210a3..b9f1634 100644
--- a/tccelf.c
+++ b/tccelf.c
@@ -665,11 +665,9 @@ ST_FUNC void relocate_syms(TCCState *s1, int do_resolve)
/* Use ld.so to resolve symbol for us (for tcc -run) */
if (do_resolve) {
#if defined TCC_IS_NATIVE && !defined TCC_TARGET_PE
- void *addr;
- name = (char *) symtab_section->link->data + sym->st_name;
- addr = dlsym(RTLD_DEFAULT, name);
+ void *addr = dlsym(RTLD_DEFAULT, name);
if (addr) {
- sym->st_value = (addr_t)addr;
+ sym->st_value = (addr_t) addr;
#ifdef DEBUG_RELOC
printf ("relocate_sym: %s -> 0x%lx\n", name, sym->st_value);
#endif
@@ -686,11 +684,10 @@ ST_FUNC void relocate_syms(TCCState *s1, int do_resolve)
/* only weak symbols are accepted to be undefined. Their
value is zero */
sym_bind = ELFW(ST_BIND)(sym->st_info);
- if (sym_bind == STB_WEAK) {
+ if (sym_bind == STB_WEAK)
sym->st_value = 0;
- } else {
+ else
tcc_error_noabort("undefined symbol '%s'", name);
- }
} else if (sh_num < SHN_LORESERVE) {
/* add section base */
sym->st_value += s1->sections[sym->st_shndx]->sh_addr;