Elf64_Rela for shlib DT_INIT_ARRAY

Also allow PT_PHDR in shlibs.
Also page align lo end of mmap, like mprotect.
        https://github.com/upx/upx/issues/664
	modified:   p_lx_elf.cpp
	modified:   stub/src/amd64-linux.elf-so_main.c
	modified:   stub/src/i386-linux.elf-so_main.c

	modified:   stub/src/amd64-linux.elf-so_fold.S
	modified:   stub/src/arm.v4a-linux.elf-fold.S
	modified:   stub/src/arm.v4a-linux.elf-so_fold.S
	modified:   stub/src/arm64-linux.elf-fold.S
	modified:   stub/src/arm64-linux.elf-so_fold.S
	modified:   stub/src/i386-linux.elf-so_fold.S

	modified:   stub/amd64-linux.elf-so_fold.h
	modified:   stub/arm.v4a-linux.elf-fold.h
	modified:   stub/arm.v4a-linux.elf-so_fold.h
	modified:   stub/arm.v5a-linux.elf-fold.h
	modified:   stub/arm.v5a-linux.elf-so_fold.h
	modified:   stub/arm64-linux.elf-fold.h
	modified:   stub/arm64-linux.elf-so_fold.h
	modified:   stub/armeb.v4a-linux.elf-fold.h
	modified:   stub/i386-linux.elf-so_fold.h

	modified:   stub/tmp/amd64-linux.elf-so_fold.bin.dump
	modified:   stub/tmp/arm.v4a-linux.elf-fold.map
	modified:   stub/tmp/arm.v5a-linux.elf-fold.map
	modified:   stub/tmp/arm64-linux.elf-fold.map
	modified:   stub/tmp/armeb.v4a-linux.elf-fold.map

	modified:   stub/src/arch/mips/r3000/macros.ash
	modified:   ../.github/travis_testsuite_1-expected_sha256sums.sh
This commit is contained in:
John Reiser
2023-04-11 11:00:48 -07:00
parent 42902dabac
commit 7b2faf2016
25 changed files with 6465 additions and 6414 deletions
+27 -27
View File
@@ -2,19 +2,19 @@ file format elf64-x86-64
Sections:
Idx Name Size VMA LMA File off Algn Flags
0 SO_MAIN 05d8 0 0 040 2**4 CONTENTS
1 EXP_HEAD 0dc 0 0 0618 2**0 CONTENTS
2 NRV2E 0e5 0 0 06f4 2**0 CONTENTS
3 NRV2D 0d7 0 0 07d9 2**0 CONTENTS
4 NRV2B 0c1 0 0 08b0 2**0 CONTENTS
5 SO_HEAD 01b 0 0 0971 2**0 CONTENTS
6 ptr_NEXT 0 0 0 098c 2**0 CONTENTS
7 SO_TAIL 071 0 0 098c 2**0 CONTENTS
8 LZMA_ELF00 064 0 0 09fd 2**0 CONTENTS
9 LZMA_DEC10 09f7 0 0 0a61 2**0 CONTENTS
10 LZMA_DEC20 09f7 0 0 01458 2**0 CONTENTS
11 LZMA_DEC30 018 0 0 01e4f 2**0 CONTENTS
12 EXP_TAIL 0e 0 0 01e67 2**0 CONTENTS
0 SO_MAIN 05f0 0 0 040 2**4 CONTENTS
1 EXP_HEAD 0dc 0 0 0630 2**0 CONTENTS
2 NRV2E 0e5 0 0 070c 2**0 CONTENTS
3 NRV2D 0d7 0 0 07f1 2**0 CONTENTS
4 NRV2B 0c1 0 0 08c8 2**0 CONTENTS
5 SO_HEAD 01b 0 0 0989 2**0 CONTENTS
6 ptr_NEXT 0 0 0 09a4 2**0 CONTENTS
7 SO_TAIL 081 0 0 09a4 2**0 CONTENTS
8 LZMA_ELF00 064 0 0 0a25 2**0 CONTENTS
9 LZMA_DEC10 09f7 0 0 0a89 2**0 CONTENTS
10 LZMA_DEC20 09f7 0 0 01480 2**0 CONTENTS
11 LZMA_DEC30 018 0 0 01e77 2**0 CONTENTS
12 EXP_TAIL 0e 0 0 01e8f 2**0 CONTENTS
SYMBOL TABLE:
0000000000000000 l d EXP_HEAD 0 EXP_HEAD
0000000000000000 l d LZMA_DEC30 0 LZMA_DEC30
@@ -30,21 +30,21 @@ SYMBOL TABLE:
0000000000000000 l d LZMA_DEC10 0 LZMA_DEC10
0000000000000000 l d LZMA_DEC20 0 LZMA_DEC20
0000000000000000 g EXP_HEAD 0 f_expand
000000000000005a g SO_TAIL 0 munmap
000000000000006a g SO_TAIL 0 munmap
000000000000001c g SO_TAIL 0 memcpy
0000000000000031 g SO_TAIL 0 O_BINFO
0000000000000031 g SO_TAIL 0 mmap
0000000000000000 g F SO_TAIL 0 eof
0000000000000052 g SO_TAIL 0 write
0000000000000056 g SO_TAIL 0 read
0000000000000062 g SO_TAIL 0 write
0000000000000066 g SO_TAIL 0 read
0000000000000013 g SO_TAIL 0 memset
0000000000000011 g SO_TAIL 0 my_bkpt
000000000000005e g SO_TAIL 0 Pprotect
0000000000000043 g SO_TAIL 0 exit
000000000000004b g SO_TAIL 0 openat
000000000000005e g SO_TAIL 0 mprotect
0000000000000047 g SO_TAIL 0 close
0000000000000368 g F SO_MAIN 0270 upx_so_main
000000000000006e g SO_TAIL 0 Pprotect
0000000000000053 g SO_TAIL 0 exit
000000000000005b g SO_TAIL 0 openat
000000000000006e g SO_TAIL 0 mprotect
0000000000000057 g SO_TAIL 0 close
0000000000000368 g F SO_MAIN 0288 upx_so_main
RELOCATION RECORDS FOR [SO_MAIN]:
OFFSET TYPE VALUE
@@ -60,11 +60,11 @@ OFFSET TYPE VALUE
000000000000030d R_X86_64_PLT32 memcpy+0xfffffffffffffffc
000000000000032e R_X86_64_PLT32 mmap+0xfffffffffffffffc
000000000000033c R_X86_64_PLT32 memcpy+0xfffffffffffffffc
00000000000003e9 R_X86_64_PLT32 mmap+0xfffffffffffffffc
00000000000003fa R_X86_64_PLT32 memcpy+0xfffffffffffffffc
0000000000000427 R_X86_64_PLT32 Pprotect+0xfffffffffffffffc
0000000000000595 R_X86_64_PLT32 Pprotect+0xfffffffffffffffc
00000000000005ad R_X86_64_PLT32 munmap+0xfffffffffffffffc
0000000000000401 R_X86_64_PLT32 mmap+0xfffffffffffffffc
0000000000000412 R_X86_64_PLT32 memcpy+0xfffffffffffffffc
000000000000043f R_X86_64_PLT32 Pprotect+0xfffffffffffffffc
00000000000005ad R_X86_64_PLT32 Pprotect+0xfffffffffffffffc
00000000000005c5 R_X86_64_PLT32 munmap+0xfffffffffffffffc
RELOCATION RECORDS FOR [NRV2E]:
OFFSET TYPE VALUE
+13 -13
View File
@@ -8,9 +8,9 @@ Linker script and memory map
0x0000000000008040 . = ((0x8000 + SIZEOF_HEADERS) + 0xc)
.text 0x0000000000008040 0xac4
.text 0x0000000000008040 0xadc
*(.text)
.text 0x0000000000008040 0x320 tmp/arm.v4a-linux.elf-fold.o
.text 0x0000000000008040 0x338 tmp/arm.v4a-linux.elf-fold.o
0x0000000000008250 my_bkpt
0x0000000000008258 exit
0x000000000000825c read
@@ -24,18 +24,18 @@ Linker script and memory map
0x000000000000829c munmap
0x00000000000082a4 Pprotect
0x00000000000082a4 mprotect
0x00000000000082c0 __clear_cache
0x00000000000082cc mmap
0x00000000000082e4 get_sys_munmap
0x00000000000082ec mmap_privanon
0x0000000000008304 __udivsi3
0x0000000000008304 div10
.text 0x0000000000008360 0x7a4 tmp/arm.v4a-linux.elf-main.o
0x0000000000008380 get_page_mask
0x00000000000089d0 upx_main
0x00000000000082bc mmap
0x00000000000082f0 __clear_cache
0x00000000000082fc get_sys_munmap
0x0000000000008304 mmap_privanon
0x000000000000831c __udivsi3
0x000000000000831c div10
.text 0x0000000000008378 0x7a4 tmp/arm.v4a-linux.elf-main.o
0x0000000000008398 get_page_mask
0x00000000000089e8 upx_main
*(.data)
.data 0x0000000000008b04 0x0 tmp/arm.v4a-linux.elf-fold.o
.data 0x0000000000008b04 0x0 tmp/arm.v4a-linux.elf-main.o
.data 0x0000000000008b1c 0x0 tmp/arm.v4a-linux.elf-fold.o
.data 0x0000000000008b1c 0x0 tmp/arm.v4a-linux.elf-main.o
.data
LOAD tmp/arm.v4a-linux.elf-fold.o
+16 -16
View File
@@ -9,17 +9,17 @@ Linker script and memory map
TARGET(elf32-littlearm)
0x0000000000008080 . = ((0x8000 + SIZEOF_HEADERS) + 0xc)
.text 0x0000000000008080 0xb60
.text 0x0000000000008080 0xb84
*(.text)
.text 0x0000000000008080 0x3c0 tmp/arm.v5a-linux.elf-fold.o
.text 0x0000000000008080 0x3e4 tmp/arm.v5a-linux.elf-fold.o
0x0000000000008348 munmap
0x00000000000083c4 get_sys_munmap
0x00000000000083e8 get_sys_munmap
0x000000000000830c getpid
0x0000000000008334 readlink
0x00000000000083e4 __udivsi3
0x00000000000083a0 mmap
0x0000000000008384 __clear_cache
0x00000000000083cc mmap_privanon
0x0000000000008408 __udivsi3
0x0000000000008380 mmap
0x00000000000083cc __clear_cache
0x00000000000083f0 mmap_privanon
0x00000000000082bc write
0x00000000000082a8 read
0x00000000000082f8 unlink
@@ -28,21 +28,21 @@ TARGET(elf32-littlearm)
0x0000000000008298 exit
0x0000000000008320 brk
0x00000000000082d0 open
0x00000000000083e4 div10
0x0000000000008408 div10
0x000000000000835c mprotect
0x00000000000082e4 close
.text 0x0000000000008440 0x7a0 tmp/armel-linux.elf-main.o
0x0000000000008460 get_page_mask
0x0000000000008aac upx_main
.text 0x0000000000008464 0x7a0 tmp/armel-linux.elf-main.o
0x0000000000008484 get_page_mask
0x0000000000008ad0 upx_main
*(.data)
.data 0x0000000000008be0 0x0 tmp/arm.v5a-linux.elf-fold.o
.data 0x0000000000008be0 0x0 tmp/armel-linux.elf-main.o
.data 0x0000000000008c04 0x0 tmp/arm.v5a-linux.elf-fold.o
.data 0x0000000000008c04 0x0 tmp/armel-linux.elf-main.o
.data
.bss 0x0000000000008be0 0x0
.bss 0x0000000000008be0 0x0 tmp/arm.v5a-linux.elf-fold.o
.bss 0x0000000000008be0 0x0 tmp/armel-linux.elf-main.o
.bss 0x0000000000008c04 0x0
.bss 0x0000000000008c04 0x0 tmp/arm.v5a-linux.elf-fold.o
.bss 0x0000000000008c04 0x0 tmp/armel-linux.elf-main.o
LOAD tmp/arm.v5a-linux.elf-fold.o
LOAD tmp/armel-linux.elf-main.o
OUTPUT(tmp/arm.v5a-linux.elf-fold.bin elf32-littlearm)
+19 -19
View File
@@ -8,9 +8,9 @@ Linker script and memory map
0x00000000001000bc . = ((0x100000 + SIZEOF_HEADERS) + 0xc)
.text 0x00000000001000bc 0xa28
.text 0x00000000001000bc 0xa34
*(.text)
.text 0x00000000001000bc 0x274 tmp/arm64-linux.elf-fold.o
.text 0x00000000001000bc 0x280 tmp/arm64-linux.elf-fold.o
0x0000000000100258 my_bkpt
0x0000000000100260 exit
0x0000000000100268 read
@@ -23,30 +23,30 @@ Linker script and memory map
0x00000000001002b0 mprotect
0x00000000001002c8 mmap_privanon
0x00000000001002d8 mmap
0x00000000001002e4 unlink
0x00000000001002f8 readlink
0x0000000000100300 open
0x000000000010031c __clear_cache
.text 0x0000000000100330 0x7b4 tmp/arm64-linux.elf-main.o
0x000000000010097c upx_main
0x00000000001002f0 unlink
0x0000000000100304 readlink
0x000000000010030c open
0x0000000000100328 __clear_cache
.text 0x000000000010033c 0x7b4 tmp/arm64-linux.elf-main.o
0x0000000000100988 upx_main
*(.data)
.data 0x0000000000100ae4 0x0 tmp/arm64-linux.elf-fold.o
.data 0x0000000000100ae4 0x0 tmp/arm64-linux.elf-main.o
.data 0x0000000000100af0 0x0 tmp/arm64-linux.elf-fold.o
.data 0x0000000000100af0 0x0 tmp/arm64-linux.elf-main.o
.iplt 0x0000000000100ae4 0x0
.iplt 0x0000000000100ae4 0x0 tmp/arm64-linux.elf-fold.o
.iplt 0x0000000000100af0 0x0
.iplt 0x0000000000100af0 0x0 tmp/arm64-linux.elf-fold.o
.rela.dyn 0x0000000000100ae8 0x0
.rela.iplt 0x0000000000100ae8 0x0 tmp/arm64-linux.elf-fold.o
.rela.dyn 0x0000000000100af0 0x0
.rela.iplt 0x0000000000100af0 0x0 tmp/arm64-linux.elf-fold.o
.data
LOAD tmp/arm64-linux.elf-fold.o
LOAD tmp/arm64-linux.elf-main.o
OUTPUT(tmp/arm64-linux.elf-fold.bin elf64-littleaarch64)
.igot.plt 0x0000000000100ae8 0x0
.igot.plt 0x0000000000100ae8 0x0 tmp/arm64-linux.elf-fold.o
.igot.plt 0x0000000000100af0 0x0
.igot.plt 0x0000000000100af0 0x0 tmp/arm64-linux.elf-fold.o
.bss 0x0000000000100ae4 0x0
.bss 0x0000000000100ae4 0x0 tmp/arm64-linux.elf-fold.o
.bss 0x0000000000100ae4 0x0 tmp/arm64-linux.elf-main.o
.bss 0x0000000000100af0 0x0
.bss 0x0000000000100af0 0x0 tmp/arm64-linux.elf-fold.o
.bss 0x0000000000100af0 0x0 tmp/arm64-linux.elf-main.o
+16 -16
View File
@@ -9,17 +9,17 @@ Linker script and memory map
TARGET(elf32-bigarm)
0x0000000000008080 . = ((0x8000 + SIZEOF_HEADERS) + 0xc)
.text 0x0000000000008080 0xac4
.text 0x0000000000008080 0xadc
*(.text)
.text 0x0000000000008080 0x320 tmp/armeb.v4a-linux.elf-fold.o
.text 0x0000000000008080 0x338 tmp/armeb.v4a-linux.elf-fold.o
0x00000000000082dc munmap
0x0000000000008324 get_sys_munmap
0x000000000000833c get_sys_munmap
0x00000000000082c4 getpid
0x00000000000082d4 readlink
0x0000000000008344 __udivsi3
0x000000000000830c mmap
0x0000000000008300 __clear_cache
0x000000000000832c mmap_privanon
0x000000000000835c __udivsi3
0x00000000000082fc mmap
0x0000000000008330 __clear_cache
0x0000000000008344 mmap_privanon
0x00000000000082a4 write
0x000000000000829c read
0x00000000000082bc unlink
@@ -28,21 +28,21 @@ TARGET(elf32-bigarm)
0x0000000000008298 exit
0x00000000000082cc brk
0x00000000000082ac open
0x0000000000008344 div10
0x000000000000835c div10
0x00000000000082e4 mprotect
0x00000000000082b4 close
.text 0x00000000000083a0 0x7a4 tmp/armeb.v4a-linux.elf-main.o
0x00000000000083c0 get_page_mask
0x0000000000008a10 upx_main
.text 0x00000000000083b8 0x7a4 tmp/armeb.v4a-linux.elf-main.o
0x00000000000083d8 get_page_mask
0x0000000000008a28 upx_main
*(.data)
.data 0x0000000000008b44 0x0 tmp/armeb.v4a-linux.elf-fold.o
.data 0x0000000000008b44 0x0 tmp/armeb.v4a-linux.elf-main.o
.data 0x0000000000008b5c 0x0 tmp/armeb.v4a-linux.elf-fold.o
.data 0x0000000000008b5c 0x0 tmp/armeb.v4a-linux.elf-main.o
.data
.bss 0x0000000000008b44 0x0
.bss 0x0000000000008b44 0x0 tmp/armeb.v4a-linux.elf-fold.o
.bss 0x0000000000008b44 0x0 tmp/armeb.v4a-linux.elf-main.o
.bss 0x0000000000008b5c 0x0
.bss 0x0000000000008b5c 0x0 tmp/armeb.v4a-linux.elf-fold.o
.bss 0x0000000000008b5c 0x0 tmp/armeb.v4a-linux.elf-main.o
LOAD tmp/armeb.v4a-linux.elf-fold.o
LOAD tmp/armeb.v4a-linux.elf-main.o
OUTPUT(tmp/armeb.v4a-linux.elf-fold.bin elf32-bigarm)