From 49703b589ba8a5bfad63762e7fad649ab0097fa9 Mon Sep 17 00:00:00 2001 From: Yousong Zhou Date: Thu, 24 Nov 2016 00:03:39 +0800 Subject: [PATCH] toolchain: gcc: disable ifunc on *-musl by default Otherwise the built binaries may fail with Error relocating /usr/bin/qemu-system-x86_64: unsupported relocation type 37 Signed-off-by: Yousong Zhou --- .../280-musl-disable-ifunc-by-default.patch | 38 +++++++++++++++++++ .../280-musl-disable-ifunc-by-default.patch | 38 +++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 toolchain/gcc/patches/5.4.0/280-musl-disable-ifunc-by-default.patch create mode 100644 toolchain/gcc/patches/6.2.0/280-musl-disable-ifunc-by-default.patch diff --git a/toolchain/gcc/patches/5.4.0/280-musl-disable-ifunc-by-default.patch b/toolchain/gcc/patches/5.4.0/280-musl-disable-ifunc-by-default.patch new file mode 100644 index 0000000000..af5acf8cc9 --- /dev/null +++ b/toolchain/gcc/patches/5.4.0/280-musl-disable-ifunc-by-default.patch @@ -0,0 +1,38 @@ +From 450fb05e2a7510d37744f044009f8237d902f65c Mon Sep 17 00:00:00 2001 +From: nsz +Date: Tue, 30 Aug 2016 10:26:22 +0000 +Subject: [PATCH] disable ifunc on *-musl by default + +gcc/ + * config.gcc (*-*-*musl*): Disable gnu-indirect-function. + + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@239859 138bc75d-0d04-0410-961f-82ee72b054a4 +--- + gcc/ChangeLog | 4 ++++ + gcc/config.gcc | 4 ++-- + 2 files changed, 6 insertions(+), 2 deletions(-) + +diff --git a/gcc/config.gcc b/gcc/config.gcc +index 8827dc8..e544d76 100644 +--- a/gcc/config.gcc ++++ b/gcc/config.gcc +@@ -1465,7 +1465,7 @@ i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-gnu* | i[34567]8 + extra_options="${extra_options} linux-android.opt" + # Assume modern glibc if not targeting Android nor uclibc. + case ${target} in +- *-*-*android*|*-*-*uclibc*) ++ *-*-*android*|*-*-*uclibc*|*-*-*musl*) + ;; + *) + default_gnu_indirect_function=yes +@@ -1531,7 +1531,7 @@ x86_64-*-linux* | x86_64-*-kfreebsd*-gnu) + extra_options="${extra_options} linux-android.opt" + # Assume modern glibc if not targeting Android nor uclibc. + case ${target} in +- *-*-*android*|*-*-*uclibc*) ++ *-*-*android*|*-*-*uclibc*|*-*-*musl*) + ;; + *) + default_gnu_indirect_function=yes diff --git a/toolchain/gcc/patches/6.2.0/280-musl-disable-ifunc-by-default.patch b/toolchain/gcc/patches/6.2.0/280-musl-disable-ifunc-by-default.patch new file mode 100644 index 0000000000..af5acf8cc9 --- /dev/null +++ b/toolchain/gcc/patches/6.2.0/280-musl-disable-ifunc-by-default.patch @@ -0,0 +1,38 @@ +From 450fb05e2a7510d37744f044009f8237d902f65c Mon Sep 17 00:00:00 2001 +From: nsz +Date: Tue, 30 Aug 2016 10:26:22 +0000 +Subject: [PATCH] disable ifunc on *-musl by default + +gcc/ + * config.gcc (*-*-*musl*): Disable gnu-indirect-function. + + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@239859 138bc75d-0d04-0410-961f-82ee72b054a4 +--- + gcc/ChangeLog | 4 ++++ + gcc/config.gcc | 4 ++-- + 2 files changed, 6 insertions(+), 2 deletions(-) + +diff --git a/gcc/config.gcc b/gcc/config.gcc +index 8827dc8..e544d76 100644 +--- a/gcc/config.gcc ++++ b/gcc/config.gcc +@@ -1465,7 +1465,7 @@ i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-gnu* | i[34567]8 + extra_options="${extra_options} linux-android.opt" + # Assume modern glibc if not targeting Android nor uclibc. + case ${target} in +- *-*-*android*|*-*-*uclibc*) ++ *-*-*android*|*-*-*uclibc*|*-*-*musl*) + ;; + *) + default_gnu_indirect_function=yes +@@ -1531,7 +1531,7 @@ x86_64-*-linux* | x86_64-*-kfreebsd*-gnu) + extra_options="${extra_options} linux-android.opt" + # Assume modern glibc if not targeting Android nor uclibc. + case ${target} in +- *-*-*android*|*-*-*uclibc*) ++ *-*-*android*|*-*-*uclibc*|*-*-*musl*) + ;; + *) + default_gnu_indirect_function=yes