Elf propagates NX via PT_GNU_STACK (except MIPS stub is too difficult for now)

https://github.com/upx/upx/issues/81
	modified:   ../.github/travis_testsuite_1.sh
	modified:   p_elf_enum.h
	modified:   p_lx_elf.cpp
	modified:   p_lx_elf.h
	modified:   stub/amd64-linux.elf-entry.h
	modified:   stub/i386-linux.elf-fold.h
	modified:   stub/powerpc-linux.elf-fold.h
	modified:   stub/powerpc64le-linux.elf-fold.h
	modified:   stub/src/amd64-linux.elf-entry.S
	modified:   stub/src/i386-linux.elf-fold.S
	modified:   stub/src/powerpc-linux.elf-fold.S
	modified:   stub/src/powerpc64le-linux.elf-fold.S
	modified:   stub/tmp/amd64-linux.elf-entry.bin.dump
	modified:   stub/tmp/i386-linux.elf-fold.map
	modified:   stub/tmp/powerpc-linux.elf-fold.map
	modified:   stub/tmp/powerpc64le-linux.elf-fold.map
This commit is contained in:
John Reiser
2017-04-03 20:11:08 -07:00
parent ef97af71e3
commit a59005e836
16 changed files with 889 additions and 832 deletions
+2 -2
View File
@@ -16,7 +16,7 @@ Idx Name Size VMA LMA File off Algn
11 ELFMAINZ 00000012 0000000000000000 0000000000000000 00001738 2**0 CONTENTS, READONLY
12 LUNMP000 00000002 0000000000000000 0000000000000000 0000174a 2**0 CONTENTS, READONLY
13 LUNMP001 00000002 0000000000000000 0000000000000000 0000174c 2**0 CONTENTS, READONLY
14 ELFMAINZu 00000084 0000000000000000 0000000000000000 0000174e 2**0 CONTENTS, RELOC, READONLY
14 ELFMAINZu 00000086 0000000000000000 0000000000000000 0000174e 2**0 CONTENTS, RELOC, READONLY
SYMBOL TABLE:
0000000000000000 l d NRV_HEAD 0000000000000000 NRV_HEAD
0000000000000000 l d LZMA_DEC30 0000000000000000 LZMA_DEC30
@@ -74,5 +74,5 @@ OFFSET TYPE VALUE
000000000000000f R_X86_64_32 ADRM
0000000000000017 R_X86_64_32 LENM
0000000000000030 R_X86_64_32 ADRC
0000000000000080 R_X86_64_PC32 ELFMAINZ+0x000000000000000d
0000000000000082 R_X86_64_PC32 ELFMAINZ+0x000000000000000d
000000000000002b R_X86_64_PC32 ELFMAINY+0x000000000000000d
+12 -12
View File
@@ -9,24 +9,24 @@ Linker script and memory map
TARGET(elf32-i386)
0x0000000000c01080 . = ((0xc01000 + SIZEOF_HEADERS) + 0xc)
.text 0x0000000000c01080 0x65c
.text 0x0000000000c01080 0x660
*(.text)
.text 0x0000000000c01080 0x110 tmp/i386-linux.elf-fold.o
0x0000000000c01183 mmap
.text 0x0000000000c01190 0x54a tmp/i386-linux.elf-main.o
0x0000000000c01592 upx_main
.text 0x0000000000c01080 0x114 tmp/i386-linux.elf-fold.o
0x0000000000c01185 mmap
.text 0x0000000000c01194 0x54a tmp/i386-linux.elf-main.o
0x0000000000c01596 upx_main
*(.data)
*fill* 0x0000000000c016da 0x2 00
.data 0x0000000000c016dc 0x0 tmp/i386-linux.elf-fold.o
.data 0x0000000000c016dc 0x0 tmp/i386-linux.elf-main.o
*fill* 0x0000000000c016de 0x2 00
.data 0x0000000000c016e0 0x0 tmp/i386-linux.elf-fold.o
.data 0x0000000000c016e0 0x0 tmp/i386-linux.elf-main.o
.data
.bss 0x0000000000c016dc 0x0
.bss 0x0000000000c016dc 0x0 tmp/i386-linux.elf-fold.o
.bss 0x0000000000c016dc 0x0 tmp/i386-linux.elf-main.o
.bss 0x0000000000c016e0 0x0
.bss 0x0000000000c016e0 0x0 tmp/i386-linux.elf-fold.o
.bss 0x0000000000c016e0 0x0 tmp/i386-linux.elf-main.o
.rel.dyn 0x0000000000c016dc 0x0
.rel.dyn 0x0000000000c016e0 0x0
.rel.text 0x0000000000000000 0x0 tmp/i386-linux.elf-fold.o
LOAD tmp/i386-linux.elf-fold.o
LOAD tmp/i386-linux.elf-main.o
+18 -18
View File
@@ -9,30 +9,30 @@ Linker script and memory map
TARGET(elf32-powerpc)
0x0000000000100080 . = ((0x100000 + SIZEOF_HEADERS) + 0xc)
.text 0x0000000000100080 0xc64
.text 0x0000000000100080 0xc70
*(.text)
.text 0x0000000000100080 0x10c tmp/powerpc-linux.elf-fold.o
0x000000000010017c munmap
0x0000000000100140 mmap
0x000000000010015c read
0x0000000000100154 exit
0x0000000000100184 brk
0x0000000000100164 open
0x0000000000100174 mprotect
0x000000000010016c close
.text 0x000000000010018c 0xb58 tmp/powerpc-linux.elf-main.o
0x0000000000100ab0 upx_main
.text 0x0000000000100080 0x118 tmp/powerpc-linux.elf-fold.o
0x0000000000100188 munmap
0x000000000010014c mmap
0x0000000000100168 read
0x0000000000100160 exit
0x0000000000100190 brk
0x0000000000100170 open
0x0000000000100180 mprotect
0x0000000000100178 close
.text 0x0000000000100198 0xb58 tmp/powerpc-linux.elf-main.o
0x0000000000100abc upx_main
*(.data)
.data 0x0000000000100ce4 0x0 tmp/powerpc-linux.elf-fold.o
.data 0x0000000000100ce4 0x0 tmp/powerpc-linux.elf-main.o
.data 0x0000000000100cf0 0x0 tmp/powerpc-linux.elf-fold.o
.data 0x0000000000100cf0 0x0 tmp/powerpc-linux.elf-main.o
.data
.bss 0x0000000000100ce4 0x0
.bss 0x0000000000100ce4 0x0 tmp/powerpc-linux.elf-fold.o
.bss 0x0000000000100ce4 0x0 tmp/powerpc-linux.elf-main.o
.bss 0x0000000000100cf0 0x0
.bss 0x0000000000100cf0 0x0 tmp/powerpc-linux.elf-fold.o
.bss 0x0000000000100cf0 0x0 tmp/powerpc-linux.elf-main.o
.rela.dyn 0x0000000000100ce4 0x0
.rela.dyn 0x0000000000100cf0 0x0
.rela.text 0x0000000000000000 0x0 tmp/powerpc-linux.elf-fold.o
LOAD tmp/powerpc-linux.elf-fold.o
LOAD tmp/powerpc-linux.elf-main.o
+39 -39
View File
@@ -9,58 +9,58 @@ Linker script and memory map
TARGET(elf64-powerpcle)
0x00000000001000bc . = ((0x100000 + SIZEOF_HEADERS) + 0xc)
.text 0x00000000001000bc 0x810
.text 0x00000000001000bc 0x81c
*(.text)
.text 0x00000000001000bc 0x1a4 tmp/powerpc64le-linux.elf-fold.o
0x0000000000100214 mmap
0x0000000000100228 exit
0x0000000000100230 read
0x0000000000100238 open
0x0000000000100240 close
0x0000000000100248 mprotect
0x0000000000100250 munmap
0x0000000000100258 brk
.text 0x0000000000100260 0x66c tmp/powerpc64le-linux.elf-main.o
.text 0x00000000001000bc 0x1b0 tmp/powerpc64le-linux.elf-fold.o
0x0000000000100220 mmap
0x0000000000100234 exit
0x000000000010023c read
0x0000000000100244 open
0x000000000010024c close
0x0000000000100254 mprotect
0x000000000010025c munmap
0x0000000000100264 brk
.text 0x000000000010026c 0x66c tmp/powerpc64le-linux.elf-main.o
*(.data)
.data 0x00000000001008cc 0x0 tmp/powerpc64le-linux.elf-fold.o
.data 0x00000000001008cc 0x0 tmp/powerpc64le-linux.elf-main.o
.data 0x00000000001008d8 0x0 tmp/powerpc64le-linux.elf-fold.o
.data 0x00000000001008d8 0x0 tmp/powerpc64le-linux.elf-main.o
.sfpr 0x00000000001008cc 0xa4
.sfpr 0x00000000001008cc 0xa4 linker stubs
0x00000000001008cc _savegpr0_14
0x0000000000100900 _savegpr0_27
0x0000000000100904 _savegpr0_28
0x000000000010091c _restgpr0_14
0x0000000000100950 _restgpr0_27
0x0000000000100954 _restgpr0_28
.sfpr 0x00000000001008d8 0xa4
.sfpr 0x00000000001008d8 0xa4 linker stubs
0x00000000001008d8 _savegpr0_14
0x000000000010090c _savegpr0_27
0x0000000000100910 _savegpr0_28
0x0000000000100928 _restgpr0_14
0x000000000010095c _restgpr0_27
0x0000000000100960 _restgpr0_28
.glink 0x0000000000100970 0x0
.glink 0x0000000000100970 0x0 linker stubs
.glink 0x0000000000100980 0x0
.glink 0x0000000000100980 0x0 linker stubs
.eh_frame 0x0000000000100970 0x0
.eh_frame 0x0000000000100970 0x0 linker stubs
.eh_frame 0x000000000010097c 0x0
.eh_frame 0x000000000010097c 0x0 linker stubs
.rela.dyn 0x0000000000100970 0x0
.rela.iplt 0x0000000000100970 0x0 linker stubs
.rela.dyn 0x0000000000100980 0x0
.rela.iplt 0x0000000000100980 0x0 linker stubs
.data
LOAD tmp/powerpc64le-linux.elf-fold.o
LOAD tmp/powerpc64le-linux.elf-main.o
OUTPUT(tmp/powerpc64le-linux.elf-fold.bin elf64-powerpcle)
.branch_lt 0x0000000000100970 0x0
.branch_lt 0x0000000000100970 0x0 linker stubs
.branch_lt 0x0000000000100980 0x0
.branch_lt 0x0000000000100980 0x0 linker stubs
.toc 0x0000000000100970 0x0
.toc 0x0000000000100970 0x0 tmp/powerpc64le-linux.elf-main.o
.toc 0x0000000000100980 0x0
.toc 0x0000000000100980 0x0 tmp/powerpc64le-linux.elf-main.o
.opd 0x0000000000100970 0x58
.opd 0x0000000000100970 0x58 tmp/powerpc64le-linux.elf-main.o
0x00000000001009b0 upx_main
.opd 0x0000000000100980 0x58
.opd 0x0000000000100980 0x58 tmp/powerpc64le-linux.elf-main.o
0x00000000001009c0 upx_main
.iplt 0x00000000001009c8 0x0
.iplt 0x00000000001009c8 0x0 linker stubs
.iplt 0x00000000001009d8 0x0
.iplt 0x00000000001009d8 0x0 linker stubs
.bss 0x00000000001009c8 0x0
.bss 0x00000000001009c8 0x0 tmp/powerpc64le-linux.elf-fold.o
.bss 0x00000000001009c8 0x0 tmp/powerpc64le-linux.elf-main.o
.bss 0x00000000001009d8 0x0
.bss 0x00000000001009d8 0x0 tmp/powerpc64le-linux.elf-fold.o
.bss 0x00000000001009d8 0x0 tmp/powerpc64le-linux.elf-main.o