2014-01-05 Magnus Granberg * gcc/Makefile.in Add -fno-PIE. to ALL_CFLAGS and ALL_CXXFLAGS if enable_esp yes. Echo enable_esp and enable_crtbeginP to tmp-libgcc.mvars. * libgcc/Makefile.in Add crtbeginP.o to EXTRA_PARTS if enable_crtbeginP yes We add new file crtbeginP.o if enable_crtbeginP yes Add -fno-PIE. to CRTSTUFF_CFLAGS. Disable -fstack-check --- a/gcc/Makefile.in 2011-11-09 02:20:14.000000000 +0100 +++ b/gcc/Makefile.in 2011-12-24 22:28:08.864804375 +0100 @@ -247,6 +247,14 @@ LINKER_FLAGS = $(CFLAGS) endif endif +# We don't want to compile the compiler with -fPIE, it make PCH fail. +enable_esp = @enable_esp@ +ifeq ($(enable_esp),yes) +ESP_NOPIE_CFLAGS = -fno-PIE +else +ESP_NOPIE_CFLAGS= +endif + # ------------------------------------------- # Programs which operate on the build machine # ------------------------------------------- @@ -974,12 +982,13 @@ INTERNAL_CFLAGS = -DIN_GCC @CROSS@ # This is the variable actually used when we compile. If you change this, # you probably want to update BUILD_CFLAGS in configure.ac -ALL_CFLAGS = $(T_CFLAGS) $(CFLAGS-$@) \ +ALL_CFLAGS = $(ESP_NOPIE_CFLAGS) $(T_CFLAGS) $(CFLAGS-$@) \ $(CFLAGS) $(INTERNAL_CFLAGS) $(COVERAGE_FLAGS) $(WARN_CFLAGS) @DEFS@ # The C++ version. -ALL_CXXFLAGS = $(T_CFLAGS) $(CFLAGS-$@) $(CXXFLAGS) $(INTERNAL_CFLAGS) \ - $(COVERAGE_FLAGS) $(NOEXCEPTION_FLAGS) $(WARN_CXXFLAGS) @DEFS@ +ALL_CXXFLAGS = $(ESP_NOPIE_CFLAGS) $(T_CFLAGS) $(CFLAGS-$@) $(CXXFLAGS) \ + $(INTERNAL_CFLAGS) $(COVERAGE_FLAGS) $(NOEXCEPTION_FLAGS) \ + $(WARN_CXXFLAGS) @DEFS@ # Likewise. Put INCLUDES at the beginning: this way, if some autoconf macro # puts -I options in CPPFLAGS, our include files in the srcdir will always @@ -1814,6 +1823,8 @@ libgcc.mvars: config.status Makefile spe echo GCC_CFLAGS = '$(GCC_CFLAGS)' >> tmp-libgcc.mvars echo INHIBIT_LIBC_CFLAGS = '$(INHIBIT_LIBC_CFLAGS)' >> tmp-libgcc.mvars echo TARGET_SYSTEM_ROOT = '$(TARGET_SYSTEM_ROOT)' >> tmp-libgcc.mvars + echo enable_esp = '$(enable_esp)' >> tmp-libgcc.mvars + echo enable_crtbeginP = '@enable_crtbeginP@' >> tmp-libgcc.mvars mv tmp-libgcc.mvars libgcc.mvars --- a/libgcc/Makefile.in 2011-11-22 04:01:02.000000000 +0100 +++ b/libgcc/Makefile.in 2011-12-25 15:18:22.449610631 +0100 @@ -219,6 +219,17 @@ else DECNUMINC = endif +ifeq ($(enable_esp),yes) +ESP_NOPIE_CFLAGS = -fno-PIE +else +ESP_NOPIE_CFLAGS= +endif + +# We add crtbeginP.o to the EXTRA_PARTS list if enable_crtbeginP = yes +ifeq ($(enable_crtbeginP),yes) +EXTRA_PARTS += crtbeginP.o +endif + # Options to use when compiling libgcc2.a. # LIBGCC2_DEBUG_CFLAGS = -g @@ -225,7 +225,7 @@ endif LIBGCC2_DEBUG_CFLAGS = -g LIBGCC2_CFLAGS = -O2 $(LIBGCC2_INCLUDES) $(GCC_CFLAGS) $(HOST_LIBGCC2_CFLAGS) \ $(LIBGCC2_DEBUG_CFLAGS) -DIN_LIBGCC2 \ - -fbuilding-libgcc -fno-stack-protector \ + -fbuilding-libgcc -fno-stack-protector -fstack-check=no \ $(INHIBIT_LIBC_CFLAGS) # Additional options to use when compiling libgcc2.a. @@ -298,7 +298,7 @@ CRTSTUFF_CFLAGS = -O2 $(GCC_CFLAGS) $(IN -finhibit-size-directive -fno-inline -fno-exceptions \ -fno-zero-initialized-in-bss -fno-toplevel-reorder -fno-tree-vectorize \ -fbuilding-libgcc -fno-stack-protector $(FORCE_EXPLICIT_EH_REGISTRY) \ - $(INHIBIT_LIBC_CFLAGS) + -fstack-check=no $(ESP_NOPIE_CFLAGS) $(INHIBIT_LIBC_CFLAGS) # Extra flags to use when compiling crt{begin,end}.o. CRTSTUFF_T_CFLAGS = @@ -966,6 +977,13 @@ crtendS$(objext): $(srcdir)/crtstuff.c # This is a version of crtbegin for -static links. crtbeginT$(objext): $(srcdir)/crtstuff.c $(crt_compile) $(CRTSTUFF_T_CFLAGS) -c $< -DCRT_BEGIN -DCRTSTUFFT_O + +# This is a version of crtbegin for -static -fPIE links. +ifeq ($(enable_crtbeginP),yes) +crtbeginP$(objext): $(srcdir)/crtstuff.c + $(crt_compile) $(CRTSTUFF_T_CFLAGS_S) \ + -c $< -DCRT_BEGIN -DCRTSTUFFT_O -DCRTSTUFFS_O +endif ifeq ($(enable_vtable_verify),yes) # These are used in vtable verification; see comments in source files for