mirror of
https://github.com/upx/upx
synced 2025-09-28 19:06:07 +08:00
Cleanup stub/*.lds linker scripts
modified: Makefile modified: src/amd64-linux.elf-fold.lds modified: src/amd64-linux.elf-so_fold.lds modified: src/arm.v4a-linux.elf-entry.lds modified: src/arm.v4a-linux.elf-fold.lds modified: src/arm.v4a-linux.elf-so_entry.lds modified: src/arm.v4a-linux.elf-so_fold.lds modified: src/arm.v5a-linux.elf-entry.lds modified: src/arm.v5a-linux.elf-fold.lds modified: src/arm.v5a-linux.elf-so_entry.lds modified: src/arm.v5a-linux.elf-so_fold.lds modified: src/arm64-linux.elf-fold.lds modified: src/arm64-linux.elf-so_fold.lds modified: src/armeb.v4a-linux.elf-entry.lds modified: src/armeb.v4a-linux.elf-fold.lds modified: src/i386-bsd.elf-fold.lds modified: src/i386-linux.elf-fold.lds modified: src/i386-linux.elf-so_entry.lds modified: src/i386-linux.elf-so_fold.lds modified: src/i386-linux.elf.execve-fold.lds modified: src/i386-linux.elf.interp-fold.lds modified: src/i386-linux.elf.shell-fold.lds modified: src/mips.r3000-linux.elf-fold.lds modified: src/mipsel.r3000-linux.elf-fold.lds modified: src/powerpc-linux.elf-fold.lds modified: src/powerpc64-linux.elf-fold.lds modified: src/powerpc64le-linux.elf-fold.lds new file: src/upxfd_linux.c
This commit is contained in:
parent
886e325cbf
commit
3d6b2e4617
|
@ -565,23 +565,27 @@ tc.arm.v4a-linux.elf.gcc += -Wall -W -Wcast-align -Wcast-qual -Wstrict-prototype
|
|||
|
||||
arm.v4a-linux.elf-entry.h : $(srcdir)/src/arm.v4a-linux.elf-entry.lds \
|
||||
$(srcdir)/src/$$T.S \
|
||||
tmp/arm.v4a-linux.elf-upxfd_android.o
|
||||
tmp/arm.v4a-linux.elf-upxfd_android.o \
|
||||
tmp/arm.v4a-linux.elf-upxfd_linux.o
|
||||
$(call tc,gcc) -c $(srcdir)/src/$T.S -o tmp/$T.o
|
||||
multiarch-ld-2.17 -r --format=elf32-littlearm -Map tmp/$T.map -o tmp/$T.bin \
|
||||
-T src/arm.v4a-linux.elf-entry.lds \
|
||||
tmp/$T.o \
|
||||
tmp/arm.v4a-linux.elf-upxfd_android.o
|
||||
tmp/arm.v4a-linux.elf-upxfd_android.o \
|
||||
tmp/arm.v4a-linux.elf-upxfd_linux.o
|
||||
$(call tc,f-embed_objinfo_without_xstrip,tmp/$T.bin)
|
||||
$(call tc,bin2h) tmp/$T.bin $@
|
||||
|
||||
arm.v4a-linux.elf-so_entry.h : src/arm.v4a-linux.elf-so_entry.lds \
|
||||
$(srcdir)/src/$$T.S \
|
||||
tmp/arm.v4a-linux.elf-upxfd_android.o
|
||||
tmp/arm.v4a-linux.elf-upxfd_android.o \
|
||||
tmp/arm.v4a-linux.elf-upxfd_linux.o
|
||||
$(call tc,gcc) -c $(srcdir)/src/$T.S -o tmp/$T.o
|
||||
multiarch-ld-2.17 -r --format=elf32-littlearm -Map tmp/$T.map -o tmp/$T.bin \
|
||||
-T src/arm.v4a-linux.elf-so_entry.lds \
|
||||
tmp/$T.o \
|
||||
tmp/arm.v4a-linux.elf-upxfd_android.o
|
||||
tmp/arm.v4a-linux.elf-upxfd_android.o \
|
||||
tmp/arm.v4a-linux.elf-upxfd_linux.o
|
||||
$(call tc,f-embed_objinfo_without_xstrip,tmp/$T.bin)
|
||||
$(call tc,bin2h) tmp/$T.bin $@
|
||||
|
||||
|
@ -590,9 +594,15 @@ tmp/arm.v4a-linux.elf-upxfd_android.o : $(srcdir)/src/upxfd_android.c
|
|||
$(call tc,objcopy) -R .comment $@
|
||||
$(call tc,objdump) -Dr $(tc_objdump_disasm_options) $@ | $(RTRIM) > $@.disasm
|
||||
|
||||
tmp/arm.v4a-linux.elf-upxfd_linux.o : $(srcdir)/src/upxfd_linux.c
|
||||
$(call tc,gcc) -c -O $< -o $@
|
||||
$(call tc,objcopy) -R .comment $@
|
||||
$(call tc,objdump) -Dr $(tc_objdump_disasm_options) $@ | $(RTRIM) > $@.disasm
|
||||
|
||||
arm.v4a-linux.elf-fold.h : $(srcdir)/src/$$T.lds \
|
||||
tmp/$$T.o \
|
||||
tmp/arm.v4a-linux.elf-upxfd_android.o \
|
||||
tmp/arm.v4a-linux.elf-upxfd_linux.o \
|
||||
tmp/arm.v4a-expand.o \
|
||||
tmp/arm.v4a-linux.elf-main2.o
|
||||
$(call tc,ld) -r -T $(srcdir)/src/$T.lds -Map tmp/$T.map $(filter %.o,$^) -o tmp/$T.bin
|
||||
|
@ -602,6 +612,7 @@ arm.v4a-linux.elf-fold.h : $(srcdir)/src/$$T.lds \
|
|||
arm.v4a-linux.elf-so_fold.h : $(srcdir)/src/$$T.lds \
|
||||
tmp/$$T.o \
|
||||
tmp/arm.v4a-linux.elf-upxfd_android.o \
|
||||
tmp/arm.v4a-linux.elf-upxfd_linux.o \
|
||||
tmp/arm.v4a-expand.o \
|
||||
tmp/arm.v4a-linux.elf-so_main.o
|
||||
multiarch-ld-2.23.90 -r -T $(srcdir)/src/$T.lds -Map tmp/$T.map $(filter %.o,$^) -o tmp/$T.bin
|
||||
|
@ -670,23 +681,27 @@ tc.arm.v5a-linux.elf.gcc += -Wall -W -Wcast-align -Wcast-qual -Wstrict-prototype
|
|||
|
||||
arm.v5a-linux.elf-entry.h : $(srcdir)/src/arm.v5a-linux.elf-entry.lds \
|
||||
$(srcdir)/src/$$T.S \
|
||||
tmp/arm.v5a-linux.elf-upxfd_android.o
|
||||
tmp/arm.v5a-linux.elf-upxfd_android.o \
|
||||
tmp/arm.v5a-linux.elf-upxfd_linux.o
|
||||
$(call tc,gcc) -c $(srcdir)/src/$T.S -o tmp/$T.o
|
||||
multiarch-ld-2.17 -r --format=elf32-littlearm -Map tmp/$T.map -o tmp/$T.bin \
|
||||
-T src/arm.v5a-linux.elf-entry.lds \
|
||||
tmp/$T.o \
|
||||
tmp/arm.v5a-linux.elf-upxfd_android.o
|
||||
tmp/arm.v5a-linux.elf-upxfd_android.o \
|
||||
tmp/arm.v5a-linux.elf-upxfd_linux.o
|
||||
$(call tc,f-embed_objinfo_without_xstrip,tmp/$T.bin)
|
||||
$(call tc,bin2h) tmp/$T.bin $@
|
||||
|
||||
arm.v5a-linux.elf-so_entry.h : src/arm.v5a-linux.elf-so_entry.lds \
|
||||
$(srcdir)/src/$$T.S \
|
||||
tmp/arm.v5a-linux.elf-upxfd_android.o
|
||||
tmp/arm.v5a-linux.elf-upxfd_android.o \
|
||||
tmp/arm.v5a-linux.elf-upxfd_linux.o
|
||||
$(call tc,gcc) -c $(srcdir)/src/$T.S -o tmp/$T.o
|
||||
multiarch-ld-2.17 -r --format=elf32-littlearm -Map tmp/$T.map -o tmp/$T.bin \
|
||||
-T src/arm.v5a-linux.elf-so_entry.lds \
|
||||
tmp/$T.o \
|
||||
tmp/arm.v5a-linux.elf-upxfd_android.o
|
||||
tmp/arm.v5a-linux.elf-upxfd_android.o \
|
||||
tmp/arm.v5a-linux.elf-upxfd_linux.o
|
||||
$(call tc,f-embed_objinfo_without_xstrip,tmp/$T.bin)
|
||||
$(call tc,bin2h) tmp/$T.bin $@
|
||||
|
||||
|
@ -695,9 +710,15 @@ tmp/arm.v5a-linux.elf-upxfd_android.o : $(srcdir)/src/upxfd_android.c
|
|||
$(call tc,objcopy) -R .comment $@
|
||||
$(call tc,objdump) -Dr $(tc_objdump_disasm_options) $@ | $(RTRIM) > $@.disasm
|
||||
|
||||
tmp/arm.v5a-linux.elf-upxfd_linux.o : $(srcdir)/src/upxfd_linux.c
|
||||
$(call tc,gcc) -c -O $< -o $@
|
||||
$(call tc,objcopy) -R .comment $@
|
||||
$(call tc,objdump) -Dr $(tc_objdump_disasm_options) $@ | $(RTRIM) > $@.disasm
|
||||
|
||||
arm.v5a-linux.elf-fold.h : $(srcdir)/src/$$T.lds \
|
||||
tmp/$$T.o \
|
||||
tmp/arm.v5a-linux.elf-upxfd_android.o \
|
||||
tmp/arm.v5a-linux.elf-upxfd_linux.o \
|
||||
tmp/arm.v5a-expand.o \
|
||||
tmp/arm.v5a-linux.elf-main2.o
|
||||
$(call tc,ld) -r -T $(srcdir)/src/$T.lds -Map tmp/$T.map $(filter %.o,$^) -o tmp/$T.bin
|
||||
|
@ -707,6 +728,7 @@ arm.v5a-linux.elf-fold.h : $(srcdir)/src/$$T.lds \
|
|||
arm.v5a-linux.elf-so_fold.h : $(srcdir)/src/$$T.lds \
|
||||
tmp/$$T.o \
|
||||
tmp/arm.v5a-linux.elf-upxfd_android.o \
|
||||
tmp/arm.v5a-linux.elf-upxfd_linux.o \
|
||||
tmp/arm.v5a-expand.o \
|
||||
tmp/arm.v5a-linux.elf-so_main.o
|
||||
multiarch-ld-2.23.90 -r -T $(srcdir)/src/$T.lds -Map tmp/$T.map $(filter %.o,$^) -o tmp/$T.bin
|
||||
|
@ -895,18 +917,21 @@ tc.armeb.v4a-linux.elf.gcc = $(tc.arm.v4a-linux.elf.gcc) -mbig-endian -DBIG_ENDI
|
|||
|
||||
armeb.v4a-linux.elf-entry.h : $(srcdir)/src/armeb.v4a-linux.elf-entry.lds \
|
||||
$(srcdir)/src/$$T.S \
|
||||
tmp/armeb.v4a-linux.elf-upxfd_android.o
|
||||
tmp/armeb.v4a-linux.elf-upxfd_android.o \
|
||||
tmp/armeb.v4a-linux.elf-upxfd_linux.o
|
||||
$(call tc,gcc) -c $(srcdir)/src/$T.S -o tmp/$T.o
|
||||
multiarch-ld-2.17 -r --format=elf32-bigarm -Map tmp/$T.map -o tmp/$T.bin \
|
||||
-T src/armeb.v4a-linux.elf-entry.lds \
|
||||
tmp/$T.o \
|
||||
tmp/armeb.v4a-linux.elf-upxfd_android.o
|
||||
tmp/armeb.v4a-linux.elf-upxfd_android.o \
|
||||
tmp/armeb.v4a-linux.elf-upxfd_linux.o
|
||||
$(call tc,f-embed_objinfo_without_xstrip,tmp/$T.bin)
|
||||
$(call tc,bin2h) tmp/$T.bin $@
|
||||
|
||||
armeb.v4a-linux.elf-fold.h : $(srcdir)/src/$$T.lds \
|
||||
tmp/$$T.o \
|
||||
tmp/armeb.v4a-linux.elf-upxfd_android.o \
|
||||
tmp/armeb.v4a-linux.elf-upxfd_linux.o \
|
||||
tmp/armeb.v4a-expand.o \
|
||||
tmp/armeb.v4a-linux.elf-main2.o
|
||||
$(call tc,ld) -r -T $(srcdir)/src/$T.lds -Map tmp/$T.map $(filter %.o,$^) -o tmp/$T.bin
|
||||
|
@ -918,6 +943,11 @@ tmp/armeb.v4a-linux.elf-upxfd_android.o : $(srcdir)/src/upxfd_android.c
|
|||
$(call tc,objcopy) -R .comment $@
|
||||
$(call tc,objdump) -Dr $(tc_objdump_disasm_options) $@ | $(RTRIM) > $@.disasm
|
||||
|
||||
tmp/armeb.v4a-linux.elf-upxfd_linux.o : $(srcdir)/src/upxfd_linux.c
|
||||
$(call tc,gcc) -c -O $< -o $@
|
||||
$(call tc,objcopy) -R .comment $@
|
||||
$(call tc,objdump) -Dr $(tc_objdump_disasm_options) $@ | $(RTRIM) > $@.disasm
|
||||
|
||||
tmp/armeb.v4a-expand.o: $(srcdir)/src/$$T.S
|
||||
$(call tc,gcc) -c $< -o $@
|
||||
|
||||
|
@ -1267,34 +1297,44 @@ tc.i386-linux.elf.gcc += -fweb
|
|||
|
||||
i386-linux.elf-entry.h : $(srcdir)/src/i386-linux.elf-entry.lds \
|
||||
$(srcdir)/src/$$T.S \
|
||||
tmp/i386-linux.elf-upxfd_android.o
|
||||
tmp/i386-linux.elf-upxfd_android.o \
|
||||
tmp/i386-linux.elf-upxfd_linux.o
|
||||
$(call tc,gcc) -c $(srcdir)/src/$T.S -o tmp/$T.o
|
||||
multiarch-ld-2.17 -r -Map tmp/$T.map -o tmp/$T.bin \
|
||||
-T src/i386-linux.elf-entry.lds \
|
||||
tmp/$T.o \
|
||||
tmp/i386-linux.elf-upxfd_android.o
|
||||
tmp/i386-linux.elf-upxfd_android.o \
|
||||
tmp/i386-linux.elf-upxfd_linux.o
|
||||
$(call tc,f-embed_objinfo_without_xstrip,tmp/$T.bin)
|
||||
$(call tc,bin2h) tmp/$T.bin $@
|
||||
|
||||
i386-linux.elf-so_entry.h : $(srcdir)/src/i386-linux.elf-so_entry.lds \
|
||||
$(srcdir)/src/$$T.S \
|
||||
tmp/i386-linux.elf-upxfd_android.o
|
||||
tmp/i386-linux.elf-upxfd_android.o \
|
||||
tmp/i386-linux.elf-upxfd_linux.o
|
||||
$(call tc,gcc) -c $(srcdir)/src/$T.S -o tmp/$T.o
|
||||
multiarch-ld-2.17 -r -Map tmp/$T.map -o tmp/$T.bin \
|
||||
-T src/i386-linux.elf-so_entry.lds \
|
||||
tmp/$T.o \
|
||||
tmp/i386-linux.elf-upxfd_android.o
|
||||
tmp/i386-linux.elf-upxfd_android.o \
|
||||
tmp/i386-linux.elf-upxfd_linux.o
|
||||
$(call tc,f-embed_objinfo_without_xstrip,tmp/$T.bin)
|
||||
$(call tc,bin2h) tmp/$T.bin $@
|
||||
|
||||
tmp/i386-linux.elf-upxfd_android.o : $(srcdir)/src/upxfd_android.c
|
||||
$(call tc,gcc) -c -O $< -o $@
|
||||
$(call tc,objcopy) -R .comment $@
|
||||
$(call tc,objcopy) --rename-section .text=UMF_ANDROID -R .comment -R .data -R .bss -R .note.GNU-stack $@
|
||||
$(call tc,objdump) -Dr $(tc_objdump_disasm_options) $@ | $(RTRIM) > $@.disasm
|
||||
|
||||
tmp/i386-linux.elf-upxfd_linux.o : $(srcdir)/src/upxfd_linux.c
|
||||
$(call tc,gcc) -c -O $< -o $@
|
||||
$(call tc,objcopy) --rename-section .text=UMF_LINUX -R .comment -R .data -R .bss -R .note.GNU-stack $@
|
||||
$(call tc,objdump) -Dr $(tc_objdump_disasm_options) $@ | $(RTRIM) > $@.disasm
|
||||
|
||||
i386-linux.elf-fold.h : $(srcdir)/src/$$T.lds \
|
||||
tmp/$$T.o \
|
||||
tmp/i386-linux.elf-upxfd_android.o \
|
||||
tmp/i386-linux.elf-upxfd_linux.o \
|
||||
tmp/i386-expand.o \
|
||||
tmp/i386-linux.elf-main2.o
|
||||
$(call tc,ld) -r -T $(srcdir)/src/$T.lds -Map tmp/$T.map $(filter %.o,$^) -o tmp/$T.bin
|
||||
|
@ -1305,6 +1345,7 @@ i386-linux.elf-fold.h : $(srcdir)/src/$$T.lds \
|
|||
i386-linux.elf-so_fold.h : $(srcdir)/src/$$T.lds \
|
||||
tmp/$$T.o \
|
||||
tmp/i386-linux.elf-upxfd_android.o \
|
||||
tmp/i386-linux.elf-upxfd_linux.o \
|
||||
tmp/i386-expand.o \
|
||||
tmp/i386-linux.elf-so_main.o
|
||||
$(call tc,ld) -r -T $(srcdir)/src/$T.lds -Map tmp/$T.map $(filter %.o,$^) -o tmp/$T.bin
|
||||
|
|
|
@ -30,9 +30,8 @@
|
|||
|
||||
OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64")
|
||||
OUTPUT_ARCH(i386:x86-64)
|
||||
/*ENTRY(_start)*/
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
. = 0x00100000 + SIZEOF_HEADERS + 12; /* 12==sizeof(l_info) */
|
||||
. = SIZEOF_HEADERS;
|
||||
}
|
||||
|
|
|
@ -11,46 +11,8 @@
|
|||
*/
|
||||
OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64")
|
||||
OUTPUT_ARCH(i386:x86-64)
|
||||
/*
|
||||
multiarch-ld-2.17 --strip-all \
|
||||
-T ./src/amd64-linux.elf-so_fold.lds \
|
||||
-Map tmp/amd64-linux.elf-so_fold.map \
|
||||
tmp/amd64-linux.elf-so_fold.o \
|
||||
tmp/amd64-linux.elf-so_main.o \
|
||||
tmp/amd64-linux.elf-entry.o \
|
||||
-o tmp/amd64-linux.elf-so_fold.bin
|
||||
*/
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
. = 0x00100000 + SIZEOF_HEADERS + 12; /* 12==sizeof(l_info) */
|
||||
/*SO_HEAD : { *(SO_HEAD) }*/
|
||||
/*
|
||||
.text :
|
||||
{
|
||||
*(.text.unlikely .text.*_unlikely .text.unlikely.*)
|
||||
*(.text.exit .text.exit.*)
|
||||
*(.text.startup .text.startup.*)
|
||||
*(.text.hot .text.hot.*)
|
||||
*(.text .stub .text.* .gnu.linkonce.t.*)
|
||||
*(NRV_HEAD)
|
||||
*(NRV2B)
|
||||
*(NRV2E)
|
||||
*(NRV2D)
|
||||
*(NRV_TAIL)
|
||||
*(LZMA*)
|
||||
*(SO_MAIN)
|
||||
*(SO_TAIL)
|
||||
}
|
||||
.data :
|
||||
{
|
||||
*(.data .data.* .gnu.linkonce.d.*)
|
||||
}
|
||||
.data1 : { *(.data1) }
|
||||
.bss :
|
||||
{
|
||||
*(.bss .bss.* .gnu.linkonce.b.*)
|
||||
*(COMMON)
|
||||
}
|
||||
*/
|
||||
. = SIZEOF_HEADERS;
|
||||
}
|
||||
|
|
|
@ -3,7 +3,6 @@ OUTPUT_ARCH(arm)
|
|||
|
||||
SECTIONS
|
||||
{
|
||||
. = 0x00100000 + SIZEOF_HEADERS + 12; /* 12==sizeof(l_info) */
|
||||
.text : {
|
||||
}
|
||||
ELFMAINX : {
|
||||
|
|
|
@ -33,5 +33,5 @@ OUTPUT_ARCH(arm)
|
|||
|
||||
SECTIONS
|
||||
{
|
||||
. = 0x00100000 + SIZEOF_HEADERS + 12; /* 12==sizeof(l_info) */
|
||||
. = SIZEOF_HEADERS;
|
||||
}
|
||||
|
|
|
@ -3,7 +3,6 @@ OUTPUT_ARCH(arm)
|
|||
|
||||
SECTIONS
|
||||
{
|
||||
. = 0x00100000 + SIZEOF_HEADERS + 12; /* 12==sizeof(l_info) */
|
||||
.text : {
|
||||
}
|
||||
ELFMAINX : {
|
||||
|
|
|
@ -1,10 +1,7 @@
|
|||
OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm")
|
||||
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
|
||||
OUTPUT_ARCH(arm)
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
SO_HEAD : {
|
||||
*(SO_HEAD)
|
||||
*(.text)
|
||||
}
|
||||
. = SIZEOF_HEADERS;
|
||||
}
|
||||
|
|
|
@ -3,7 +3,6 @@ OUTPUT_ARCH(arm)
|
|||
|
||||
SECTIONS
|
||||
{
|
||||
. = 0x00100000 + SIZEOF_HEADERS + 12; /* 12==sizeof(l_info) */
|
||||
.text : {
|
||||
}
|
||||
ELFMAINX : {
|
||||
|
|
|
@ -30,19 +30,8 @@
|
|||
|
||||
OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm")
|
||||
OUTPUT_ARCH(arm)
|
||||
/*ENTRY(_start)*/
|
||||
PHDRS
|
||||
{
|
||||
text PT_LOAD FILEHDR PHDRS ;
|
||||
data PT_LOAD ; /* for setting brk(0) */
|
||||
}
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
/* . = 0x00100000 + SIZEOF_HEADERS + 12; /* 12==sizeof(l_info) */
|
||||
.text : {
|
||||
*(.text)
|
||||
*(.data)
|
||||
} : text
|
||||
.data : {
|
||||
} : data
|
||||
. = SIZEOF_HEADERS;
|
||||
}
|
||||
|
|
|
@ -3,7 +3,6 @@ OUTPUT_ARCH(arm)
|
|||
|
||||
SECTIONS
|
||||
{
|
||||
. = 0x00100000 + SIZEOF_HEADERS + 12; /* 12==sizeof(l_info) */
|
||||
.text : {
|
||||
}
|
||||
ELFMAINX : {
|
||||
|
|
|
@ -1,10 +1,7 @@
|
|||
OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm")
|
||||
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
|
||||
OUTPUT_ARCH(arm)
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
SO_HEAD : {
|
||||
*(SO_HEAD)
|
||||
*(.text)
|
||||
}
|
||||
. = SIZEOF_HEADERS;
|
||||
}
|
||||
|
|
|
@ -30,7 +30,19 @@
|
|||
|
||||
OUTPUT_FORMAT("elf64-littleaarch64", "elf64-bigaarch64", "elf64-littleaarch64")
|
||||
OUTPUT_ARCH(aarch64)
|
||||
|
||||
PHDRS
|
||||
{
|
||||
text PT_LOAD FILEHDR PHDRS FLAGS ( 5 ) ; /* r-x (no -w-) */
|
||||
data PT_LOAD ; /* for setting brk(0) */
|
||||
}
|
||||
SECTIONS
|
||||
{
|
||||
. = SIZEOF_HEADERS + 12 ;
|
||||
. = SIZEOF_HEADERS;
|
||||
.text : {
|
||||
*(.text)
|
||||
*(.data)
|
||||
} : text
|
||||
.data : {
|
||||
} : data
|
||||
}
|
||||
|
|
|
@ -3,5 +3,5 @@ OUTPUT_ARCH(aarch64)
|
|||
|
||||
SECTIONS
|
||||
{
|
||||
. = SIZEOF_HEADERS + 12; /* 12==sizeof(l_info) */
|
||||
. = SIZEOF_HEADERS;
|
||||
}
|
||||
|
|
|
@ -3,7 +3,6 @@ OUTPUT_ARCH(arm)
|
|||
|
||||
SECTIONS
|
||||
{
|
||||
. = 0x00100000 + SIZEOF_HEADERS + 12; /* 12==sizeof(l_info) */
|
||||
.text : {
|
||||
}
|
||||
ELFMAINX : {
|
||||
|
|
|
@ -28,10 +28,10 @@
|
|||
*/
|
||||
|
||||
|
||||
OUTPUT_FORMAT("elf32-bigarm", "elf32-bigarm", "elf32-littlearm")
|
||||
OUTPUT_FORMAT("elf32-bigarm", "elf32-bigarm", "elf32-bigarm")
|
||||
OUTPUT_ARCH(arm)
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
. = 0x00100000 + SIZEOF_HEADERS + 12; /* 12==sizeof(l_info) */
|
||||
. = SIZEOF_HEADERS;
|
||||
}
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
|
||||
OUTPUT_ARCH(i386)
|
||||
/*ENTRY(_start)*/
|
||||
|
||||
PHDRS
|
||||
{
|
||||
text PT_LOAD FILEHDR PHDRS ;
|
||||
|
@ -38,7 +39,7 @@ PHDRS
|
|||
}
|
||||
SECTIONS
|
||||
{
|
||||
. = 0x00c01000 + SIZEOF_HEADERS + 12; /* 12==sizeof(l_info) */
|
||||
. = SIZEOF_HEADERS;
|
||||
.text : {
|
||||
*(.text)
|
||||
*(.data)
|
||||
|
|
|
@ -30,9 +30,8 @@
|
|||
|
||||
OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
|
||||
OUTPUT_ARCH(i386)
|
||||
/*ENTRY(_start)*/
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
. = 0x00100000 + SIZEOF_HEADERS + 12; /* 12==sizeof(l_info) */
|
||||
. = SIZEOF_HEADERS;
|
||||
}
|
||||
|
|
|
@ -3,7 +3,6 @@ OUTPUT_ARCH(i386)
|
|||
|
||||
SECTIONS
|
||||
{
|
||||
. = 0x00100000 + SIZEOF_HEADERS + 12; /* 12==sizeof(l_info) */
|
||||
.text : {
|
||||
}
|
||||
ELFMAINX : {
|
||||
|
|
|
@ -1,10 +1,6 @@
|
|||
OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
|
||||
OUTPUT_ARCH(i386)
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
SO_HEAD : {
|
||||
*(SO_HEAD)
|
||||
*(.text)
|
||||
}
|
||||
. = SIZEOF_HEADERS;
|
||||
}
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
|
||||
OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
|
||||
OUTPUT_ARCH(i386)
|
||||
/*ENTRY(_start)*/
|
||||
|
||||
PHDRS
|
||||
{
|
||||
phdr0 PT_LOAD FILEHDR PHDRS FLAGS(5); /* no PF_W: strict SELinux, PaX, grSecurity */
|
||||
|
@ -39,7 +39,7 @@ PHDRS
|
|||
|
||||
SECTIONS
|
||||
{
|
||||
. = 0x00401000 + SIZEOF_HEADERS + 12; /* 12==sizeof(l_info) */
|
||||
. = SIZEOF_HEADERS;
|
||||
.data : { /* put everything together in one Phdr */
|
||||
*(.text)
|
||||
*(.rodata)
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
|
||||
OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
|
||||
OUTPUT_ARCH(i386)
|
||||
/*ENTRY(_start)*/
|
||||
|
||||
PHDRS /* force exactly 1 ELF32_Phdr: in particular, no PT_GNU_STACK */
|
||||
{
|
||||
phdr0 PT_LOAD FILEHDR PHDRS FLAGS(5); /* no PF_W */
|
||||
|
@ -39,7 +39,7 @@ PHDRS /* force exactly 1 ELF32_Phdr: in particular, no PT_GNU_STACK */
|
|||
|
||||
SECTIONS
|
||||
{
|
||||
. = 0x10000 + SIZEOF_HEADERS;
|
||||
. = SIZEOF_HEADERS;
|
||||
.text : { /* put everything together in one Phdr */
|
||||
*(.text)
|
||||
*(.rodata)
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
|
||||
OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
|
||||
OUTPUT_ARCH(i386)
|
||||
/*ENTRY(_start)*/
|
||||
|
||||
PHDRS
|
||||
{
|
||||
phdr0 PT_LOAD FILEHDR PHDRS FLAGS(5); /* no PF_W: strict SELinux, PaX, grSecurity */
|
||||
|
@ -39,8 +39,7 @@ PHDRS
|
|||
|
||||
SECTIONS
|
||||
{
|
||||
/* 0x01400000: avoid 0x01000000 for shell itself being compressed */
|
||||
. = 0x01400000 + SIZEOF_HEADERS;
|
||||
. = SIZEOF_HEADERS;
|
||||
. = ALIGN(0x80);
|
||||
.data : { /* put everything together in one Phdr */
|
||||
*(.text)
|
||||
|
|
|
@ -30,14 +30,15 @@
|
|||
|
||||
OUTPUT_FORMAT("elf32-bigmips", "elf32-bigmips", "elf32-bigmips")
|
||||
OUTPUT_ARCH(mips)
|
||||
/*ENTRY(_start)*/
|
||||
|
||||
PHDRS
|
||||
{
|
||||
text PT_LOAD FILEHDR PHDRS ;
|
||||
data PT_LOAD ;
|
||||
data PT_LOAD ; /* for setting brk(0) */
|
||||
}
|
||||
SECTIONS
|
||||
{
|
||||
. = SIZEOF_HEADERS;
|
||||
.text : {
|
||||
*(.text)
|
||||
*(.data)
|
||||
|
|
|
@ -30,14 +30,15 @@
|
|||
|
||||
OUTPUT_FORMAT("elf32-littlemips", "elf32-bigmips", "elf32-littlemips")
|
||||
OUTPUT_ARCH(mips)
|
||||
/*ENTRY(_start)*/
|
||||
|
||||
PHDRS
|
||||
{
|
||||
text PT_LOAD FILEHDR PHDRS ;
|
||||
data PT_LOAD ;
|
||||
data PT_LOAD ; /* for setting brk(0) */
|
||||
}
|
||||
SECTIONS
|
||||
{
|
||||
. = SIZEOF_HEADERS;
|
||||
.text : {
|
||||
*(.text)
|
||||
*(.data)
|
||||
|
|
|
@ -30,14 +30,15 @@
|
|||
|
||||
OUTPUT_FORMAT("elf32-powerpc", "elf32-powerpc", "elf32-powerpc")
|
||||
OUTPUT_ARCH(powerpc:common)
|
||||
/*ENTRY(_start)*/
|
||||
|
||||
PHDRS
|
||||
{
|
||||
text PT_LOAD FILEHDR PHDRS ;
|
||||
data PT_LOAD ;
|
||||
data PT_LOAD ; /* for setting brk(0) */
|
||||
}
|
||||
SECTIONS
|
||||
{
|
||||
. = SIZEOF_HEADERS;
|
||||
.text : {
|
||||
*(.text)
|
||||
*(.data)
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
|
||||
OUTPUT_FORMAT("elf64-powerpc", "elf64-powerpc", "elf64-powerpc")
|
||||
OUTPUT_ARCH(powerpc:common64)
|
||||
/*ENTRY(_start)*/
|
||||
|
||||
PHDRS
|
||||
{
|
||||
text PT_LOAD FILEHDR PHDRS ;
|
||||
|
@ -38,6 +38,7 @@ PHDRS
|
|||
}
|
||||
SECTIONS
|
||||
{
|
||||
. = SIZEOF_HEADERS;
|
||||
.text : {
|
||||
*(.text)
|
||||
*(.data)
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
|
||||
OUTPUT_FORMAT("elf64-powerpcle", "elf64-powerpcle", "elf64-powerpcle")
|
||||
OUTPUT_ARCH(powerpc:common64)
|
||||
/*ENTRY(_start)*/
|
||||
|
||||
PHDRS
|
||||
{
|
||||
text PT_LOAD FILEHDR PHDRS ;
|
||||
|
@ -38,6 +38,7 @@ PHDRS
|
|||
}
|
||||
SECTIONS
|
||||
{
|
||||
. = SIZEOF_HEADERS;
|
||||
.text : {
|
||||
*(.text)
|
||||
*(.data)
|
||||
|
|
52
src/stub/src/upxfd_linux.c
Normal file
52
src/stub/src/upxfd_linux.c
Normal file
|
@ -0,0 +1,52 @@
|
|||
/* upxfd_create.c -- workaround for 32-bit Android
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
Copyright (C) 2023 John F. Reiser
|
||||
All Rights Reserved.
|
||||
*/
|
||||
|
||||
#include "include/linux.h" // syscall decls; i386 inlines via "int 0x80"
|
||||
#define MFD_EXEC 0x10
|
||||
//#define O_RDWR 2
|
||||
#define O_DIRECTORY 0200000 /* 0x010000 asm-generic/fcntl.h */
|
||||
#define O_TMPFILE 020000000 /* 0x400000 asm-generic/fcntl.h */
|
||||
#define EINVAL 22 /* asm-generic/errno-base.h */
|
||||
// Implementation for Linux-native, where memfd_create
|
||||
// (or /dev/shm) works. Saves space in contrast to
|
||||
// upxfd_android (or Android emulator), which must
|
||||
// fall back to /data/data/$APP_NAME/cache/upxAAA ,
|
||||
// and also must work around inconsistent __NR_ftruncate.
|
||||
// 1. Try memfd_create
|
||||
// 2. Try /dev/shm
|
||||
unsigned long upx_mmap_and_fd_linux( // returns (mapped_addr | (1+ fd))
|
||||
void *ptr // desired address
|
||||
, unsigned datlen // mapped length
|
||||
, char *pathname // 0 ==> get_upxfn_path()
|
||||
)
|
||||
{
|
||||
(void)pathname; // FIXME NYI
|
||||
char str_upx[] = {'u','p','x',0};
|
||||
int fd = memfd_create(str_upx, MFD_EXEC);
|
||||
if (-EINVAL == fd) { // 2024-10-15 MFD_EXEC unknown to ubuntu-20.04
|
||||
fd = memfd_create(str_upx, 0); // try again
|
||||
}
|
||||
if (fd < 0) { // last chance for Linux
|
||||
char str_dev_shm[] = {'/','d','e','v','/','s','h','m', 0};
|
||||
fd = open(str_dev_shm, O_RDWR | O_DIRECTORY | O_TMPFILE, 0700);
|
||||
if (fd < 0) {
|
||||
return (unsigned long)(long)fd;
|
||||
}
|
||||
// Beware: /dev/shm might limit write() to 8KiB at a time.
|
||||
}
|
||||
int rv = ftruncate(fd, datlen);
|
||||
if (rv < 0) {
|
||||
return (unsigned long)(long)rv;
|
||||
}
|
||||
ptr = mmap(ptr, datlen, PROT_READ|PROT_WRITE,
|
||||
(ptr ? MAP_FIXED : 0)|MAP_SHARED, fd, 0);
|
||||
if (PAGE_MASK <= (unsigned long)ptr) {
|
||||
return (unsigned long)ptr; // errno
|
||||
}
|
||||
return (unsigned long)ptr + (1+ (unsigned)fd);
|
||||
}
|
Loading…
Reference in New Issue
Block a user