forked from Mirrors/tinycc
Move bounds-checking code to a bcheck.a
... to avoid undefined references to __bound_new_region() (when using a libtcc1_s.so instead of libtcc1.a) on i386. Signed-off-by: aldot <rep.dot.nop@gmail.com>mob-stuff
parent
a39d055d0e
commit
bfa394dab8
33
Makefile
33
Makefile
|
@ -8,6 +8,7 @@ include $(TOP)/config.mak
|
|||
CFLAGS+=-g -Wall
|
||||
CFLAGS_P=$(CFLAGS) -pg -static -DCONFIG_TCC_STATIC
|
||||
LIBS_P=
|
||||
CFLAGS_PIC ?= -fPIC
|
||||
|
||||
ifneq ($(GCC_MAJOR),2)
|
||||
CFLAGS+=-fno-strict-aliasing
|
||||
|
@ -32,19 +33,23 @@ LIBS+=-ldl
|
|||
endif
|
||||
endif
|
||||
|
||||
BCHECK=
|
||||
BCHECK_O=
|
||||
ALLOCA_O=
|
||||
|
||||
ifeq ($(ARCH),i386)
|
||||
NATIVE_TARGET=-DTCC_TARGET_I386
|
||||
LIBTCC1=libtcc1.a
|
||||
BCHECK_O=bcheck.o
|
||||
ALLOCA_O=alloca86.o alloca86-bt.o
|
||||
else
|
||||
ALLOCA_O=alloca86.o
|
||||
BCHECK_O=bcheck.o alloca86-bt.o
|
||||
BCHECK=bcheck.a
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),x86-64)
|
||||
NATIVE_TARGET=-DTCC_TARGET_X86_64
|
||||
LIBTCC1=libtcc1.a
|
||||
BCHECK_O=
|
||||
ALLOCA_O=alloca86_64.o
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),arm)
|
||||
NATIVE_TARGET=-DTCC_TARGET_ARM
|
||||
|
@ -54,7 +59,10 @@ endif
|
|||
|
||||
ifdef CONFIG_WIN32
|
||||
NATIVE_TARGET+=-DTCC_TARGET_PE
|
||||
BCHECK_O=
|
||||
endif
|
||||
|
||||
ifneq ($(wildcard /lib/ld-uClibc.so.0),)
|
||||
NATIVE_TARGET+=-DTCC_UCLIBC
|
||||
endif
|
||||
|
||||
ifdef CONFIG_USE_LIBGCC
|
||||
|
@ -108,7 +116,7 @@ ifdef CONFIG_CROSS
|
|||
PROGS+=$(PROGS_CROSS)
|
||||
endif
|
||||
|
||||
all: $(PROGS) $(LIBTCC1) $(BCHECK_O) libtcc.a tcc-doc.html tcc.1 libtcc_test$(EXESUF)
|
||||
all: $(PROGS) $(LIBTCC1) $(BCHECK) libtcc.a tcc-doc.html tcc.1 libtcc_test$(EXESUF)
|
||||
|
||||
# Host Tiny C Compiler
|
||||
tcc$(EXESUF): $(NATIVE_FILES)
|
||||
|
@ -191,12 +199,15 @@ libtcc1.a: $(LIBTCC1_OBJS)
|
|||
bcheck.o: bcheck.c
|
||||
$(CC) -o $@ -c $< -O2 -Wall
|
||||
|
||||
bcheck.a: $(BCHECK_O)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
# install
|
||||
TCC_INCLUDES = stdarg.h stddef.h stdbool.h float.h varargs.h tcclib.h
|
||||
INSTALL=install
|
||||
|
||||
ifndef CONFIG_WIN32
|
||||
install: $(PROGS) $(LIBTCC1) $(BCHECK_O) libtcc.a tcc.1 tcc-doc.html
|
||||
install: $(PROGS) $(LIBTCC1) $(BCHECK) libtcc.a tcc.1 tcc-doc.html
|
||||
mkdir -p "$(bindir)"
|
||||
$(INSTALL) -m755 $(PROGS) "$(bindir)"
|
||||
mkdir -p "$(mandir)/man1"
|
||||
|
@ -206,8 +217,8 @@ install: $(PROGS) $(LIBTCC1) $(BCHECK_O) libtcc.a tcc.1 tcc-doc.html
|
|||
ifneq ($(LIBTCC1),)
|
||||
$(INSTALL) -m644 $(LIBTCC1) "$(tccdir)"
|
||||
endif
|
||||
ifneq ($(BCHECK_O),)
|
||||
$(INSTALL) -m644 $(BCHECK_O) "$(tccdir)"
|
||||
ifneq ($(BCHECK),)
|
||||
$(INSTALL) -m644 $(BCHECK) "$(tccdir)"
|
||||
endif
|
||||
$(INSTALL) -m644 $(addprefix include/,$(TCC_INCLUDES)) "$(tccdir)/include"
|
||||
mkdir -p "$(docdir)"
|
||||
|
@ -219,7 +230,7 @@ endif
|
|||
|
||||
uninstall:
|
||||
rm -fv $(foreach P,$(PROGS),"$(bindir)/$P")
|
||||
rm -fv $(foreach P,$(LIBTCC1) $(BCHECK_O),"$(tccdir)/$P")
|
||||
rm -fv $(foreach P,$(LIBTCC1) $(BCHECK),"$(tccdir)/$P")
|
||||
rm -fv $(foreach P,$(TCC_INCLUDES),"$(tccdir)/include/$P")
|
||||
rm -fv "$(docdir)/tcc-doc.html" "$(mandir)/man1/tcc.1"
|
||||
rm -fv "$(libdir)/libtcc.a" "$(includedir)/libtcc.h"
|
||||
|
|
2
tccelf.c
2
tccelf.c
|
@ -1207,7 +1207,7 @@ static void tcc_add_runtime(TCCState *s1)
|
|||
ELFW(ST_INFO)(STB_GLOBAL, STT_NOTYPE), 0,
|
||||
bounds_section->sh_num, "__bounds_start");
|
||||
/* add bound check code */
|
||||
snprintf(buf, sizeof(buf), "%s/%s", s1->tcc_lib_path, "bcheck.o");
|
||||
snprintf(buf, sizeof(buf), "%s/%s", s1->tcc_lib_path, "bcheck.a");
|
||||
tcc_add_file_internal(s1, buf, AFF_WHOLE_ARCHIVE | AFF_PRINT_ERROR);
|
||||
#ifdef TCC_TARGET_I386
|
||||
if (s1->output_type != TCC_OUTPUT_MEMORY) {
|
||||
|
|
Loading…
Reference in New Issue