aboutsummaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
authorAndrew Chambers <[email protected]>2021-10-19 18:06:48 +1300
committerAndrew Chambers <[email protected]>2021-10-19 18:06:48 +1300
commit1c1f00f7079748a9c8e98e4e540387b5dc1f283d (patch)
treee556baa02a6c44ee38105bcecadb86a8e6a6e1b0 /main.c
parentd3d9aab47bf323d4d6ae590ee8b7cd556ef61cb7 (diff)
Properly reinit the symtab.
Diffstat (limited to 'main.c')
-rw-r--r--main.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/main.c b/main.c
index 8713b0c..9463860 100644
--- a/main.c
+++ b/main.c
@@ -125,8 +125,6 @@ getsection(const char* name)
static void
initsections(void)
{
- Elf64_Sym elfsym;
-
shstrtab = newsection();
secaddbyte(shstrtab, 0);
shstrtab->hdr.sh_name = elfstr(shstrtab, ".shstrtab");
@@ -142,8 +140,6 @@ initsections(void)
symtab->hdr.sh_type = SHT_SYMTAB;
symtab->hdr.sh_link = strtab->idx;
symtab->hdr.sh_entsize = sizeof(Elf64_Sym);
- memset(&elfsym, 0, sizeof(elfsym));
- secaddbytes(symtab, &elfsym, sizeof(Elf64_Sym));
bss = newsection();
bss->hdr.sh_name = elfstr(shstrtab, ".bss");
@@ -875,9 +871,13 @@ addtosymtab(Symbol* sym)
static void
fillsymtab(void)
{
+ Elf64_Sym elfsym;
Symbol* sym;
size_t i;
+ memset(&elfsym, 0, sizeof(elfsym));
+ secaddbytes(symtab, &elfsym, sizeof(Elf64_Sym));
+
// Local symbols
for (i = 0; i < symbols->cap; i++) {
if (!symbols->keys[i].str)