History

lib/Makefile: use CC, add bcheck to libtcc1.a

grischka committed 13 years ago

Commit 7a477d71 parent 92024ab7 files · +41 −61Browse files

Unified · Split

7 files
  1. Makefile +7 −30
  2. lib/Makefile +23 −19
  3. lib/bcheck.c +3 −2
  4. libtcc.c +4 −0
  5. tcc.h +3 −5
  6. tccelf.c +0 −4
  7. tests/Makefile +1 −1
Makefile+7−30
@@ -20,17 +20,6 @@ ifneq ($(GCC_MAJOR),3) · 19 unmodified lines
20CFLAGS+=-Wno-pointer-sign -Wno-sign-compare20CFLAGS+=-Wno-pointer-sign -Wno-sign-compare
21endif21endif
22endif22endif
23
24ifneq ($(TARGETOS),Darwin)
25ifeq ($(ARCH),i386)
26CFLAGS+=-mpreferred-stack-boundary=2
27ifeq ($(GCC_MAJOR),2)
28CFLAGS+=-m386 -malign-functions=0
29else
30CFLAGS+=-march=i386 -falign-functions=0
31endif
32endif
33endif
34endif23endif
35 24
36ifdef CONFIG_WIN6425ifdef CONFIG_WIN64
@@ -50,10 +39,8 @@ NATIVE_DEFINES+=\ · 13 unmodified lines
50 $(if $(wildcard /lib/i386-linux-gnu),-DCONFIG_MULTIARCHDIR=\"i386-linux-gnu\",\39 $(if $(wildcard /lib/i386-linux-gnu),-DCONFIG_MULTIARCHDIR=\"i386-linux-gnu\",\
51 $(if $(wildcard /lib/i386-kfreebsd-gnu),-DCONFIG_MULTIARCHDIR=\"i386-kfreebsd-gnu\",\40 $(if $(wildcard /lib/i386-kfreebsd-gnu),-DCONFIG_MULTIARCHDIR=\"i386-kfreebsd-gnu\",\
52 $(if $(wildcard /lib/i386-gnu),-DCONFIG_MULTIARCHDIR=\"i386-gnu\")))41 $(if $(wildcard /lib/i386-gnu),-DCONFIG_MULTIARCHDIR=\"i386-gnu\")))
53CFLAGS+=-m32
54else ifeq ($(ARCH),x86-64)42else ifeq ($(ARCH),x86-64)
55NATIVE_DEFINES=-DTCC_TARGET_X86_6443NATIVE_DEFINES=-DTCC_TARGET_X86_64
56CFLAGS+=-m64
57NATIVE_DEFINES+=\44NATIVE_DEFINES+=\
58 $(if $(wildcard /usr/lib64),-DCONFIG_LDDIR=\"lib64\",\45 $(if $(wildcard /usr/lib64),-DCONFIG_LDDIR=\"lib64\",\
59 $(if $(wildcard /lib/x86_64-linux-gnu),-DCONFIG_MULTIARCHDIR=\"x86_64-linux-gnu\",\46 $(if $(wildcard /lib/x86_64-linux-gnu),-DCONFIG_MULTIARCHDIR=\"x86_64-linux-gnu\",\
@@ -79,7 +66,6 @@ endif · 19 unmodified lines
79 66
80ifneq ($(wildcard /lib/ld-uClibc.so.0),)67ifneq ($(wildcard /lib/ld-uClibc.so.0),)
81NATIVE_DEFINES+=-DTCC_UCLIBC68NATIVE_DEFINES+=-DTCC_UCLIBC
82CONFIG_UCLIBC = 1
83endif69endif
84 70
85# make libtcc as static or dynamic library?71# make libtcc as static or dynamic library?
@@ -136,7 +122,6 @@ NATIVE_FILES=$(I386_FILES) · 50 unmodified lines
136PROGS_CROSS=$(X64_CROSS) $(WIN32_CROSS) $(WIN64_CROSS) $(ARM_CROSS) $(C67_CROSS)122PROGS_CROSS=$(X64_CROSS) $(WIN32_CROSS) $(WIN64_CROSS) $(ARM_CROSS) $(C67_CROSS)
137LIBTCC1_CROSS=lib/i386-win32/libtcc1.a lib/x86_64-win32/libtcc1.a123LIBTCC1_CROSS=lib/i386-win32/libtcc1.a lib/x86_64-win32/libtcc1.a
138LIBTCC1=libtcc1.a124LIBTCC1=libtcc1.a
139BCHECK_O=bcheck.o
140else ifeq ($(ARCH),x86-64)125else ifeq ($(ARCH),x86-64)
141NATIVE_FILES=$(X86_64_FILES)126NATIVE_FILES=$(X86_64_FILES)
142PROGS_CROSS=$(I386_CROSS) $(WIN32_CROSS) $(WIN64_CROSS) $(ARM_CROSS) $(C67_CROSS)127PROGS_CROSS=$(I386_CROSS) $(WIN32_CROSS) $(WIN64_CROSS) $(ARM_CROSS) $(C67_CROSS)
@@ -147,11 +132,7 @@ NATIVE_FILES=$(ARM_FILES) · 4 unmodified lines
147PROGS_CROSS=$(I386_CROSS) $(X64_CROSS) $(WIN32_CROSS) $(WIN64_CROSS) $(C67_CROSS)132PROGS_CROSS=$(I386_CROSS) $(X64_CROSS) $(WIN32_CROSS) $(WIN64_CROSS) $(C67_CROSS)
148endif133endif
149 134
150ifdef CONFIG_UCLIBC
151BCHECK_O=
152endif
153ifeq ($(TARGETOS),Darwin)135ifeq ($(TARGETOS),Darwin)
154BCHECK_O=
155PROGS+=tiny_libmaker$(EXESUF)136PROGS+=tiny_libmaker$(EXESUF)
156endif137endif
157 138
@@ -159,7 +140,7 @@ ifdef CONFIG_USE_LIBGCC · 1 unmodified line
159LIBTCC1=140LIBTCC1=
160endif141endif
161 142
162TCCLIBS = $(LIBTCC1) $(LIBTCC) $(BCHECK_O)143TCCLIBS = $(LIBTCC1) $(LIBTCC)
163TCCDOCS = tcc.1 tcc-doc.html tcc-doc.info144TCCDOCS = tcc.1 tcc-doc.html tcc-doc.info
164 145
165ifdef CONFIG_CROSS146ifdef CONFIG_CROSS
@@ -177,6 +158,10 @@ tcc$(EXESUF): tcc.o $(LIBTCC) · 11 unmodified lines
177%-tcc$(EXESUF): tcc.c158%-tcc$(EXESUF): tcc.c
178 $(CC) -o $@ $< -DONE_SOURCE $(DEFINES) $(CPPFLAGS) $(CFLAGS) $(LIBS) $(LDFLAGS)159 $(CC) -o $@ $< -DONE_SOURCE $(DEFINES) $(CPPFLAGS) $(CFLAGS) $(LIBS) $(LDFLAGS)
179 160
161# profiling version
162tcc_p$(EXESUF): $(NATIVE_FILES)
163 $(CC) -o $@ $< -DONE_SOURCE $(NATIVE_DEFINES) $(CPPFLAGS_P) $(CFLAGS_P) $(LIBS_P) $(LDFLAGS_P)
164
180$(I386_CROSS): DEFINES = -DTCC_TARGET_I386 \165$(I386_CROSS): DEFINES = -DTCC_TARGET_I386 \
181 -DCONFIG_TCCDIR="\"$(tccdir)/i386\""166 -DCONFIG_TCCDIR="\"$(tccdir)/i386\""
182$(X64_CROSS): DEFINES = -DTCC_TARGET_X86_64167$(X64_CROSS): DEFINES = -DTCC_TARGET_X86_64
@@ -222,10 +207,6 @@ libtcc.so.1.0: $(LIBTCC_OBJ) · 39 unmodified lines
222 207
223libtcc.so.1.0: CFLAGS+=-fPIC208libtcc.so.1.0: CFLAGS+=-fPIC
224 209
225# profiling version
226tcc_p$(EXESUF): $(NATIVE_FILES)
227 $(CC) -o $@ $< $(NATIVE_DEFINES) $(CPPFLAGS_P) $(CFLAGS_P) $(LIBS_P) $(LDFLAGS_P)
228
229# windows utilities210# windows utilities
230tiny_impdef$(EXESUF): win32/tools/tiny_impdef.c211tiny_impdef$(EXESUF): win32/tools/tiny_impdef.c
231 $(CC) -o $@ $< $(CPPFLAGS) $(CFLAGS) $(LDFLAGS)212 $(CC) -o $@ $< $(CPPFLAGS) $(CFLAGS) $(LDFLAGS)
@@ -237,8 +218,7 @@ libtcc1.a : FORCE · 5 unmodified lines
237 @$(MAKE) -C lib native218 @$(MAKE) -C lib native
238lib/%/libtcc1.a : FORCE $(PROGS_CROSS)219lib/%/libtcc1.a : FORCE $(PROGS_CROSS)
239 @$(MAKE) -C lib cross TARGET=$*220 @$(MAKE) -C lib cross TARGET=$*
240bcheck.o : lib/bcheck.c221
241 $(CC) -c $< -o $@ $(CPPFLAGS) $(CFLAGS)
242FORCE:222FORCE:
243 223
244# install224# install
@@ -266,9 +246,6 @@ endif · 21 unmodified lines
266 mkdir -p "$(tccdir)/include"246 mkdir -p "$(tccdir)/include"
267ifneq ($(LIBTCC1),)247ifneq ($(LIBTCC1),)
268 $(INSTALL) -m644 $(LIBTCC1) "$(tccdir)"248 $(INSTALL) -m644 $(LIBTCC1) "$(tccdir)"
269endif
270ifneq ($(BCHECK_O),)
271 $(INSTALL) -m644 $(BCHECK_O) "$(tccdir)"
272endif249endif
273 $(INSTALL) -m644 $(addprefix $(top_srcdir)/include/,$(TCC_INCLUDES)) "$(tccdir)/include"250 $(INSTALL) -m644 $(addprefix $(top_srcdir)/include/,$(TCC_INCLUDES)) "$(tccdir)/include"
274 mkdir -p "$(libdir)"251 mkdir -p "$(libdir)"
@@ -298,7 +275,7 @@ endif · 23 unmodified lines
298 275
299uninstall:276uninstall:
300 rm -fv $(foreach P,$(PROGS),"$(bindir)/$P")277 rm -fv $(foreach P,$(PROGS),"$(bindir)/$P")
301 rm -fv $(foreach P,$(LIBTCC1) $(BCHECK_O),"$(tccdir)/$P")278 rm -fv $(foreach P,$(LIBTCC1),"$(tccdir)/$P")
302 rm -fv $(foreach P,$(TCC_INCLUDES),"$(tccdir)/include/$P")279 rm -fv $(foreach P,$(TCC_INCLUDES),"$(tccdir)/include/$P")
303 rm -fv "$(docdir)/tcc-doc.html" "$(mandir)/man1/tcc.1" "$(infodir)/tcc-doc.info"280 rm -fv "$(docdir)/tcc-doc.html" "$(mandir)/man1/tcc.1" "$(infodir)/tcc-doc.info"
304 rm -fv "$(libdir)/$(LIBTCC)" "$(includedir)/libtcc.h"281 rm -fv "$(libdir)/$(LIBTCC)" "$(includedir)/libtcc.h"
lib/Makefile+23−19
@@ -15,15 +15,15 @@ ifndef TARGET · 14 unmodified lines
15 else15 else
16 ifeq ($(ARCH),i386)16 ifeq ($(ARCH),i386)
17 TARGET = i38617 TARGET = i386
18 ifneq ($(TARGETOS),Darwin)18 ifneq ($(TARGETOS),Darwin)
19 XCC = gcc -O2 -m3219 XCC = $(CC)
20 endif20 endif
21 else21 else
22 ifeq ($(ARCH),x86-64)22 ifeq ($(ARCH),x86-64)
23 TARGET = x86_6423 TARGET = x86_64
24 ifneq ($(TARGETOS),Darwin)24 ifneq ($(TARGETOS),Darwin)
25 XCC = gcc -O2 -m6425 XCC = $(CC)
26 endif26 endif
27 endif27 endif
28 endif28 endif
29 endif29 endif
@@ -38,9 +38,11 @@ cross : $(DIR)/libtcc1.a · 8 unmodified lines
38native : TCC = $(TOP)/tcc$(EXESUF)38native : TCC = $(TOP)/tcc$(EXESUF)
39cross : TCC = $(TOP)/$(TARGET)-tcc$(EXESUF)39cross : TCC = $(TOP)/$(TARGET)-tcc$(EXESUF)
40 40
41I386_O = libtcc1.o alloca86.o alloca86-bt.o41BCHECK_O = bcheck.o
42
43I386_O = libtcc1.o alloca86.o alloca86-bt.o $(BCHECK_O)
42X86_64_O = libtcc1.o alloca86_64.o44X86_64_O = libtcc1.o alloca86_64.o
43WIN32_O = $(I386_O) crt1.o wincrt1.o dllcrt1.o dllmain.o chkstk.o bcheck.o45WIN32_O = $(I386_O) crt1.o wincrt1.o dllcrt1.o dllmain.o chkstk.o
44WIN64_O = $(X86_64_O) crt1.o wincrt1.o dllcrt1.o dllmain.o chkstk.o46WIN64_O = $(X86_64_O) crt1.o wincrt1.o dllcrt1.o dllmain.o chkstk.o
45 47
46ifeq "$(TARGET)" "i386-win32"48ifeq "$(TARGET)" "i386-win32"
@@ -58,18 +60,12 @@ else · 11 unmodified lines
58ifeq "$(TARGET)" "i386"60ifeq "$(TARGET)" "i386"
59 OBJ = $(addprefix $(DIR)/,$(I386_O))61 OBJ = $(addprefix $(DIR)/,$(I386_O))
60 TGT = -DTCC_TARGET_I38662 TGT = -DTCC_TARGET_I386
61 XCC ?= $(TCC) -B$(TOP) -m32 -D_ANSI_SOURCE63 XCC ?= $(TCC) -B$(TOP)
62 ifeq ($(TARGETOS),Darwin)
63 XAR = $(DIR)/tiny_libmaker$(EXESUF)
64 endif
65else64else
66ifeq "$(TARGET)" "x86_64"65ifeq "$(TARGET)" "x86_64"
67 OBJ = $(addprefix $(DIR)/,$(X86_64_O))66 OBJ = $(addprefix $(DIR)/,$(X86_64_O))
68 TGT = -DTCC_TARGET_X86_6467 TGT = -DTCC_TARGET_X86_64
69 XCC ?= $(TCC) -B$(TOP) -m64 -D_ANSI_SOURCE68 XCC ?= $(TCC) -B$(TOP)
70 ifeq ($(TARGETOS),Darwin)
71 XAR = $(DIR)/tiny_libmaker$(EXESUF)
72 endif
73else69else
74 $(error libtcc1.a not supported on target '$(TARGET)')70 $(error libtcc1.a not supported on target '$(TARGET)')
75endif71endif
@@ -77,6 +73,14 @@ endif · 1 unmodified line
77endif73endif
78endif74endif
79 75
76XFLAGS = $(CPPFLAGS) $(CFLAGS) $(TGT)
77
78ifeq ($(TARGETOS),Darwin)
79 XAR = $(DIR)/tiny_libmaker$(EXESUF)
80 XFLAGS += -D_ANSI_SOURCE
81 BCHECK_O =
82endif
83
80ifdef XAR84ifdef XAR
81AR = $(XAR)85AR = $(XAR)
82endif86endif
@@ -84,11 +88,11 @@ endif · 1 unmodified line
84$(DIR)/libtcc1.a ../libtcc1.a : $(OBJ) $(XAR)88$(DIR)/libtcc1.a ../libtcc1.a : $(OBJ) $(XAR)
85 $(AR) rcs $@ $(OBJ)89 $(AR) rcs $@ $(OBJ)
86$(DIR)/%.o : %.c90$(DIR)/%.o : %.c
87 $(XCC) -c $< -o $@ $(CPPFLAGS) $(TGT) $(CFLAGS)91 $(XCC) -c $< -o $@ $(XFLAGS)
88$(DIR)/%.o : %.S92$(DIR)/%.o : %.S
89 $(XCC) -c $< -o $@ $(CPPFLAGS) $(TGT) $(CFLAGS)93 $(XCC) -c $< -o $@ $(XFLAGS)
90$(DIR)/%$(EXESUF) : $(TOP)/win32/tools/%.c94$(DIR)/%$(EXESUF) : $(TOP)/win32/tools/%.c
91 $(CC) -Os -s -w -o $@ $< $(CPPFLAGS) $(TGT) $(CFLAGS) $(LDFLAGS)95 $(CC) -Os -s -w -o $@ $< $(XFLAGS) $(LDFLAGS)
92 96
93$(OBJ) $(XAR) : $(DIR)/exists97$(OBJ) $(XAR) : $(DIR)/exists
94$(DIR)/exists :98$(DIR)/exists :
lib/bcheck.c+3−2
@@ -41,7 +41,8 @@ · 40 unmodified lines
41 41
42#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) \42#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) \
43 || defined(__DragonFly__) || defined(__dietlibc__) \43 || defined(__DragonFly__) || defined(__dietlibc__) \
44 || defined(__UCLIBC__) || defined(__OpenBSD__) || defined(_WIN32)44 || defined(__UCLIBC__) || defined(__OpenBSD__) \
45 || defined(_WIN32) || defined(TCC_UCLIBC)
45#warning Bound checking does not support malloc (etc.) in this environment.46#warning Bound checking does not support malloc (etc.) in this environment.
46#undef CONFIG_TCC_MALLOC_HOOKS47#undef CONFIG_TCC_MALLOC_HOOKS
47#undef HAVE_MEMALIGN48#undef HAVE_MEMALIGN
@@ -377,7 +378,7 @@ void __bound_init(void) · 329 unmodified lines
377 size = BOUND_T23_SIZE;378 size = BOUND_T23_SIZE;
378 mark_invalid(start, size);379 mark_invalid(start, size);
379 380
380#if !defined(__TINYC__) && defined(CONFIG_TCC_MALLOC_HOOKS)381#if defined(CONFIG_TCC_MALLOC_HOOKS)
381 /* malloc zone is also marked invalid. can only use that with382 /* malloc zone is also marked invalid. can only use that with
382 * hooks because all libs should use the same malloc. The solution383 * hooks because all libs should use the same malloc. The solution
383 * would be to build a new malloc for tcc.384 * would be to build a new malloc for tcc.
libtcc.c+4−0
@@ -105,12 +105,14 @@ static void tcc_set_lib_path_w32(TCCState *s) · 104 unmodified lines
105 tcc_set_lib_path(s, path);105 tcc_set_lib_path(s, path);
106}106}
107 107
108#ifdef TCC_TARGET_PE
108static void tcc_add_systemdir(TCCState *s)109static void tcc_add_systemdir(TCCState *s)
109{110{
110 char buf[1000];111 char buf[1000];
111 GetSystemDirectory(buf, sizeof buf);112 GetSystemDirectory(buf, sizeof buf);
112 tcc_add_library_path(s, normalize_slashes(buf));113 tcc_add_library_path(s, normalize_slashes(buf));
113}114}
115#endif
114 116
115#ifndef CONFIG_TCC_STATIC117#ifndef CONFIG_TCC_STATIC
116void dlclose(void *p)118void dlclose(void *p)
@@ -1169,9 +1171,11 @@ ST_FUNC int tcc_add_file_internal(TCCState *s1, const char *filename, int flags) · 1052 unmodified lines
1169#ifndef TCC_TARGET_PE1171#ifndef TCC_TARGET_PE
1170 if (ehdr.e_type == ET_DYN) {1172 if (ehdr.e_type == ET_DYN) {
1171 if (s1->output_type == TCC_OUTPUT_MEMORY) {1173 if (s1->output_type == TCC_OUTPUT_MEMORY) {
1174#ifdef TCC_IS_NATIVE
1172 void *h;1175 void *h;
1173 h = dlopen(filename, RTLD_GLOBAL | RTLD_LAZY);1176 h = dlopen(filename, RTLD_GLOBAL | RTLD_LAZY);
1174 if (h)1177 if (h)
1178#endif
1175 ret = 0;1179 ret = 0;
1176 } else {1180 } else {
1177 ret = tcc_load_dll(s1, fd, filename, 1181 ret = tcc_load_dll(s1, fd, filename,
tcc.h+3−5
@@ -47,7 +47,9 @@ · 46 unmodified lines
47# include <sys/time.h>47# include <sys/time.h>
48# include <sys/ucontext.h>48# include <sys/ucontext.h>
49# include <sys/mman.h>49# include <sys/mman.h>
50# include <dlfcn.h>50# ifndef CONFIG_TCC_STATIC
51# include <dlfcn.h>
52# endif
51#else53#else
52# include <windows.h>54# include <windows.h>
53# include <sys/timeb.h>55# include <sys/timeb.h>
@@ -134,10 +136,6 @@ · 80 unmodified lines
134#define CONFIG_TCC_BCHECK /* enable bound checking code */136#define CONFIG_TCC_BCHECK /* enable bound checking code */
135#endif137#endif
136 138
137#if defined(_WIN32) && !defined(TCC_TARGET_PE)
138#define CONFIG_TCC_STATIC
139#endif
140
141/* define it to include assembler support */139/* define it to include assembler support */
142#if !defined(TCC_TARGET_ARM) && !defined(TCC_TARGET_C67)140#if !defined(TCC_TARGET_ARM) && !defined(TCC_TARGET_C67)
143#define CONFIG_TCC_ASM141#define CONFIG_TCC_ASM
tccelf.c+0−4
@@ -1338,10 +1338,6 @@ ST_FUNC void tcc_add_bcheck(TCCState *s1) · 1337 unmodified lines
1338 add_elf_sym(symtab_section, 0, 0,1338 add_elf_sym(symtab_section, 0, 0,
1339 ELFW(ST_INFO)(STB_GLOBAL, STT_NOTYPE), 0,1339 ELFW(ST_INFO)(STB_GLOBAL, STT_NOTYPE), 0,
1340 bounds_section->sh_num, "__bounds_start");1340 bounds_section->sh_num, "__bounds_start");
1341 /* add bound check code */
1342#ifndef TCC_TARGET_PE
1343 tcc_add_support(s1, "bcheck.o");
1344#endif
1345#ifdef TCC_TARGET_I3861341#ifdef TCC_TARGET_I386
1346 if (s1->output_type != TCC_OUTPUT_MEMORY) {1342 if (s1->output_type != TCC_OUTPUT_MEMORY) {
1347 /* add 'call __bound_init()' in .init section */1343 /* add 'call __bound_init()' in .init section */
tests/Makefile+1−1
@@ -26,7 +26,7 @@ ifdef CONFIG_WIN32 · 25 unmodified lines
26 TESTS := $(filter-out test3,$(TESTS))26 TESTS := $(filter-out test3,$(TESTS))
27endif27endif
28ifeq ($(TARGETOS),Darwin)28ifeq ($(TARGETOS),Darwin)
29 TESTS := $(filter-out test3 btest,$(TESTS))29 TESTS := $(filter-out hello test3 btest,$(TESTS))
30endif30endif
31 31
32ifdef DISABLE_STATIC32ifdef DISABLE_STATIC

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