PowerPC64 unifies into amd64-linux.elf-main.c

Also reconcile ppc32 and ppc64, especially *.S
	modified:   p_lx_elf.cpp
	modified:   stub/src/amd64-linux.elf-main.c
	modified:   stub/src/i386-linux.elf-main.c
	modified:   stub/src/powerpc-linux.elf-entry.S
	modified:   stub/src/powerpc64le-linux.elf-entry.S
	modified:   stub/src/powerpc64le-linux.elf-fold.S
	modified:   stub/src/powerpc64le-linux.elf-main.c
	modified:   ../.github/travis_testsuite_1.sh

	also corresponding *.h *.map *.dump
This commit is contained in:
John Reiser
2017-06-27 14:58:13 -07:00
parent a7a0876298
commit 9be86621bf
22 changed files with 1475 additions and 1786 deletions
-12
View File
@@ -576,8 +576,6 @@ void PackLinuxElf32::defineSymbols(Filter const *ft)
lsize = /*getLoaderSize()*/ 64 * 1024; // XXX: upper bound; avoid circularity
upx_uint32_t lo_va_stub = get_te32(&elfout.phdr[0].p_vaddr);
upx_uint32_t adrm;
unsigned lenm;
unsigned lenu;
len += (7&-lsize) + lsize;
upx_uint32_t my_page_size = 4096u;
upx_uint32_t my_page_mask = -my_page_size;
@@ -590,22 +588,12 @@ void PackLinuxElf32::defineSymbols(Filter const *ft)
set_te32(&elfout.phdr[0].p_paddr, lo_va_user);
lo_va_stub = lo_va_user;
adrm = getbrk(phdri, e_phnum) - lo_va_user;
lenm = my_page_size + len;
lenu = my_page_size + len;
}
else {
adrm = len;
lenm = my_page_size;
lenu = my_page_size + len;
}
adrm = my_page_mask & (~my_page_mask + adrm); // round up to page boundary
if (Elf32_Ehdr::EM_PPC == e_machine) {
linker->defineSymbol("LENU", lenu); // len for unmap
linker->defineSymbol("LENM", lenm); // len for map
linker->defineSymbol("ADRM", adrm); // offset from &Elf32_Ehdr
}
//linker->dumpSymbols(); // debug
}