From c61c2960d782c67566790b210163ff9c799f018a Mon Sep 17 00:00:00 2001
From: Conrad Ratschan <ratschance@gmail.com>
Date: Sat, 3 Oct 2020 20:17:24 -0500
Subject: [PATCH] Fix endianness issues for powerpc PIE

Previously when running `patchelf --set-rpath "/usr/sbin" my_bin` on a
PIE ppc32 binary that had no RPATH a few issues were encountered.

This commit fixes:

1. The PT_PHDR being sorted improperly due to the type being read in
   incorrect endianness

3. The interpreter being clobbered due to the replace sections routine
   reading sh_offset and sh_size in incorrect endianness

4. The PHDR segment having an incorrect virt and phys address due to
   reading the e_phoff in the incorrect endianness

This also fixes a read of the shdr.sh_type in writeReplacedSections but
this was not encountered during testing.

Fetch from: https://github.com/NixOS/patchelf/commit/884eccc4f061a3dbdbe63a4c73f1cc9bbf77fa7d

Backported to v0.9. Removed item 2 from the fix list as it is not
applicable to v0.9.

Signed-off-by: Conrad Ratschan <conrad.ratschan@rockwellcollins.com>
---
 src/patchelf.cc | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/patchelf.cc b/src/patchelf.cc
index fa2945e..e60b17c 100644
--- a/src/patchelf.cc
+++ b/src/patchelf.cc
@@ -173,8 +173,8 @@ private:
         ElfFile * elfFile;
         bool operator ()(const Elf_Phdr & x, const Elf_Phdr & y)
         {
-            if (x.p_type == PT_PHDR) return true;
-            if (y.p_type == PT_PHDR) return false;
+            if (elfFile->rdi(x.p_type) == PT_PHDR) return true;
+            if (elfFile->rdi(y.p_type) == PT_PHDR) return false;
             return elfFile->rdi(x.p_paddr) < elfFile->rdi(y.p_paddr);
         }
     };
@@ -586,7 +586,7 @@ void ElfFile<ElfFileParamNames>::writeReplacedSections(Elf_Off & curOff,
     {
         string sectionName = i->first;
         Elf_Shdr & shdr = findSection(sectionName);
-        if (shdr.sh_type != SHT_NOBITS)
+        if (rdi(shdr.sh_type) != SHT_NOBITS)
             memset(contents + rdi(shdr.sh_offset), 'X', rdi(shdr.sh_size));
     }
 
@@ -667,9 +667,9 @@ void ElfFile<ElfFileParamNames>::rewriteSectionsLibrary()
     /* Some sections may already be replaced so account for that */
     unsigned int i = 1;
     Elf_Addr pht_size = sizeof(Elf_Ehdr) + (phdrs.size() + 1)*sizeof(Elf_Phdr);
-    while( shdrs[i].sh_offset <= pht_size && i < rdi(hdr->e_shnum) ) {
+    while( rdi(shdrs[i].sh_offset) <= pht_size && i < rdi(hdr->e_shnum) ) {
         if (not haveReplacedSection(getSectionName(shdrs[i])))
-            replaceSection(getSectionName(shdrs[i]), shdrs[i].sh_size);
+            replaceSection(getSectionName(shdrs[i]), rdi(shdrs[i].sh_size));
         i++;
     }
 
@@ -723,7 +723,7 @@ void ElfFile<ElfFileParamNames>::rewriteSectionsLibrary()
     assert(curOff == startOffset + neededSpace);
 
     /* Write out the updated program and section headers */
-    rewriteHeaders(hdr->e_phoff);
+    rewriteHeaders(rdi(hdr->e_phoff));
 }
 
 
-- 
2.17.1

