17dae7d98c
Make it possible to build old kernels with gcc4 for armv7 and aarch64. The packages have been generated with (as usually): $ pmbootstrap aportgen gcc4-aarch64 gcc4-armv7 [ci:skip-build]: I have tested that this builds locally. Fixes #193.
96 lines
No EOL
3.5 KiB
Diff
96 lines
No EOL
3.5 KiB
Diff
2012-01-17 Magnus Granberg <zorry@gentoo.org>
|
|
|
|
* 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.
|
|
|
|
--- 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
|
|
@@ -279,7 +290,7 @@ INTERNAL_CFLAGS = $(CFLAGS) $(LIBGCC2_CF
|
|
CRTSTUFF_CFLAGS = -O2 $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -g0 \
|
|
-finhibit-size-directive -fno-inline -fno-exceptions \
|
|
-fno-zero-initialized-in-bss -fno-toplevel-reorder -fno-tree-vectorize \
|
|
- -fno-stack-protector \
|
|
+ -fno-stack-protector $(ESP_NOPIE_CFLAGS) \
|
|
$(INHIBIT_LIBC_CFLAGS)
|
|
|
|
# Extra flags to use when compiling crt{begin,end}.o.
|
|
@@ -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
|
|
|