fixes a crash for the empry program (tcc -b empty.c) empty.c: int main() { return 0; }
Unified · Split
| @@ -140,6 +140,7 @@ PROGS_CROSS=$($(X64_CROSS)_LINK) $($(WIN32_CROSS)_LINK) $($(WIN64_CROSS)_LINK) $ · 139 unmodified lines | ||
| 140 | 140 | LIBTCC1_CROSS=lib/i386-win/libtcc1.a lib/x86_64-win/libtcc1.a lib/i386/libtcc1.a lib/x86_64/libtcc1.a \ |
| 141 | 141 | lib/arm64/libtcc1.a |
| 142 | 142 | LIBTCC1=libtcc1.a |
| 143 | +BCHECK=yes | |
| 143 | 144 | else ifeq ($(ARCH),x86-64) |
| 144 | 145 | NATIVE_FILES=$(X86_64_FILES) |
| 145 | 146 | 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 | ||
| 283 | 284 | ifneq ($(LIBTCC1),) |
| 284 | 285 | mkdir -p "$(tccdir)/$(ARCH)" |
| 285 | 286 | $(INSTALL) -m644 $(LIBTCC1) "$(tccdir)/$(ARCH)" |
| 287 | +endif | |
| 288 | +ifneq ($(BCHECK),) | |
| 289 | + -mkdir -p "$(tccdir)/$(ARCH)" | |
| 290 | + $(INSTALL) -m644 lib/$(ARCH)/bcheck.o "$(tccdir)/$(ARCH)" | |
| 286 | 291 | endif |
| 287 | 292 | $(INSTALL) -m644 $(addprefix $(top_srcdir)/include/,$(TCC_INCLUDES)) $(top_srcdir)/tcclib.h "$(tccdir)/include" |
| 288 | 293 | mkdir -p "$(libdir)" |
| @@ -303,6 +308,7 @@ ifdef CONFIG_CROSS · 14 unmodified lines | ||
| 303 | 308 | mkdir -p "$(tccdir)/arm64" |
| 304 | 309 | $(INSTALL) -m644 lib/arm64/libtcc1.a "$(tccdir)/arm64" |
| 305 | 310 | $(INSTALL) -m644 lib/i386/libtcc1.a "$(tccdir)/i386" |
| 311 | + $(INSTALL) -m644 lib/i386/bcheck.o "$(tccdir)/i386" | |
| 306 | 312 | $(INSTALL) -m644 lib/x86_64/libtcc1.a "$(tccdir)/x86-64" |
| 307 | 313 | $(INSTALL) -m644 $(top_srcdir)/win32/lib/*.def "$(tccdir)/win32/lib" |
| 308 | 314 | $(INSTALL) -m644 lib/i386-win/libtcc1.a "$(tccdir)/win32/lib/32" |
| @@ -1564,7 +1564,10 @@ ST_FUNC void tcc_add_bcheck(TCCState *s1) · 1563 unmodified lines | ||
| 1564 | 1564 | pinit = section_ptr_add(init_section, 5); |
| 1565 | 1565 | pinit[0] = 0xe8; |
| 1566 | 1566 | 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"); | |
| 1568 | 1571 | put_elf_reloc(symtab_section, init_section, |
| 1569 | 1572 | init_section->data_offset - 4, R_386_PC32, sym_index); |
| 1570 | 1573 | } |