aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.7
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.7')
-rw-r--r--gcc-4.7/gcc/config/arm/elf.h6
-rw-r--r--gcc-4.7/gcc/config/arm/linux-eabi.h5
-rw-r--r--gcc-4.7/gcc/config/i386/gnu-user.h3
-rw-r--r--gcc-4.7/gcc/config/linux-android.h5
-rw-r--r--gcc-4.7/gcc/config/mips/gnu-user.h3
-rw-r--r--gcc-4.7/libstdc++-v3/libsupc++/eh_globals.cc8
6 files changed, 25 insertions, 5 deletions
diff --git a/gcc-4.7/gcc/config/arm/elf.h b/gcc-4.7/gcc/config/arm/elf.h
index e0a0aa06c..417adf8a2 100644
--- a/gcc-4.7/gcc/config/arm/elf.h
+++ b/gcc-4.7/gcc/config/arm/elf.h
@@ -52,8 +52,7 @@
#undef SUBSUBTARGET_EXTRA_SPECS
#define SUBSUBTARGET_EXTRA_SPECS
-#ifndef ASM_SPEC
-#define ASM_SPEC "\
+#define LINUX_ASM_SPEC "\
%{mbig-endian:-EB} \
%{mlittle-endian:-EL} \
%(asm_cpu_spec) \
@@ -62,6 +61,9 @@
%{mthumb-interwork:-mthumb-interwork} \
%{mfloat-abi=*} %{mfpu=*} \
%(subtarget_extra_asm_spec)"
+
+#ifndef ASM_SPEC
+#define ASM_SPEC LINUX_ASM_SPEC
#endif
/* The ARM uses @ are a comment character so we need to redefine
diff --git a/gcc-4.7/gcc/config/arm/linux-eabi.h b/gcc-4.7/gcc/config/arm/linux-eabi.h
index 3331f521b..88811b7ec 100644
--- a/gcc-4.7/gcc/config/arm/linux-eabi.h
+++ b/gcc-4.7/gcc/config/arm/linux-eabi.h
@@ -79,6 +79,11 @@
#define CC1PLUS_SPEC \
LINUX_OR_ANDROID_CC ("", ANDROID_CC1PLUS_SPEC)
+#undef ASM_SPEC
+#define ASM_SPEC \
+ LINUX_OR_ANDROID_CC (LINUX_ASM_SPEC, \
+ LINUX_ASM_SPEC " " ANDROID_ASM_SPEC)
+
#undef LIB_SPEC
#define LIB_SPEC \
LINUX_OR_ANDROID_LD (GNU_USER_TARGET_LIB_SPEC, \
diff --git a/gcc-4.7/gcc/config/i386/gnu-user.h b/gcc-4.7/gcc/config/i386/gnu-user.h
index b00a9db38..12b00e164 100644
--- a/gcc-4.7/gcc/config/i386/gnu-user.h
+++ b/gcc-4.7/gcc/config/i386/gnu-user.h
@@ -103,7 +103,8 @@ along with GCC; see the file COPYING3. If not see
#undef ASM_SPEC
#define ASM_SPEC \
- "--32 %{!mno-sse2avx:%{mavx:-msse2avx}} %{msse2avx:%{!mavx:-msse2avx}}"
+ "--32 %{!mno-sse2avx:%{mavx:-msse2avx}} %{msse2avx:%{!mavx:-msse2avx}} " \
+ LINUX_OR_ANDROID_CC ("", ANDROID_ASM_SPEC)
#undef SUBTARGET_EXTRA_SPECS
#define SUBTARGET_EXTRA_SPECS \
diff --git a/gcc-4.7/gcc/config/linux-android.h b/gcc-4.7/gcc/config/linux-android.h
index f9ab318d1..033cfefd1 100644
--- a/gcc-4.7/gcc/config/linux-android.h
+++ b/gcc-4.7/gcc/config/linux-android.h
@@ -39,7 +39,7 @@
"%{" NOANDROID "|tno-android-ld:" LINUX_SPEC ";:" ANDROID_SPEC "}"
#define ANDROID_LINK_SPEC \
- "%{shared: -Bsymbolic}"
+ "%{shared: -Bsymbolic} -z noexecstack -z relro -z now"
#define ANDROID_CC1_SPEC(ANDROID_PIC_DEFAULT) \
"%{!mglibc:%{!muclibc:%{!mbionic: -mbionic}}} " \
@@ -49,6 +49,9 @@
"%{!fexceptions:%{!fno-exceptions: -fno-exceptions}} " \
"%{!frtti:%{!fno-rtti: -fno-rtti}}"
+#define ANDROID_ASM_SPEC \
+ "--noexecstack"
+
#define ANDROID_LIB_SPEC \
"%{!static: -ldl}"
diff --git a/gcc-4.7/gcc/config/mips/gnu-user.h b/gcc-4.7/gcc/config/mips/gnu-user.h
index 4ceb38fce..ebce0822f 100644
--- a/gcc-4.7/gcc/config/mips/gnu-user.h
+++ b/gcc-4.7/gcc/config/mips/gnu-user.h
@@ -68,7 +68,8 @@ along with GCC; see the file COPYING3. If not see
#undef SUBTARGET_ASM_SPEC
#define SUBTARGET_ASM_SPEC \
- "%{!mno-abicalls:%{mplt:-call_nonpic;:-KPIC}}"
+ "%{!mno-abicalls:%{mplt:-call_nonpic;:-KPIC}} " \
+ LINUX_OR_ANDROID_CC ("", ANDROID_ASM_SPEC)
/* The MIPS assembler has different syntax for .set. We set it to
.dummy to trap any errors. */
diff --git a/gcc-4.7/libstdc++-v3/libsupc++/eh_globals.cc b/gcc-4.7/libstdc++-v3/libsupc++/eh_globals.cc
index 0c7f6b760..fa9b5196b 100644
--- a/gcc-4.7/libstdc++-v3/libsupc++/eh_globals.cc
+++ b/gcc-4.7/libstdc++-v3/libsupc++/eh_globals.cc
@@ -101,6 +101,14 @@ struct __eh_globals_init
~__eh_globals_init()
{
+ /* Work-around for an Android-specific bug, where this destructor
+ * is called with a NULL object pointer. This is due to a bug in the
+ * __cxa_finalize() implementation that was only fixed in 2.2.
+ */
+#ifdef __ANDROID__
+ if (this == NULL)
+ return;
+#endif
if (_M_init)
__gthread_key_delete(_M_key);
_M_init = false;