From 6af50d8865335aed68fb4f9b319edb81ce93a04e Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Tue, 2 Feb 2016 21:26:03 -0800 Subject: 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 Signed-off-by: Khem Raj Signed-off-by: Ross Burton --- meta/recipes-devtools/gcc/gcc-5.3.inc | 2 + ...-weak-reference-logic-in-gthr.h-for-os-ge.patch | 78 ++++++++++++++++++++++ ...050-powerpc-pass-secure-plt-to-the-linker.patch | 66 ++++++++++++++++++ 3 files changed, 146 insertions(+) create mode 100644 meta/recipes-devtools/gcc/gcc-5.3/0049-Disable-the-weak-reference-logic-in-gthr.h-for-os-ge.patch create mode 100644 meta/recipes-devtools/gcc/gcc-5.3/0050-powerpc-pass-secure-plt-to-the-linker.patch (limited to 'meta/recipes-devtools/gcc') diff --git a/meta/recipes-devtools/gcc/gcc-5.3.inc b/meta/recipes-devtools/gcc/gcc-5.3.inc index 83e061f44f..214af10c51 100644 --- a/meta/recipes-devtools/gcc/gcc-5.3.inc +++ b/meta/recipes-devtools/gcc/gcc-5.3.inc @@ -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 = "" diff --git a/meta/recipes-devtools/gcc/gcc-5.3/0049-Disable-the-weak-reference-logic-in-gthr.h-for-os-ge.patch b/meta/recipes-devtools/gcc/gcc-5.3/0049-Disable-the-weak-reference-logic-in-gthr.h-for-os-ge.patch new file mode 100644 index 0000000000..0ea5143e0d --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-5.3/0049-Disable-the-weak-reference-logic-in-gthr.h-for-os-ge.patch @@ -0,0 +1,78 @@ +From 553d8e3b9073ff3e0a9d2fac9b1823fb17ad247c Mon Sep 17 00:00:00 2001 +From: Khem Raj +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 +--- +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 + diff --git a/meta/recipes-devtools/gcc/gcc-5.3/0050-powerpc-pass-secure-plt-to-the-linker.patch b/meta/recipes-devtools/gcc/gcc-5.3/0050-powerpc-pass-secure-plt-to-the-linker.patch new file mode 100644 index 0000000000..b2f2bbdf46 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-5.3/0050-powerpc-pass-secure-plt-to-the-linker.patch @@ -0,0 +1,66 @@ +From 4fa0cf03678f849917dcc3d149989b7fecdbe276 Mon Sep 17 00:00:00 2001 +From: Khem Raj +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 +--- +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 + -- cgit 1.2.3-korg