lib/Makefile: use CC, add bcheck to libtcc1.a
authorgrischka <grischka>
Wed, 6 Feb 2013 18:01:07 +0000 (6 19:01 +0100)
committergrischka <grischka>
Wed, 6 Feb 2013 18:01:07 +0000 (6 19:01 +0100)
Also:
- fix "make tcc_p" (profiling version)
- remove old gcc flags:
  -mpreferred-stack-boundary=2 -march=i386 -falign-functions=0
- remove test "hello" for Darwin (cannot compile to file)

Makefile
lib/Makefile
lib/bcheck.c
libtcc.c
tcc.h
tccelf.c
tests/Makefile

index 1179dbd..23045eb 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -20,17 +20,6 @@ ifneq ($(GCC_MAJOR),3)
 CFLAGS+=-Wno-pointer-sign -Wno-sign-compare
 endif
 endif
-
-ifneq ($(TARGETOS),Darwin)
-ifeq ($(ARCH),i386)
-CFLAGS+=-mpreferred-stack-boundary=2
-ifeq ($(GCC_MAJOR),2)
-CFLAGS+=-m386 -malign-functions=0
-else
-CFLAGS+=-march=i386 -falign-functions=0
-endif
-endif
-endif
 endif
 
 ifdef CONFIG_WIN64
@@ -50,10 +39,8 @@ NATIVE_DEFINES+=\
   $(if $(wildcard /lib/i386-linux-gnu),-DCONFIG_MULTIARCHDIR=\"i386-linux-gnu\",\
   $(if $(wildcard /lib/i386-kfreebsd-gnu),-DCONFIG_MULTIARCHDIR=\"i386-kfreebsd-gnu\",\
   $(if $(wildcard /lib/i386-gnu),-DCONFIG_MULTIARCHDIR=\"i386-gnu\")))
-CFLAGS+=-m32
 else ifeq ($(ARCH),x86-64)
 NATIVE_DEFINES=-DTCC_TARGET_X86_64
-CFLAGS+=-m64
 NATIVE_DEFINES+=\
   $(if $(wildcard /usr/lib64),-DCONFIG_LDDIR=\"lib64\",\
   $(if $(wildcard /lib/x86_64-linux-gnu),-DCONFIG_MULTIARCHDIR=\"x86_64-linux-gnu\",\
@@ -79,7 +66,6 @@ endif
 
 ifneq ($(wildcard /lib/ld-uClibc.so.0),)
 NATIVE_DEFINES+=-DTCC_UCLIBC
-CONFIG_UCLIBC = 1
 endif
 
 # make libtcc as static or dynamic library?
@@ -136,7 +122,6 @@ NATIVE_FILES=$(I386_FILES)
 PROGS_CROSS=$(X64_CROSS) $(WIN32_CROSS) $(WIN64_CROSS) $(ARM_CROSS) $(C67_CROSS)
 LIBTCC1_CROSS=lib/i386-win32/libtcc1.a lib/x86_64-win32/libtcc1.a
 LIBTCC1=libtcc1.a
-BCHECK_O=bcheck.o
 else ifeq ($(ARCH),x86-64)
 NATIVE_FILES=$(X86_64_FILES)
 PROGS_CROSS=$(I386_CROSS) $(WIN32_CROSS) $(WIN64_CROSS) $(ARM_CROSS) $(C67_CROSS)
@@ -147,11 +132,7 @@ NATIVE_FILES=$(ARM_FILES)
 PROGS_CROSS=$(I386_CROSS) $(X64_CROSS) $(WIN32_CROSS) $(WIN64_CROSS) $(C67_CROSS)
 endif
 
-ifdef CONFIG_UCLIBC
-BCHECK_O=
-endif
 ifeq ($(TARGETOS),Darwin)
-BCHECK_O=
 PROGS+=tiny_libmaker$(EXESUF)
 endif
 
@@ -159,7 +140,7 @@ ifdef CONFIG_USE_LIBGCC
 LIBTCC1=
 endif
 
-TCCLIBS = $(LIBTCC1) $(LIBTCC) $(BCHECK_O)
+TCCLIBS = $(LIBTCC1) $(LIBTCC)
 TCCDOCS = tcc.1 tcc-doc.html tcc-doc.info
 
 ifdef CONFIG_CROSS
@@ -177,6 +158,10 @@ tcc$(EXESUF): tcc.o $(LIBTCC)
 %-tcc$(EXESUF): tcc.c
        $(CC) -o $@ $< -DONE_SOURCE $(DEFINES) $(CPPFLAGS) $(CFLAGS) $(LIBS) $(LDFLAGS)
 
+# profiling version
+tcc_p$(EXESUF): $(NATIVE_FILES)
+       $(CC) -o $@ $< -DONE_SOURCE $(NATIVE_DEFINES) $(CPPFLAGS_P) $(CFLAGS_P) $(LIBS_P) $(LDFLAGS_P)
+
 $(I386_CROSS): DEFINES = -DTCC_TARGET_I386 \
     -DCONFIG_TCCDIR="\"$(tccdir)/i386\""
 $(X64_CROSS): DEFINES = -DTCC_TARGET_X86_64
@@ -222,10 +207,6 @@ libtcc.so.1.0: $(LIBTCC_OBJ)
 
 libtcc.so.1.0: CFLAGS+=-fPIC
 
-# profiling version
-tcc_p$(EXESUF): $(NATIVE_FILES)
-       $(CC) -o $@ $< $(NATIVE_DEFINES) $(CPPFLAGS_P) $(CFLAGS_P) $(LIBS_P) $(LDFLAGS_P)
-
 # windows utilities
 tiny_impdef$(EXESUF): win32/tools/tiny_impdef.c
        $(CC) -o $@ $< $(CPPFLAGS) $(CFLAGS) $(LDFLAGS)
@@ -237,8 +218,7 @@ libtcc1.a : FORCE
        @$(MAKE) -C lib native
 lib/%/libtcc1.a : FORCE $(PROGS_CROSS)
        @$(MAKE) -C lib cross TARGET=$*
-bcheck.o : lib/bcheck.c
-       $(CC) -c $< -o $@ $(CPPFLAGS) $(CFLAGS)
+
 FORCE:
 
 # install
@@ -267,9 +247,6 @@ endif
 ifneq ($(LIBTCC1),)
        $(INSTALL) -m644 $(LIBTCC1) "$(tccdir)"
 endif
-ifneq ($(BCHECK_O),)
-       $(INSTALL) -m644 $(BCHECK_O) "$(tccdir)"
-endif
        $(INSTALL) -m644 $(addprefix $(top_srcdir)/include/,$(TCC_INCLUDES)) "$(tccdir)/include"
        mkdir -p "$(libdir)"
        $(INSTALL) -m755 $(LIBTCC) "$(libdir)"
@@ -298,7 +275,7 @@ endif
 
 uninstall:
        rm -fv $(foreach P,$(PROGS),"$(bindir)/$P")
-       rm -fv $(foreach P,$(LIBTCC1) $(BCHECK_O),"$(tccdir)/$P")
+       rm -fv $(foreach P,$(LIBTCC1),"$(tccdir)/$P")
        rm -fv $(foreach P,$(TCC_INCLUDES),"$(tccdir)/include/$P")
        rm -fv "$(docdir)/tcc-doc.html" "$(mandir)/man1/tcc.1" "$(infodir)/tcc-doc.info"
        rm -fv "$(libdir)/$(LIBTCC)" "$(includedir)/libtcc.h"
index 895c4be..9a029d2 100644 (file)
@@ -15,15 +15,15 @@ ifndef TARGET
  else
  ifeq ($(ARCH),i386)
   TARGET = i386
-       ifneq ($(TARGETOS),Darwin)
-               XCC = gcc -O2 -m32
-       endif
+  ifneq ($(TARGETOS),Darwin)
+   XCC = $(CC)
+  endif
  else
  ifeq ($(ARCH),x86-64)
   TARGET = x86_64
-       ifneq ($(TARGETOS),Darwin)
-               XCC = gcc -O2 -m64
-       endif
+  ifneq ($(TARGETOS),Darwin)
+   XCC = $(CC)
+  endif
  endif
  endif
  endif
@@ -38,9 +38,11 @@ cross : $(DIR)/libtcc1.a
 native : TCC = $(TOP)/tcc$(EXESUF)
 cross : TCC = $(TOP)/$(TARGET)-tcc$(EXESUF)
 
-I386_O = libtcc1.o alloca86.o alloca86-bt.o
+BCHECK_O = bcheck.o
+
+I386_O = libtcc1.o alloca86.o alloca86-bt.o $(BCHECK_O)
 X86_64_O = libtcc1.o alloca86_64.o
-WIN32_O = $(I386_O) crt1.o wincrt1.o dllcrt1.o dllmain.o chkstk.o bcheck.o
+WIN32_O = $(I386_O) crt1.o wincrt1.o dllcrt1.o dllmain.o chkstk.o
 WIN64_O = $(X86_64_O) crt1.o wincrt1.o dllcrt1.o dllmain.o chkstk.o
 
 ifeq "$(TARGET)" "i386-win32"
@@ -58,18 +60,12 @@ else
 ifeq "$(TARGET)" "i386"
  OBJ = $(addprefix $(DIR)/,$(I386_O))
  TGT = -DTCC_TARGET_I386
- XCC ?= $(TCC) -B$(TOP) -m32 -D_ANSI_SOURCE
- ifeq ($(TARGETOS),Darwin)
-  XAR = $(DIR)/tiny_libmaker$(EXESUF)
- endif
+ XCC ?= $(TCC) -B$(TOP)
 else
 ifeq "$(TARGET)" "x86_64"
  OBJ = $(addprefix $(DIR)/,$(X86_64_O))
  TGT = -DTCC_TARGET_X86_64
- XCC ?= $(TCC) -B$(TOP) -m64 -D_ANSI_SOURCE
- ifeq ($(TARGETOS),Darwin)
-  XAR = $(DIR)/tiny_libmaker$(EXESUF)
- endif
+ XCC ?= $(TCC) -B$(TOP)
 else
  $(error libtcc1.a not supported on target '$(TARGET)')
 endif
@@ -77,6 +73,14 @@ endif
 endif
 endif
 
+XFLAGS = $(CPPFLAGS) $(CFLAGS) $(TGT)
+
+ifeq ($(TARGETOS),Darwin)
+ XAR = $(DIR)/tiny_libmaker$(EXESUF)
+ XFLAGS += -D_ANSI_SOURCE
+ BCHECK_O =
+endif
+
 ifdef XAR
 AR = $(XAR)
 endif
@@ -84,11 +88,11 @@ endif
 $(DIR)/libtcc1.a ../libtcc1.a : $(OBJ) $(XAR)
        $(AR) rcs $@ $(OBJ)
 $(DIR)/%.o : %.c
-       $(XCC) -c $< -o $@ $(CPPFLAGS) $(TGT) $(CFLAGS)
+       $(XCC) -c $< -o $@ $(XFLAGS)
 $(DIR)/%.o : %.S
-       $(XCC) -c $< -o $@ $(CPPFLAGS) $(TGT) $(CFLAGS)
+       $(XCC) -c $< -o $@ $(XFLAGS)
 $(DIR)/%$(EXESUF) : $(TOP)/win32/tools/%.c
-       $(CC) -Os -s -w -o $@ $< $(CPPFLAGS) $(TGT) $(CFLAGS) $(LDFLAGS)
+       $(CC) -Os -s -w -o $@ $< $(XFLAGS) $(LDFLAGS)
 
 $(OBJ) $(XAR) : $(DIR)/exists
 $(DIR)/exists :
index 998e304..54124b9 100644 (file)
@@ -41,7 +41,8 @@
 
 #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) \
     || defined(__DragonFly__) || defined(__dietlibc__) \
-    || defined(__UCLIBC__) || defined(__OpenBSD__) || defined(_WIN32)
+    || defined(__UCLIBC__) || defined(__OpenBSD__) \
+    || defined(_WIN32) || defined(TCC_UCLIBC)
 #warning Bound checking does not support malloc (etc.) in this environment.
 #undef CONFIG_TCC_MALLOC_HOOKS
 #undef HAVE_MEMALIGN
@@ -377,7 +378,7 @@ void __bound_init(void)
     size = BOUND_T23_SIZE;
     mark_invalid(start, size);
 
-#if !defined(__TINYC__) && defined(CONFIG_TCC_MALLOC_HOOKS)
+#if defined(CONFIG_TCC_MALLOC_HOOKS)
     /* malloc zone is also marked invalid. can only use that with
      * hooks because all libs should use the same malloc. The solution
      * would be to build a new malloc for tcc.
index 79542b3..0242dc4 100644 (file)
--- a/libtcc.c
+++ b/libtcc.c
@@ -105,12 +105,14 @@ static void tcc_set_lib_path_w32(TCCState *s)
     tcc_set_lib_path(s, path);
 }
 
+#ifdef TCC_TARGET_PE
 static void tcc_add_systemdir(TCCState *s)
 {
     char buf[1000];
     GetSystemDirectory(buf, sizeof buf);
     tcc_add_library_path(s, normalize_slashes(buf));
 }
+#endif
 
 #ifndef CONFIG_TCC_STATIC
 void dlclose(void *p)
@@ -1169,9 +1171,11 @@ ST_FUNC int tcc_add_file_internal(TCCState *s1, const char *filename, int flags)
 #ifndef TCC_TARGET_PE
         if (ehdr.e_type == ET_DYN) {
             if (s1->output_type == TCC_OUTPUT_MEMORY) {
+#ifdef TCC_IS_NATIVE
                 void *h;
                 h = dlopen(filename, RTLD_GLOBAL | RTLD_LAZY);
                 if (h)
+#endif
                     ret = 0;
             } else {
                 ret = tcc_load_dll(s1, fd, filename, 
diff --git a/tcc.h b/tcc.h
index 8e6b0a5..885951c 100644 (file)
--- a/tcc.h
+++ b/tcc.h
@@ -47,7 +47,9 @@
 # include <sys/time.h>
 # include <sys/ucontext.h>
 # include <sys/mman.h>
-# include <dlfcn.h>
+# ifndef CONFIG_TCC_STATIC
+#  include <dlfcn.h>
+# endif
 #else
 # include <windows.h>
 # include <sys/timeb.h>
 #define CONFIG_TCC_BCHECK /* enable bound checking code */
 #endif
 
-#if defined(_WIN32) && !defined(TCC_TARGET_PE)
-#define CONFIG_TCC_STATIC
-#endif
-
 /* define it to include assembler support */
 #if !defined(TCC_TARGET_ARM) && !defined(TCC_TARGET_C67)
 #define CONFIG_TCC_ASM
index cba47b1..781c322 100644 (file)
--- a/tccelf.c
+++ b/tccelf.c
@@ -1338,10 +1338,6 @@ ST_FUNC void tcc_add_bcheck(TCCState *s1)
     add_elf_sym(symtab_section, 0, 0,
                 ELFW(ST_INFO)(STB_GLOBAL, STT_NOTYPE), 0,
                 bounds_section->sh_num, "__bounds_start");
-    /* add bound check code */
-#ifndef TCC_TARGET_PE
-    tcc_add_support(s1, "bcheck.o");
-#endif
 #ifdef TCC_TARGET_I386
     if (s1->output_type != TCC_OUTPUT_MEMORY) {
         /* add 'call __bound_init()' in .init section */
index 7685459..0e6fc46 100644 (file)
@@ -26,7 +26,7 @@ ifdef CONFIG_WIN32
  TESTS := $(filter-out test3,$(TESTS))
 endif
 ifeq ($(TARGETOS),Darwin)
- TESTS := $(filter-out test3 btest,$(TESTS))
+ TESTS := $(filter-out hello test3 btest,$(TESTS))
 endif
 
 ifdef DISABLE_STATIC