mirror of
https://github.com/crosstool-ng/crosstool-ng.git
synced 2024-12-21 05:43:09 +00:00
More fixes after the upgrades:
- GLIBC requires a fix to work with binutils 2.30 on aarch64. This fix relies on binutils 2.24 or newer, which is okay for glibc 2.26 since it needs 2.25 or newer anyway. But older glibc versions are now pinned to binutils 2.29 or older on aarch64. - xtensa needs patches in libgcc with gcc 7.3. - comment in newlib's patch to indicate it is a reversal of a commit. Signed-off-by: Alexey Neyman <stilor@att.net>
This commit is contained in:
parent
1c329c33bf
commit
36bb675a71
@ -26,9 +26,14 @@ config GLIBC_DEP_KERNEL_HEADERS_VERSION
|
||||
def_bool y
|
||||
select LINUX_REQUIRE_3_2_or_later if GLIBC_2_24_or_later
|
||||
|
||||
# Glibc 2.26 requires at least binutils 2.25.
|
||||
# Also, binutils 2.30 fail while compiling aarch64 glibc; fixed in 2.27
|
||||
# and backported to 2.26. For other versions, require binutils older than
|
||||
# 2.30 (if the patch is backported, binutils 2.23 will break).
|
||||
config GLIBC_DEP_BINUTILS
|
||||
def_bool y
|
||||
select BINUTILS_REQUIRE_2_25_or_later if GLIBC_2_26_or_later
|
||||
select BINUTILS_REQUIRE_older_than_2_30 if GLIBC_older_than_2_26 && ARCH_ARM && ARCH_64
|
||||
|
||||
config GLIBC_DEP_GCC
|
||||
def_bool y
|
||||
|
@ -1,6 +1,6 @@
|
||||
repository='git git://sourceware.org/git/binutils-gdb.git'
|
||||
mirrors='$(CT_Mirrors GNU binutils) $(CT_Mirrors sourceware binutils/releases)'
|
||||
origin='GNU'
|
||||
milestones='2.23 2.25'
|
||||
milestones='2.23 2.25 2.30'
|
||||
archive_formats='.tar.xz .tar.bz2 .tar.gz'
|
||||
signature_format='packed/.sig'
|
||||
|
@ -53,7 +53,7 @@
|
||||
if test x"$have_pic_shared" != x"yes" -o x"$ac_cv_search_dlopen" = x"no"; then
|
||||
--- a/gcc/configure
|
||||
+++ b/gcc/configure
|
||||
@@ -29478,6 +29478,9 @@
|
||||
@@ -29510,6 +29510,9 @@
|
||||
|
||||
pluginlibs=
|
||||
|
||||
@ -63,7 +63,7 @@
|
||||
case "${host}" in
|
||||
*-*-darwin*)
|
||||
if test x$build = x$host; then
|
||||
@@ -29488,6 +29491,11 @@
|
||||
@@ -29520,6 +29523,11 @@
|
||||
export_sym_check=
|
||||
fi
|
||||
;;
|
||||
@ -75,7 +75,7 @@
|
||||
*)
|
||||
if test x$build = x$host; then
|
||||
export_sym_check="objdump${exeext} -T"
|
||||
@@ -29600,23 +29608,23 @@
|
||||
@@ -29632,23 +29640,23 @@
|
||||
case "${host}" in
|
||||
*-*-darwin*)
|
||||
CFLAGS=`echo $CFLAGS | sed s/-mdynamic-no-pic//g`
|
||||
|
@ -10,7 +10,7 @@ Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
|
||||
|
||||
--- a/libgcc/config.host
|
||||
+++ b/libgcc/config.host
|
||||
@@ -820,7 +820,7 @@
|
||||
@@ -821,7 +821,7 @@
|
||||
m68k*-*-openbsd*)
|
||||
;;
|
||||
m68k-*-uclinux*) # Motorola m68k/ColdFire running uClinux with uClibc
|
529
packages/gcc/7.3.0/0012-crystax.patch
vendored
Normal file
529
packages/gcc/7.3.0/0012-crystax.patch
vendored
Normal file
@ -0,0 +1,529 @@
|
||||
commit 080803512c8f6f87c2f1f711170d54033144d628
|
||||
Author: Dmitry Moskalchuk <dm@crystax.net>
|
||||
Date: Wed Jul 29 11:28:29 2015 +0300
|
||||
|
||||
[android] Apply Android-related modifications
|
||||
|
||||
Signed-off-by: Dmitry Moskalchuk <dm@crystax.net>
|
||||
|
||||
[Edited: keep libstdc++, drop libcrystax-related modifications]
|
||||
---
|
||||
gcc/config.gcc | 17 +++++++-
|
||||
gcc/config/aarch64/aarch64-linux-android.h | 59 +++++++++++++++++++++++++++++
|
||||
gcc/config/aarch64/aarch64-linux.h | 9 +++-
|
||||
gcc/config/arm/arm.h | 3 -
|
||||
gcc/config/arm/arm.md | 2
|
||||
gcc/config/arm/arm.opt | 4 +
|
||||
gcc/config/arm/elf.h | 9 ++--
|
||||
gcc/config/arm/linux-eabi.h | 7 ++-
|
||||
gcc/config/i386/gnu-user.h | 7 ++-
|
||||
gcc/config/i386/gnu-user64.h | 5 ++
|
||||
gcc/config/i386/linux-common.h | 8 +++
|
||||
gcc/config/linux-android.h | 13 +++---
|
||||
gcc/config/mips/android.h | 49 ++++++++++++++++++++++++
|
||||
gcc/config/mips/gnu-user.h | 6 +-
|
||||
gcc/config/mips/linux-common.h | 2
|
||||
gcc/config/mips/t-linux-android | 3 +
|
||||
gcc/config/mips/t-linux-android64 | 4 +
|
||||
libgcc/gthr-posix.h | 13 ++++++
|
||||
libstdc++-v3/configure | 12 +++++
|
||||
libstdc++-v3/include/bits/locale_facets.h | 18 +++++++-
|
||||
libstdc++-v3/libsupc++/guard.cc | 5 ++
|
||||
21 files changed, 235 insertions(+), 20 deletions(-)
|
||||
|
||||
--- a/gcc/config.gcc
|
||||
+++ b/gcc/config.gcc
|
||||
@@ -963,13 +963,17 @@
|
||||
tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-freebsd"
|
||||
;;
|
||||
aarch64*-*-linux*)
|
||||
- tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h"
|
||||
+ tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h"
|
||||
tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-linux.h"
|
||||
+ extra_options="${extra_options} linux-android.opt"
|
||||
tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-linux"
|
||||
case $target in
|
||||
aarch64_be-*)
|
||||
tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
|
||||
;;
|
||||
+ aarch64*-*-linux-android*)
|
||||
+ tm_file="${tm_file} aarch64/aarch64-linux-android.h"
|
||||
+ ;;
|
||||
esac
|
||||
aarch64_multilibs="${with_multilib_list}"
|
||||
if test "$aarch64_multilibs" = "default"; then
|
||||
@@ -2092,6 +2096,17 @@
|
||||
tm_file="dbxelf.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/linux.h mips/linux-common.h"
|
||||
extra_options="${extra_options} linux-android.opt"
|
||||
case ${target} in
|
||||
+ mips64*android*)
|
||||
+ default_mips_arch=mips64r6
|
||||
+ default_mips_abi=64
|
||||
+ tm_file="${tm_file} mips/android.h"
|
||||
+ tmake_file="${tmake_file} mips/t-linux-android64"
|
||||
+ ;;
|
||||
+ mips*android*)
|
||||
+ default_mips_arch=mips32
|
||||
+ tm_file="${tm_file} mips/android.h"
|
||||
+ tmake_file="$tmake_file mips/t-linux-android"
|
||||
+ ;;
|
||||
mipsisa32r6*)
|
||||
default_mips_arch=mips32r6
|
||||
;;
|
||||
--- /dev/null
|
||||
+++ b/gcc/config/aarch64/aarch64-linux-android.h
|
||||
@@ -0,0 +1,59 @@
|
||||
+/* Machine description for AArch64 architecture.
|
||||
+ Copyright (C) 2014 Free Software Foundation, Inc.
|
||||
+
|
||||
+ This file is part of GCC.
|
||||
+
|
||||
+ GCC is free software; you can redistribute it and/or modify it
|
||||
+ under the terms of the GNU General Public License as published by
|
||||
+ the Free Software Foundation; either version 3, or (at your option)
|
||||
+ any later version.
|
||||
+
|
||||
+ GCC is distributed in the hope that it will be useful, but
|
||||
+ WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ General Public License for more details.
|
||||
+
|
||||
+ You should have received a copy of the GNU General Public License
|
||||
+ along with GCC; see the file COPYING3. If not see
|
||||
+ <http://www.gnu.org/licenses/>. */
|
||||
+
|
||||
+#ifndef GCC_AARCH64_LINUX_ANDROID_H
|
||||
+#define GCC_AARCH64_LINUX_ANDROID_H
|
||||
+
|
||||
+
|
||||
+#undef TARGET_OS_CPP_BUILTINS
|
||||
+#define TARGET_OS_CPP_BUILTINS() \
|
||||
+ do \
|
||||
+ { \
|
||||
+ GNU_USER_TARGET_OS_CPP_BUILTINS(); \
|
||||
+ ANDROID_TARGET_OS_CPP_BUILTINS(); \
|
||||
+ } \
|
||||
+ while (0)
|
||||
+
|
||||
+#undef LINK_SPEC
|
||||
+#define LINK_SPEC \
|
||||
+ LINUX_OR_ANDROID_LD (LINUX_TARGET_LINK_SPEC, \
|
||||
+ LINUX_TARGET_LINK_SPEC " " ANDROID_LINK_SPEC)
|
||||
+
|
||||
+#undef CC1_SPEC
|
||||
+#define CC1_SPEC \
|
||||
+ LINUX_OR_ANDROID_CC (GNU_USER_TARGET_CC1_SPEC, \
|
||||
+ GNU_USER_TARGET_CC1_SPEC " " ANDROID_CC1_SPEC("-fpic"))
|
||||
+
|
||||
+#define CC1PLUS_SPEC \
|
||||
+ LINUX_OR_ANDROID_CC ("", ANDROID_CC1PLUS_SPEC)
|
||||
+
|
||||
+#undef LIB_SPEC
|
||||
+#define LIB_SPEC \
|
||||
+ LINUX_OR_ANDROID_LD (GNU_USER_TARGET_LIB_SPEC, \
|
||||
+ GNU_USER_TARGET_NO_PTHREADS_LIB_SPEC " " ANDROID_LIB_SPEC)
|
||||
+
|
||||
+#undef STARTFILE_SPEC
|
||||
+#define STARTFILE_SPEC \
|
||||
+ LINUX_OR_ANDROID_LD (GNU_USER_TARGET_STARTFILE_SPEC, ANDROID_STARTFILE_SPEC)
|
||||
+
|
||||
+#undef ENDFILE_SPEC
|
||||
+#define ENDFILE_SPEC \
|
||||
+ LINUX_OR_ANDROID_LD (GNU_USER_TARGET_ENDFILE_SPEC, ANDROID_ENDFILE_SPEC)
|
||||
+
|
||||
+#endif /* GCC_AARCH64_LINUX_ANDROID_H */
|
||||
--- a/gcc/config/aarch64/aarch64-linux.h
|
||||
+++ b/gcc/config/aarch64/aarch64-linux.h
|
||||
@@ -21,7 +21,14 @@
|
||||
#ifndef GCC_AARCH64_LINUX_H
|
||||
#define GCC_AARCH64_LINUX_H
|
||||
|
||||
-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
|
||||
+#ifndef RUNTIME_ROOT_PREFIX
|
||||
+#define RUNTIME_ROOT_PREFIX ""
|
||||
+#endif
|
||||
+#define GLIBC_DYNAMIC_LINKER RUNTIME_ROOT_PREFIX "/lib/ld-linux-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
|
||||
+#ifdef BIONIC_DYNAMIC_LINKER
|
||||
+#undef BIONIC_DYNAMIC_LINKER
|
||||
+#endif
|
||||
+#define BIONIC_DYNAMIC_LINKER RUNTIME_ROOT_PREFIX "/system/bin/linker64"
|
||||
|
||||
#undef MUSL_DYNAMIC_LINKER
|
||||
#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
|
||||
--- a/gcc/config/arm/arm.h
|
||||
+++ b/gcc/config/arm/arm.h
|
||||
@@ -1876,10 +1876,11 @@
|
||||
|
||||
#define CASE_VECTOR_PC_RELATIVE (TARGET_THUMB2 \
|
||||
|| (TARGET_THUMB1 \
|
||||
+ && !inline_thumb1_jump_table \
|
||||
&& (optimize_size || flag_pic)))
|
||||
|
||||
#define CASE_VECTOR_SHORTEN_MODE(min, max, body) \
|
||||
- (TARGET_THUMB1 \
|
||||
+ (TARGET_THUMB1 && !inline_thumb1_jump_table \
|
||||
? (min >= 0 && max < 512 \
|
||||
? (ADDR_DIFF_VEC_FLAGS (body).offset_unsigned = 1, QImode) \
|
||||
: min >= -256 && max < 256 \
|
||||
--- a/gcc/config/arm/arm.md
|
||||
+++ b/gcc/config/arm/arm.md
|
||||
@@ -8668,7 +8668,7 @@
|
||||
(match_operand:SI 2 "const_int_operand" "") ; total range
|
||||
(match_operand:SI 3 "" "") ; table label
|
||||
(match_operand:SI 4 "" "")] ; Out of range label
|
||||
- "(TARGET_32BIT || optimize_size || flag_pic) && !target_pure_code"
|
||||
+ "(TARGET_32BIT || ((optimize_size || flag_pic) && !inline_thumb1_jump_table)) && !target_pure_code"
|
||||
"
|
||||
{
|
||||
enum insn_code code;
|
||||
--- a/gcc/config/arm/arm.opt
|
||||
+++ b/gcc/config/arm/arm.opt
|
||||
@@ -193,6 +193,10 @@
|
||||
Target Report Mask(INTERWORK)
|
||||
Support calls between Thumb and ARM instruction sets.
|
||||
|
||||
+minline-thumb1-jumptable
|
||||
+Target Report Var(inline_thumb1_jump_table)
|
||||
+Inline Thumb1 Jump table code
|
||||
+
|
||||
mtls-dialect=
|
||||
Target RejectNegative Joined Enum(tls_type) Var(target_tls_dialect) Init(TLS_GNU)
|
||||
Specify thread local storage scheme.
|
||||
--- a/gcc/config/arm/elf.h
|
||||
+++ b/gcc/config/arm/elf.h
|
||||
@@ -56,8 +56,7 @@
|
||||
#undef SUBSUBTARGET_EXTRA_SPECS
|
||||
#define SUBSUBTARGET_EXTRA_SPECS
|
||||
|
||||
-#ifndef ASM_SPEC
|
||||
-#define ASM_SPEC "\
|
||||
+#define DEFAULT_ASM_SPEC "\
|
||||
%{mbig-endian:-EB} \
|
||||
%{mlittle-endian:-EL} \
|
||||
%(asm_cpu_spec) \
|
||||
@@ -66,6 +65,9 @@
|
||||
%{mthumb-interwork:-mthumb-interwork} \
|
||||
%{mfloat-abi=*} %{mfpu=*} \
|
||||
%(subtarget_extra_asm_spec)"
|
||||
+
|
||||
+#ifndef ASM_SPEC
|
||||
+#define ASM_SPEC DEFAULT_ASM_SPEC
|
||||
#endif
|
||||
|
||||
/* The ARM uses @ are a comment character so we need to redefine
|
||||
@@ -95,7 +97,8 @@
|
||||
the code more efficient, but for Thumb-1 it's better to put them out of
|
||||
band unless we are generating compressed tables. */
|
||||
#define JUMP_TABLES_IN_TEXT_SECTION \
|
||||
- ((TARGET_32BIT || (TARGET_THUMB && (optimize_size || flag_pic))) \
|
||||
+ ((TARGET_32BIT || (TARGET_THUMB && !inline_thumb1_jump_table \
|
||||
+ && (optimize_size || flag_pic))) \
|
||||
&& !target_pure_code)
|
||||
|
||||
#ifndef LINK_SPEC
|
||||
--- a/gcc/config/arm/linux-eabi.h
|
||||
+++ b/gcc/config/arm/linux-eabi.h
|
||||
@@ -102,11 +102,16 @@
|
||||
#define CC1_SPEC \
|
||||
LINUX_OR_ANDROID_CC (GNU_USER_TARGET_CC1_SPEC " " ASAN_CC1_SPEC, \
|
||||
GNU_USER_TARGET_CC1_SPEC " " ASAN_CC1_SPEC " " \
|
||||
- ANDROID_CC1_SPEC)
|
||||
+ ANDROID_CC1_SPEC("-fpic"))
|
||||
|
||||
#define CC1PLUS_SPEC \
|
||||
LINUX_OR_ANDROID_CC ("", ANDROID_CC1PLUS_SPEC)
|
||||
|
||||
+#undef ASM_SPEC
|
||||
+#define ASM_SPEC \
|
||||
+ LINUX_OR_ANDROID_CC (DEFAULT_ASM_SPEC, \
|
||||
+ DEFAULT_ASM_SPEC " " ANDROID_ASM_SPEC)
|
||||
+
|
||||
#undef LIB_SPEC
|
||||
#define LIB_SPEC \
|
||||
LINUX_OR_ANDROID_LD (GNU_USER_TARGET_LIB_SPEC, \
|
||||
--- a/gcc/config/i386/gnu-user.h
|
||||
+++ b/gcc/config/i386/gnu-user.h
|
||||
@@ -65,9 +65,14 @@
|
||||
When the -shared link option is used a final link is not being
|
||||
done. */
|
||||
|
||||
+#undef ANDROID_TARGET_CC1_SPEC
|
||||
+#define ANDROID_TARGET_CC1_SPEC \
|
||||
+ " -mssse3 -fno-short-enums " \
|
||||
+
|
||||
#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 \
|
||||
--- a/gcc/config/i386/gnu-user64.h
|
||||
+++ b/gcc/config/i386/gnu-user64.h
|
||||
@@ -46,6 +46,11 @@
|
||||
#define SPEC_X32 "mx32"
|
||||
#endif
|
||||
|
||||
+#undef ANDROID_TARGET_CC1_SPEC
|
||||
+#define ANDROID_TARGET_CC1_SPEC \
|
||||
+ "%{m32:-mssse3 -fno-short-enums}" \
|
||||
+ "%{!m32:-msse4.2 -mpopcnt}"
|
||||
+
|
||||
#undef ASM_SPEC
|
||||
#define ASM_SPEC "%{" SPEC_32 ":--32} \
|
||||
%{" SPEC_64 ":--64} \
|
||||
--- a/gcc/config/i386/linux-common.h
|
||||
+++ b/gcc/config/i386/linux-common.h
|
||||
@@ -30,7 +30,13 @@
|
||||
#undef CC1_SPEC
|
||||
#define CC1_SPEC \
|
||||
LINUX_OR_ANDROID_CC (GNU_USER_TARGET_CC1_SPEC, \
|
||||
- GNU_USER_TARGET_CC1_SPEC " " ANDROID_CC1_SPEC)
|
||||
+ GNU_USER_TARGET_CC1_SPEC \
|
||||
+ ANDROID_TARGET_CC1_SPEC \
|
||||
+ " " \
|
||||
+ ANDROID_CC1_SPEC("-fPIC"))
|
||||
+
|
||||
+#define CC1PLUS_SPEC \
|
||||
+ LINUX_OR_ANDROID_CC ("", ANDROID_CC1PLUS_SPEC)
|
||||
|
||||
#undef LINK_SPEC
|
||||
#define LINK_SPEC \
|
||||
--- a/gcc/config/linux-android.h
|
||||
+++ b/gcc/config/linux-android.h
|
||||
@@ -38,15 +38,18 @@
|
||||
"%{" 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 \
|
||||
+#define ANDROID_CC1_SPEC(ANDROID_PIC_DEFAULT) \
|
||||
"%{!mglibc:%{!muclibc:%{!mbionic: -mbionic}}} " \
|
||||
- "%{!fno-pic:%{!fno-PIC:%{!fpic:%{!fPIC: -fPIC}}}}"
|
||||
+ "%{!fno-pic:%{!fno-PIC:%{!fpic:%{!fPIC: " ANDROID_PIC_DEFAULT "}}}}"
|
||||
|
||||
#define ANDROID_CC1PLUS_SPEC \
|
||||
- "%{!fexceptions:%{!fno-exceptions: -fno-exceptions}} " \
|
||||
- "%{!frtti:%{!fno-rtti: -fno-rtti}}"
|
||||
+ "%{!fexceptions:%{!fno-exceptions: -fexceptions}} " \
|
||||
+ "%{!frtti:%{!fno-rtti: -frtti}}"
|
||||
+
|
||||
+#define ANDROID_ASM_SPEC \
|
||||
+ "--noexecstack"
|
||||
|
||||
#define ANDROID_LIB_SPEC \
|
||||
"%{!static: -ldl}"
|
||||
--- /dev/null
|
||||
+++ b/gcc/config/mips/android.h
|
||||
@@ -0,0 +1,49 @@
|
||||
+/* Target macros for mips*-*android* targets.
|
||||
+ Copyright (C) 2014 Free Software Foundation, Inc.
|
||||
+
|
||||
+This file is part of GCC.
|
||||
+
|
||||
+GCC is free software; you can redistribute it and/or modify
|
||||
+it under the terms of the GNU General Public License as published by
|
||||
+the Free Software Foundation; either version 3, or (at your option)
|
||||
+any later version.
|
||||
+
|
||||
+GCC is distributed in the hope that it will be useful,
|
||||
+but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+GNU General Public License for more details.
|
||||
+
|
||||
+You should have received a copy of the GNU General Public License
|
||||
+along with GCC; see the file COPYING3. If not see
|
||||
+<http://www.gnu.org/licenses/>. */
|
||||
+
|
||||
+#undef DRIVER_SELF_SPECS
|
||||
+#define DRIVER_SELF_SPECS \
|
||||
+ /* Make sure a -mips option is present. This helps us to pick \
|
||||
+ the right multilib, and also makes the later specs easier \
|
||||
+ to write. */ \
|
||||
+ MIPS_ISA_LEVEL_SPEC, \
|
||||
+ \
|
||||
+ /* Infer the default float setting from -march. */ \
|
||||
+ MIPS_ARCH_FLOAT_SPEC, \
|
||||
+ \
|
||||
+ /* Infer the -msynci setting from -march if not explicitly set. */ \
|
||||
+ MIPS_ISA_SYNCI_SPEC, \
|
||||
+ \
|
||||
+ /* If no ABI option is specified, infer one from the ISA level \
|
||||
+ or -mgp setting. */ \
|
||||
+ "%{!mabi=*: %{" MIPS_32BIT_OPTION_SPEC ": -mabi=32;: -mabi=64}}", \
|
||||
+ \
|
||||
+ /* If no FP ABI option is specified, infer one from the \
|
||||
+ ABI/ISA level unless there is a conflicting option. */ \
|
||||
+ "%{!msoft-float: %{!msingle-float: %{!mfp*: %{!mmsa: %{mabi=32: %{" \
|
||||
+ MIPS_FPXX_OPTION_SPEC ": -mfpxx}}}}}}", \
|
||||
+ \
|
||||
+ /* If no odd-spreg option is specified, infer one from the ISA. */ \
|
||||
+ "%{!modd-spreg: %{mabi=32: %{mips32r6: -mno-odd-spreg}}}", \
|
||||
+ \
|
||||
+ /* Base SPECs. */ \
|
||||
+ BASE_DRIVER_SELF_SPECS, \
|
||||
+ \
|
||||
+ /* Use the standard linux specs for everything else. */ \
|
||||
+ LINUX_DRIVER_SELF_SPECS
|
||||
--- a/gcc/config/mips/gnu-user.h
|
||||
+++ b/gcc/config/mips/gnu-user.h
|
||||
@@ -36,6 +36,7 @@
|
||||
/* The GNU C++ standard library requires this. */ \
|
||||
if (c_dialect_cxx ()) \
|
||||
builtin_define ("_GNU_SOURCE"); \
|
||||
+ ANDROID_TARGET_OS_CPP_BUILTINS(); \
|
||||
} while (0)
|
||||
|
||||
#undef SUBTARGET_CPP_SPEC
|
||||
@@ -71,7 +72,8 @@
|
||||
|
||||
#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. */
|
||||
@@ -120,7 +122,7 @@
|
||||
#endif
|
||||
|
||||
#define LINUX_DRIVER_SELF_SPECS \
|
||||
- NO_SHARED_SPECS \
|
||||
+ LINUX_OR_ANDROID_CC(NO_SHARED_SPECS, "") \
|
||||
MARCH_MTUNE_NATIVE_SPECS, \
|
||||
/* -mplt has no effect without -mno-shared. Simplify later \
|
||||
specs handling by removing a redundant option. */ \
|
||||
--- a/gcc/config/mips/linux-common.h
|
||||
+++ b/gcc/config/mips/linux-common.h
|
||||
@@ -35,7 +35,7 @@
|
||||
#undef SUBTARGET_CC1_SPEC
|
||||
#define SUBTARGET_CC1_SPEC \
|
||||
LINUX_OR_ANDROID_CC (GNU_USER_TARGET_CC1_SPEC, \
|
||||
- GNU_USER_TARGET_CC1_SPEC " " ANDROID_CC1_SPEC)
|
||||
+ GNU_USER_TARGET_CC1_SPEC " " ANDROID_CC1_SPEC("-fpic"))
|
||||
|
||||
#undef CC1PLUS_SPEC
|
||||
#define CC1PLUS_SPEC \
|
||||
--- /dev/null
|
||||
+++ b/gcc/config/mips/t-linux-android
|
||||
@@ -0,0 +1,3 @@
|
||||
+MULTILIB_OPTIONS = mips32r2/mips32r6
|
||||
+MULTILIB_DIRNAMES = mips-r2 mips-r6
|
||||
+MULTILIB_OSDIRNAMES = ../libr2 ../libr6
|
||||
--- /dev/null
|
||||
+++ b/gcc/config/mips/t-linux-android64
|
||||
@@ -0,0 +1,4 @@
|
||||
+MULTILIB_OPTIONS = mabi=32 mips32/mips32r2/mips32r6/mips64r2/mips64r6
|
||||
+MULTILIB_DIRNAMES = 32 mips-r1 mips-r2 mips-r6 mips64-r2 mips64-r6
|
||||
+MULTILIB_OSDIRNAMES = ../lib ../lib ../libr2 ../libr6 ../lib64r2 ../lib64
|
||||
+MULTILIB_REQUIRED = mabi=32/mips32 mabi=32/mips32r2 mabi=32/mips32r6 mips64r2 mips64r6
|
||||
--- a/libgcc/gthr-posix.h
|
||||
+++ b/libgcc/gthr-posix.h
|
||||
@@ -32,6 +32,19 @@
|
||||
#define __GTHREADS 1
|
||||
#define __GTHREADS_CXX0X 1
|
||||
|
||||
+/* The following should normally be in a different header file,
|
||||
+ * but I couldn't find the right location. The point of the macro
|
||||
+ * definition below is to prevent libsupc++ and libstdc++ to reference
|
||||
+ * weak symbols in their static C++ constructors. Such code crashes
|
||||
+ * when a shared object linked statically to these libraries is
|
||||
+ * loaded on Android 2.1 (Eclair) and older platform releases, due
|
||||
+ * to a dynamic linker bug.
|
||||
+ */
|
||||
+#ifdef __ANDROID__
|
||||
+#undef GTHREAD_USE_WEAK
|
||||
+#define GTHREAD_USE_WEAK 0
|
||||
+#endif
|
||||
+
|
||||
#include <pthread.h>
|
||||
|
||||
#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \
|
||||
--- a/libstdc++-v3/configure
|
||||
+++ b/libstdc++-v3/configure
|
||||
@@ -78536,6 +78536,12 @@
|
||||
/* end confdefs.h. */
|
||||
#include <sys/syscall.h>
|
||||
int lk;
|
||||
+#if !defined(SYS_gettid)
|
||||
+#define SYS_gettid __NR_gettid
|
||||
+#endif
|
||||
+#if !defined(SYS_futex)
|
||||
+#define SYS_futex __NR_futex
|
||||
+#endif
|
||||
int
|
||||
main ()
|
||||
{
|
||||
@@ -78594,6 +78600,12 @@
|
||||
/* end confdefs.h. */
|
||||
#include <sys/syscall.h>
|
||||
int lk;
|
||||
+#if !defined(SYS_gettid)
|
||||
+#define SYS_gettid __NR_gettid
|
||||
+#endif
|
||||
+#if !defined(SYS_futex)
|
||||
+#define SYS_futex __NR_futex
|
||||
+#endif
|
||||
int
|
||||
main ()
|
||||
{
|
||||
--- a/libstdc++-v3/include/bits/locale_facets.h
|
||||
+++ b/libstdc++-v3/include/bits/locale_facets.h
|
||||
@@ -47,6 +47,20 @@
|
||||
#include <ext/numeric_traits.h>
|
||||
#include <bits/streambuf_iterator.h>
|
||||
|
||||
+#if !__clang__ && __GNUC__ == 4 && __GNUC_MINOR__ == 9 && __i386__
|
||||
+// CrystaX: for some reason, x86 gcc-4.9 makes ctype<char>::do_widen() and
|
||||
+// ctype<char>::_M_widen_init() methods working wrong if optimization enabled.
|
||||
+// For ctype<char>::do_widen(), values of passed arguments (__lo, __hi and __to)
|
||||
+// are completely messed up and don't correspond to passed values. In case if
|
||||
+// we disable optimization for those methods, things become correct so we apply
|
||||
+// this workaround here for a time.
|
||||
+// TODO: figure out what exactly wrong here - is it bug in GCC optimization
|
||||
+// algorithm or smth else?
|
||||
+#define __CRYSTAX_X86_DONT_OPTIMIZE __attribute__((optimize(0)))
|
||||
+#else
|
||||
+#define __CRYSTAX_X86_DONT_OPTIMIZE
|
||||
+#endif
|
||||
+
|
||||
namespace std _GLIBCXX_VISIBILITY(default)
|
||||
{
|
||||
_GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
@@ -1102,7 +1116,7 @@
|
||||
* @return @a __hi.
|
||||
*/
|
||||
virtual const char*
|
||||
- do_widen(const char* __lo, const char* __hi, char_type* __to) const
|
||||
+ do_widen(const char* __lo, const char* __hi, char_type* __to) const __CRYSTAX_X86_DONT_OPTIMIZE
|
||||
{
|
||||
__builtin_memcpy(__to, __lo, __hi - __lo);
|
||||
return __hi;
|
||||
@@ -1163,7 +1177,7 @@
|
||||
|
||||
private:
|
||||
void _M_narrow_init() const;
|
||||
- void _M_widen_init() const;
|
||||
+ void _M_widen_init() const __CRYSTAX_X86_DONT_OPTIMIZE;
|
||||
};
|
||||
|
||||
#ifdef _GLIBCXX_USE_WCHAR_T
|
||||
--- a/libstdc++-v3/libsupc++/guard.cc
|
||||
+++ b/libstdc++-v3/libsupc++/guard.cc
|
||||
@@ -34,7 +34,12 @@
|
||||
#if defined(__GTHREADS) && defined(__GTHREAD_HAS_COND) \
|
||||
&& (ATOMIC_INT_LOCK_FREE > 1) && defined(_GLIBCXX_HAVE_LINUX_FUTEX)
|
||||
# include <climits>
|
||||
+#if defined(__ANDROID__)
|
||||
+# include <sys/syscall.h>
|
||||
+# define SYS_futex __NR_futex
|
||||
+#else
|
||||
# include <syscall.h>
|
||||
+#endif
|
||||
# include <unistd.h>
|
||||
# define _GLIBCXX_USE_FUTEX
|
||||
# define _GLIBCXX_FUTEX_WAIT 0
|
540
packages/gcc/7.3.0/0013-crystax.patch
vendored
540
packages/gcc/7.3.0/0013-crystax.patch
vendored
@ -1,529 +1,27 @@
|
||||
commit 080803512c8f6f87c2f1f711170d54033144d628
|
||||
commit 9f057b62caafe08c968103d39b5df82486a175c2
|
||||
Author: Dmitry Moskalchuk <dm@crystax.net>
|
||||
Date: Wed Jul 29 11:28:29 2015 +0300
|
||||
Date: Thu Aug 13 16:11:54 2015 +0300
|
||||
|
||||
[android] Apply Android-related modifications
|
||||
[android] Add additional multilib option: mfloat-abi=hard
|
||||
|
||||
Signed-off-by: Dmitry Moskalchuk <dm@crystax.net>
|
||||
|
||||
[Edited: keep libstdc++, drop libcrystax-related modifications]
|
||||
---
|
||||
gcc/config.gcc | 17 +++++++-
|
||||
gcc/config/aarch64/aarch64-linux-android.h | 59 +++++++++++++++++++++++++++++
|
||||
gcc/config/aarch64/aarch64-linux.h | 9 +++-
|
||||
gcc/config/arm/arm.h | 3 -
|
||||
gcc/config/arm/arm.md | 2
|
||||
gcc/config/arm/arm.opt | 4 +
|
||||
gcc/config/arm/elf.h | 9 ++--
|
||||
gcc/config/arm/linux-eabi.h | 7 ++-
|
||||
gcc/config/i386/gnu-user.h | 7 ++-
|
||||
gcc/config/i386/gnu-user64.h | 5 ++
|
||||
gcc/config/i386/linux-common.h | 8 +++
|
||||
gcc/config/linux-android.h | 13 +++---
|
||||
gcc/config/mips/android.h | 49 ++++++++++++++++++++++++
|
||||
gcc/config/mips/gnu-user.h | 6 +-
|
||||
gcc/config/mips/linux-common.h | 2
|
||||
gcc/config/mips/t-linux-android | 3 +
|
||||
gcc/config/mips/t-linux-android64 | 4 +
|
||||
libgcc/gthr-posix.h | 13 ++++++
|
||||
libstdc++-v3/configure | 12 +++++
|
||||
libstdc++-v3/include/bits/locale_facets.h | 18 +++++++-
|
||||
libstdc++-v3/libsupc++/guard.cc | 5 ++
|
||||
21 files changed, 235 insertions(+), 20 deletions(-)
|
||||
gcc/config/arm/t-linux-androideabi | 7 ++++---
|
||||
1 file changed, 4 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/gcc/config.gcc
|
||||
+++ b/gcc/config.gcc
|
||||
@@ -961,13 +961,17 @@
|
||||
tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-freebsd"
|
||||
;;
|
||||
aarch64*-*-linux*)
|
||||
- tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h"
|
||||
+ tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h"
|
||||
tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-linux.h"
|
||||
+ extra_options="${extra_options} linux-android.opt"
|
||||
tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-linux"
|
||||
case $target in
|
||||
aarch64_be-*)
|
||||
tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
|
||||
;;
|
||||
+ aarch64*-*-linux-android*)
|
||||
+ tm_file="${tm_file} aarch64/aarch64-linux-android.h"
|
||||
+ ;;
|
||||
esac
|
||||
aarch64_multilibs="${with_multilib_list}"
|
||||
if test "$aarch64_multilibs" = "default"; then
|
||||
@@ -2079,6 +2083,17 @@
|
||||
tm_file="dbxelf.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/linux.h mips/linux-common.h"
|
||||
extra_options="${extra_options} linux-android.opt"
|
||||
case ${target} in
|
||||
+ mips64*android*)
|
||||
+ default_mips_arch=mips64r6
|
||||
+ default_mips_abi=64
|
||||
+ tm_file="${tm_file} mips/android.h"
|
||||
+ tmake_file="${tmake_file} mips/t-linux-android64"
|
||||
+ ;;
|
||||
+ mips*android*)
|
||||
+ default_mips_arch=mips32
|
||||
+ tm_file="${tm_file} mips/android.h"
|
||||
+ tmake_file="$tmake_file mips/t-linux-android"
|
||||
+ ;;
|
||||
mipsisa32r6*)
|
||||
default_mips_arch=mips32r6
|
||||
;;
|
||||
--- /dev/null
|
||||
+++ b/gcc/config/aarch64/aarch64-linux-android.h
|
||||
@@ -0,0 +1,59 @@
|
||||
+/* Machine description for AArch64 architecture.
|
||||
+ Copyright (C) 2014 Free Software Foundation, Inc.
|
||||
+
|
||||
+ This file is part of GCC.
|
||||
+
|
||||
+ GCC is free software; you can redistribute it and/or modify it
|
||||
+ under the terms of the GNU General Public License as published by
|
||||
+ the Free Software Foundation; either version 3, or (at your option)
|
||||
+ any later version.
|
||||
+
|
||||
+ GCC is distributed in the hope that it will be useful, but
|
||||
+ WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ General Public License for more details.
|
||||
+
|
||||
+ You should have received a copy of the GNU General Public License
|
||||
+ along with GCC; see the file COPYING3. If not see
|
||||
+ <http://www.gnu.org/licenses/>. */
|
||||
+
|
||||
+#ifndef GCC_AARCH64_LINUX_ANDROID_H
|
||||
+#define GCC_AARCH64_LINUX_ANDROID_H
|
||||
+
|
||||
+
|
||||
+#undef TARGET_OS_CPP_BUILTINS
|
||||
+#define TARGET_OS_CPP_BUILTINS() \
|
||||
+ do \
|
||||
+ { \
|
||||
+ GNU_USER_TARGET_OS_CPP_BUILTINS(); \
|
||||
+ ANDROID_TARGET_OS_CPP_BUILTINS(); \
|
||||
+ } \
|
||||
+ while (0)
|
||||
+
|
||||
+#undef LINK_SPEC
|
||||
+#define LINK_SPEC \
|
||||
+ LINUX_OR_ANDROID_LD (LINUX_TARGET_LINK_SPEC, \
|
||||
+ LINUX_TARGET_LINK_SPEC " " ANDROID_LINK_SPEC)
|
||||
+
|
||||
+#undef CC1_SPEC
|
||||
+#define CC1_SPEC \
|
||||
+ LINUX_OR_ANDROID_CC (GNU_USER_TARGET_CC1_SPEC, \
|
||||
+ GNU_USER_TARGET_CC1_SPEC " " ANDROID_CC1_SPEC("-fpic"))
|
||||
+
|
||||
+#define CC1PLUS_SPEC \
|
||||
+ LINUX_OR_ANDROID_CC ("", ANDROID_CC1PLUS_SPEC)
|
||||
+
|
||||
+#undef LIB_SPEC
|
||||
+#define LIB_SPEC \
|
||||
+ LINUX_OR_ANDROID_LD (GNU_USER_TARGET_LIB_SPEC, \
|
||||
+ GNU_USER_TARGET_NO_PTHREADS_LIB_SPEC " " ANDROID_LIB_SPEC)
|
||||
+
|
||||
+#undef STARTFILE_SPEC
|
||||
+#define STARTFILE_SPEC \
|
||||
+ LINUX_OR_ANDROID_LD (GNU_USER_TARGET_STARTFILE_SPEC, ANDROID_STARTFILE_SPEC)
|
||||
+
|
||||
+#undef ENDFILE_SPEC
|
||||
+#define ENDFILE_SPEC \
|
||||
+ LINUX_OR_ANDROID_LD (GNU_USER_TARGET_ENDFILE_SPEC, ANDROID_ENDFILE_SPEC)
|
||||
+
|
||||
+#endif /* GCC_AARCH64_LINUX_ANDROID_H */
|
||||
--- a/gcc/config/aarch64/aarch64-linux.h
|
||||
+++ b/gcc/config/aarch64/aarch64-linux.h
|
||||
@@ -21,7 +21,14 @@
|
||||
#ifndef GCC_AARCH64_LINUX_H
|
||||
#define GCC_AARCH64_LINUX_H
|
||||
--- a/gcc/config/arm/t-linux-androideabi
|
||||
+++ b/gcc/config/arm/t-linux-androideabi
|
||||
@@ -1,8 +1,9 @@
|
||||
-MULTILIB_OPTIONS = march=armv7-a mthumb
|
||||
-MULTILIB_DIRNAMES = armv7-a thumb
|
||||
-MULTILIB_EXCEPTIONS =
|
||||
+MULTILIB_OPTIONS = march=armv7-a mthumb mfloat-abi=hard
|
||||
+MULTILIB_DIRNAMES = armv7-a thumb hard
|
||||
+MULTILIB_EXCEPTIONS = mfloat-abi=hard* mthumb/mfloat-abi=hard*
|
||||
MULTILIB_MATCHES =
|
||||
MULTILIB_OSDIRNAMES =
|
||||
+MULTILIB_EXTRA_OPTS = Wl,--no-warn-mismatch
|
||||
|
||||
-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
|
||||
+#ifndef RUNTIME_ROOT_PREFIX
|
||||
+#define RUNTIME_ROOT_PREFIX ""
|
||||
+#endif
|
||||
+#define GLIBC_DYNAMIC_LINKER RUNTIME_ROOT_PREFIX "/lib/ld-linux-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
|
||||
+#ifdef BIONIC_DYNAMIC_LINKER
|
||||
+#undef BIONIC_DYNAMIC_LINKER
|
||||
+#endif
|
||||
+#define BIONIC_DYNAMIC_LINKER RUNTIME_ROOT_PREFIX "/system/bin/linker64"
|
||||
|
||||
#undef MUSL_DYNAMIC_LINKER
|
||||
#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
|
||||
--- a/gcc/config/arm/arm.h
|
||||
+++ b/gcc/config/arm/arm.h
|
||||
@@ -1878,10 +1878,11 @@
|
||||
|
||||
#define CASE_VECTOR_PC_RELATIVE (TARGET_THUMB2 \
|
||||
|| (TARGET_THUMB1 \
|
||||
+ && !inline_thumb1_jump_table \
|
||||
&& (optimize_size || flag_pic)))
|
||||
|
||||
#define CASE_VECTOR_SHORTEN_MODE(min, max, body) \
|
||||
- (TARGET_THUMB1 \
|
||||
+ (TARGET_THUMB1 && !inline_thumb1_jump_table \
|
||||
? (min >= 0 && max < 512 \
|
||||
? (ADDR_DIFF_VEC_FLAGS (body).offset_unsigned = 1, QImode) \
|
||||
: min >= -256 && max < 256 \
|
||||
--- a/gcc/config/arm/arm.md
|
||||
+++ b/gcc/config/arm/arm.md
|
||||
@@ -8668,7 +8668,7 @@
|
||||
(match_operand:SI 2 "const_int_operand" "") ; total range
|
||||
(match_operand:SI 3 "" "") ; table label
|
||||
(match_operand:SI 4 "" "")] ; Out of range label
|
||||
- "(TARGET_32BIT || optimize_size || flag_pic) && !target_pure_code"
|
||||
+ "(TARGET_32BIT || ((optimize_size || flag_pic) && !inline_thumb1_jump_table)) && !target_pure_code"
|
||||
"
|
||||
{
|
||||
enum insn_code code;
|
||||
--- a/gcc/config/arm/arm.opt
|
||||
+++ b/gcc/config/arm/arm.opt
|
||||
@@ -193,6 +193,10 @@
|
||||
Target Report Mask(INTERWORK)
|
||||
Support calls between Thumb and ARM instruction sets.
|
||||
|
||||
+minline-thumb1-jumptable
|
||||
+Target Report Var(inline_thumb1_jump_table)
|
||||
+Inline Thumb1 Jump table code
|
||||
+
|
||||
mtls-dialect=
|
||||
Target RejectNegative Joined Enum(tls_type) Var(target_tls_dialect) Init(TLS_GNU)
|
||||
Specify thread local storage scheme.
|
||||
--- a/gcc/config/arm/elf.h
|
||||
+++ b/gcc/config/arm/elf.h
|
||||
@@ -56,8 +56,7 @@
|
||||
#undef SUBSUBTARGET_EXTRA_SPECS
|
||||
#define SUBSUBTARGET_EXTRA_SPECS
|
||||
|
||||
-#ifndef ASM_SPEC
|
||||
-#define ASM_SPEC "\
|
||||
+#define DEFAULT_ASM_SPEC "\
|
||||
%{mbig-endian:-EB} \
|
||||
%{mlittle-endian:-EL} \
|
||||
%(asm_cpu_spec) \
|
||||
@@ -66,6 +65,9 @@
|
||||
%{mthumb-interwork:-mthumb-interwork} \
|
||||
%{mfloat-abi=*} %{mfpu=*} \
|
||||
%(subtarget_extra_asm_spec)"
|
||||
+
|
||||
+#ifndef ASM_SPEC
|
||||
+#define ASM_SPEC DEFAULT_ASM_SPEC
|
||||
#endif
|
||||
|
||||
/* The ARM uses @ are a comment character so we need to redefine
|
||||
@@ -95,7 +97,8 @@
|
||||
the code more efficient, but for Thumb-1 it's better to put them out of
|
||||
band unless we are generating compressed tables. */
|
||||
#define JUMP_TABLES_IN_TEXT_SECTION \
|
||||
- ((TARGET_32BIT || (TARGET_THUMB && (optimize_size || flag_pic))) \
|
||||
+ ((TARGET_32BIT || (TARGET_THUMB && !inline_thumb1_jump_table \
|
||||
+ && (optimize_size || flag_pic))) \
|
||||
&& !target_pure_code)
|
||||
|
||||
#ifndef LINK_SPEC
|
||||
--- a/gcc/config/arm/linux-eabi.h
|
||||
+++ b/gcc/config/arm/linux-eabi.h
|
||||
@@ -102,11 +102,16 @@
|
||||
#define CC1_SPEC \
|
||||
LINUX_OR_ANDROID_CC (GNU_USER_TARGET_CC1_SPEC " " ASAN_CC1_SPEC, \
|
||||
GNU_USER_TARGET_CC1_SPEC " " ASAN_CC1_SPEC " " \
|
||||
- ANDROID_CC1_SPEC)
|
||||
+ ANDROID_CC1_SPEC("-fpic"))
|
||||
|
||||
#define CC1PLUS_SPEC \
|
||||
LINUX_OR_ANDROID_CC ("", ANDROID_CC1PLUS_SPEC)
|
||||
|
||||
+#undef ASM_SPEC
|
||||
+#define ASM_SPEC \
|
||||
+ LINUX_OR_ANDROID_CC (DEFAULT_ASM_SPEC, \
|
||||
+ DEFAULT_ASM_SPEC " " ANDROID_ASM_SPEC)
|
||||
+
|
||||
#undef LIB_SPEC
|
||||
#define LIB_SPEC \
|
||||
LINUX_OR_ANDROID_LD (GNU_USER_TARGET_LIB_SPEC, \
|
||||
--- a/gcc/config/i386/gnu-user.h
|
||||
+++ b/gcc/config/i386/gnu-user.h
|
||||
@@ -65,9 +65,14 @@
|
||||
When the -shared link option is used a final link is not being
|
||||
done. */
|
||||
|
||||
+#undef ANDROID_TARGET_CC1_SPEC
|
||||
+#define ANDROID_TARGET_CC1_SPEC \
|
||||
+ " -mssse3 -fno-short-enums " \
|
||||
+
|
||||
#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 \
|
||||
--- a/gcc/config/i386/gnu-user64.h
|
||||
+++ b/gcc/config/i386/gnu-user64.h
|
||||
@@ -46,6 +46,11 @@
|
||||
#define SPEC_X32 "mx32"
|
||||
#endif
|
||||
|
||||
+#undef ANDROID_TARGET_CC1_SPEC
|
||||
+#define ANDROID_TARGET_CC1_SPEC \
|
||||
+ "%{m32:-mssse3 -fno-short-enums}" \
|
||||
+ "%{!m32:-msse4.2 -mpopcnt}"
|
||||
+
|
||||
#undef ASM_SPEC
|
||||
#define ASM_SPEC "%{" SPEC_32 ":--32} \
|
||||
%{" SPEC_64 ":--64} \
|
||||
--- a/gcc/config/i386/linux-common.h
|
||||
+++ b/gcc/config/i386/linux-common.h
|
||||
@@ -30,7 +30,13 @@
|
||||
#undef CC1_SPEC
|
||||
#define CC1_SPEC \
|
||||
LINUX_OR_ANDROID_CC (GNU_USER_TARGET_CC1_SPEC, \
|
||||
- GNU_USER_TARGET_CC1_SPEC " " ANDROID_CC1_SPEC)
|
||||
+ GNU_USER_TARGET_CC1_SPEC \
|
||||
+ ANDROID_TARGET_CC1_SPEC \
|
||||
+ " " \
|
||||
+ ANDROID_CC1_SPEC("-fPIC"))
|
||||
+
|
||||
+#define CC1PLUS_SPEC \
|
||||
+ LINUX_OR_ANDROID_CC ("", ANDROID_CC1PLUS_SPEC)
|
||||
|
||||
#undef LINK_SPEC
|
||||
#define LINK_SPEC \
|
||||
--- a/gcc/config/linux-android.h
|
||||
+++ b/gcc/config/linux-android.h
|
||||
@@ -38,15 +38,18 @@
|
||||
"%{" 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 \
|
||||
+#define ANDROID_CC1_SPEC(ANDROID_PIC_DEFAULT) \
|
||||
"%{!mglibc:%{!muclibc:%{!mbionic: -mbionic}}} " \
|
||||
- "%{!fno-pic:%{!fno-PIC:%{!fpic:%{!fPIC: -fPIC}}}}"
|
||||
+ "%{!fno-pic:%{!fno-PIC:%{!fpic:%{!fPIC: " ANDROID_PIC_DEFAULT "}}}}"
|
||||
|
||||
#define ANDROID_CC1PLUS_SPEC \
|
||||
- "%{!fexceptions:%{!fno-exceptions: -fno-exceptions}} " \
|
||||
- "%{!frtti:%{!fno-rtti: -fno-rtti}}"
|
||||
+ "%{!fexceptions:%{!fno-exceptions: -fexceptions}} " \
|
||||
+ "%{!frtti:%{!fno-rtti: -frtti}}"
|
||||
+
|
||||
+#define ANDROID_ASM_SPEC \
|
||||
+ "--noexecstack"
|
||||
|
||||
#define ANDROID_LIB_SPEC \
|
||||
"%{!static: -ldl}"
|
||||
--- /dev/null
|
||||
+++ b/gcc/config/mips/android.h
|
||||
@@ -0,0 +1,49 @@
|
||||
+/* Target macros for mips*-*android* targets.
|
||||
+ Copyright (C) 2014 Free Software Foundation, Inc.
|
||||
+
|
||||
+This file is part of GCC.
|
||||
+
|
||||
+GCC is free software; you can redistribute it and/or modify
|
||||
+it under the terms of the GNU General Public License as published by
|
||||
+the Free Software Foundation; either version 3, or (at your option)
|
||||
+any later version.
|
||||
+
|
||||
+GCC is distributed in the hope that it will be useful,
|
||||
+but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+GNU General Public License for more details.
|
||||
+
|
||||
+You should have received a copy of the GNU General Public License
|
||||
+along with GCC; see the file COPYING3. If not see
|
||||
+<http://www.gnu.org/licenses/>. */
|
||||
+
|
||||
+#undef DRIVER_SELF_SPECS
|
||||
+#define DRIVER_SELF_SPECS \
|
||||
+ /* Make sure a -mips option is present. This helps us to pick \
|
||||
+ the right multilib, and also makes the later specs easier \
|
||||
+ to write. */ \
|
||||
+ MIPS_ISA_LEVEL_SPEC, \
|
||||
+ \
|
||||
+ /* Infer the default float setting from -march. */ \
|
||||
+ MIPS_ARCH_FLOAT_SPEC, \
|
||||
+ \
|
||||
+ /* Infer the -msynci setting from -march if not explicitly set. */ \
|
||||
+ MIPS_ISA_SYNCI_SPEC, \
|
||||
+ \
|
||||
+ /* If no ABI option is specified, infer one from the ISA level \
|
||||
+ or -mgp setting. */ \
|
||||
+ "%{!mabi=*: %{" MIPS_32BIT_OPTION_SPEC ": -mabi=32;: -mabi=64}}", \
|
||||
+ \
|
||||
+ /* If no FP ABI option is specified, infer one from the \
|
||||
+ ABI/ISA level unless there is a conflicting option. */ \
|
||||
+ "%{!msoft-float: %{!msingle-float: %{!mfp*: %{!mmsa: %{mabi=32: %{" \
|
||||
+ MIPS_FPXX_OPTION_SPEC ": -mfpxx}}}}}}", \
|
||||
+ \
|
||||
+ /* If no odd-spreg option is specified, infer one from the ISA. */ \
|
||||
+ "%{!modd-spreg: %{mabi=32: %{mips32r6: -mno-odd-spreg}}}", \
|
||||
+ \
|
||||
+ /* Base SPECs. */ \
|
||||
+ BASE_DRIVER_SELF_SPECS, \
|
||||
+ \
|
||||
+ /* Use the standard linux specs for everything else. */ \
|
||||
+ LINUX_DRIVER_SELF_SPECS
|
||||
--- a/gcc/config/mips/gnu-user.h
|
||||
+++ b/gcc/config/mips/gnu-user.h
|
||||
@@ -36,6 +36,7 @@
|
||||
/* The GNU C++ standard library requires this. */ \
|
||||
if (c_dialect_cxx ()) \
|
||||
builtin_define ("_GNU_SOURCE"); \
|
||||
+ ANDROID_TARGET_OS_CPP_BUILTINS(); \
|
||||
} while (0)
|
||||
|
||||
#undef SUBTARGET_CPP_SPEC
|
||||
@@ -71,7 +72,8 @@
|
||||
|
||||
#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. */
|
||||
@@ -120,7 +122,7 @@
|
||||
#endif
|
||||
|
||||
#define LINUX_DRIVER_SELF_SPECS \
|
||||
- NO_SHARED_SPECS \
|
||||
+ LINUX_OR_ANDROID_CC(NO_SHARED_SPECS, "") \
|
||||
MARCH_MTUNE_NATIVE_SPECS, \
|
||||
/* -mplt has no effect without -mno-shared. Simplify later \
|
||||
specs handling by removing a redundant option. */ \
|
||||
--- a/gcc/config/mips/linux-common.h
|
||||
+++ b/gcc/config/mips/linux-common.h
|
||||
@@ -35,7 +35,7 @@
|
||||
#undef SUBTARGET_CC1_SPEC
|
||||
#define SUBTARGET_CC1_SPEC \
|
||||
LINUX_OR_ANDROID_CC (GNU_USER_TARGET_CC1_SPEC, \
|
||||
- GNU_USER_TARGET_CC1_SPEC " " ANDROID_CC1_SPEC)
|
||||
+ GNU_USER_TARGET_CC1_SPEC " " ANDROID_CC1_SPEC("-fpic"))
|
||||
|
||||
#undef CC1PLUS_SPEC
|
||||
#define CC1PLUS_SPEC \
|
||||
--- /dev/null
|
||||
+++ b/gcc/config/mips/t-linux-android
|
||||
@@ -0,0 +1,3 @@
|
||||
+MULTILIB_OPTIONS = mips32r2/mips32r6
|
||||
+MULTILIB_DIRNAMES = mips-r2 mips-r6
|
||||
+MULTILIB_OSDIRNAMES = ../libr2 ../libr6
|
||||
--- /dev/null
|
||||
+++ b/gcc/config/mips/t-linux-android64
|
||||
@@ -0,0 +1,4 @@
|
||||
+MULTILIB_OPTIONS = mabi=32 mips32/mips32r2/mips32r6/mips64r2/mips64r6
|
||||
+MULTILIB_DIRNAMES = 32 mips-r1 mips-r2 mips-r6 mips64-r2 mips64-r6
|
||||
+MULTILIB_OSDIRNAMES = ../lib ../lib ../libr2 ../libr6 ../lib64r2 ../lib64
|
||||
+MULTILIB_REQUIRED = mabi=32/mips32 mabi=32/mips32r2 mabi=32/mips32r6 mips64r2 mips64r6
|
||||
--- a/libgcc/gthr-posix.h
|
||||
+++ b/libgcc/gthr-posix.h
|
||||
@@ -32,6 +32,19 @@
|
||||
#define __GTHREADS 1
|
||||
#define __GTHREADS_CXX0X 1
|
||||
|
||||
+/* The following should normally be in a different header file,
|
||||
+ * but I couldn't find the right location. The point of the macro
|
||||
+ * definition below is to prevent libsupc++ and libstdc++ to reference
|
||||
+ * weak symbols in their static C++ constructors. Such code crashes
|
||||
+ * when a shared object linked statically to these libraries is
|
||||
+ * loaded on Android 2.1 (Eclair) and older platform releases, due
|
||||
+ * to a dynamic linker bug.
|
||||
+ */
|
||||
+#ifdef __ANDROID__
|
||||
+#undef GTHREAD_USE_WEAK
|
||||
+#define GTHREAD_USE_WEAK 0
|
||||
+#endif
|
||||
+
|
||||
#include <pthread.h>
|
||||
|
||||
#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \
|
||||
--- a/libstdc++-v3/configure
|
||||
+++ b/libstdc++-v3/configure
|
||||
@@ -78536,6 +78536,12 @@
|
||||
/* end confdefs.h. */
|
||||
#include <sys/syscall.h>
|
||||
int lk;
|
||||
+#if !defined(SYS_gettid)
|
||||
+#define SYS_gettid __NR_gettid
|
||||
+#endif
|
||||
+#if !defined(SYS_futex)
|
||||
+#define SYS_futex __NR_futex
|
||||
+#endif
|
||||
int
|
||||
main ()
|
||||
{
|
||||
@@ -78594,6 +78600,12 @@
|
||||
/* end confdefs.h. */
|
||||
#include <sys/syscall.h>
|
||||
int lk;
|
||||
+#if !defined(SYS_gettid)
|
||||
+#define SYS_gettid __NR_gettid
|
||||
+#endif
|
||||
+#if !defined(SYS_futex)
|
||||
+#define SYS_futex __NR_futex
|
||||
+#endif
|
||||
int
|
||||
main ()
|
||||
{
|
||||
--- a/libstdc++-v3/include/bits/locale_facets.h
|
||||
+++ b/libstdc++-v3/include/bits/locale_facets.h
|
||||
@@ -47,6 +47,20 @@
|
||||
#include <ext/numeric_traits.h>
|
||||
#include <bits/streambuf_iterator.h>
|
||||
|
||||
+#if !__clang__ && __GNUC__ == 4 && __GNUC_MINOR__ == 9 && __i386__
|
||||
+// CrystaX: for some reason, x86 gcc-4.9 makes ctype<char>::do_widen() and
|
||||
+// ctype<char>::_M_widen_init() methods working wrong if optimization enabled.
|
||||
+// For ctype<char>::do_widen(), values of passed arguments (__lo, __hi and __to)
|
||||
+// are completely messed up and don't correspond to passed values. In case if
|
||||
+// we disable optimization for those methods, things become correct so we apply
|
||||
+// this workaround here for a time.
|
||||
+// TODO: figure out what exactly wrong here - is it bug in GCC optimization
|
||||
+// algorithm or smth else?
|
||||
+#define __CRYSTAX_X86_DONT_OPTIMIZE __attribute__((optimize(0)))
|
||||
+#else
|
||||
+#define __CRYSTAX_X86_DONT_OPTIMIZE
|
||||
+#endif
|
||||
+
|
||||
namespace std _GLIBCXX_VISIBILITY(default)
|
||||
{
|
||||
_GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
@@ -1102,7 +1116,7 @@
|
||||
* @return @a __hi.
|
||||
*/
|
||||
virtual const char*
|
||||
- do_widen(const char* __lo, const char* __hi, char_type* __to) const
|
||||
+ do_widen(const char* __lo, const char* __hi, char_type* __to) const __CRYSTAX_X86_DONT_OPTIMIZE
|
||||
{
|
||||
__builtin_memcpy(__to, __lo, __hi - __lo);
|
||||
return __hi;
|
||||
@@ -1163,7 +1177,7 @@
|
||||
|
||||
private:
|
||||
void _M_narrow_init() const;
|
||||
- void _M_widen_init() const;
|
||||
+ void _M_widen_init() const __CRYSTAX_X86_DONT_OPTIMIZE;
|
||||
};
|
||||
|
||||
#ifdef _GLIBCXX_USE_WCHAR_T
|
||||
--- a/libstdc++-v3/libsupc++/guard.cc
|
||||
+++ b/libstdc++-v3/libsupc++/guard.cc
|
||||
@@ -34,7 +34,12 @@
|
||||
#if defined(__GTHREADS) && defined(__GTHREAD_HAS_COND) \
|
||||
&& (ATOMIC_INT_LOCK_FREE > 1) && defined(_GLIBCXX_HAVE_LINUX_FUTEX)
|
||||
# include <climits>
|
||||
+#if defined(__ANDROID__)
|
||||
+# include <sys/syscall.h>
|
||||
+# define SYS_futex __NR_futex
|
||||
+#else
|
||||
# include <syscall.h>
|
||||
+#endif
|
||||
# include <unistd.h>
|
||||
# define _GLIBCXX_USE_FUTEX
|
||||
# define _GLIBCXX_FUTEX_WAIT 0
|
||||
# The "special" multilib can be used to build native applications for Android,
|
||||
# as opposed to native shared libraries that are then called via JNI.
|
||||
|
306
packages/gcc/7.3.0/0014-crystax.patch
vendored
306
packages/gcc/7.3.0/0014-crystax.patch
vendored
@ -1,27 +1,293 @@
|
||||
commit 9f057b62caafe08c968103d39b5df82486a175c2
|
||||
Author: Dmitry Moskalchuk <dm@crystax.net>
|
||||
Date: Thu Aug 13 16:11:54 2015 +0300
|
||||
commit 44a81ebb7698dac41ffa7acd5e0cc1578e5ab1fd
|
||||
Author: H.J. Lu <hongjiu.lu@intel.com>
|
||||
Date: Mon Apr 14 15:59:47 2014 -0700
|
||||
|
||||
[android] Add additional multilib option: mfloat-abi=hard
|
||||
[android] Always enable --eh-frame-hdr for static executable
|
||||
|
||||
See 5e6cdf76af295c9a39b695ca228cff675e8ff4ae and
|
||||
23e3137ee2897464b051599b85a09f130d3ad05d
|
||||
|
||||
Change-Id: Ibda473188e5a10f2a0592f2494ad00ad1f91e04b
|
||||
Signed-off-by: Dmitry Moskalchuk <dm@crystax.net>
|
||||
|
||||
---
|
||||
gcc/config/arm/t-linux-androideabi | 7 ++++---
|
||||
1 file changed, 4 insertions(+), 3 deletions(-)
|
||||
gcc/config.in | 6 +++++
|
||||
gcc/config/alpha/elf.h | 4 +++
|
||||
gcc/config/freebsd.h | 4 +++
|
||||
gcc/config/gnu-user.h | 4 +++
|
||||
gcc/config/openbsd.h | 4 +++
|
||||
gcc/config/rs6000/sysv4.h | 6 ++++-
|
||||
gcc/config/sol2.h | 4 +++
|
||||
gcc/configure | 36 +++++++++++++++++++++++++++++++++
|
||||
gcc/configure.ac | 29 ++++++++++++++++++++++++++
|
||||
gcc/testsuite/g++.dg/eh/spec3-static.C | 25 ++++++++++++++++++++++
|
||||
libgcc/crtstuff.c | 11 ++++++----
|
||||
11 files changed, 128 insertions(+), 5 deletions(-)
|
||||
|
||||
--- a/gcc/config/arm/t-linux-androideabi
|
||||
+++ b/gcc/config/arm/t-linux-androideabi
|
||||
@@ -1,8 +1,9 @@
|
||||
-MULTILIB_OPTIONS = march=armv7-a mthumb
|
||||
-MULTILIB_DIRNAMES = armv7-a thumb
|
||||
-MULTILIB_EXCEPTIONS =
|
||||
+MULTILIB_OPTIONS = march=armv7-a mthumb mfloat-abi=hard
|
||||
+MULTILIB_DIRNAMES = armv7-a thumb hard
|
||||
+MULTILIB_EXCEPTIONS = mfloat-abi=hard* mthumb/mfloat-abi=hard*
|
||||
MULTILIB_MATCHES =
|
||||
MULTILIB_OSDIRNAMES =
|
||||
+MULTILIB_EXTRA_OPTS = Wl,--no-warn-mismatch
|
||||
--- a/gcc/config.in
|
||||
+++ b/gcc/config.in
|
||||
@@ -2186,6 +2186,12 @@
|
||||
#endif
|
||||
|
||||
# The "special" multilib can be used to build native applications for Android,
|
||||
# as opposed to native shared libraries that are then called via JNI.
|
||||
|
||||
+/* Define if your system supports PT_GNU_EH_FRAME for static executable. */
|
||||
+#ifndef USED_FOR_TARGET
|
||||
+#undef USE_EH_FRAME_HDR_FOR_STATIC
|
||||
+#endif
|
||||
+
|
||||
+
|
||||
/* Define to 1 if the 'long long' type is wider than 'long' but still
|
||||
efficiently supported by the host hardware. */
|
||||
#ifndef USED_FOR_TARGET
|
||||
--- a/gcc/config/alpha/elf.h
|
||||
+++ b/gcc/config/alpha/elf.h
|
||||
@@ -168,5 +168,9 @@
|
||||
I imagine that other systems will catch up. In the meantime, it
|
||||
doesn't harm to make sure that the data exists to be used later. */
|
||||
#if defined(HAVE_LD_EH_FRAME_HDR)
|
||||
+#ifdef USE_EH_FRAME_HDR_FOR_STATIC
|
||||
+#define LINK_EH_SPEC "--eh-frame-hdr "
|
||||
+#else
|
||||
#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
|
||||
#endif
|
||||
+#endif
|
||||
--- a/gcc/config/freebsd.h
|
||||
+++ b/gcc/config/freebsd.h
|
||||
@@ -45,8 +45,12 @@
|
||||
#define LIB_SPEC FBSD_LIB_SPEC
|
||||
|
||||
#if defined(HAVE_LD_EH_FRAME_HDR)
|
||||
+#ifdef USE_EH_FRAME_HDR_FOR_STATIC
|
||||
+#define LINK_EH_SPEC "--eh-frame-hdr "
|
||||
+#else
|
||||
#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
|
||||
#endif
|
||||
+#endif
|
||||
|
||||
#ifdef TARGET_LIBC_PROVIDES_SSP
|
||||
#define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \
|
||||
--- a/gcc/config/gnu-user.h
|
||||
+++ b/gcc/config/gnu-user.h
|
||||
@@ -132,8 +132,12 @@
|
||||
#define LIB_SPEC GNU_USER_TARGET_LIB_SPEC
|
||||
|
||||
#if defined(HAVE_LD_EH_FRAME_HDR)
|
||||
+#ifdef USE_EH_FRAME_HDR_FOR_STATIC
|
||||
+#define LINK_EH_SPEC "--eh-frame-hdr "
|
||||
+#else
|
||||
#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
|
||||
#endif
|
||||
+#endif
|
||||
|
||||
#undef LINK_GCC_C_SEQUENCE_SPEC
|
||||
#define LINK_GCC_C_SEQUENCE_SPEC \
|
||||
--- a/gcc/config/openbsd.h
|
||||
+++ b/gcc/config/openbsd.h
|
||||
@@ -136,8 +136,12 @@
|
||||
#define LIB_SPEC OBSD_LIB_SPEC
|
||||
|
||||
#if defined(HAVE_LD_EH_FRAME_HDR)
|
||||
+#ifdef USE_EH_FRAME_HDR_FOR_STATIC
|
||||
+#define LINK_EH_SPEC "--eh-frame-hdr "
|
||||
+#else
|
||||
#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
|
||||
#endif
|
||||
+#endif
|
||||
|
||||
#undef LIB_SPEC
|
||||
#define LIB_SPEC OBSD_LIB_SPEC
|
||||
--- a/gcc/config/rs6000/sysv4.h
|
||||
+++ b/gcc/config/rs6000/sysv4.h
|
||||
@@ -815,7 +815,11 @@
|
||||
-dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}"
|
||||
|
||||
#if defined(HAVE_LD_EH_FRAME_HDR)
|
||||
-# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
|
||||
+# ifdef USE_EH_FRAME_HDR_FOR_STATIC
|
||||
+# define LINK_EH_SPEC "--eh-frame-hdr "
|
||||
+# else
|
||||
+# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
|
||||
+# endif
|
||||
#endif
|
||||
|
||||
#define CPP_OS_LINUX_SPEC "-D__unix__ -D__gnu_linux__ -D__linux__ \
|
||||
--- a/gcc/config/sol2.h
|
||||
+++ b/gcc/config/sol2.h
|
||||
@@ -367,7 +367,11 @@
|
||||
/* Solaris 11 build 135+ implements dl_iterate_phdr. GNU ld needs
|
||||
--eh-frame-hdr to create the required .eh_frame_hdr sections. */
|
||||
#if defined(HAVE_LD_EH_FRAME_HDR) && defined(TARGET_DL_ITERATE_PHDR)
|
||||
+#ifdef USE_EH_FRAME_HDR_FOR_STATIC
|
||||
+#define LINK_EH_SPEC "--eh-frame-hdr "
|
||||
+#else
|
||||
#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
|
||||
+#endif
|
||||
#endif /* HAVE_LD_EH_FRAME && TARGET_DL_ITERATE_PHDR */
|
||||
#endif
|
||||
|
||||
--- a/gcc/configure
|
||||
+++ b/gcc/configure
|
||||
@@ -939,6 +939,7 @@
|
||||
enable_fix_cortex_a53_843419
|
||||
with_glibc_version
|
||||
enable_gnu_unique_object
|
||||
+enable_eh_frame_hdr_for_static
|
||||
enable_linker_build_id
|
||||
enable_default_ssp
|
||||
with_long_double_128
|
||||
@@ -1676,6 +1677,9 @@
|
||||
--enable-gnu-unique-object
|
||||
enable the use of the @gnu_unique_object ELF
|
||||
extension on glibc systems
|
||||
+ --enable-eh-frame-hdr-for-static
|
||||
+ enable linker PT_GNU_EH_FRAME support for static
|
||||
+ executable
|
||||
--enable-linker-build-id
|
||||
compiler will always pass --build-id to linker
|
||||
--enable-default-ssp enable Stack Smashing Protection as default
|
||||
@@ -28082,6 +28086,38 @@
|
||||
|
||||
$as_echo "#define HAVE_LD_EH_FRAME_HDR 1" >>confdefs.h
|
||||
|
||||
+ # Check whether --enable-eh-frame-hdr-for-static was given.
|
||||
+if test "${enable_eh_frame_hdr_for_static+set}" = set; then :
|
||||
+ enableval=$enable_eh_frame_hdr_for_static; case $enable_eh_frame_hdr_for_static in
|
||||
+ yes | no) ;;
|
||||
+ *) as_fn_error "'$enable_eh_frame_hdr_for_static' is an invalid
|
||||
+value for --enable-eh-frame-hdr-for-static.
|
||||
+Valid choices are 'yes' and 'no'." "$LINENO" 5 ;;
|
||||
+ esac
|
||||
+else
|
||||
+ # Only support for glibc 2.3.0 or higher with AT_PHDR/AT_PHNUM from
|
||||
+# Linux kernel.
|
||||
+ if test x$host = x$build -a x$host = x$target &&
|
||||
+ ldd --version 2>&1 >/dev/null &&
|
||||
+ glibcver=`ldd --version 2>/dev/null | sed 's/.* //;q'`; then
|
||||
+ glibcmajor=`expr "$glibcver" : "\([0-9]*\)"`
|
||||
+ glibcminor=`expr "$glibcver" : "[2-9]*\.\([0-9]*\)"`
|
||||
+ glibcnum=`expr $glibcmajor \* 1000 + $glibcminor`
|
||||
+ if test "$glibcnum" -ge 2003 ; then
|
||||
+ auvx=`LD_SHOW_AUXV=1 ldd 2>/dev/null`
|
||||
+ if echo "$auvx" | grep AT_PHDR > /dev/null &&
|
||||
+ echo "$auvx" | grep AT_PHNUM > /dev/null; then
|
||||
+ enable_eh_frame_hdr_for_static=yes
|
||||
+ fi
|
||||
+ fi
|
||||
+ fi
|
||||
+fi
|
||||
+
|
||||
+ if test x$enable_eh_frame_hdr_for_static = xyes; then
|
||||
+
|
||||
+$as_echo "#define USE_EH_FRAME_HDR_FOR_STATIC 1" >>confdefs.h
|
||||
+
|
||||
+ fi
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_ld_eh_frame_hdr" >&5
|
||||
$as_echo "$gcc_cv_ld_eh_frame_hdr" >&6; }
|
||||
--- a/gcc/configure.ac
|
||||
+++ b/gcc/configure.ac
|
||||
@@ -4986,6 +4986,35 @@
|
||||
if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
|
||||
AC_DEFINE(HAVE_LD_EH_FRAME_HDR, 1,
|
||||
[Define if your linker supports .eh_frame_hdr.])
|
||||
+ AC_ARG_ENABLE(eh-frame-hdr-for-static,
|
||||
+ [AS_HELP_STRING([--enable-eh-frame-hdr-for-static],
|
||||
+ [enable linker PT_GNU_EH_FRAME support for static executable])],
|
||||
+ [case $enable_eh_frame_hdr_for_static in
|
||||
+ yes | no) ;;
|
||||
+ *) AC_MSG_ERROR(['$enable_eh_frame_hdr_for_static' is an invalid
|
||||
+value for --enable-eh-frame-hdr-for-static.
|
||||
+Valid choices are 'yes' and 'no'.]) ;;
|
||||
+ esac],
|
||||
+# Only support for glibc 2.3.0 or higher with AT_PHDR/AT_PHNUM from
|
||||
+# Linux kernel.
|
||||
+ [[if test x$host = x$build -a x$host = x$target &&
|
||||
+ ldd --version 2>&1 >/dev/null &&
|
||||
+ glibcver=`ldd --version 2>/dev/null | sed 's/.* //;q'`; then
|
||||
+ glibcmajor=`expr "$glibcver" : "\([0-9]*\)"`
|
||||
+ glibcminor=`expr "$glibcver" : "[2-9]*\.\([0-9]*\)"`
|
||||
+ glibcnum=`expr $glibcmajor \* 1000 + $glibcminor`
|
||||
+ if test "$glibcnum" -ge 2003 ; then
|
||||
+ auvx=`LD_SHOW_AUXV=1 ldd 2>/dev/null`
|
||||
+ if echo "$auvx" | grep AT_PHDR > /dev/null &&
|
||||
+ echo "$auvx" | grep AT_PHNUM > /dev/null; then
|
||||
+ enable_eh_frame_hdr_for_static=yes
|
||||
+ fi
|
||||
+ fi
|
||||
+ fi]])
|
||||
+ if test x$enable_eh_frame_hdr_for_static = xyes; then
|
||||
+ AC_DEFINE(USE_EH_FRAME_HDR_FOR_STATIC, 1,
|
||||
+[Define if your system supports PT_GNU_EH_FRAME for static executable.])
|
||||
+ fi
|
||||
fi
|
||||
AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
|
||||
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.dg/eh/spec3-static.C
|
||||
@@ -0,0 +1,25 @@
|
||||
+// PR c++/4381
|
||||
+// Test that exception-specs work properly for classes with virtual bases.
|
||||
+
|
||||
+// { dg-do run }
|
||||
+// { dg-options "-static" }
|
||||
+
|
||||
+class Base {};
|
||||
+
|
||||
+struct A : virtual public Base
|
||||
+{
|
||||
+ A() {}
|
||||
+};
|
||||
+
|
||||
+struct B {};
|
||||
+
|
||||
+void func() throw (B,A)
|
||||
+{
|
||||
+ throw A();
|
||||
+}
|
||||
+
|
||||
+int main(void)
|
||||
+{
|
||||
+ try { func(); }
|
||||
+ catch (A& a) { }
|
||||
+}
|
||||
--- a/libgcc/crtstuff.c
|
||||
+++ b/libgcc/crtstuff.c
|
||||
@@ -88,7 +88,8 @@
|
||||
#if defined(OBJECT_FORMAT_ELF) \
|
||||
&& !defined(OBJECT_FORMAT_FLAT) \
|
||||
&& defined(HAVE_LD_EH_FRAME_HDR) \
|
||||
- && !defined(inhibit_libc) && !defined(CRTSTUFFT_O) \
|
||||
+ && !defined(inhibit_libc) \
|
||||
+ && (defined(USE_EH_FRAME_HDR_FOR_STATIC) || !defined(CRTSTUFFT_O)) \
|
||||
&& defined(BSD_DL_ITERATE_PHDR_AVAILABLE)
|
||||
#include <link.h>
|
||||
# define USE_PT_GNU_EH_FRAME
|
||||
@@ -97,7 +98,8 @@
|
||||
#if defined(OBJECT_FORMAT_ELF) \
|
||||
&& !defined(OBJECT_FORMAT_FLAT) \
|
||||
&& defined(HAVE_LD_EH_FRAME_HDR) && defined(TARGET_DL_ITERATE_PHDR) \
|
||||
- && !defined(inhibit_libc) && !defined(CRTSTUFFT_O) \
|
||||
+ && !defined(inhibit_libc) \
|
||||
+ && (defined(USE_EH_FRAME_HDR_FOR_STATIC) || !defined(CRTSTUFFT_O)) \
|
||||
&& defined(__sun__) && defined(__svr4__)
|
||||
#include <link.h>
|
||||
# define USE_PT_GNU_EH_FRAME
|
||||
@@ -106,7 +108,8 @@
|
||||
#if defined(OBJECT_FORMAT_ELF) \
|
||||
&& !defined(OBJECT_FORMAT_FLAT) \
|
||||
&& defined(HAVE_LD_EH_FRAME_HDR) \
|
||||
- && !defined(inhibit_libc) && !defined(CRTSTUFFT_O) \
|
||||
+ && !defined(inhibit_libc) \
|
||||
+ && (defined(USE_EH_FRAME_HDR_FOR_STATIC) || !defined(CRTSTUFFT_O)) \
|
||||
&& defined(__GLIBC__) && __GLIBC__ >= 2
|
||||
#include <link.h>
|
||||
/* uClibc pretends to be glibc 2.2 and DT_CONFIG is defined in its link.h.
|
||||
@@ -121,7 +124,7 @@
|
||||
#if defined(OBJECT_FORMAT_ELF) \
|
||||
&& !defined(OBJECT_FORMAT_FLAT) \
|
||||
&& defined(HAVE_LD_EH_FRAME_HDR) \
|
||||
- && !defined(CRTSTUFFT_O) \
|
||||
+ && (defined(USE_EH_FRAME_HDR_FOR_STATIC) || !defined(CRTSTUFFT_O)) \
|
||||
&& defined(inhibit_libc) \
|
||||
&& (defined(__GLIBC__) || defined(__gnu_linux__) || defined(__GNU__))
|
||||
/* On systems using glibc, an inhibit_libc build of libgcc is only
|
||||
|
303
packages/gcc/7.3.0/0015-crystax.patch
vendored
303
packages/gcc/7.3.0/0015-crystax.patch
vendored
@ -1,293 +1,22 @@
|
||||
commit 44a81ebb7698dac41ffa7acd5e0cc1578e5ab1fd
|
||||
Author: H.J. Lu <hongjiu.lu@intel.com>
|
||||
Date: Mon Apr 14 15:59:47 2014 -0700
|
||||
commit 778a9ef107f51544d583f110e92b75f4d9d79117
|
||||
Author: Dmitry Moskalchuk <dm@crystax.net>
|
||||
Date: Thu Aug 20 19:11:07 2015 +0300
|
||||
|
||||
[android] Always enable --eh-frame-hdr for static executable
|
||||
[android] Don't use PIE copyrelocs for x86/x86_64
|
||||
|
||||
See 5e6cdf76af295c9a39b695ca228cff675e8ff4ae and
|
||||
23e3137ee2897464b051599b85a09f130d3ad05d
|
||||
|
||||
Change-Id: Ibda473188e5a10f2a0592f2494ad00ad1f91e04b
|
||||
Signed-off-by: Dmitry Moskalchuk <dm@crystax.net>
|
||||
|
||||
---
|
||||
gcc/config.in | 6 +++++
|
||||
gcc/config/alpha/elf.h | 4 +++
|
||||
gcc/config/freebsd.h | 4 +++
|
||||
gcc/config/gnu-user.h | 4 +++
|
||||
gcc/config/openbsd.h | 4 +++
|
||||
gcc/config/rs6000/sysv4.h | 6 ++++-
|
||||
gcc/config/sol2.h | 4 +++
|
||||
gcc/configure | 36 +++++++++++++++++++++++++++++++++
|
||||
gcc/configure.ac | 29 ++++++++++++++++++++++++++
|
||||
gcc/testsuite/g++.dg/eh/spec3-static.C | 25 ++++++++++++++++++++++
|
||||
libgcc/crtstuff.c | 11 ++++++----
|
||||
11 files changed, 128 insertions(+), 5 deletions(-)
|
||||
gcc/config/i386/i386.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
--- a/gcc/config.in
|
||||
+++ b/gcc/config.in
|
||||
@@ -2180,6 +2180,12 @@
|
||||
#endif
|
||||
|
||||
|
||||
+/* Define if your system supports PT_GNU_EH_FRAME for static executable. */
|
||||
+#ifndef USED_FOR_TARGET
|
||||
+#undef USE_EH_FRAME_HDR_FOR_STATIC
|
||||
+#endif
|
||||
+
|
||||
+
|
||||
/* Define to 1 if the 'long long' type is wider than 'long' but still
|
||||
efficiently supported by the host hardware. */
|
||||
#ifndef USED_FOR_TARGET
|
||||
--- a/gcc/config/alpha/elf.h
|
||||
+++ b/gcc/config/alpha/elf.h
|
||||
@@ -168,5 +168,9 @@
|
||||
I imagine that other systems will catch up. In the meantime, it
|
||||
doesn't harm to make sure that the data exists to be used later. */
|
||||
#if defined(HAVE_LD_EH_FRAME_HDR)
|
||||
+#ifdef USE_EH_FRAME_HDR_FOR_STATIC
|
||||
+#define LINK_EH_SPEC "--eh-frame-hdr "
|
||||
+#else
|
||||
#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
|
||||
#endif
|
||||
+#endif
|
||||
--- a/gcc/config/freebsd.h
|
||||
+++ b/gcc/config/freebsd.h
|
||||
@@ -45,8 +45,12 @@
|
||||
#define LIB_SPEC FBSD_LIB_SPEC
|
||||
|
||||
#if defined(HAVE_LD_EH_FRAME_HDR)
|
||||
+#ifdef USE_EH_FRAME_HDR_FOR_STATIC
|
||||
+#define LINK_EH_SPEC "--eh-frame-hdr "
|
||||
+#else
|
||||
#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
|
||||
#endif
|
||||
+#endif
|
||||
|
||||
#ifdef TARGET_LIBC_PROVIDES_SSP
|
||||
#define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \
|
||||
--- a/gcc/config/gnu-user.h
|
||||
+++ b/gcc/config/gnu-user.h
|
||||
@@ -118,8 +118,12 @@
|
||||
#define LIB_SPEC GNU_USER_TARGET_LIB_SPEC
|
||||
|
||||
#if defined(HAVE_LD_EH_FRAME_HDR)
|
||||
+#ifdef USE_EH_FRAME_HDR_FOR_STATIC
|
||||
+#define LINK_EH_SPEC "--eh-frame-hdr "
|
||||
+#else
|
||||
#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
|
||||
#endif
|
||||
+#endif
|
||||
|
||||
#undef LINK_GCC_C_SEQUENCE_SPEC
|
||||
#define LINK_GCC_C_SEQUENCE_SPEC \
|
||||
--- a/gcc/config/openbsd.h
|
||||
+++ b/gcc/config/openbsd.h
|
||||
@@ -136,8 +136,12 @@
|
||||
#define LIB_SPEC OBSD_LIB_SPEC
|
||||
|
||||
#if defined(HAVE_LD_EH_FRAME_HDR)
|
||||
+#ifdef USE_EH_FRAME_HDR_FOR_STATIC
|
||||
+#define LINK_EH_SPEC "--eh-frame-hdr "
|
||||
+#else
|
||||
#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
|
||||
#endif
|
||||
+#endif
|
||||
|
||||
#undef LIB_SPEC
|
||||
#define LIB_SPEC OBSD_LIB_SPEC
|
||||
--- a/gcc/config/rs6000/sysv4.h
|
||||
+++ b/gcc/config/rs6000/sysv4.h
|
||||
@@ -805,7 +805,11 @@
|
||||
-dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}"
|
||||
|
||||
#if defined(HAVE_LD_EH_FRAME_HDR)
|
||||
-# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
|
||||
+# ifdef USE_EH_FRAME_HDR_FOR_STATIC
|
||||
+# define LINK_EH_SPEC "--eh-frame-hdr "
|
||||
+# else
|
||||
+# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
|
||||
+# endif
|
||||
#endif
|
||||
|
||||
#define CPP_OS_LINUX_SPEC "-D__unix__ -D__gnu_linux__ -D__linux__ \
|
||||
--- a/gcc/config/sol2.h
|
||||
+++ b/gcc/config/sol2.h
|
||||
@@ -367,7 +367,11 @@
|
||||
/* Solaris 11 build 135+ implements dl_iterate_phdr. GNU ld needs
|
||||
--eh-frame-hdr to create the required .eh_frame_hdr sections. */
|
||||
#if defined(HAVE_LD_EH_FRAME_HDR) && defined(TARGET_DL_ITERATE_PHDR)
|
||||
+#ifdef USE_EH_FRAME_HDR_FOR_STATIC
|
||||
+#define LINK_EH_SPEC "--eh-frame-hdr "
|
||||
+#else
|
||||
#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
|
||||
+#endif
|
||||
#endif /* HAVE_LD_EH_FRAME && TARGET_DL_ITERATE_PHDR */
|
||||
#endif
|
||||
|
||||
--- a/gcc/configure
|
||||
+++ b/gcc/configure
|
||||
@@ -939,6 +939,7 @@
|
||||
enable_fix_cortex_a53_843419
|
||||
with_glibc_version
|
||||
enable_gnu_unique_object
|
||||
+enable_eh_frame_hdr_for_static
|
||||
enable_linker_build_id
|
||||
enable_default_ssp
|
||||
with_long_double_128
|
||||
@@ -1676,6 +1677,9 @@
|
||||
--enable-gnu-unique-object
|
||||
enable the use of the @gnu_unique_object ELF
|
||||
extension on glibc systems
|
||||
+ --enable-eh-frame-hdr-for-static
|
||||
+ enable linker PT_GNU_EH_FRAME support for static
|
||||
+ executable
|
||||
--enable-linker-build-id
|
||||
compiler will always pass --build-id to linker
|
||||
--enable-default-ssp enable Stack Smashing Protection as default
|
||||
@@ -28050,6 +28054,38 @@
|
||||
|
||||
$as_echo "#define HAVE_LD_EH_FRAME_HDR 1" >>confdefs.h
|
||||
|
||||
+ # Check whether --enable-eh-frame-hdr-for-static was given.
|
||||
+if test "${enable_eh_frame_hdr_for_static+set}" = set; then :
|
||||
+ enableval=$enable_eh_frame_hdr_for_static; case $enable_eh_frame_hdr_for_static in
|
||||
+ yes | no) ;;
|
||||
+ *) as_fn_error "'$enable_eh_frame_hdr_for_static' is an invalid
|
||||
+value for --enable-eh-frame-hdr-for-static.
|
||||
+Valid choices are 'yes' and 'no'." "$LINENO" 5 ;;
|
||||
+ esac
|
||||
+else
|
||||
+ # Only support for glibc 2.3.0 or higher with AT_PHDR/AT_PHNUM from
|
||||
+# Linux kernel.
|
||||
+ if test x$host = x$build -a x$host = x$target &&
|
||||
+ ldd --version 2>&1 >/dev/null &&
|
||||
+ glibcver=`ldd --version 2>/dev/null | sed 's/.* //;q'`; then
|
||||
+ glibcmajor=`expr "$glibcver" : "\([0-9]*\)"`
|
||||
+ glibcminor=`expr "$glibcver" : "[2-9]*\.\([0-9]*\)"`
|
||||
+ glibcnum=`expr $glibcmajor \* 1000 + $glibcminor`
|
||||
+ if test "$glibcnum" -ge 2003 ; then
|
||||
+ auvx=`LD_SHOW_AUXV=1 ldd 2>/dev/null`
|
||||
+ if echo "$auvx" | grep AT_PHDR > /dev/null &&
|
||||
+ echo "$auvx" | grep AT_PHNUM > /dev/null; then
|
||||
+ enable_eh_frame_hdr_for_static=yes
|
||||
+ fi
|
||||
+ fi
|
||||
+ fi
|
||||
+fi
|
||||
+
|
||||
+ if test x$enable_eh_frame_hdr_for_static = xyes; then
|
||||
+
|
||||
+$as_echo "#define USE_EH_FRAME_HDR_FOR_STATIC 1" >>confdefs.h
|
||||
+
|
||||
+ fi
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_ld_eh_frame_hdr" >&5
|
||||
$as_echo "$gcc_cv_ld_eh_frame_hdr" >&6; }
|
||||
--- a/gcc/configure.ac
|
||||
+++ b/gcc/configure.ac
|
||||
@@ -4981,6 +4981,35 @@
|
||||
if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
|
||||
AC_DEFINE(HAVE_LD_EH_FRAME_HDR, 1,
|
||||
[Define if your linker supports .eh_frame_hdr.])
|
||||
+ AC_ARG_ENABLE(eh-frame-hdr-for-static,
|
||||
+ [AS_HELP_STRING([--enable-eh-frame-hdr-for-static],
|
||||
+ [enable linker PT_GNU_EH_FRAME support for static executable])],
|
||||
+ [case $enable_eh_frame_hdr_for_static in
|
||||
+ yes | no) ;;
|
||||
+ *) AC_MSG_ERROR(['$enable_eh_frame_hdr_for_static' is an invalid
|
||||
+value for --enable-eh-frame-hdr-for-static.
|
||||
+Valid choices are 'yes' and 'no'.]) ;;
|
||||
+ esac],
|
||||
+# Only support for glibc 2.3.0 or higher with AT_PHDR/AT_PHNUM from
|
||||
+# Linux kernel.
|
||||
+ [[if test x$host = x$build -a x$host = x$target &&
|
||||
+ ldd --version 2>&1 >/dev/null &&
|
||||
+ glibcver=`ldd --version 2>/dev/null | sed 's/.* //;q'`; then
|
||||
+ glibcmajor=`expr "$glibcver" : "\([0-9]*\)"`
|
||||
+ glibcminor=`expr "$glibcver" : "[2-9]*\.\([0-9]*\)"`
|
||||
+ glibcnum=`expr $glibcmajor \* 1000 + $glibcminor`
|
||||
+ if test "$glibcnum" -ge 2003 ; then
|
||||
+ auvx=`LD_SHOW_AUXV=1 ldd 2>/dev/null`
|
||||
+ if echo "$auvx" | grep AT_PHDR > /dev/null &&
|
||||
+ echo "$auvx" | grep AT_PHNUM > /dev/null; then
|
||||
+ enable_eh_frame_hdr_for_static=yes
|
||||
+ fi
|
||||
+ fi
|
||||
+ fi]])
|
||||
+ if test x$enable_eh_frame_hdr_for_static = xyes; then
|
||||
+ AC_DEFINE(USE_EH_FRAME_HDR_FOR_STATIC, 1,
|
||||
+[Define if your system supports PT_GNU_EH_FRAME for static executable.])
|
||||
+ fi
|
||||
fi
|
||||
AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
|
||||
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.dg/eh/spec3-static.C
|
||||
@@ -0,0 +1,25 @@
|
||||
+// PR c++/4381
|
||||
+// Test that exception-specs work properly for classes with virtual bases.
|
||||
+
|
||||
+// { dg-do run }
|
||||
+// { dg-options "-static" }
|
||||
+
|
||||
+class Base {};
|
||||
+
|
||||
+struct A : virtual public Base
|
||||
+{
|
||||
+ A() {}
|
||||
+};
|
||||
+
|
||||
+struct B {};
|
||||
+
|
||||
+void func() throw (B,A)
|
||||
+{
|
||||
+ throw A();
|
||||
+}
|
||||
+
|
||||
+int main(void)
|
||||
+{
|
||||
+ try { func(); }
|
||||
+ catch (A& a) { }
|
||||
+}
|
||||
--- a/libgcc/crtstuff.c
|
||||
+++ b/libgcc/crtstuff.c
|
||||
@@ -88,7 +88,8 @@
|
||||
#if defined(OBJECT_FORMAT_ELF) \
|
||||
&& !defined(OBJECT_FORMAT_FLAT) \
|
||||
&& defined(HAVE_LD_EH_FRAME_HDR) \
|
||||
- && !defined(inhibit_libc) && !defined(CRTSTUFFT_O) \
|
||||
+ && !defined(inhibit_libc) \
|
||||
+ && (defined(USE_EH_FRAME_HDR_FOR_STATIC) || !defined(CRTSTUFFT_O)) \
|
||||
&& defined(BSD_DL_ITERATE_PHDR_AVAILABLE)
|
||||
#include <link.h>
|
||||
# define USE_PT_GNU_EH_FRAME
|
||||
@@ -97,7 +98,8 @@
|
||||
#if defined(OBJECT_FORMAT_ELF) \
|
||||
&& !defined(OBJECT_FORMAT_FLAT) \
|
||||
&& defined(HAVE_LD_EH_FRAME_HDR) && defined(TARGET_DL_ITERATE_PHDR) \
|
||||
- && !defined(inhibit_libc) && !defined(CRTSTUFFT_O) \
|
||||
+ && !defined(inhibit_libc) \
|
||||
+ && (defined(USE_EH_FRAME_HDR_FOR_STATIC) || !defined(CRTSTUFFT_O)) \
|
||||
&& defined(__sun__) && defined(__svr4__)
|
||||
#include <link.h>
|
||||
# define USE_PT_GNU_EH_FRAME
|
||||
@@ -106,7 +108,8 @@
|
||||
#if defined(OBJECT_FORMAT_ELF) \
|
||||
&& !defined(OBJECT_FORMAT_FLAT) \
|
||||
&& defined(HAVE_LD_EH_FRAME_HDR) \
|
||||
- && !defined(inhibit_libc) && !defined(CRTSTUFFT_O) \
|
||||
+ && !defined(inhibit_libc) \
|
||||
+ && (defined(USE_EH_FRAME_HDR_FOR_STATIC) || !defined(CRTSTUFFT_O)) \
|
||||
&& defined(__GLIBC__) && __GLIBC__ >= 2
|
||||
#include <link.h>
|
||||
/* uClibc pretends to be glibc 2.2 and DT_CONFIG is defined in its link.h.
|
||||
@@ -121,7 +124,7 @@
|
||||
#if defined(OBJECT_FORMAT_ELF) \
|
||||
&& !defined(OBJECT_FORMAT_FLAT) \
|
||||
&& defined(HAVE_LD_EH_FRAME_HDR) \
|
||||
- && !defined(CRTSTUFFT_O) \
|
||||
+ && (defined(USE_EH_FRAME_HDR_FOR_STATIC) || !defined(CRTSTUFFT_O)) \
|
||||
&& defined(inhibit_libc) \
|
||||
&& (defined(__GLIBC__) || defined(__gnu_linux__) || defined(__GNU__))
|
||||
/* On systems using glibc, an inhibit_libc build of libgcc is only
|
||||
--- a/gcc/config/i386/i386.c
|
||||
+++ b/gcc/config/i386/i386.c
|
||||
@@ -16113,6 +16113,7 @@
|
||||
else if (!SYMBOL_REF_FAR_ADDR_P (op0)
|
||||
&& (SYMBOL_REF_LOCAL_P (op0)
|
||||
|| (HAVE_LD_PIE_COPYRELOC
|
||||
+ && !TARGET_HAS_BIONIC
|
||||
&& flag_pie
|
||||
&& !SYMBOL_REF_WEAK (op0)
|
||||
&& !SYMBOL_REF_FUNCTION_P (op0)))
|
||||
|
34
packages/gcc/7.3.0/0016-crystax.patch
vendored
34
packages/gcc/7.3.0/0016-crystax.patch
vendored
@ -1,22 +1,26 @@
|
||||
commit 778a9ef107f51544d583f110e92b75f4d9d79117
|
||||
commit dbeae1190cabad83999f2540523f045acc1bb4ec
|
||||
Author: Dmitry Moskalchuk <dm@crystax.net>
|
||||
Date: Thu Aug 20 19:11:07 2015 +0300
|
||||
Date: Fri Aug 21 17:41:59 2015 +0300
|
||||
|
||||
[android] Don't use PIE copyrelocs for x86/x86_64
|
||||
[android] Always use gthr-posix.h instead of gthr-default.h
|
||||
|
||||
Signed-off-by: Dmitry Moskalchuk <dm@crystax.net>
|
||||
|
||||
---
|
||||
gcc/config/i386/i386.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
libgcc/gthr.h | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
--- a/gcc/config/i386/i386.c
|
||||
+++ b/gcc/config/i386/i386.c
|
||||
@@ -15753,6 +15753,7 @@
|
||||
else if (!SYMBOL_REF_FAR_ADDR_P (op0)
|
||||
&& (SYMBOL_REF_LOCAL_P (op0)
|
||||
|| (HAVE_LD_PIE_COPYRELOC
|
||||
+ && !TARGET_HAS_BIONIC
|
||||
&& flag_pie
|
||||
&& !SYMBOL_REF_WEAK (op0)
|
||||
&& !SYMBOL_REF_FUNCTION_P (op0)))
|
||||
--- a/libgcc/gthr.h
|
||||
+++ b/libgcc/gthr.h
|
||||
@@ -145,7 +145,11 @@
|
||||
#define GTHREAD_USE_WEAK 1
|
||||
#endif
|
||||
#endif
|
||||
+#if __ANDROID__
|
||||
+#include "gthr-posix.h"
|
||||
+#else
|
||||
#include "gthr-default.h"
|
||||
+#endif
|
||||
|
||||
#ifndef HIDE_EXPORTS
|
||||
#pragma GCC visibility pop
|
||||
|
45
packages/gcc/7.3.0/0017-crystax.patch
vendored
45
packages/gcc/7.3.0/0017-crystax.patch
vendored
@ -1,26 +1,33 @@
|
||||
commit dbeae1190cabad83999f2540523f045acc1bb4ec
|
||||
Author: Dmitry Moskalchuk <dm@crystax.net>
|
||||
Date: Fri Aug 21 17:41:59 2015 +0300
|
||||
commit 8a66d422721ae5999737d7825701ff22097d287b
|
||||
Author: Andrew Hsieh <andrewhsieh@google.com>
|
||||
Date: Mon Apr 14 21:05:51 2014 -0700
|
||||
|
||||
[android] Always use gthr-posix.h instead of gthr-default.h
|
||||
[android] Fix ARM generates insufficient alignment for NEON vst/vld
|
||||
|
||||
See d909af3e2469aad87d5c3e79b93c778fd26c03a9
|
||||
|
||||
Change-Id: Ie1de9f946f397196bb6f1623f5add86933739484
|
||||
Signed-off-by: Dmitry Moskalchuk <dm@crystax.net>
|
||||
|
||||
---
|
||||
libgcc/gthr.h | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
gcc/config/arm/arm.c | 8 ++++++--
|
||||
1 file changed, 6 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/libgcc/gthr.h
|
||||
+++ b/libgcc/gthr.h
|
||||
@@ -145,7 +145,11 @@
|
||||
#define GTHREAD_USE_WEAK 1
|
||||
#endif
|
||||
#endif
|
||||
+#if __ANDROID__
|
||||
+#include "gthr-posix.h"
|
||||
+#else
|
||||
#include "gthr-default.h"
|
||||
+#endif
|
||||
--- a/gcc/config/arm/arm.c
|
||||
+++ b/gcc/config/arm/arm.c
|
||||
@@ -22292,9 +22292,13 @@
|
||||
memsize = MEM_SIZE (x);
|
||||
|
||||
#ifndef HIDE_EXPORTS
|
||||
#pragma GCC visibility pop
|
||||
/* Only certain alignment specifiers are supported by the hardware. */
|
||||
- if (memsize == 32 && (align % 32) == 0)
|
||||
+ /* Note that ARM EABI only guarentees 8-byte stack alignment. While GCC
|
||||
+ honors stricter alignment of composite type in user code, it doesn't
|
||||
+ observe the alignment of memory passed as an extra argument for function
|
||||
+ returning large composite type. See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57271 */
|
||||
+ if (memsize == 32 && (align % 32) == 0 && !TARGET_AAPCS_BASED)
|
||||
align_bits = 256;
|
||||
- else if ((memsize == 16 || memsize == 32) && (align % 16) == 0)
|
||||
+ else if ((memsize == 16 || memsize == 32) && (align % 16) == 0 && !TARGET_AAPCS_BASED)
|
||||
align_bits = 128;
|
||||
else if (memsize >= 8 && (align % 8) == 0)
|
||||
align_bits = 64;
|
||||
|
42
packages/gcc/7.3.0/0018-crystax.patch
vendored
42
packages/gcc/7.3.0/0018-crystax.patch
vendored
@ -1,33 +1,23 @@
|
||||
commit 8a66d422721ae5999737d7825701ff22097d287b
|
||||
Author: Andrew Hsieh <andrewhsieh@google.com>
|
||||
Date: Mon Apr 14 21:05:51 2014 -0700
|
||||
commit 89d27bc45ee7325dcfff6748da0f8b9c1dc1f234
|
||||
Author: Dmitry Moskalchuk <dm@crystax.net>
|
||||
Date: Sat Aug 22 09:55:55 2015 +0300
|
||||
|
||||
[android] Fix ARM generates insufficient alignment for NEON vst/vld
|
||||
[android][i386] Remove throw() declaration from posix_memalign() proto
|
||||
|
||||
See d909af3e2469aad87d5c3e79b93c778fd26c03a9
|
||||
|
||||
Change-Id: Ie1de9f946f397196bb6f1623f5add86933739484
|
||||
Signed-off-by: Dmitry Moskalchuk <dm@crystax.net>
|
||||
|
||||
---
|
||||
gcc/config/arm/arm.c | 8 ++++++--
|
||||
1 file changed, 6 insertions(+), 2 deletions(-)
|
||||
gcc/config/i386/pmm_malloc.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/gcc/config/arm/arm.c
|
||||
+++ b/gcc/config/arm/arm.c
|
||||
@@ -22270,9 +22270,13 @@
|
||||
memsize = MEM_SIZE (x);
|
||||
--- a/gcc/config/i386/pmm_malloc.h
|
||||
+++ b/gcc/config/i386/pmm_malloc.h
|
||||
@@ -31,7 +31,7 @@
|
||||
#ifndef __cplusplus
|
||||
extern int posix_memalign (void **, size_t, size_t);
|
||||
#else
|
||||
-extern "C" int posix_memalign (void **, size_t, size_t) throw ();
|
||||
+extern "C" int posix_memalign (void **, size_t, size_t);
|
||||
#endif
|
||||
|
||||
/* Only certain alignment specifiers are supported by the hardware. */
|
||||
- if (memsize == 32 && (align % 32) == 0)
|
||||
+ /* Note that ARM EABI only guarentees 8-byte stack alignment. While GCC
|
||||
+ honors stricter alignment of composite type in user code, it doesn't
|
||||
+ observe the alignment of memory passed as an extra argument for function
|
||||
+ returning large composite type. See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57271 */
|
||||
+ if (memsize == 32 && (align % 32) == 0 && !TARGET_AAPCS_BASED)
|
||||
align_bits = 256;
|
||||
- else if ((memsize == 16 || memsize == 32) && (align % 16) == 0)
|
||||
+ else if ((memsize == 16 || memsize == 32) && (align % 16) == 0 && !TARGET_AAPCS_BASED)
|
||||
align_bits = 128;
|
||||
else if (memsize >= 8 && (align % 8) == 0)
|
||||
align_bits = 64;
|
||||
static __inline void *
|
||||
|
41
packages/gcc/7.3.0/0019-crystax.patch
vendored
41
packages/gcc/7.3.0/0019-crystax.patch
vendored
@ -1,23 +1,34 @@
|
||||
commit 89d27bc45ee7325dcfff6748da0f8b9c1dc1f234
|
||||
commit 9ae82f7cfc1073820092dd9f957559667e77db0d
|
||||
Author: Dmitry Moskalchuk <dm@crystax.net>
|
||||
Date: Sat Aug 22 09:55:55 2015 +0300
|
||||
Date: Tue Aug 25 09:36:42 2015 +0300
|
||||
|
||||
[android][i386] Remove throw() declaration from posix_memalign() proto
|
||||
[android] Explicitly make _Unwind_Resume visible for arm64/mips64
|
||||
|
||||
Signed-off-by: Dmitry Moskalchuk <dm@crystax.net>
|
||||
|
||||
---
|
||||
gcc/config/i386/pmm_malloc.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
gcc/config/aarch64/aarch64-linux-android.h | 4 ++++
|
||||
gcc/config/mips/linux-common.h | 4 ++++
|
||||
2 files changed, 8 insertions(+)
|
||||
|
||||
--- a/gcc/config/i386/pmm_malloc.h
|
||||
+++ b/gcc/config/i386/pmm_malloc.h
|
||||
@@ -31,7 +31,7 @@
|
||||
#ifndef __cplusplus
|
||||
extern int posix_memalign (void **, size_t, size_t);
|
||||
#else
|
||||
-extern "C" int posix_memalign (void **, size_t, size_t) throw ();
|
||||
+extern "C" int posix_memalign (void **, size_t, size_t);
|
||||
#endif
|
||||
--- a/gcc/config/aarch64/aarch64-linux-android.h
|
||||
+++ b/gcc/config/aarch64/aarch64-linux-android.h
|
||||
@@ -56,4 +56,8 @@
|
||||
#define ENDFILE_SPEC \
|
||||
LINUX_OR_ANDROID_LD (GNU_USER_TARGET_ENDFILE_SPEC, ANDROID_ENDFILE_SPEC)
|
||||
|
||||
static __inline void *
|
||||
+#ifdef IN_LIBGCC2
|
||||
+#define LIBGCC2_UNWIND_ATTRIBUTE __attribute__((visibility("default")))
|
||||
+#endif
|
||||
+
|
||||
#endif /* GCC_AARCH64_LINUX_ANDROID_H */
|
||||
--- a/gcc/config/mips/linux-common.h
|
||||
+++ b/gcc/config/mips/linux-common.h
|
||||
@@ -62,3 +62,7 @@
|
||||
|
||||
/* The default value isn't sufficient in 64-bit mode. */
|
||||
#define STACK_CHECK_PROTECT (TARGET_64BIT ? 16 * 1024 : 12 * 1024)
|
||||
+
|
||||
+#ifdef IN_LIBGCC2
|
||||
+#define LIBGCC2_UNWIND_ATTRIBUTE __attribute__((visibility("default")))
|
||||
+#endif
|
||||
|
34
packages/gcc/7.3.0/0020-crystax.patch
vendored
34
packages/gcc/7.3.0/0020-crystax.patch
vendored
@ -1,34 +0,0 @@
|
||||
commit 9ae82f7cfc1073820092dd9f957559667e77db0d
|
||||
Author: Dmitry Moskalchuk <dm@crystax.net>
|
||||
Date: Tue Aug 25 09:36:42 2015 +0300
|
||||
|
||||
[android] Explicitly make _Unwind_Resume visible for arm64/mips64
|
||||
|
||||
Signed-off-by: Dmitry Moskalchuk <dm@crystax.net>
|
||||
|
||||
---
|
||||
gcc/config/aarch64/aarch64-linux-android.h | 4 ++++
|
||||
gcc/config/mips/linux-common.h | 4 ++++
|
||||
2 files changed, 8 insertions(+)
|
||||
|
||||
--- a/gcc/config/aarch64/aarch64-linux-android.h
|
||||
+++ b/gcc/config/aarch64/aarch64-linux-android.h
|
||||
@@ -56,4 +56,8 @@
|
||||
#define ENDFILE_SPEC \
|
||||
LINUX_OR_ANDROID_LD (GNU_USER_TARGET_ENDFILE_SPEC, ANDROID_ENDFILE_SPEC)
|
||||
|
||||
+#ifdef IN_LIBGCC2
|
||||
+#define LIBGCC2_UNWIND_ATTRIBUTE __attribute__((visibility("default")))
|
||||
+#endif
|
||||
+
|
||||
#endif /* GCC_AARCH64_LINUX_ANDROID_H */
|
||||
--- a/gcc/config/mips/linux-common.h
|
||||
+++ b/gcc/config/mips/linux-common.h
|
||||
@@ -62,3 +62,7 @@
|
||||
|
||||
/* The default value isn't sufficient in 64-bit mode. */
|
||||
#define STACK_CHECK_PROTECT (TARGET_64BIT ? 16 * 1024 : 12 * 1024)
|
||||
+
|
||||
+#ifdef IN_LIBGCC2
|
||||
+#define LIBGCC2_UNWIND_ATTRIBUTE __attribute__((visibility("default")))
|
||||
+#endif
|
28
packages/gcc/7.3.0/0020-xtensa-libgcc-literal_position.patch
vendored
Normal file
28
packages/gcc/7.3.0/0020-xtensa-libgcc-literal_position.patch
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
libgcc: xtensa: fix build with -mtext-section-literals
|
||||
|
||||
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
|
||||
---
|
||||
libgcc/config/xtensa/ieee754-df.S | 1 +
|
||||
libgcc/config/xtensa/ieee754-sf.S | 1 +
|
||||
2 files changed, 2 insertions(+)
|
||||
|
||||
--- a/libgcc/config/xtensa/ieee754-sf.S
|
||||
+++ b/libgcc/config/xtensa/ieee754-sf.S
|
||||
@@ -55,6 +55,7 @@
|
||||
|
||||
#ifdef L_addsubsf3
|
||||
|
||||
+ .literal_position
|
||||
/* Addition */
|
||||
__addsf3_aux:
|
||||
|
||||
--- a/libgcc/config/xtensa/ieee754-df.S
|
||||
+++ b/libgcc/config/xtensa/ieee754-df.S
|
||||
@@ -55,6 +55,7 @@
|
||||
|
||||
#ifdef L_addsubdf3
|
||||
|
||||
+ .literal_position
|
||||
/* Addition */
|
||||
__adddf3_aux:
|
||||
|
75
packages/glibc/2.26/0001-aarch64-rewrite-elf_machine_load_address.patch
vendored
Normal file
75
packages/glibc/2.26/0001-aarch64-rewrite-elf_machine_load_address.patch
vendored
Normal file
@ -0,0 +1,75 @@
|
||||
commit a68ba2f3cd3cbe32c1f31e13c20ed13487727b32
|
||||
Author: Szabolcs Nagy <szabolcs.nagy@arm.com>
|
||||
Date: Wed Oct 18 17:26:23 2017 +0100
|
||||
|
||||
[AARCH64] Rewrite elf_machine_load_address using _DYNAMIC symbol
|
||||
|
||||
This patch rewrites aarch64 elf_machine_load_address to use special _DYNAMIC
|
||||
symbol instead of _dl_start.
|
||||
|
||||
The static address of _DYNAMIC symbol is stored in the first GOT entry.
|
||||
Here is the change which makes this solution work (part of binutils 2.24):
|
||||
https://sourceware.org/ml/binutils/2013-06/msg00248.html
|
||||
|
||||
i386, x86_64 targets use the same method to do this as well.
|
||||
|
||||
The original implementation relies on a trick that R_AARCH64_ABS32 relocation
|
||||
being resolved at link time and the static address fits in the 32bits.
|
||||
However, in LP64, normally, the address is defined to be 64 bit.
|
||||
|
||||
Here is the C version one which should be portable in all cases.
|
||||
|
||||
* sysdeps/aarch64/dl-machine.h (elf_machine_load_address): Use
|
||||
_DYNAMIC symbol to calculate load address.
|
||||
|
||||
---
|
||||
sysdeps/aarch64/dl-machine.h | 37 ++++---------------------------------
|
||||
1 file changed, 4 insertions(+), 33 deletions(-)
|
||||
|
||||
--- a/sysdeps/aarch64/dl-machine.h
|
||||
+++ b/sysdeps/aarch64/dl-machine.h
|
||||
@@ -51,40 +51,11 @@
|
||||
/* To figure out the load address we use the definition that for any symbol:
|
||||
dynamic_addr(symbol) = static_addr(symbol) + load_addr
|
||||
|
||||
- The choice of symbol is arbitrary. The static address we obtain
|
||||
- by constructing a non GOT reference to the symbol, the dynamic
|
||||
- address of the symbol we compute using adrp/add to compute the
|
||||
- symbol's address relative to the PC.
|
||||
- This depends on 32/16bit relocations being resolved at link time
|
||||
- and that the static address fits in the 32/16 bits. */
|
||||
+ _DYNAMIC sysmbol is used here as its link-time address stored in
|
||||
+ the special unrelocated first GOT entry. */
|
||||
|
||||
- ElfW(Addr) static_addr;
|
||||
- ElfW(Addr) dynamic_addr;
|
||||
-
|
||||
- asm (" \n"
|
||||
-" adrp %1, _dl_start; \n"
|
||||
-#ifdef __LP64__
|
||||
-" add %1, %1, #:lo12:_dl_start \n"
|
||||
-#else
|
||||
-" add %w1, %w1, #:lo12:_dl_start \n"
|
||||
-#endif
|
||||
-" ldr %w0, 1f \n"
|
||||
-" b 2f \n"
|
||||
-"1: \n"
|
||||
-#ifdef __LP64__
|
||||
-" .word _dl_start \n"
|
||||
-#else
|
||||
-# ifdef __AARCH64EB__
|
||||
-" .short 0 \n"
|
||||
-# endif
|
||||
-" .short _dl_start \n"
|
||||
-# ifndef __AARCH64EB__
|
||||
-" .short 0 \n"
|
||||
-# endif
|
||||
-#endif
|
||||
-"2: \n"
|
||||
- : "=r" (static_addr), "=r" (dynamic_addr));
|
||||
- return dynamic_addr - static_addr;
|
||||
+ extern ElfW(Dyn) _DYNAMIC[] attribute_hidden;
|
||||
+ return (ElfW(Addr)) &_DYNAMIC - elf_machine_dynamic ();
|
||||
}
|
||||
|
||||
/* Set up the loaded object described by L so its unrelocated PLT
|
@ -1,3 +1,5 @@
|
||||
Revert the commit below. A better solution is being discussed on newlib's mailing list.
|
||||
|
||||
commit fcd33916ac03086b9090c68e88036afa4b25d913
|
||||
Author: Alexander Fedotov <alfedotov@gmail.com>
|
||||
Date: Mon Dec 25 16:28:22 2017 +0300
|
||||
|
Loading…
Reference in New Issue
Block a user