History

fix: enforce bcheck.o linking when -b option is used

fixes a crash for the empry program (tcc -b empty.c) empty.c: int main() { return 0; }

seyko committed 11 years ago

Commit a1058371 parent cde79a82 files · +10 −1Browse files

Unified · Split

2 files
  1. Makefile +6 −0
  2. tccelf.c +4 −1
Makefile+6−0
@@ -140,6 +140,7 @@ PROGS_CROSS=$($(X64_CROSS)_LINK) $($(WIN32_CROSS)_LINK) $($(WIN64_CROSS)_LINK) $ · 139 unmodified lines
140140 LIBTCC1_CROSS=lib/i386-win/libtcc1.a lib/x86_64-win/libtcc1.a lib/i386/libtcc1.a lib/x86_64/libtcc1.a \
141141 lib/arm64/libtcc1.a
142142 LIBTCC1=libtcc1.a
143+BCHECK=yes
143144 else ifeq ($(ARCH),x86-64)
144145 NATIVE_FILES=$(X86_64_FILES)
145146 PROGS_CROSS=$($(I386_CROSS)_LINK) $($(WIN32_CROSS)_LINK) $($(WIN64_CROSS)_LINK) $(ARM_CROSS) $(ARM64_CROSS) $(C67_CROSS) $(WINCE_CROSS)
@@ -283,6 +284,10 @@ install: $(PROGS) $(TCCLIBS) $(TCCDOCS) · 137 unmodified lines
283284 ifneq ($(LIBTCC1),)
284285 mkdir -p "$(tccdir)/$(ARCH)"
285286 $(INSTALL) -m644 $(LIBTCC1) "$(tccdir)/$(ARCH)"
287+endif
288+ifneq ($(BCHECK),)
289+ -mkdir -p "$(tccdir)/$(ARCH)"
290+ $(INSTALL) -m644 lib/$(ARCH)/bcheck.o "$(tccdir)/$(ARCH)"
286291 endif
287292 $(INSTALL) -m644 $(addprefix $(top_srcdir)/include/,$(TCC_INCLUDES)) $(top_srcdir)/tcclib.h "$(tccdir)/include"
288293 mkdir -p "$(libdir)"
@@ -303,6 +308,7 @@ ifdef CONFIG_CROSS · 14 unmodified lines
303308 mkdir -p "$(tccdir)/arm64"
304309 $(INSTALL) -m644 lib/arm64/libtcc1.a "$(tccdir)/arm64"
305310 $(INSTALL) -m644 lib/i386/libtcc1.a "$(tccdir)/i386"
311+ $(INSTALL) -m644 lib/i386/bcheck.o "$(tccdir)/i386"
306312 $(INSTALL) -m644 lib/x86_64/libtcc1.a "$(tccdir)/x86-64"
307313 $(INSTALL) -m644 $(top_srcdir)/win32/lib/*.def "$(tccdir)/win32/lib"
308314 $(INSTALL) -m644 lib/i386-win/libtcc1.a "$(tccdir)/win32/lib/32"
tccelf.c+4−1
@@ -1564,7 +1564,10 @@ ST_FUNC void tcc_add_bcheck(TCCState *s1) · 1563 unmodified lines
15641564 pinit = section_ptr_add(init_section, 5);
15651565 pinit[0] = 0xe8;
15661566 put32(pinit + 1, -4);
1567− sym_index = find_elf_sym(symtab_section, "__bound_init");
1567+ tcc_add_support(s1, "bcheck.o");
1568+ sym_index = find_elf_sym(symtab_section, "__bound_init");
1569+ if (!sym_index)
1570+ tcc_error("__bound_init not defined");
15681571 put_elf_reloc(symtab_section, init_section,
15691572 init_section->data_offset - 4, R_386_PC32, sym_index);
15701573 }

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t