mirror of
https://git.yoctoproject.org/poky
synced 2026-04-03 02:02:21 +02:00
gcc: musl related fixes for ppc/secure-plt and gthr
These issues are fixing building gcc for target, ppc issue helps in fixing discrepency between gcc cmdline and linker cmdline (From OE-Core rev: 6af50d8865335aed68fb4f9b319edb81ce93a04e) Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
@@ -78,6 +78,8 @@ SRC_URI = "\
|
||||
file://0046-Get-rid-of-ever-broken-fixincludes-on-musl.patch \
|
||||
file://0047-nios2-Define-MUSL_DYNAMIC_LINKER.patch \
|
||||
file://0048-ssp_nonshared.patch \
|
||||
file://0049-Disable-the-weak-reference-logic-in-gthr.h-for-os-ge.patch \
|
||||
file://0050-powerpc-pass-secure-plt-to-the-linker.patch \
|
||||
"
|
||||
|
||||
BACKPORTS = ""
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
From 553d8e3b9073ff3e0a9d2fac9b1823fb17ad247c Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Tue, 2 Feb 2016 21:00:18 -0800
|
||||
Subject: [PATCH 49/51] Disable the weak reference logic in gthr.h for
|
||||
os/generic
|
||||
|
||||
It does not work unless work arounds are there in gthr-posix.h
|
||||
|
||||
origin of patch
|
||||
http://port70.net/~nsz/musl/gcc-5.3.0/0004-gthr.patch
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
Upstream-Status: Pending
|
||||
|
||||
libgfortran/acinclude.m4 | 2 +-
|
||||
libgfortran/configure | 2 +-
|
||||
libstdc++-v3/config/os/generic/os_defines.h | 5 +++++
|
||||
libstdc++-v3/configure.host | 3 +++
|
||||
4 files changed, 10 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/libgfortran/acinclude.m4 b/libgfortran/acinclude.m4
|
||||
index ba890f9..30b8b1a6 100644
|
||||
--- a/libgfortran/acinclude.m4
|
||||
+++ b/libgfortran/acinclude.m4
|
||||
@@ -100,7 +100,7 @@ void foo (void);
|
||||
[Define to 1 if the target supports #pragma weak])
|
||||
fi
|
||||
case "$host" in
|
||||
- *-*-darwin* | *-*-hpux* | *-*-cygwin* | *-*-mingw* )
|
||||
+ *-*-darwin* | *-*-hpux* | *-*-cygwin* | *-*-mingw* | *-*-musl* )
|
||||
AC_DEFINE(GTHREAD_USE_WEAK, 0,
|
||||
[Define to 0 if the target shouldn't use #pragma weak])
|
||||
;;
|
||||
diff --git a/libgfortran/configure b/libgfortran/configure
|
||||
index 5d47e65..cdf9695 100755
|
||||
--- a/libgfortran/configure
|
||||
+++ b/libgfortran/configure
|
||||
@@ -26456,7 +26456,7 @@ $as_echo "#define SUPPORTS_WEAK 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
case "$host" in
|
||||
- *-*-darwin* | *-*-hpux* | *-*-cygwin* | *-*-mingw* )
|
||||
+ *-*-darwin* | *-*-hpux* | *-*-cygwin* | *-*-mingw* | *-*-musl* )
|
||||
|
||||
$as_echo "#define GTHREAD_USE_WEAK 0" >>confdefs.h
|
||||
|
||||
diff --git a/libstdc++-v3/config/os/generic/os_defines.h b/libstdc++-v3/config/os/generic/os_defines.h
|
||||
index 45bf52a..103ec0e 100644
|
||||
--- a/libstdc++-v3/config/os/generic/os_defines.h
|
||||
+++ b/libstdc++-v3/config/os/generic/os_defines.h
|
||||
@@ -33,4 +33,9 @@
|
||||
// System-specific #define, typedefs, corrections, etc, go here. This
|
||||
// file will come before all others.
|
||||
|
||||
+// Disable the weak reference logic in gthr.h for os/generic because it
|
||||
+// is broken on every platform unless there is implementation specific
|
||||
+// workaround in gthr-posix.h and at link-time for static linking.
|
||||
+#define _GLIBCXX_GTHREAD_USE_WEAK 0
|
||||
+
|
||||
#endif
|
||||
diff --git a/libstdc++-v3/configure.host b/libstdc++-v3/configure.host
|
||||
index 1756444..2a87bb8 100644
|
||||
--- a/libstdc++-v3/configure.host
|
||||
+++ b/libstdc++-v3/configure.host
|
||||
@@ -273,6 +273,9 @@ case "${host_os}" in
|
||||
freebsd*)
|
||||
os_include_dir="os/bsd/freebsd"
|
||||
;;
|
||||
+ linux-musl*)
|
||||
+ os_include_dir="os/generic"
|
||||
+ ;;
|
||||
gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)
|
||||
# check for musl by target
|
||||
case "${host_os}" in
|
||||
--
|
||||
2.7.0
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
From 4fa0cf03678f849917dcc3d149989b7fecdbe276 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Tue, 2 Feb 2016 21:10:00 -0800
|
||||
Subject: [PATCH 50/51] powerpc pass --secure-plt to the linker
|
||||
|
||||
Secure-plt when enabled does not pass right options to linker
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
Upstream-Status: Pending
|
||||
gcc/config/rs6000/linux64.h | 4 ++++
|
||||
gcc/config/rs6000/sysv4.h | 2 ++
|
||||
2 files changed, 6 insertions(+)
|
||||
|
||||
diff --git a/gcc/config/rs6000/linux64.h b/gcc/config/rs6000/linux64.h
|
||||
index 679da4b..3ca7cd7 100644
|
||||
--- a/gcc/config/rs6000/linux64.h
|
||||
+++ b/gcc/config/rs6000/linux64.h
|
||||
@@ -174,20 +174,24 @@ extern int dot_symbols;
|
||||
#undef ASM_DEFAULT_SPEC
|
||||
#undef ASM_SPEC
|
||||
#undef LINK_OS_LINUX_SPEC
|
||||
+#undef LINK_SECURE_PLT_SPEC
|
||||
|
||||
#ifndef RS6000_BI_ARCH
|
||||
#define ASM_DEFAULT_SPEC "-mppc64"
|
||||
#define ASM_SPEC "%(asm_spec64) %(asm_spec_common)"
|
||||
#define LINK_OS_LINUX_SPEC "%(link_os_linux_spec64)"
|
||||
+#define LINK_SECURE_PLT_SPEC ""
|
||||
#else
|
||||
#if DEFAULT_ARCH64_P
|
||||
#define ASM_DEFAULT_SPEC "-mppc%{!m32:64}"
|
||||
#define ASM_SPEC "%{m32:%(asm_spec32)}%{!m32:%(asm_spec64)} %(asm_spec_common)"
|
||||
#define LINK_OS_LINUX_SPEC "%{m32:%(link_os_linux_spec32)}%{!m32:%(link_os_linux_spec64)}"
|
||||
+#define LINK_SECURE_PLT_SPEC "%{m32: " LINK_SECURE_PLT_DEFAULT_SPEC "}"
|
||||
#else
|
||||
#define ASM_DEFAULT_SPEC "-mppc%{m64:64}"
|
||||
#define ASM_SPEC "%{!m64:%(asm_spec32)}%{m64:%(asm_spec64)} %(asm_spec_common)"
|
||||
#define LINK_OS_LINUX_SPEC "%{!m64:%(link_os_linux_spec32)}%{m64:%(link_os_linux_spec64)}"
|
||||
+#define LINK_SECURE_PLT_SPEC "%{!m64: " LINK_SECURE_PLT_DEFAULT_SPEC "}"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h
|
||||
index 8794fa5..0835551 100644
|
||||
--- a/gcc/config/rs6000/sysv4.h
|
||||
+++ b/gcc/config/rs6000/sysv4.h
|
||||
@@ -571,6 +571,7 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEFAULT_ASM_ENDIAN)
|
||||
: %(link_start_default) }"
|
||||
|
||||
#define LINK_START_DEFAULT_SPEC ""
|
||||
+#define LINK_SECURE_PLT_SPEC LINK_SECURE_PLT_DEFAULT_SPEC
|
||||
|
||||
#undef LINK_SPEC
|
||||
#define LINK_SPEC "\
|
||||
@@ -578,6 +579,7 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEFAULT_ASM_ENDIAN)
|
||||
%{R*} \
|
||||
%(link_shlib) \
|
||||
%{!T*: %(link_start) } \
|
||||
+%{!static: %{!mbss-plt: %(link_secure_plt_default)}} \
|
||||
%(link_os)"
|
||||
|
||||
/* Shared libraries are not default. */
|
||||
--
|
||||
2.7.0
|
||||
|
||||
Reference in New Issue
Block a user