瀏覽代碼

add patch fixing copy relocs issue on riscv

this is binutils issue 23825, but it's caused by gcc using local-exec
model rather than initial-exec model with the intent of making
binutils generate copy relocations. this is harmful, unnecessary, and
not presently supported by musl (and probably should never be). patch
taken from https://github.com/riscv/riscv-gcc/pull/118.
Rich Felker 5 年之前
父節點
當前提交
52527c462f

+ 16 - 0
patches/gcc-7.2.0/0016-riscv-tls-copy-relocs.diff

@@ -0,0 +1,16 @@
+diff --git a/gcc/config/riscv/riscv.c b/gcc/config/riscv/riscv.c
+index 677728e77ed..444d01e87ec 100644
+--- a/gcc/config/riscv/riscv.c
++++ b/gcc/config/riscv/riscv.c
+@@ -1209,9 +1209,11 @@ riscv_legitimize_tls_address (rtx loc)
+   rtx dest, tp, tmp;
+   enum tls_model model = SYMBOL_REF_TLS_MODEL (loc);
+ 
++#if 0
+   /* Since we support TLS copy relocs, non-PIC TLS accesses may all use LE.  */
+   if (!flag_pic)
+     model = TLS_MODEL_LOCAL_EXEC;
++#endif
+ 
+   switch (model)
+     {

+ 16 - 0
patches/gcc-7.3.0/0018-riscv-tls-copy-relocs.diff

@@ -0,0 +1,16 @@
+diff --git a/gcc/config/riscv/riscv.c b/gcc/config/riscv/riscv.c
+index 677728e77ed..444d01e87ec 100644
+--- a/gcc/config/riscv/riscv.c
++++ b/gcc/config/riscv/riscv.c
+@@ -1209,9 +1209,11 @@ riscv_legitimize_tls_address (rtx loc)
+   rtx dest, tp, tmp;
+   enum tls_model model = SYMBOL_REF_TLS_MODEL (loc);
+ 
++#if 0
+   /* Since we support TLS copy relocs, non-PIC TLS accesses may all use LE.  */
+   if (!flag_pic)
+     model = TLS_MODEL_LOCAL_EXEC;
++#endif
+ 
+   switch (model)
+     {

+ 16 - 0
patches/gcc-8.3.0/0015-riscv-tls-copy-relocs.diff

@@ -0,0 +1,16 @@
+diff --git a/gcc/config/riscv/riscv.c b/gcc/config/riscv/riscv.c
+index 677728e77ed..444d01e87ec 100644
+--- a/gcc/config/riscv/riscv.c
++++ b/gcc/config/riscv/riscv.c
+@@ -1209,9 +1209,11 @@ riscv_legitimize_tls_address (rtx loc)
+   rtx dest, tp, tmp;
+   enum tls_model model = SYMBOL_REF_TLS_MODEL (loc);
+ 
++#if 0
+   /* Since we support TLS copy relocs, non-PIC TLS accesses may all use LE.  */
+   if (!flag_pic)
+     model = TLS_MODEL_LOCAL_EXEC;
++#endif
+ 
+   switch (model)
+     {

+ 16 - 0
patches/gcc-9.2.0/0015-riscv-tls-copy-relocs.diff

@@ -0,0 +1,16 @@
+diff --git a/gcc/config/riscv/riscv.c b/gcc/config/riscv/riscv.c
+index 677728e77ed..444d01e87ec 100644
+--- a/gcc/config/riscv/riscv.c
++++ b/gcc/config/riscv/riscv.c
+@@ -1209,9 +1209,11 @@ riscv_legitimize_tls_address (rtx loc)
+   rtx dest, tp, tmp;
+   enum tls_model model = SYMBOL_REF_TLS_MODEL (loc);
+ 
++#if 0
+   /* Since we support TLS copy relocs, non-PIC TLS accesses may all use LE.  */
+   if (!flag_pic)
+     model = TLS_MODEL_LOCAL_EXEC;
++#endif
+ 
+   switch (model)
+     {