diff options
author | Iain Buclaw <ibuclaw@gdcproject.org> | 2021-01-24 00:20:25 +0100 |
---|---|---|
committer | Iain Buclaw <ibuclaw@gdcproject.org> | 2021-01-24 00:20:25 +0100 |
commit | 81f928ec8e8abf1f21c5ff008c39b5d6af78f6cb (patch) | |
tree | aa54c488bb8d7665542164f4529b12897181bb7b /libphobos | |
parent | 7e0f147a29f42d6149585573650bd4827f3b2b93 (diff) | |
download | gcc-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.d | 4 |
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; } |