diff options
Diffstat (limited to 'app-arch/lld/files/patches-0/0006-ELF-Writer-Fix-interp-phdr.patch')
| -rw-r--r-- | app-arch/lld/files/patches-0/0006-ELF-Writer-Fix-interp-phdr.patch | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/app-arch/lld/files/patches-0/0006-ELF-Writer-Fix-interp-phdr.patch b/app-arch/lld/files/patches-0/0006-ELF-Writer-Fix-interp-phdr.patch new file mode 100644 index 00000000..b1a628be --- /dev/null +++ b/app-arch/lld/files/patches-0/0006-ELF-Writer-Fix-interp-phdr.patch @@ -0,0 +1,40 @@ +From 80f91433c000f599baced23566270ac96a26ae9a Mon Sep 17 00:00:00 2001 +From: Michael Spencer <bigcheesegs@gmail.com> +Date: Wed, 13 Feb 2013 16:59:57 -0800 +Subject: [PATCH 06/13] [ELF][Writer] Fix interp phdr. + +--- + include/lld/ReaderWriter/ELFTargetInfo.h | 2 +- + lib/ReaderWriter/ELF/HeaderChunks.h | 3 ++- + 2 files changed, 3 insertions(+), 2 deletions(-) + +diff --git a/include/lld/ReaderWriter/ELFTargetInfo.h b/include/lld/ReaderWriter/ELFTargetInfo.h +index c2715fe..9362aac 100644 +--- a/include/lld/ReaderWriter/ELFTargetInfo.h ++++ b/include/lld/ReaderWriter/ELFTargetInfo.h +@@ -50,7 +50,7 @@ public: + } + + virtual StringRef getInterpreter() const { +- return "/lib/ld64.so.1"; ++ return "/lib64/ld-linux-x86-64.so.2"; + } + + /// \brief Does the output have dynamic sections. +diff --git a/lib/ReaderWriter/ELF/HeaderChunks.h b/lib/ReaderWriter/ELF/HeaderChunks.h +index 86f21e2..49fec92 100644 +--- a/lib/ReaderWriter/ELF/HeaderChunks.h ++++ b/lib/ReaderWriter/ELF/HeaderChunks.h +@@ -182,7 +182,8 @@ bool ProgramHeader<ELFT>::addSegment(Segment<ELFT> *segment) { + bool allocatedNew = false; + for (auto slice : segment->slices()) { + // If we have a TLS segment, emit a LOAD first. +- if (segment->segmentType() == llvm::ELF::PT_TLS) { ++ if (segment->segmentType() == llvm::ELF::PT_TLS || ++ segment->segmentType() == llvm::ELF::PT_DYNAMIC) { + auto phdr = allocateProgramHeader(); + if (phdr.second) + allocatedNew = true; +-- +1.8.1.2 + |
