Просмотр исходного кода

gcc/nios2: keep elf-lib.h and t-eh-dw2-dip in the softfp branch

nios2-softfp.patch adds a nios2-*-linux-uclibc* case to
libgcc/config.host so that the soft-float multilibs get built.  It was
written against gcc 6.2 by copying the nios2-*-linux* branch, and since
the new case matches first, everything the original branch sets and the
copy dropped is lost -- namely nios2/elf-lib.h in tm_file and
t-eh-dw2-dip in tmake_file.

Without elf-lib.h there is no CRT_GET_RFIB_DATA, so crtbeginS.o registers
its frames with __register_frame_info instead of the _bases variant and
the unwinder gets a data-relative base of 0.  nios2 gcc emits
DW_EH_PE_datarel pointers for PIC (nios2.h ASM_PREFERRED_EH_DATA_FORMAT),
so every LSDA reference in a PIE or shared object then resolves into
nowhere: __gcc_personality_v0 dereferenced 0xfffff970 and
uClibc-ng's tst-cancelx4-pie died with SIGSEGV.

Restore both settings in the copied branch.

Signed-off-by: Ramin Moussavi <ramin.moussavi@yacoub.de>
Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
ramin 1 неделя назад
Родитель
Сommit
2bb73e5834

+ 3 - 2
toolchain/gcc/patches/10.5.0/nios2-softfp.patch

@@ -1,12 +1,13 @@
 diff -Nur gcc-6.2.0.orig/libgcc/config.host gcc-6.2.0/libgcc/config.host
 diff -Nur gcc-6.2.0.orig/libgcc/config.host gcc-6.2.0/libgcc/config.host
 --- gcc-6.2.0.orig/libgcc/config.host	2016-05-17 08:15:52.000000000 +0200
 --- gcc-6.2.0.orig/libgcc/config.host	2016-05-17 08:15:52.000000000 +0200
 +++ gcc-6.2.0/libgcc/config.host	2016-10-15 14:42:53.971919904 +0200
 +++ gcc-6.2.0/libgcc/config.host	2016-10-15 14:42:53.971919904 +0200
-@@ -962,6 +962,10 @@
+@@ -962,6 +962,11 @@
  		;;
  		;;
  	esac
  	esac
  	;;
  	;;
 +nios2-*-linux-uclibc*)
 +nios2-*-linux-uclibc*)
-+	tmake_file="$tmake_file nios2/t-nios2 nios2/t-linux t-libgcc-pic t-slibgcc-libgcc t-softfp-sfdf t-softfp"
++	tmake_file="$tmake_file nios2/t-nios2 nios2/t-linux t-libgcc-pic t-eh-dw2-dip t-slibgcc-libgcc t-softfp-sfdf t-softfp"
++	tm_file="$tm_file nios2/elf-lib.h"
 +	md_unwind_header=nios2/linux-unwind.h
 +	md_unwind_header=nios2/linux-unwind.h
 +	;;
 +	;;
  nios2-*-linux*)
  nios2-*-linux*)

+ 3 - 2
toolchain/gcc/patches/11.5.0/nios2-softfp.patch

@@ -1,12 +1,13 @@
 diff -Nur gcc-6.2.0.orig/libgcc/config.host gcc-6.2.0/libgcc/config.host
 diff -Nur gcc-6.2.0.orig/libgcc/config.host gcc-6.2.0/libgcc/config.host
 --- gcc-6.2.0.orig/libgcc/config.host	2016-05-17 08:15:52.000000000 +0200
 --- gcc-6.2.0.orig/libgcc/config.host	2016-05-17 08:15:52.000000000 +0200
 +++ gcc-6.2.0/libgcc/config.host	2016-10-15 14:42:53.971919904 +0200
 +++ gcc-6.2.0/libgcc/config.host	2016-10-15 14:42:53.971919904 +0200
-@@ -962,6 +962,10 @@
+@@ -962,6 +962,11 @@
  		;;
  		;;
  	esac
  	esac
  	;;
  	;;
 +nios2-*-linux-uclibc*)
 +nios2-*-linux-uclibc*)
-+	tmake_file="$tmake_file nios2/t-nios2 nios2/t-linux t-libgcc-pic t-slibgcc-libgcc t-softfp-sfdf t-softfp"
++	tmake_file="$tmake_file nios2/t-nios2 nios2/t-linux t-libgcc-pic t-eh-dw2-dip t-slibgcc-libgcc t-softfp-sfdf t-softfp"
++	tm_file="$tm_file nios2/elf-lib.h"
 +	md_unwind_header=nios2/linux-unwind.h
 +	md_unwind_header=nios2/linux-unwind.h
 +	;;
 +	;;
  nios2-*-linux*)
  nios2-*-linux*)

+ 3 - 2
toolchain/gcc/patches/12.5.0/nios2-softfp.patch

@@ -1,12 +1,13 @@
 diff -Nur gcc-6.2.0.orig/libgcc/config.host gcc-6.2.0/libgcc/config.host
 diff -Nur gcc-6.2.0.orig/libgcc/config.host gcc-6.2.0/libgcc/config.host
 --- gcc-6.2.0.orig/libgcc/config.host	2016-05-17 08:15:52.000000000 +0200
 --- gcc-6.2.0.orig/libgcc/config.host	2016-05-17 08:15:52.000000000 +0200
 +++ gcc-6.2.0/libgcc/config.host	2016-10-15 14:42:53.971919904 +0200
 +++ gcc-6.2.0/libgcc/config.host	2016-10-15 14:42:53.971919904 +0200
-@@ -962,6 +962,10 @@
+@@ -962,6 +962,11 @@
  		;;
  		;;
  	esac
  	esac
  	;;
  	;;
 +nios2-*-linux-uclibc*)
 +nios2-*-linux-uclibc*)
-+	tmake_file="$tmake_file nios2/t-nios2 nios2/t-linux t-libgcc-pic t-slibgcc-libgcc t-softfp-sfdf t-softfp"
++	tmake_file="$tmake_file nios2/t-nios2 nios2/t-linux t-libgcc-pic t-eh-dw2-dip t-slibgcc-libgcc t-softfp-sfdf t-softfp"
++	tm_file="$tm_file nios2/elf-lib.h"
 +	md_unwind_header=nios2/linux-unwind.h
 +	md_unwind_header=nios2/linux-unwind.h
 +	;;
 +	;;
  nios2-*-linux*)
  nios2-*-linux*)

+ 3 - 2
toolchain/gcc/patches/13.4.0/nios2-softfp.patch

@@ -1,12 +1,13 @@
 diff -Nur gcc-6.2.0.orig/libgcc/config.host gcc-6.2.0/libgcc/config.host
 diff -Nur gcc-6.2.0.orig/libgcc/config.host gcc-6.2.0/libgcc/config.host
 --- gcc-6.2.0.orig/libgcc/config.host	2016-05-17 08:15:52.000000000 +0200
 --- gcc-6.2.0.orig/libgcc/config.host	2016-05-17 08:15:52.000000000 +0200
 +++ gcc-6.2.0/libgcc/config.host	2016-10-15 14:42:53.971919904 +0200
 +++ gcc-6.2.0/libgcc/config.host	2016-10-15 14:42:53.971919904 +0200
-@@ -962,6 +962,10 @@
+@@ -962,6 +962,11 @@
  		;;
  		;;
  	esac
  	esac
  	;;
  	;;
 +nios2-*-linux-uclibc*)
 +nios2-*-linux-uclibc*)
-+	tmake_file="$tmake_file nios2/t-nios2 nios2/t-linux t-libgcc-pic t-slibgcc-libgcc t-softfp-sfdf t-softfp"
++	tmake_file="$tmake_file nios2/t-nios2 nios2/t-linux t-libgcc-pic t-eh-dw2-dip t-slibgcc-libgcc t-softfp-sfdf t-softfp"
++	tm_file="$tm_file nios2/elf-lib.h"
 +	md_unwind_header=nios2/linux-unwind.h
 +	md_unwind_header=nios2/linux-unwind.h
 +	;;
 +	;;
  nios2-*-linux*)
  nios2-*-linux*)

+ 3 - 2
toolchain/gcc/patches/14.4.0/nios2-softfp.patch

@@ -1,12 +1,13 @@
 diff -Nur gcc-6.2.0.orig/libgcc/config.host gcc-6.2.0/libgcc/config.host
 diff -Nur gcc-6.2.0.orig/libgcc/config.host gcc-6.2.0/libgcc/config.host
 --- gcc-6.2.0.orig/libgcc/config.host	2016-05-17 08:15:52.000000000 +0200
 --- gcc-6.2.0.orig/libgcc/config.host	2016-05-17 08:15:52.000000000 +0200
 +++ gcc-6.2.0/libgcc/config.host	2016-10-15 14:42:53.971919904 +0200
 +++ gcc-6.2.0/libgcc/config.host	2016-10-15 14:42:53.971919904 +0200
-@@ -962,6 +962,10 @@
+@@ -962,6 +962,11 @@
  		;;
  		;;
  	esac
  	esac
  	;;
  	;;
 +nios2-*-linux-uclibc*)
 +nios2-*-linux-uclibc*)
-+	tmake_file="$tmake_file nios2/t-nios2 nios2/t-linux t-libgcc-pic t-slibgcc-libgcc t-softfp-sfdf t-softfp"
++	tmake_file="$tmake_file nios2/t-nios2 nios2/t-linux t-libgcc-pic t-eh-dw2-dip t-slibgcc-libgcc t-softfp-sfdf t-softfp"
++	tm_file="$tm_file nios2/elf-lib.h"
 +	md_unwind_header=nios2/linux-unwind.h
 +	md_unwind_header=nios2/linux-unwind.h
 +	;;
 +	;;
  nios2-*-linux*)
  nios2-*-linux*)