aboutsummaryrefslogtreecommitdiff
path: root/libphobos
diff options
context:
space:
mode:
authorIain Buclaw <ibuclaw@gdcproject.org>2021-01-24 00:20:25 +0100
committerIain Buclaw <ibuclaw@gdcproject.org>2021-01-24 00:20:25 +0100
commit81f928ec8e8abf1f21c5ff008c39b5d6af78f6cb (patch)
treeaa54c488bb8d7665542164f4529b12897181bb7b /libphobos
parent7e0f147a29f42d6149585573650bd4827f3b2b93 (diff)
downloadgcc-81f928ec8e8abf1f21c5ff008c39b5d6af78f6cb.zip
gcc-81f928ec8e8abf1f21c5ff008c39b5d6af78f6cb.tar.gz
gcc-81f928ec8e8abf1f21c5ff008c39b5d6af78f6cb.tar.bz2
libphobos: Fix executables segfault on mipsel architecture
The dynamic section on MIPS is read-only, but this was not properly handled in the runtime library. The segfault only occurred for programs that linked to the shared libphobos library. libphobos/ChangeLog: PR d/98806 * libdruntime/gcc/sections/elf_shared.d (MIPS_Any): Declare version for MIPS32 and MIPS64. (getDependencies): Adjust dlpi_addr on MIPS_Any.
Diffstat (limited to 'libphobos')
-rw-r--r--libphobos/libdruntime/gcc/sections/elf_shared.d4
1 files changed, 4 insertions, 0 deletions
diff --git a/libphobos/libdruntime/gcc/sections/elf_shared.d b/libphobos/libdruntime/gcc/sections/elf_shared.d
index 9050413..427759a 100644
--- a/libphobos/libdruntime/gcc/sections/elf_shared.d
+++ b/libphobos/libdruntime/gcc/sections/elf_shared.d
@@ -22,6 +22,8 @@
module gcc.sections.elf_shared;
+version (MIPS32) version = MIPS_Any;
+version (MIPS64) version = MIPS_Any;
version (RISCV32) version = RISCV_Any;
version (RISCV64) version = RISCV_Any;
version (S390) version = IBMZ_Any;
@@ -763,6 +765,8 @@ version (Shared)
// in glibc: #define DL_RO_DYN_SECTION 1
version (RISCV_Any)
strtab = cast(const(char)*)(info.dlpi_addr + dyn.d_un.d_ptr); // relocate
+ else version (MIPS_Any)
+ strtab = cast(const(char)*)(info.dlpi_addr + dyn.d_un.d_ptr); // relocate
else
strtab = cast(const(char)*)dyn.d_un.d_ptr;
}