amd64-linux revamp for compressing shared libraries

Major changes: p_lx_elf.cpp and stub/src/amd64-linux.elf-so*.
(Includes run-time infrastructure for multiple de-compressors.)
	modified:   linker.cpp
	modified:   p_lx_elf.cpp
	modified:   p_lx_elf.h
	modified:   p_unix.cpp
	modified:   p_unix.h
	modified:   stub/Makefile
	modified:   stub/src/amd64-darwin.dylib-entry.S
	modified:   stub/src/amd64-darwin.macho-entry.S
	new file:   stub/src/amd64-expand.S
	modified:   stub/src/amd64-linux.elf-entry.S
	new file:   stub/src/amd64-linux.elf-so_entry.S
	new file:   stub/src/amd64-linux.elf-so_fold.S
	new file:   stub/src/amd64-linux.elf-so_fold.lds
	new file:   stub/src/amd64-linux.elf-so_main.c
	modified:   stub/src/amd64-linux.shlib-init.S
	modified:   stub/src/amd64-win64.pep.S
	modified:   stub/src/arch/amd64/nrv2b_d.S
	modified:   stub/src/arch/amd64/nrv2d_d.S
	modified:   stub/src/arch/amd64/nrv2e_d.S
           plus many generated stub/*.h and stub/tmp/*.bin.dump
This commit is contained in:
John Reiser
2023-01-09 09:39:25 -08:00
committed by Markus F.X.J. Oberhumer
parent 5f3ebc8a7f
commit 26d8e9c4c5
133 changed files with 42126 additions and 48117 deletions
+96 -96
View File
@@ -2,103 +2,103 @@ file format elf32-littlemips
Sections:
Idx Name Size VMA LMA File off Algn Flags
0 cdb.start 00000014 00000000 00000000 00000034 2**0 CONTENTS, RELOC, READONLY
1 cdb.entry 0000001c 00000000 00000000 00000048 2**0 CONTENTS, RELOC, READONLY
2 cdb.start.lzma 00000018 00000000 00000000 00000064 2**0 CONTENTS, RELOC, READONLY
3 cdb.entry.lzma 00000020 00000000 00000000 0000007c 2**0 CONTENTS, RELOC, READONLY
4 cdb.lzma.cpr 00000008 00000000 00000000 0000009c 2**0 CONTENTS, RELOC, READONLY
5 cdb.dec.ptr 00000008 00000000 00000000 000000a4 2**0 CONTENTS, RELOC, READONLY
6 cdb.dec.ptr.hi 00000004 00000000 00000000 000000ac 2**0 CONTENTS, RELOC, READONLY
7 cdb.exit 00000028 00000000 00000000 000000b0 2**0 CONTENTS, RELOC, READONLY
8 con.start 00000030 00000000 00000000 000000d8 2**0 CONTENTS, RELOC, READONLY
9 con.mcpy 0000001c 00000000 00000000 00000108 2**0 CONTENTS, RELOC, READONLY
10 lzma.prep 00000004 00000000 00000000 00000124 2**0 CONTENTS, RELOC, READONLY
11 con.padcd 00000004 00000000 00000000 00000128 2**0 CONTENTS, RELOC, READONLY
12 dec.ptr 0000000c 00000000 00000000 0000012c 2**0 CONTENTS, RELOC, READONLY
13 dec.ptr.hi 00000008 00000000 00000000 00000138 2**0 CONTENTS, RELOC, READONLY
14 con.entry 00000000 00000000 00000000 00000140 2**0 CONTENTS, READONLY
15 con.exit 0000002c 00000000 00000000 00000140 2**0 CONTENTS, RELOC, READONLY
16 bss.cdb.start.lzma 0000001c 00000000 00000000 0000016c 2**0 CONTENTS, RELOC, READONLY
17 bss.cdb.entry.lzma 00000024 00000000 00000000 00000188 2**0 CONTENTS, RELOC, READONLY
18 bss.con.start 00000038 00000000 00000000 000001ac 2**0 CONTENTS, RELOC, READONLY
19 bss.exit 0000002c 00000000 00000000 000001e4 2**0 CONTENTS, RELOC, READONLY
20 memset.short 00000014 00000000 00000000 00000210 2**0 CONTENTS, RELOC, READONLY
21 memset.long 00000018 00000000 00000000 00000224 2**0 CONTENTS, RELOC, READONLY
22 nrv2b.8bit 000001ec 00000000 00000000 0000023c 2**0 CONTENTS, RELOC, READONLY
23 nrv2d.8bit 00000228 00000000 00000000 00000428 2**0 CONTENTS, RELOC, READONLY
24 nrv2e.8bit 00000250 00000000 00000000 00000650 2**0 CONTENTS, RELOC, READONLY
25 nrv2b.32bit 000001ec 00000000 00000000 000008a0 2**0 CONTENTS, RELOC, READONLY
26 nrv2d.32bit 00000228 00000000 00000000 00000a8c 2**0 CONTENTS, RELOC, READONLY
27 nrv2e.32bit 00000250 00000000 00000000 00000cb4 2**0 CONTENTS, RELOC, READONLY
28 8bit.sub 00000024 00000000 00000000 00000f04 2**0 CONTENTS, READONLY
29 32bit.sub 0000002c 00000000 00000000 00000f28 2**0 CONTENTS, READONLY
30 nrv2b.small 000000d4 00000000 00000000 00000f54 2**0 CONTENTS, RELOC, READONLY
31 nrv2d.small 000000f0 00000000 00000000 00001028 2**0 CONTENTS, RELOC, READONLY
32 nrv2e.small 00000100 00000000 00000000 00001118 2**0 CONTENTS, RELOC, READONLY
33 nrv.done 00000000 00000000 00000000 00001218 2**0 CONTENTS, READONLY
34 decompressor.start 00000000 00000000 00000000 00001218 2**0 CONTENTS, READONLY
35 lzma.init 00000050 00000000 00000000 00001218 2**0 CONTENTS, RELOC, READONLY
36 LZMA_DEC10 00000ad8 00000000 00000000 00001268 2**0 CONTENTS, READONLY
37 LZMA_DEC20 00000ad8 00000000 00000000 00001d40 2**0 CONTENTS, READONLY
38 UPX1HEAD 00000020 00000000 00000000 00002818 2**0 CONTENTS, READONLY
0 cdb.start 014 0 0 034 2**0 CONTENTS
1 cdb.entry 01c 0 0 048 2**0 CONTENTS
2 cdb.start.lzma 018 0 0 064 2**0 CONTENTS
3 cdb.entry.lzma 020 0 0 07c 2**0 CONTENTS
4 cdb.lzma.cpr 08 0 0 09c 2**0 CONTENTS
5 cdb.dec.ptr 08 0 0 0a4 2**0 CONTENTS
6 cdb.dec.ptr.hi 04 0 0 0ac 2**0 CONTENTS
7 cdb.exit 028 0 0 0b0 2**0 CONTENTS
8 con.start 030 0 0 0d8 2**0 CONTENTS
9 con.mcpy 01c 0 0 0108 2**0 CONTENTS
10 lzma.prep 04 0 0 0124 2**0 CONTENTS
11 con.padcd 04 0 0 0128 2**0 CONTENTS
12 dec.ptr 0c 0 0 012c 2**0 CONTENTS
13 dec.ptr.hi 08 0 0 0138 2**0 CONTENTS
14 con.entry 0 0 0 0140 2**0 CONTENTS
15 con.exit 02c 0 0 0140 2**0 CONTENTS
16 bss.cdb.start.lzma 01c 0 0 016c 2**0 CONTENTS
17 bss.cdb.entry.lzma 024 0 0 0188 2**0 CONTENTS
18 bss.con.start 038 0 0 01ac 2**0 CONTENTS
19 bss.exit 02c 0 0 01e4 2**0 CONTENTS
20 memset.short 014 0 0 0210 2**0 CONTENTS
21 memset.long 018 0 0 0224 2**0 CONTENTS
22 nrv2b.8bit 01ec 0 0 023c 2**0 CONTENTS
23 nrv2d.8bit 0228 0 0 0428 2**0 CONTENTS
24 nrv2e.8bit 0250 0 0 0650 2**0 CONTENTS
25 nrv2b.32bit 01ec 0 0 08a0 2**0 CONTENTS
26 nrv2d.32bit 0228 0 0 0a8c 2**0 CONTENTS
27 nrv2e.32bit 0250 0 0 0cb4 2**0 CONTENTS
28 8bit.sub 024 0 0 0f04 2**0 CONTENTS
29 32bit.sub 02c 0 0 0f28 2**0 CONTENTS
30 nrv2b.small 0d4 0 0 0f54 2**0 CONTENTS
31 nrv2d.small 0f0 0 0 01028 2**0 CONTENTS
32 nrv2e.small 0100 0 0 01118 2**0 CONTENTS
33 nrv.done 0 0 0 01218 2**0 CONTENTS
34 decompressor.start 0 0 0 01218 2**0 CONTENTS
35 lzma.init 050 0 0 01218 2**0 CONTENTS
36 LZMA_DEC10 0ad8 0 0 01268 2**0 CONTENTS
37 LZMA_DEC20 0ad8 0 0 01d40 2**0 CONTENTS
38 UPX1HEAD 020 0 0 02818 2**0 CONTENTS
SYMBOL TABLE:
00000000 l d nrv.done 00000000 nrv.done
00000000 l d decompressor.start 00000000 decompressor.start
00000000 l d cdb.start 00000000 cdb.start
00000000 l d cdb.entry 00000000 cdb.entry
00000000 l d cdb.start.lzma 00000000 cdb.start.lzma
00000000 l d cdb.entry.lzma 00000000 cdb.entry.lzma
00000000 l d cdb.lzma.cpr 00000000 cdb.lzma.cpr
00000000 l d cdb.dec.ptr 00000000 cdb.dec.ptr
00000000 l d cdb.dec.ptr.hi 00000000 cdb.dec.ptr.hi
00000000 l d cdb.exit 00000000 cdb.exit
00000000 l d con.start 00000000 con.start
00000000 l d con.mcpy 00000000 con.mcpy
00000000 l d lzma.prep 00000000 lzma.prep
00000000 l d con.padcd 00000000 con.padcd
00000000 l d dec.ptr 00000000 dec.ptr
00000000 l d dec.ptr.hi 00000000 dec.ptr.hi
00000000 l d con.entry 00000000 con.entry
00000000 l d con.exit 00000000 con.exit
00000000 l d bss.cdb.start.lzma 00000000 bss.cdb.start.lzma
00000000 l d bss.cdb.entry.lzma 00000000 bss.cdb.entry.lzma
00000000 l d bss.con.start 00000000 bss.con.start
00000000 l d bss.exit 00000000 bss.exit
00000000 l d memset.short 00000000 memset.short
00000000 l d memset.long 00000000 memset.long
00000000 l d nrv2b.8bit 00000000 nrv2b.8bit
00000000 l d nrv2d.8bit 00000000 nrv2d.8bit
00000000 l d nrv2e.8bit 00000000 nrv2e.8bit
00000000 l d nrv2b.32bit 00000000 nrv2b.32bit
00000000 l d nrv2d.32bit 00000000 nrv2d.32bit
00000000 l d nrv2e.32bit 00000000 nrv2e.32bit
00000000 l d 8bit.sub 00000000 8bit.sub
00000000 l d 32bit.sub 00000000 32bit.sub
00000000 l d nrv2b.small 00000000 nrv2b.small
00000000 l d nrv2d.small 00000000 nrv2d.small
00000000 l d nrv2e.small 00000000 nrv2e.small
00000000 l d lzma.init 00000000 lzma.init
00000000 l d LZMA_DEC10 00000000 LZMA_DEC10
00000000 l d LZMA_DEC20 00000000 LZMA_DEC20
00000000 l d UPX1HEAD 00000000 UPX1HEAD
00000000 *UND* 00000000 PSVR
00000000 *UND* 00000000 CPDO
00000000 *UND* 00000000 ldr_sz
00000000 *UND* 00000000 lzma_cpr
00000000 *UND* 00000000 DECO
00000000 *UND* 00000000 entry
00000000 *UND* 00000000 DCRT
00000000 *UND* 00000000 lzma_init_off
00000000 *UND* 00000000 PAD
00000000 *UND* 00000000 wrkmem
00000000 *UND* 00000000 SC
00000014 g O 8bit.sub 00000000 gb8_e
0000001c g O 32bit.sub 00000000 gb32_e
00000000 *UND* 00000000 gb_e
00000000 *UND* 00000000 lzma_stack_adjust
00000000 *UND* 00000000 lzma_c_len
00000000 *UND* 00000000 lzma_u_len
00000000 *UND* 00000000 lzma_properties
00000000 l d nrv.done 0 nrv.done
00000000 l d decompressor.start 0 decompressor.start
00000000 l d cdb.start 0 cdb.start
00000000 l d cdb.entry 0 cdb.entry
00000000 l d cdb.start.lzma 0 cdb.start.lzma
00000000 l d cdb.entry.lzma 0 cdb.entry.lzma
00000000 l d cdb.lzma.cpr 0 cdb.lzma.cpr
00000000 l d cdb.dec.ptr 0 cdb.dec.ptr
00000000 l d cdb.dec.ptr.hi 0 cdb.dec.ptr.hi
00000000 l d cdb.exit 0 cdb.exit
00000000 l d con.start 0 con.start
00000000 l d con.mcpy 0 con.mcpy
00000000 l d lzma.prep 0 lzma.prep
00000000 l d con.padcd 0 con.padcd
00000000 l d dec.ptr 0 dec.ptr
00000000 l d dec.ptr.hi 0 dec.ptr.hi
00000000 l d con.entry 0 con.entry
00000000 l d con.exit 0 con.exit
00000000 l d bss.cdb.start.lzma 0 bss.cdb.start.lzma
00000000 l d bss.cdb.entry.lzma 0 bss.cdb.entry.lzma
00000000 l d bss.con.start 0 bss.con.start
00000000 l d bss.exit 0 bss.exit
00000000 l d memset.short 0 memset.short
00000000 l d memset.long 0 memset.long
00000000 l d nrv2b.8bit 0 nrv2b.8bit
00000000 l d nrv2d.8bit 0 nrv2d.8bit
00000000 l d nrv2e.8bit 0 nrv2e.8bit
00000000 l d nrv2b.32bit 0 nrv2b.32bit
00000000 l d nrv2d.32bit 0 nrv2d.32bit
00000000 l d nrv2e.32bit 0 nrv2e.32bit
00000000 l d 8bit.sub 0 8bit.sub
00000000 l d 32bit.sub 0 32bit.sub
00000000 l d nrv2b.small 0 nrv2b.small
00000000 l d nrv2d.small 0 nrv2d.small
00000000 l d nrv2e.small 0 nrv2e.small
00000000 l d lzma.init 0 lzma.init
00000000 l d LZMA_DEC10 0 LZMA_DEC10
00000000 l d LZMA_DEC20 0 LZMA_DEC20
00000000 l d UPX1HEAD 0 UPX1HEAD
00000000 *UND* 0 PSVR
00000000 *UND* 0 CPDO
00000000 *UND* 0 ldr_sz
00000000 *UND* 0 lzma_cpr
00000000 *UND* 0 DECO
00000000 *UND* 0 entry
00000000 *UND* 0 DCRT
00000000 *UND* 0 lzma_init_off
00000000 *UND* 0 PAD
00000000 *UND* 0 wrkmem
00000000 *UND* 0 SC
00000014 g O 8bit.sub 0 gb8_e
0000001c g O 32bit.sub 0 gb32_e
00000000 *UND* 0 gb_e
00000000 *UND* 0 lzma_stack_adjust
00000000 *UND* 0 lzma_c_len
00000000 *UND* 0 lzma_u_len
00000000 *UND* 0 lzma_properties
RELOCATION RECORDS FOR [cdb.start]:
OFFSET TYPE VALUE