ELF2: FIx powerpc64* lzma

also follow-ons for https://github.com/upx/upx/issues/834
	modified:   ../misc/testsuite/upx_testsuite_1-expected_sha256sums.sh
	modified:   p_lx_elf.cpp
	modified:   stub/Makefile
	modified:   stub/src/amd64-linux.elf-main2.c
	modified:   stub/src/arch/powerpc/64le/lzma_d-common.S
	modified:   stub/src/arch/powerpc/64le/lzma_d.S
	modified:   stub/src/arch/powerpc/64le/ppc_regs.h
	modified:   stub/src/powerpc64-expand.S
	modified:   stub/src/powerpc64-linux.elf-fold.S
           plus generated *.h *.map *.dump
This commit is contained in:
John Reiser
2024-07-02 11:15:52 -07:00
parent a9b7a0cb27
commit c8a0540fd2
15 changed files with 3183 additions and 3133 deletions
+23 -19
View File
@@ -8333,39 +8333,43 @@ Elf32_Sym const *PackLinuxElf32::elf_lookup(char const *name) const
throwCantPack("bad gnu_shift %#x", gnu_shift);
}
if ((file_size + file_image) <= (void const *)hasharr) {
char msg[80]; snprintf(msg, sizeof(msg),
"bad n_bucket %#x\n", n_bucket);
throwCantPack(msg);
throwCantPack("bad n_bucket %#x\n", n_bucket);
}
if (!n_bitmask
|| (unsigned)(file_size - ((char const *)bitmask - (char const *)(void const *)file_image))
<= sizeof(unsigned)*n_bitmask ) {
throwCantPack("bad n_bitmask %#x\n", n_bitmask);
}
if (n_bucket) {
if (n_bucket) { // -rust-musl can have "empty" hashtab
unsigned const h = gnu_hash(name);
unsigned const hbit1 = 037& h;
unsigned const hbit2 = 037& (h>>gnu_shift);
unsigned const w = get_te32(&bitmask[(n_bitmask -1) & (h>>5)]);
if (1& (w>>hbit1) & (w>>hbit2)) {
unsigned bucket = get_te32(&buckets[h % n_bucket]);
if (n_bucket <= bucket) {
throwCantPack("bad DT_GNU_HASH n_bucket{%#x} <= buckets[%d]{%#x}\n",
n_bucket, h % n_bucket, bucket);
unsigned const hhead = get_te32(&buckets[h % n_bucket]);
if (n_bucket <= (hhead - symbias)) {
throwCantPack("bad DT_GNU_HASH n_bucket{%#x} <= buckets[%d]{%#x} - symbias{%#x}\n",
n_bucket, h % n_bucket, hhead, symbias);
}
if (0!=bucket) {
Elf32_Sym const *dsp = &dynsym[bucket];
unsigned const *hp = &hasharr[bucket - symbias];
do if (0==((h ^ get_te32(hp))>>1)) {
unsigned st_name = get_te32(&dsp->st_name);
char const *const p = get_str_name(st_name, (unsigned)-1);
if (0==strcmp(name, p)) {
return dsp;
if (hhead) {
Elf32_Sym const *dsp = &dynsym[hhead];
unsigned const *hp = &hasharr[hhead - symbias];
unsigned k;
do {
if (gashend <= hp) {
throwCantPack("bad DT_GNU_HASH[%#x] head=%u",
(unsigned)(hp - hasharr), hhead);
}
} while (++dsp,
((char const *)hp < (char const *)(file_size + file_image))
&& 0==(1u& get_te32(hp++)));
k = get_te32(hp);
if (0==((h ^ k)>>1)) {
unsigned const st_name = get_te32(&dsp->st_name);
char const *const p = get_str_name(st_name, (unsigned)-1);
if (0==strcmp(name, p)) {
return dsp;
}
}
} while (++dsp, ++hp, 0==(1u& k));
}
}
}
+3 -3
View File
@@ -1688,7 +1688,7 @@ tmp/powerpc64-darwin.macho-main.o : $(srcdir)/src/$$T.c
powerpc64le-linux.elf%.h : tc_list = powerpc64le-linux.elf default
powerpc64le-linux.elf%.h : tc_bfdname = elf64-powerpcle
tc.powerpc64le-linux.elf.gcc = powerpc64-linux-gcc-4.9.2 -m64 -mlittle-endian -DBIG_ENDIAN=0 -nostdinc -MMD -MT $@
tc.powerpc64le-linux.elf.gcc = powerpc64-linux-gcc-4.9.2 -m64 -mlittle-endian -DBIG_ENDIAN=0 -DDAISY_CHAIN=1 -nostdinc -MMD -MT $@
tc.powerpc64le-linux.elf.gcc += -fno-exceptions -fno-asynchronous-unwind-tables -fno-stack-protector
tc.powerpc64le-linux.elf.gcc += -Wall -W -Wcast-align -Wcast-qual -Wstrict-prototypes -Wwrite-strings -Werror
@@ -1746,7 +1746,7 @@ tmp/powerpc64le-linux.elf-main2.s: $(srcdir)/src/$$T.c $(srcdir)/src/amd64-linux
powerpc64-linux.elf%.h : tc_list = powerpc64-linux.elf default
powerpc64-linux.elf%.h : tc_bfdname = elf64-powerpc
tc.powerpc64-linux.elf.gcc = powerpc64-linux-gcc-4.9.2 -m64 -mbig-endian -DBIG_ENDIAN=1 -DUSE_TOC=1 -nostdinc -MMD -MT $@
tc.powerpc64-linux.elf.gcc = powerpc64-linux-gcc-4.9.2 -m64 -mbig-endian -DBIG_ENDIAN=1 -DUSE_TOC=1 -DDAISY_CHAIN=1 -nostdinc -MMD -MT $@
tc.powerpc64-linux.elf.gcc += -fno-exceptions -fno-asynchronous-unwind-tables -fno-stack-protector
tc.powerpc64-linux.elf.gcc += -mno-longcall -mno-toc
tc.powerpc64-linux.elf.gcc += -Wall -W -Wcast-align -Wcast-qual -Wstrict-prototypes -Wwrite-strings -Werror
@@ -1776,7 +1776,7 @@ powerpc64-linux.elf-fold.h : $(srcdir)/src/$$T.lds \
#auxv_up:
# .quad .L7L.auxv_up,.TOC.@tocbase
# .previous
$(call tc,gcc) -E -DBIG_ENDIAN=1 -DUSE_TOC=1 \
$(call tc,gcc) -E -DBIG_ENDIAN=1 -DUSE_TOC=1 -DDAISY_CHAIN=1 \
tmp/powerpc64-linux.elf-fold-2.S \
| > tmp/powerpc64-linux.elf-fold-3.S \
sed -e '/\.section\s*"\.toc","aw"/d' \
+1231 -1215
View File
File diff suppressed because it is too large Load Diff
+1224 -1208
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
-2
View File
@@ -119,8 +119,6 @@ extern void my_bkpt(void *, ...);
static int dprintf(char const *fmt, ...); // forward
#endif /*}*/
extern void my_bkpt(void *, ...);
/*************************************************************************
// configuration section
**************************************************************************/
+33 -21
View File
@@ -29,9 +29,9 @@
#include "ppc_regs.h"
// http://refspecs.linuxfoundation.org/ELF/ppc64/PPC-elf64abi.html#STACK
SZ_LINK= 6*8 // (sp,cr,lr, xx,yy,zz) save area per calling convention
SZ_PSAV= 8*8 // for spilling a0-a7 if necessary
retaddr = 2*8 // lr === pc
SZ_LINK= 6*NBPW // (sp,cr,lr, xx,yy,zz) save area per calling convention
SZ_PSAV= 8*NBPW // for spilling a0-a7 if necessary
retaddr = 2*NBPW // lr === pc
#define section .section
@@ -56,8 +56,7 @@ retaddr = 2*8 // lr === pc
#define M_LZMA 14
cmplwi cr0,meth,M_LZMA
bne cr0,not_lzma
stdu sp,-(SZ_LINK+SZ_PSAV)(sp) // FR_10 defend against callers who omit the linkage area
mflr r0
mr a7,sp // sp of caller
//Prepare for call to:
//LzmaDecode( // from lzmaSDK/C/7zip/Compress/LZMA_C/LzmaDecode.h
@@ -73,7 +72,6 @@ retaddr = 2*8 // lr === pc
la a1,2(src) // inp
lbz t2,0(src) // first byte, replaces LzmaDecodeProperties()
std r0,retaddr(sp) // save return address in caller's frame
rldicl t1,t2,64-3,3 // t1= (t2>>3)==(lit_context-bits + lit_pos_bits)
clrldi t2,t2,64-3 // t2= (7& t2)==pos_bits
@@ -83,46 +81,60 @@ retaddr = 2*8 // lr === pc
li a0,-2*LZMA_LIT_SIZE
sld a0,a0,t1 // -2*LZMA_LIT_SIZE << (lit_context_bits + lit_pos_bits)
addi a0,a0,-6*8 - 2*LZMA_BASE_SIZE
addi a0,a0,-6*NBPW - 2*LZMA_BASE_SIZE
// alloca{sp,ra,orig_dst,&outSizeProcessed,slot(inSizeProcessed),*_bits, CLzmaDecoderState}
mr a3,sp
add sp,sp,a0 // FR_11 allocate
clrrdi sp,sp,6 // (1<<6) byte align (round down)
li r0,0
mr a0,a3 // old sp
mr a0,a7 // old sp
stw r0,0(a6) // outSizeProcessed= 0; XXX 32 BITS
1:
stdu r0,-8(a0) // clear CLzmaDecoderState on stack
cmpld cr0,sp,a0 // compare logical ==> compare unsigned
blt cr0,1b
std a3,0(sp) // FR_11 chain
lbz r0,-1(a1) // second byte, replaces LzmaDecodeProperties()
la a3,4*8 + BIG_ENDIAN*4(sp) // &inSizeProcessed XXX 32 BITS
la a0,5*8 (sp) // &CLzmaDecoderState
la a3,4*NBPW + BIG_ENDIAN*4(sp) // &inSizeProcessed XXX 32 BITS
la a0,5*NBPW (sp) // &CLzmaDecoderState
stb t2,2(a0) // pos_bits
std a4,2*8(sp) // outp
std a6,3*8(sp) // &outSizeProcessed
std a4,2*NBPW(sp) // outp
std a6,3*NBPW(sp) // &outSizeProcessed
rldicl t1,r0,64-4,4 // t1= (r0>>4)==lit_pos_bits
clrldi r0,r0,64-4 // r0= (0xf& r0)==lit_context_bits
stb t1,1(a0) // lit_pos_bits
stb r0,0(a0) // lit_context_bits
stdu sp,-(SZ_LINK+SZ_PSAV)(sp) // FR_12 defend against callers who omit the linkage area
stdu a7,-(SZ_LINK+SZ_PSAV)(sp) // FR_12 defend against callers who omit the linkage area
mflr r0
std r0,retaddr(sp) // save return address in caller's frame
bl lzma_go // invoke LzmaDecode
// LZMA_DEC10 or LZMA_DEC20 returns here
ld r0,retaddr(sp) // in f_expand
ld sp,0(sp) // FR_12 de-allocate CLzmaDecoderState and bits
mtlr r0
blr // normal return from decompress to f_expand
lzma_go: // fall through into LzmaDecode: use LZMA_DEC10 or LZMA_DEC20 as subroutine
// LZMA_DEC30 is not used?
section LZMA_DEC30 // Out: a0= retval; a2= &hi stored; a4= &lo stored; lr= retaddr
la sp,SZ_LINK+SZ_PSAV(sp) // FR_12 un-defend
ld a2,3*8(sp) // &outSizeProcessed
ld a4,2*8(sp) // &lowest byte stored
/*1*/ la sp,SZ_LINK+SZ_PSAV(sp) // FR_12 un-defend
ld a2,3*NBPW(sp) // &outSizeProcessed
ld a4,2*NBPW(sp) // &lowest byte stored
lwz a2,0(a2) // outSizeProcessed XXX 32 BITS
ld sp,0(sp) // FR_11 de-alloc CLzmaDecoderState, incl. array of probabilities
/*2*/ ld sp,0(sp) // FR_11 de-alloc CLzmaDecoderState, incl. array of probabilities
add a2,a2,a4 // &next byte to store
ld r0,retaddr(sp)
addi a2,a2,-1 // &highest byte stored
ld sp,0(sp) // FR_10 un-allocate and un-chain
mtlr r0
ld sp,0(sp) // FR_10 un-allocate and un-chain
not_lzma:
#if !defined(WINDOWS_BACK) && defined(DAISY_CHAIN) //{ subroutine return
blr // return to *-expand.S: f_expand ==> decompress
#endif
not_lzma: // fall into daisy chain
// vi:ts=8:et
+1 -5
View File
@@ -2,16 +2,12 @@
// can contain endian-dependent code in the "64" and "64le" directories,
// but otherwise use lzma_d-common.S
#include "lzma_d-common.S"
#include "../64le/lzma_d-common.S"
section LZMA_DEC10
#include "lzma_d_cs.S"
section LZMA_DEC20
bl lzma_dec20
b eof_dec20
lzma_dec20:
#include "lzma_d_cf.S"
eof_dec20:
// vi:ts=8:et
+4 -2
View File
@@ -34,11 +34,13 @@ r29= 29
r30= 30
r31= 31
NBPW= 8 // Number of Bytes Per Word
/* Stack pointer */
sp= 1
SZ_FRAME= 6*8 + 8*8 // (sp,cr,lr, tmp.xlc,tmp.ld,save.toc) + spill area for a0-a7
SZ_FRAME= 6*NBPW + 8*NBPW // (sp,cr,lr, tmp.xlc,tmp.ld,save.toc) + spill area for a0-a7
F_TOC= SZ_FRAME // where is the fake TOC
SZ_FRAME= SZ_FRAME + 2*2*8 // space for 2 [short] TOC entries
SZ_FRAME= SZ_FRAME + 2*2*NBPW // space for 2 [short] TOC entries
// http://refspecs.linuxfoundation.org/ELF/ppc64/PPC-elf64abi.html#REG
// r0 Volatile register used in function prologs
+5 -5
View File
@@ -59,7 +59,7 @@ f_expand: .globl f_expand // f_expand(b_info *, dst, &dstlen)
#define fx_dst a1
#define fx_dstlen a2
mflr r0
PUSH4 fx_src,fx_dst,fx_dstlen,r0 // params to unfilter and sync_cache
PUSH4 fx_src,fx_dst,fx_dstlen,r0 // MATCH_80 params to unfilter and sync_cache
// Input to de-compressor:
#define xsrc a0
@@ -75,16 +75,16 @@ f_expand: .globl f_expand // f_expand(b_info *, dst, &dstlen)
call decompress
movr a3,a0 // save retval
POP3 a2,a0,a1 // fx_src,fx_dst,fx_dstlen; keep f_expand.retaddr
POP3 a2,a0,a1 // MATCH_80 fx_src,fx_dst,fx_dstlen; keep f_expand.retaddr
ld a1,0(a1) // actual length used by decompressor
PUSH3 a0,a1,a3 // params for sync_cache
PUSH3 a0,a1,a3 // MATCH_81 params for sync_cache
lbz a3,b_ftid(a2)
lbz a2,b_cto8(a2)
cmpi cr0,a3,0; beq no_unf
call unfilter
no_unf:
POP2 a0,a1 // dst, len
POP2 a0,a1 // MATCH_81 dst, len
add a1,a1,a0 // lo, hi
CACHELINE=32
@@ -98,7 +98,7 @@ cfl_nrv:
sync // wait for all memory operations to finish
isync // discard prefetched instructions (if any)
cfl_ret:
POP2 a0,r0 // retval, retaddr from f_expand
POP2 a0,r0 // MATCH_80, MATCH_81 retval, retaddr from f_expand
mtlr r0
ret
// .unreq fx_src
+26 -21
View File
@@ -121,6 +121,27 @@ get_page_mask: .globl get_page_mask
ld r3,PAGE_MASK - 0b(r3)
bctr
Pprotect: .globl Pprotect
mflr r0; bl 0f; 0: mflr r6; mtlr r0; ld r0,PAGE_MASK - 0b(r6)
andc r0,a0,r0 // offset within page
sub a0,a0,r0
add a1,a1,r0
b mprotect
Pmap: .globl Pmap
mflr r0; bl 0f; 0: mflr r6; mtlr r0; ld r0,PAGE_MASK - 0b(r6)
andc r0,a0,r0 // offset within page
sub a0,a0,r0
add a1,a1,r0
b mmap
Punmap: .globl Punmap
mflr r0; bl 0f; 0: mflr r6; mtlr r0; ld r0,PAGE_MASK - 0b(r6)
andc r0,a0,r0 // offset within page
sub a0,a0,r0
add a1,a1,r0
b munmap
fold_begin:
//// teq r0,r0 // debugging
mtctr r0 // # words of stuff FIXME
@@ -264,8 +285,7 @@ sz_auxv= 2*NBPW
ld r0,-NBPW(av_hi) // &hatch
mtctr r0
ld r0,0(av_hi) // entry address
std r0,SZ_FRAME + (-1+ 31)*NBPW(sp) // hatch: "movr r12,r31" for musl 1.1.16
std r_exp,SZ_FRAME + (-1+ 31)*NBPW(sp) // hatch: "movr r12,r31" for musl 1.1.16
mr a0,r_ADRU
mr a1,r_LENU
@@ -310,6 +330,7 @@ sz_auxv= 2*NBPW
bctr // goto escape hatch
section SYSCALLS
li r0,0x999; teq r0,r0 // detect fall-through into this seciion
SYS_exit= 1
SYS_fork= 2
@@ -326,11 +347,6 @@ SYS_ftruncate= 93
SYS_mprotect= 125
SYS_memfd_create= 360
Pmap: .globl Pmap
li r0, 0xfff // ~PAGE_MASK (FIXME: probably use 4th arg)
and r0,a0,r0
sub a0,a0,r0
add a1,a1,r0
mmap: .globl mmap
clrldi a4,a4,32 // truncate fd to 32 bits; kernel is picky?
li 0,SYS_mmap
@@ -341,21 +357,10 @@ sysgo:
no_fail:
ret
Pprotect: .globl Pprotect
mprotect: .globl mprotect
li r0, 0xfff // ~PAGE_MASK (FIXME: probably use 4th arg)
and r0,a0,r0
sub a0,a0,r0
add a1,a1,r0
li r0,SYS_mprotect; 5: b 5f
Punmap: .globl Punmap
li r0, 0xfff // ~PAGE_MASK (FIXME: probably use 4th arg)
and r0,a0,r0
sub a0,a0,r0
add a1,a1,r0
munmap: .globl munmap
li r0,SYS_munmap; 5: b sysgo
li 0,SYS_munmap; 5: b 5f
mprotect: .globl mprotect
li 0,SYS_mprotect; 5: b 5f
memfd_create: .globl memfd_create
li r0,SYS_memfd_create; 5: b 5f
ftruncate: .globl ftruncate
+28 -28
View File
@@ -8,14 +8,17 @@ Linker script and memory map
TARGET(elf64-powerpc)
.text 0x0000000000000000 0xd6c
.text 0x0000000000000000 0xdd4
*(.text)
.text 0x0000000000000000 0xd6c tmp/powerpc64-linux.elf-fold.o
.text 0x0000000000000000 0xdd4 tmp/powerpc64-linux.elf-fold.o
0x0000000000000014 get_page_mask
0x0000000000000b48 underlay
0x0000000000000bd4 upx_main
0x000000000000002c Pprotect
0x0000000000000050 Pmap
0x0000000000000074 Punmap
0x0000000000000bb0 underlay
0x0000000000000c3c upx_main
*(.data)
.data 0x0000000000000d6c 0x0 tmp/powerpc64-linux.elf-fold.o
.data 0x0000000000000dd4 0x0 tmp/powerpc64-linux.elf-fold.o
.data
LOAD tmp/powerpc64-linux.elf-fold.o
@@ -24,26 +27,23 @@ OUTPUT(tmp/powerpc64-linux.elf-fold.bin elf64-powerpc)
.bss 0x0000000000000000 0x0
.bss 0x0000000000000000 0x0 tmp/powerpc64-linux.elf-fold.o
SYSCALLS 0x0000000000000000 0x11c
SYSCALLS 0x0000000000000000 0x11c tmp/powerpc64-linux.elf-fold.o
0x0000000000000000 Pmap
0x0000000000000010 mmap
0x0000000000000028 Pprotect
SYSCALLS 0x0000000000000000 0xf4
SYSCALLS 0x0000000000000000 0xf4 tmp/powerpc64-linux.elf-fold.o
0x0000000000000008 mmap
0x0000000000000020 munmap
0x0000000000000028 mprotect
0x0000000000000040 Punmap
0x0000000000000050 munmap
0x0000000000000058 memfd_create
0x0000000000000060 ftruncate
0x0000000000000068 exit
0x0000000000000070 brk
0x0000000000000078 readlink
0x0000000000000080 write
0x0000000000000088 read
0x0000000000000090 open
0x0000000000000098 close
0x00000000000000a0 upxfd_create
0x00000000000000f8 memcpy
0x0000000000000114 my_bkpt
0x0000000000000030 memfd_create
0x0000000000000038 ftruncate
0x0000000000000040 exit
0x0000000000000048 brk
0x0000000000000050 readlink
0x0000000000000058 write
0x0000000000000060 read
0x0000000000000068 open
0x0000000000000070 close
0x0000000000000078 upxfd_create
0x00000000000000d0 memcpy
0x00000000000000ec my_bkpt
.comment 0x0000000000000000 0x33
.comment 0x0000000000000000 0x33 tmp/powerpc64-linux.elf-fold.o
@@ -70,11 +70,11 @@ NRV2D 0x0000000000000000 0x13c
NRV2B 0x0000000000000000 0xf8
NRV2B 0x0000000000000000 0xf8 tmp/powerpc64-linux.elf-fold.o
LZMA_ELF00 0x0000000000000000 0x94
LZMA_ELF00 0x0000000000000000 0x94 tmp/powerpc64-linux.elf-fold.o
LZMA_ELF00 0x0000000000000000 0xa0
LZMA_ELF00 0x0000000000000000 0xa0 tmp/powerpc64-linux.elf-fold.o
LZMA_DEC30 0x0000000000000000 0x28
LZMA_DEC30 0x0000000000000000 0x28 tmp/powerpc64-linux.elf-fold.o
LZMA_DEC30 0x0000000000000000 0x2c
LZMA_DEC30 0x0000000000000000 0x2c tmp/powerpc64-linux.elf-fold.o
LZMA_DEC10 0x0000000000000000 0xbc0
LZMA_DEC10 0x0000000000000000 0xbc0 tmp/powerpc64-linux.elf-fold.o
+30 -30
View File
@@ -8,14 +8,17 @@ Linker script and memory map
TARGET(elf64-powerpcle)
.text 0x0000000000000000 0xd94
.text 0x0000000000000000 0xdfc
*(.text)
.text 0x0000000000000000 0xd94 tmp/powerpc64le-linux.elf-fold.o
.text 0x0000000000000000 0xdfc tmp/powerpc64le-linux.elf-fold.o
0x0000000000000014 get_page_mask
0x0000000000000b70 underlay
0x0000000000000bfc upx_main
0x000000000000002c Pprotect
0x0000000000000050 Pmap
0x0000000000000074 Punmap
0x0000000000000bd8 underlay
0x0000000000000c64 upx_main
*(.data)
.data 0x0000000000000d94 0x0 tmp/powerpc64le-linux.elf-fold.o
.data 0x0000000000000dfc 0x0 tmp/powerpc64le-linux.elf-fold.o
.data
LOAD tmp/powerpc64le-linux.elf-fold.o
@@ -24,26 +27,23 @@ OUTPUT(tmp/powerpc64le-linux.elf-fold.bin elf64-powerpcle)
.bss 0x0000000000000000 0x0
.bss 0x0000000000000000 0x0 tmp/powerpc64le-linux.elf-fold.o
SYSCALLS 0x0000000000000000 0x11c
SYSCALLS 0x0000000000000000 0x11c tmp/powerpc64le-linux.elf-fold.o
0x0000000000000000 Pmap
0x0000000000000010 mmap
0x0000000000000028 Pprotect
SYSCALLS 0x0000000000000000 0xf4
SYSCALLS 0x0000000000000000 0xf4 tmp/powerpc64le-linux.elf-fold.o
0x0000000000000008 mmap
0x0000000000000020 munmap
0x0000000000000028 mprotect
0x0000000000000040 Punmap
0x0000000000000050 munmap
0x0000000000000058 memfd_create
0x0000000000000060 ftruncate
0x0000000000000068 exit
0x0000000000000070 brk
0x0000000000000078 readlink
0x0000000000000080 write
0x0000000000000088 read
0x0000000000000090 open
0x0000000000000098 close
0x00000000000000a0 upxfd_create
0x00000000000000f8 memcpy
0x0000000000000114 my_bkpt
0x0000000000000030 memfd_create
0x0000000000000038 ftruncate
0x0000000000000040 exit
0x0000000000000048 brk
0x0000000000000050 readlink
0x0000000000000058 write
0x0000000000000060 read
0x0000000000000068 open
0x0000000000000070 close
0x0000000000000078 upxfd_create
0x00000000000000d0 memcpy
0x00000000000000ec my_bkpt
.comment 0x0000000000000000 0x33
.comment 0x0000000000000000 0x33 tmp/powerpc64le-linux.elf-fold.o
@@ -70,14 +70,14 @@ NRV2D 0x0000000000000000 0x13c
NRV2B 0x0000000000000000 0xf8
NRV2B 0x0000000000000000 0xf8 tmp/powerpc64le-linux.elf-fold.o
LZMA_ELF00 0x0000000000000000 0x94
LZMA_ELF00 0x0000000000000000 0x94 tmp/powerpc64le-linux.elf-fold.o
LZMA_ELF00 0x0000000000000000 0xa0
LZMA_ELF00 0x0000000000000000 0xa0 tmp/powerpc64le-linux.elf-fold.o
LZMA_DEC30 0x0000000000000000 0x28
LZMA_DEC30 0x0000000000000000 0x28 tmp/powerpc64le-linux.elf-fold.o
LZMA_DEC30 0x0000000000000000 0x2c
LZMA_DEC30 0x0000000000000000 0x2c tmp/powerpc64le-linux.elf-fold.o
LZMA_DEC10 0x0000000000000000 0xbb8
LZMA_DEC10 0x0000000000000000 0xbb8 tmp/powerpc64le-linux.elf-fold.o
LZMA_DEC20 0x0000000000000000 0xc74
LZMA_DEC20 0x0000000000000000 0xc74 tmp/powerpc64le-linux.elf-fold.o
LZMA_DEC20 0x0000000000000000 0xc6c
LZMA_DEC20 0x0000000000000000 0xc6c tmp/powerpc64le-linux.elf-fold.o
+6 -6
View File
@@ -12,11 +12,11 @@ Idx Name Size VMA LMA File off Algn
7 NRV_TAIL 01c 0 0 043c 2**0 CONTENTS
8 CFLUSH 024 0 0 0458 2**0 CONTENTS
9 LZMA 0 0 0 047c 2**0 CONTENTS
10 LZMA_ELF00 094 0 0 047c 2**0 CONTENTS
11 LZMA_DEC30 028 0 0 0510 2**0 CONTENTS
12 LZMA_DEC10 0bb8 0 0 0538 2**0 CONTENTS
13 LZMA_DEC20 0c74 0 0 010f0 2**0 CONTENTS
14 UPX1HEAD 020 0 0 01d64 2**0 CONTENTS
10 LZMA_ELF00 0a0 0 0 047c 2**0 CONTENTS
11 LZMA_DEC30 02c 0 0 051c 2**0 CONTENTS
12 LZMA_DEC10 0bb8 0 0 0548 2**0 CONTENTS
13 LZMA_DEC20 0c6c 0 0 01100 2**0 CONTENTS
14 UPX1HEAD 020 0 0 01d6c 2**0 CONTENTS
SYMBOL TABLE:
0000000000000000 l d LINUX020 0 LINUX020
0000000000000000 l d LINUX030 0 LINUX030
@@ -60,4 +60,4 @@ OFFSET TYPE VALUE
RELOCATION RECORDS FOR [LZMA_ELF00]:
OFFSET TYPE VALUE
0000000000000004 R_PPC64_REL14 LZMA_DEC30+0x0000000000000028
0000000000000004 R_PPC64_REL14 LZMA_DEC30+0x000000000000002c