From b5e22384836d5c09602d5cf6fe990485299dfbf0 Mon Sep 17 00:00:00 2001 From: grischka Date: Sat, 19 Dec 2009 19:12:33 +0100 Subject: [PATCH] tccasm: make VT_VOID symbols ST_NOTYPE, elf-wise This was confusing objdump such that it did not print disassembly with -d. Also, put filename as with C compilation --- libtcc.c | 2 ++ tccasm.c | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/libtcc.c b/libtcc.c index 54184e20..9a04a9e8 100644 --- a/libtcc.c +++ b/libtcc.c @@ -780,6 +780,8 @@ static void put_extern_sym2(Sym *sym, Section *section, if (FUNC_CALL(attr) == FUNC_STDCALL) other |= 2; #endif + } else if ((sym->type.t & VT_BTYPE) == VT_VOID) { + sym_type = STT_NOTYPE; } else { sym_type = STT_OBJECT; } diff --git a/tccasm.c b/tccasm.c index 6862ef50..56bf6cd0 100644 --- a/tccasm.c +++ b/tccasm.c @@ -712,6 +712,12 @@ static int tcc_assemble(TCCState *s1, int do_preprocess) define_start = define_stack; + /* an elf symbol of type STT_FILE must be put so that STB_LOCAL + symbols can be safely used */ + put_elf_sym(symtab_section, 0, 0, + ELFW(ST_INFO)(STB_LOCAL, STT_FILE), 0, + SHN_ABS, file->filename); + ret = tcc_assemble_internal(s1, do_preprocess); cur_text_section->data_offset = ind;