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.
This commit is contained in:
Rich Felker 2019-11-19 08:50:58 -05:00
parent a9a3b3aee2
commit 52527c462f
4 changed files with 64 additions and 0 deletions

View File

@ -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)
{

View File

@ -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)
{

View File

@ -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)
{

View File

@ -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)
{