Fix STT_NOTYPE problem on win32
Since 'make undefined global symbol STT_NOTYPE' change win32 code did not build any more.
This commit is contained in:
parent
ded713e90d
commit
fc8c01861b
1 changed files with 2 additions and 0 deletions
2
tccelf.c
2
tccelf.c
|
@ -176,11 +176,13 @@ ST_FUNC void tccelf_end_file(TCCState *s1)
|
|||
if (sym->st_shndx == SHN_UNDEF
|
||||
&& ELFW(ST_BIND)(sym->st_info) == STB_LOCAL)
|
||||
sym->st_info = ELFW(ST_INFO)(STB_GLOBAL, ELFW(ST_TYPE)(sym->st_info));
|
||||
#ifndef TCC_TARGET_PE
|
||||
/* An ELF relocatable file should have the types of its undefined global symbol set
|
||||
to STT_NOTYPE or it will confuse binutils bfd */
|
||||
if (s1->output_format == TCC_OUTPUT_FORMAT_ELF && s1->output_type == TCC_OUTPUT_OBJ)
|
||||
if (sym->st_shndx == SHN_UNDEF && ELFW(ST_BIND)(sym->st_info) == STB_GLOBAL)
|
||||
sym->st_info = ELFW(ST_INFO)(STB_GLOBAL, ELFW(ST_TYPE)(STT_NOTYPE));
|
||||
#endif
|
||||
tr[i] = set_elf_sym(s, sym->st_value, sym->st_size, sym->st_info,
|
||||
sym->st_other, sym->st_shndx, (char*)s->link->data + sym->st_name);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue