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
140LIBTCC1_CROSS=lib/i386-win/libtcc1.a lib/x86_64-win/libtcc1.a lib/i386/libtcc1.a lib/x86_64/libtcc1.a \140LIBTCC1_CROSS=lib/i386-win/libtcc1.a lib/x86_64-win/libtcc1.a lib/i386/libtcc1.a lib/x86_64/libtcc1.a \
141 lib/arm64/libtcc1.a141 lib/arm64/libtcc1.a
142LIBTCC1=libtcc1.a142LIBTCC1=libtcc1.a
143BCHECK=yes
143else ifeq ($(ARCH),x86-64)144else ifeq ($(ARCH),x86-64)
144NATIVE_FILES=$(X86_64_FILES)145NATIVE_FILES=$(X86_64_FILES)
145PROGS_CROSS=$($(I386_CROSS)_LINK) $($(WIN32_CROSS)_LINK) $($(WIN64_CROSS)_LINK) $(ARM_CROSS) $(ARM64_CROSS) $(C67_CROSS) $(WINCE_CROSS)146PROGS_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
283ifneq ($(LIBTCC1),)284ifneq ($(LIBTCC1),)
284 mkdir -p "$(tccdir)/$(ARCH)"285 mkdir -p "$(tccdir)/$(ARCH)"
285 $(INSTALL) -m644 $(LIBTCC1) "$(tccdir)/$(ARCH)"286 $(INSTALL) -m644 $(LIBTCC1) "$(tccdir)/$(ARCH)"
287endif
288ifneq ($(BCHECK),)
289 -mkdir -p "$(tccdir)/$(ARCH)"
290 $(INSTALL) -m644 lib/$(ARCH)/bcheck.o "$(tccdir)/$(ARCH)"
286endif291endif
287 $(INSTALL) -m644 $(addprefix $(top_srcdir)/include/,$(TCC_INCLUDES)) $(top_srcdir)/tcclib.h "$(tccdir)/include"292 $(INSTALL) -m644 $(addprefix $(top_srcdir)/include/,$(TCC_INCLUDES)) $(top_srcdir)/tcclib.h "$(tccdir)/include"
288 mkdir -p "$(libdir)"293 mkdir -p "$(libdir)"
@@ -303,6 +308,7 @@ ifdef CONFIG_CROSS · 14 unmodified lines
303 mkdir -p "$(tccdir)/arm64"308 mkdir -p "$(tccdir)/arm64"
304 $(INSTALL) -m644 lib/arm64/libtcc1.a "$(tccdir)/arm64"309 $(INSTALL) -m644 lib/arm64/libtcc1.a "$(tccdir)/arm64"
305 $(INSTALL) -m644 lib/i386/libtcc1.a "$(tccdir)/i386"310 $(INSTALL) -m644 lib/i386/libtcc1.a "$(tccdir)/i386"
311 $(INSTALL) -m644 lib/i386/bcheck.o "$(tccdir)/i386"
306 $(INSTALL) -m644 lib/x86_64/libtcc1.a "$(tccdir)/x86-64"312 $(INSTALL) -m644 lib/x86_64/libtcc1.a "$(tccdir)/x86-64"
307 $(INSTALL) -m644 $(top_srcdir)/win32/lib/*.def "$(tccdir)/win32/lib"313 $(INSTALL) -m644 $(top_srcdir)/win32/lib/*.def "$(tccdir)/win32/lib"
308 $(INSTALL) -m644 lib/i386-win/libtcc1.a "$(tccdir)/win32/lib/32"314 $(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
1564 pinit = section_ptr_add(init_section, 5);1564 pinit = section_ptr_add(init_section, 5);
1565 pinit[0] = 0xe8;1565 pinit[0] = 0xe8;
1566 put32(pinit + 1, -4);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 put_elf_reloc(symtab_section, init_section,1571 put_elf_reloc(symtab_section, init_section,
1569 init_section->data_offset - 4, R_386_PC32, sym_index);1572 init_section->data_offset - 4, R_386_PC32, sym_index);
1570 }1573 }

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