[LEDE-DEV] [PATCH 2/6] toolchain: gcc: disable ifunc on *-musl by default

Yousong Zhou yszhou4tech at gmail.com
Wed Nov 23 08:03:39 PST 2016


Otherwise the built binaries may fail with

    Error relocating /usr/bin/qemu-system-x86_64: unsupported relocation type 37

Signed-off-by: Yousong Zhou <yszhou4tech at gmail.com>
---
 .../5.4.0/280-musl-disable-ifunc-by-default.patch  | 38 ++++++++++++++++++++++
 .../6.2.0/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 0000000..af5acf8
--- /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 <nsz at 138bc75d-0d04-0410-961f-82ee72b054a4>
+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 0000000..af5acf8
--- /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 <nsz at 138bc75d-0d04-0410-961f-82ee72b054a4>
+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
-- 
2.6.4




More information about the Lede-dev mailing list