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 \
|
arm.v4a-linux.elf-entry.h : $(srcdir)/src/arm.v4a-linux.elf-entry.lds \
|
||||||
$(srcdir)/src/$$T.S \
|
$(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
|
$(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 \
|
multiarch-ld-2.17 -r --format=elf32-littlearm -Map tmp/$T.map -o tmp/$T.bin \
|
||||||
-T src/arm.v4a-linux.elf-entry.lds \
|
-T src/arm.v4a-linux.elf-entry.lds \
|
||||||
tmp/$T.o \
|
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,f-embed_objinfo_without_xstrip,tmp/$T.bin)
|
||||||
$(call tc,bin2h) tmp/$T.bin $@
|
$(call tc,bin2h) tmp/$T.bin $@
|
||||||
|
|
||||||
arm.v4a-linux.elf-so_entry.h : src/arm.v4a-linux.elf-so_entry.lds \
|
arm.v4a-linux.elf-so_entry.h : src/arm.v4a-linux.elf-so_entry.lds \
|
||||||
$(srcdir)/src/$$T.S \
|
$(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
|
$(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 \
|
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 \
|
-T src/arm.v4a-linux.elf-so_entry.lds \
|
||||||
tmp/$T.o \
|
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,f-embed_objinfo_without_xstrip,tmp/$T.bin)
|
||||||
$(call tc,bin2h) 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,objcopy) -R .comment $@
|
||||||
$(call tc,objdump) -Dr $(tc_objdump_disasm_options) $@ | $(RTRIM) > $@.disasm
|
$(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 \
|
arm.v4a-linux.elf-fold.h : $(srcdir)/src/$$T.lds \
|
||||||
tmp/$$T.o \
|
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 \
|
||||||
tmp/arm.v4a-expand.o \
|
tmp/arm.v4a-expand.o \
|
||||||
tmp/arm.v4a-linux.elf-main2.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
|
$(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 \
|
arm.v4a-linux.elf-so_fold.h : $(srcdir)/src/$$T.lds \
|
||||||
tmp/$$T.o \
|
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 \
|
||||||
tmp/arm.v4a-expand.o \
|
tmp/arm.v4a-expand.o \
|
||||||
tmp/arm.v4a-linux.elf-so_main.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
|
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 \
|
arm.v5a-linux.elf-entry.h : $(srcdir)/src/arm.v5a-linux.elf-entry.lds \
|
||||||
$(srcdir)/src/$$T.S \
|
$(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
|
$(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 \
|
multiarch-ld-2.17 -r --format=elf32-littlearm -Map tmp/$T.map -o tmp/$T.bin \
|
||||||
-T src/arm.v5a-linux.elf-entry.lds \
|
-T src/arm.v5a-linux.elf-entry.lds \
|
||||||
tmp/$T.o \
|
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,f-embed_objinfo_without_xstrip,tmp/$T.bin)
|
||||||
$(call tc,bin2h) tmp/$T.bin $@
|
$(call tc,bin2h) tmp/$T.bin $@
|
||||||
|
|
||||||
arm.v5a-linux.elf-so_entry.h : src/arm.v5a-linux.elf-so_entry.lds \
|
arm.v5a-linux.elf-so_entry.h : src/arm.v5a-linux.elf-so_entry.lds \
|
||||||
$(srcdir)/src/$$T.S \
|
$(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
|
$(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 \
|
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 \
|
-T src/arm.v5a-linux.elf-so_entry.lds \
|
||||||
tmp/$T.o \
|
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,f-embed_objinfo_without_xstrip,tmp/$T.bin)
|
||||||
$(call tc,bin2h) 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,objcopy) -R .comment $@
|
||||||
$(call tc,objdump) -Dr $(tc_objdump_disasm_options) $@ | $(RTRIM) > $@.disasm
|
$(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 \
|
arm.v5a-linux.elf-fold.h : $(srcdir)/src/$$T.lds \
|
||||||
tmp/$$T.o \
|
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 \
|
||||||
tmp/arm.v5a-expand.o \
|
tmp/arm.v5a-expand.o \
|
||||||
tmp/arm.v5a-linux.elf-main2.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
|
$(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 \
|
arm.v5a-linux.elf-so_fold.h : $(srcdir)/src/$$T.lds \
|
||||||
tmp/$$T.o \
|
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 \
|
||||||
tmp/arm.v5a-expand.o \
|
tmp/arm.v5a-expand.o \
|
||||||
tmp/arm.v5a-linux.elf-so_main.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
|
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 \
|
armeb.v4a-linux.elf-entry.h : $(srcdir)/src/armeb.v4a-linux.elf-entry.lds \
|
||||||
$(srcdir)/src/$$T.S \
|
$(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
|
$(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 \
|
multiarch-ld-2.17 -r --format=elf32-bigarm -Map tmp/$T.map -o tmp/$T.bin \
|
||||||
-T src/armeb.v4a-linux.elf-entry.lds \
|
-T src/armeb.v4a-linux.elf-entry.lds \
|
||||||
tmp/$T.o \
|
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,f-embed_objinfo_without_xstrip,tmp/$T.bin)
|
||||||
$(call tc,bin2h) tmp/$T.bin $@
|
$(call tc,bin2h) tmp/$T.bin $@
|
||||||
|
|
||||||
armeb.v4a-linux.elf-fold.h : $(srcdir)/src/$$T.lds \
|
armeb.v4a-linux.elf-fold.h : $(srcdir)/src/$$T.lds \
|
||||||
tmp/$$T.o \
|
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 \
|
||||||
tmp/armeb.v4a-expand.o \
|
tmp/armeb.v4a-expand.o \
|
||||||
tmp/armeb.v4a-linux.elf-main2.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
|
$(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,objcopy) -R .comment $@
|
||||||
$(call tc,objdump) -Dr $(tc_objdump_disasm_options) $@ | $(RTRIM) > $@.disasm
|
$(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
|
tmp/armeb.v4a-expand.o: $(srcdir)/src/$$T.S
|
||||||
$(call tc,gcc) -c $< -o $@
|
$(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 \
|
i386-linux.elf-entry.h : $(srcdir)/src/i386-linux.elf-entry.lds \
|
||||||
$(srcdir)/src/$$T.S \
|
$(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
|
$(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 \
|
multiarch-ld-2.17 -r -Map tmp/$T.map -o tmp/$T.bin \
|
||||||
-T src/i386-linux.elf-entry.lds \
|
-T src/i386-linux.elf-entry.lds \
|
||||||
tmp/$T.o \
|
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,f-embed_objinfo_without_xstrip,tmp/$T.bin)
|
||||||
$(call tc,bin2h) tmp/$T.bin $@
|
$(call tc,bin2h) tmp/$T.bin $@
|
||||||
|
|
||||||
i386-linux.elf-so_entry.h : $(srcdir)/src/i386-linux.elf-so_entry.lds \
|
i386-linux.elf-so_entry.h : $(srcdir)/src/i386-linux.elf-so_entry.lds \
|
||||||
$(srcdir)/src/$$T.S \
|
$(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
|
$(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 \
|
multiarch-ld-2.17 -r -Map tmp/$T.map -o tmp/$T.bin \
|
||||||
-T src/i386-linux.elf-so_entry.lds \
|
-T src/i386-linux.elf-so_entry.lds \
|
||||||
tmp/$T.o \
|
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,f-embed_objinfo_without_xstrip,tmp/$T.bin)
|
||||||
$(call tc,bin2h) tmp/$T.bin $@
|
$(call tc,bin2h) tmp/$T.bin $@
|
||||||
|
|
||||||
tmp/i386-linux.elf-upxfd_android.o : $(srcdir)/src/upxfd_android.c
|
tmp/i386-linux.elf-upxfd_android.o : $(srcdir)/src/upxfd_android.c
|
||||||
$(call tc,gcc) -c -O $< -o $@
|
$(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
|
$(call tc,objdump) -Dr $(tc_objdump_disasm_options) $@ | $(RTRIM) > $@.disasm
|
||||||
|
|
||||||
i386-linux.elf-fold.h : $(srcdir)/src/$$T.lds \
|
i386-linux.elf-fold.h : $(srcdir)/src/$$T.lds \
|
||||||
tmp/$$T.o \
|
tmp/$$T.o \
|
||||||
tmp/i386-linux.elf-upxfd_android.o \
|
tmp/i386-linux.elf-upxfd_android.o \
|
||||||
|
tmp/i386-linux.elf-upxfd_linux.o \
|
||||||
tmp/i386-expand.o \
|
tmp/i386-expand.o \
|
||||||
tmp/i386-linux.elf-main2.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
|
$(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 \
|
i386-linux.elf-so_fold.h : $(srcdir)/src/$$T.lds \
|
||||||
tmp/$$T.o \
|
tmp/$$T.o \
|
||||||
tmp/i386-linux.elf-upxfd_android.o \
|
tmp/i386-linux.elf-upxfd_android.o \
|
||||||
|
tmp/i386-linux.elf-upxfd_linux.o \
|
||||||
tmp/i386-expand.o \
|
tmp/i386-expand.o \
|
||||||
tmp/i386-linux.elf-so_main.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
|
$(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_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64")
|
||||||
OUTPUT_ARCH(i386:x86-64)
|
OUTPUT_ARCH(i386:x86-64)
|
||||||
/*ENTRY(_start)*/
|
|
||||||
|
|
||||||
SECTIONS
|
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_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64")
|
||||||
OUTPUT_ARCH(i386: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
|
SECTIONS
|
||||||
{
|
{
|
||||||
. = 0x00100000 + SIZEOF_HEADERS + 12; /* 12==sizeof(l_info) */
|
. = SIZEOF_HEADERS;
|
||||||
/*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)
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,7 +3,6 @@ OUTPUT_ARCH(arm)
|
|||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
. = 0x00100000 + SIZEOF_HEADERS + 12; /* 12==sizeof(l_info) */
|
|
||||||
.text : {
|
.text : {
|
||||||
}
|
}
|
||||||
ELFMAINX : {
|
ELFMAINX : {
|
||||||
|
|||||||
@ -33,5 +33,5 @@ OUTPUT_ARCH(arm)
|
|||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
. = 0x00100000 + SIZEOF_HEADERS + 12; /* 12==sizeof(l_info) */
|
. = SIZEOF_HEADERS;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,7 +3,6 @@ OUTPUT_ARCH(arm)
|
|||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
. = 0x00100000 + SIZEOF_HEADERS + 12; /* 12==sizeof(l_info) */
|
|
||||||
.text : {
|
.text : {
|
||||||
}
|
}
|
||||||
ELFMAINX : {
|
ELFMAINX : {
|
||||||
|
|||||||
@ -1,10 +1,7 @@
|
|||||||
OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm")
|
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
|
||||||
OUTPUT_ARCH(arm)
|
OUTPUT_ARCH(arm)
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
SO_HEAD : {
|
. = SIZEOF_HEADERS;
|
||||||
*(SO_HEAD)
|
|
||||||
*(.text)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,7 +3,6 @@ OUTPUT_ARCH(arm)
|
|||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
. = 0x00100000 + SIZEOF_HEADERS + 12; /* 12==sizeof(l_info) */
|
|
||||||
.text : {
|
.text : {
|
||||||
}
|
}
|
||||||
ELFMAINX : {
|
ELFMAINX : {
|
||||||
|
|||||||
@ -30,19 +30,8 @@
|
|||||||
|
|
||||||
OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm")
|
OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm")
|
||||||
OUTPUT_ARCH(arm)
|
OUTPUT_ARCH(arm)
|
||||||
/*ENTRY(_start)*/
|
|
||||||
PHDRS
|
|
||||||
{
|
|
||||||
text PT_LOAD FILEHDR PHDRS ;
|
|
||||||
data PT_LOAD ; /* for setting brk(0) */
|
|
||||||
}
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
/* . = 0x00100000 + SIZEOF_HEADERS + 12; /* 12==sizeof(l_info) */
|
. = SIZEOF_HEADERS;
|
||||||
.text : {
|
|
||||||
*(.text)
|
|
||||||
*(.data)
|
|
||||||
} : text
|
|
||||||
.data : {
|
|
||||||
} : data
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,7 +3,6 @@ OUTPUT_ARCH(arm)
|
|||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
. = 0x00100000 + SIZEOF_HEADERS + 12; /* 12==sizeof(l_info) */
|
|
||||||
.text : {
|
.text : {
|
||||||
}
|
}
|
||||||
ELFMAINX : {
|
ELFMAINX : {
|
||||||
|
|||||||
@ -1,10 +1,7 @@
|
|||||||
OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm")
|
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
|
||||||
OUTPUT_ARCH(arm)
|
OUTPUT_ARCH(arm)
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
SO_HEAD : {
|
. = SIZEOF_HEADERS;
|
||||||
*(SO_HEAD)
|
|
||||||
*(.text)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -30,7 +30,19 @@
|
|||||||
|
|
||||||
OUTPUT_FORMAT("elf64-littleaarch64", "elf64-bigaarch64", "elf64-littleaarch64")
|
OUTPUT_FORMAT("elf64-littleaarch64", "elf64-bigaarch64", "elf64-littleaarch64")
|
||||||
OUTPUT_ARCH(aarch64)
|
OUTPUT_ARCH(aarch64)
|
||||||
|
|
||||||
|
PHDRS
|
||||||
|
{
|
||||||
|
text PT_LOAD FILEHDR PHDRS FLAGS ( 5 ) ; /* r-x (no -w-) */
|
||||||
|
data PT_LOAD ; /* for setting brk(0) */
|
||||||
|
}
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
. = SIZEOF_HEADERS + 12 ;
|
. = SIZEOF_HEADERS;
|
||||||
|
.text : {
|
||||||
|
*(.text)
|
||||||
|
*(.data)
|
||||||
|
} : text
|
||||||
|
.data : {
|
||||||
|
} : data
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,5 +3,5 @@ OUTPUT_ARCH(aarch64)
|
|||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
. = SIZEOF_HEADERS + 12; /* 12==sizeof(l_info) */
|
. = SIZEOF_HEADERS;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,7 +3,6 @@ OUTPUT_ARCH(arm)
|
|||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
. = 0x00100000 + SIZEOF_HEADERS + 12; /* 12==sizeof(l_info) */
|
|
||||||
.text : {
|
.text : {
|
||||||
}
|
}
|
||||||
ELFMAINX : {
|
ELFMAINX : {
|
||||||
|
|||||||
@ -28,10 +28,10 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
OUTPUT_FORMAT("elf32-bigarm", "elf32-bigarm", "elf32-littlearm")
|
OUTPUT_FORMAT("elf32-bigarm", "elf32-bigarm", "elf32-bigarm")
|
||||||
OUTPUT_ARCH(arm)
|
OUTPUT_ARCH(arm)
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
. = 0x00100000 + SIZEOF_HEADERS + 12; /* 12==sizeof(l_info) */
|
. = SIZEOF_HEADERS;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -31,6 +31,7 @@
|
|||||||
OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
|
OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
|
||||||
OUTPUT_ARCH(i386)
|
OUTPUT_ARCH(i386)
|
||||||
/*ENTRY(_start)*/
|
/*ENTRY(_start)*/
|
||||||
|
|
||||||
PHDRS
|
PHDRS
|
||||||
{
|
{
|
||||||
text PT_LOAD FILEHDR PHDRS ;
|
text PT_LOAD FILEHDR PHDRS ;
|
||||||
@ -38,7 +39,7 @@ PHDRS
|
|||||||
}
|
}
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
. = 0x00c01000 + SIZEOF_HEADERS + 12; /* 12==sizeof(l_info) */
|
. = SIZEOF_HEADERS;
|
||||||
.text : {
|
.text : {
|
||||||
*(.text)
|
*(.text)
|
||||||
*(.data)
|
*(.data)
|
||||||
|
|||||||
@ -30,9 +30,8 @@
|
|||||||
|
|
||||||
OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
|
OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
|
||||||
OUTPUT_ARCH(i386)
|
OUTPUT_ARCH(i386)
|
||||||
/*ENTRY(_start)*/
|
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
. = 0x00100000 + SIZEOF_HEADERS + 12; /* 12==sizeof(l_info) */
|
. = SIZEOF_HEADERS;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,7 +3,6 @@ OUTPUT_ARCH(i386)
|
|||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
. = 0x00100000 + SIZEOF_HEADERS + 12; /* 12==sizeof(l_info) */
|
|
||||||
.text : {
|
.text : {
|
||||||
}
|
}
|
||||||
ELFMAINX : {
|
ELFMAINX : {
|
||||||
|
|||||||
@ -1,10 +1,6 @@
|
|||||||
OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
|
OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
|
||||||
OUTPUT_ARCH(i386)
|
OUTPUT_ARCH(i386)
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
SO_HEAD : {
|
. = SIZEOF_HEADERS;
|
||||||
*(SO_HEAD)
|
|
||||||
*(.text)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
|
OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
|
||||||
OUTPUT_ARCH(i386)
|
OUTPUT_ARCH(i386)
|
||||||
/*ENTRY(_start)*/
|
|
||||||
PHDRS
|
PHDRS
|
||||||
{
|
{
|
||||||
phdr0 PT_LOAD FILEHDR PHDRS FLAGS(5); /* no PF_W: strict SELinux, PaX, grSecurity */
|
phdr0 PT_LOAD FILEHDR PHDRS FLAGS(5); /* no PF_W: strict SELinux, PaX, grSecurity */
|
||||||
@ -39,7 +39,7 @@ PHDRS
|
|||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
. = 0x00401000 + SIZEOF_HEADERS + 12; /* 12==sizeof(l_info) */
|
. = SIZEOF_HEADERS;
|
||||||
.data : { /* put everything together in one Phdr */
|
.data : { /* put everything together in one Phdr */
|
||||||
*(.text)
|
*(.text)
|
||||||
*(.rodata)
|
*(.rodata)
|
||||||
|
|||||||
@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
|
OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
|
||||||
OUTPUT_ARCH(i386)
|
OUTPUT_ARCH(i386)
|
||||||
/*ENTRY(_start)*/
|
|
||||||
PHDRS /* force exactly 1 ELF32_Phdr: in particular, no PT_GNU_STACK */
|
PHDRS /* force exactly 1 ELF32_Phdr: in particular, no PT_GNU_STACK */
|
||||||
{
|
{
|
||||||
phdr0 PT_LOAD FILEHDR PHDRS FLAGS(5); /* no PF_W */
|
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
|
SECTIONS
|
||||||
{
|
{
|
||||||
. = 0x10000 + SIZEOF_HEADERS;
|
. = SIZEOF_HEADERS;
|
||||||
.text : { /* put everything together in one Phdr */
|
.text : { /* put everything together in one Phdr */
|
||||||
*(.text)
|
*(.text)
|
||||||
*(.rodata)
|
*(.rodata)
|
||||||
|
|||||||
@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
|
OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
|
||||||
OUTPUT_ARCH(i386)
|
OUTPUT_ARCH(i386)
|
||||||
/*ENTRY(_start)*/
|
|
||||||
PHDRS
|
PHDRS
|
||||||
{
|
{
|
||||||
phdr0 PT_LOAD FILEHDR PHDRS FLAGS(5); /* no PF_W: strict SELinux, PaX, grSecurity */
|
phdr0 PT_LOAD FILEHDR PHDRS FLAGS(5); /* no PF_W: strict SELinux, PaX, grSecurity */
|
||||||
@ -39,8 +39,7 @@ PHDRS
|
|||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
/* 0x01400000: avoid 0x01000000 for shell itself being compressed */
|
. = SIZEOF_HEADERS;
|
||||||
. = 0x01400000 + SIZEOF_HEADERS;
|
|
||||||
. = ALIGN(0x80);
|
. = ALIGN(0x80);
|
||||||
.data : { /* put everything together in one Phdr */
|
.data : { /* put everything together in one Phdr */
|
||||||
*(.text)
|
*(.text)
|
||||||
|
|||||||
@ -30,14 +30,15 @@
|
|||||||
|
|
||||||
OUTPUT_FORMAT("elf32-bigmips", "elf32-bigmips", "elf32-bigmips")
|
OUTPUT_FORMAT("elf32-bigmips", "elf32-bigmips", "elf32-bigmips")
|
||||||
OUTPUT_ARCH(mips)
|
OUTPUT_ARCH(mips)
|
||||||
/*ENTRY(_start)*/
|
|
||||||
PHDRS
|
PHDRS
|
||||||
{
|
{
|
||||||
text PT_LOAD FILEHDR PHDRS ;
|
text PT_LOAD FILEHDR PHDRS ;
|
||||||
data PT_LOAD ;
|
data PT_LOAD ; /* for setting brk(0) */
|
||||||
}
|
}
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
|
. = SIZEOF_HEADERS;
|
||||||
.text : {
|
.text : {
|
||||||
*(.text)
|
*(.text)
|
||||||
*(.data)
|
*(.data)
|
||||||
|
|||||||
@ -30,14 +30,15 @@
|
|||||||
|
|
||||||
OUTPUT_FORMAT("elf32-littlemips", "elf32-bigmips", "elf32-littlemips")
|
OUTPUT_FORMAT("elf32-littlemips", "elf32-bigmips", "elf32-littlemips")
|
||||||
OUTPUT_ARCH(mips)
|
OUTPUT_ARCH(mips)
|
||||||
/*ENTRY(_start)*/
|
|
||||||
PHDRS
|
PHDRS
|
||||||
{
|
{
|
||||||
text PT_LOAD FILEHDR PHDRS ;
|
text PT_LOAD FILEHDR PHDRS ;
|
||||||
data PT_LOAD ;
|
data PT_LOAD ; /* for setting brk(0) */
|
||||||
}
|
}
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
|
. = SIZEOF_HEADERS;
|
||||||
.text : {
|
.text : {
|
||||||
*(.text)
|
*(.text)
|
||||||
*(.data)
|
*(.data)
|
||||||
|
|||||||
@ -30,14 +30,15 @@
|
|||||||
|
|
||||||
OUTPUT_FORMAT("elf32-powerpc", "elf32-powerpc", "elf32-powerpc")
|
OUTPUT_FORMAT("elf32-powerpc", "elf32-powerpc", "elf32-powerpc")
|
||||||
OUTPUT_ARCH(powerpc:common)
|
OUTPUT_ARCH(powerpc:common)
|
||||||
/*ENTRY(_start)*/
|
|
||||||
PHDRS
|
PHDRS
|
||||||
{
|
{
|
||||||
text PT_LOAD FILEHDR PHDRS ;
|
text PT_LOAD FILEHDR PHDRS ;
|
||||||
data PT_LOAD ;
|
data PT_LOAD ; /* for setting brk(0) */
|
||||||
}
|
}
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
|
. = SIZEOF_HEADERS;
|
||||||
.text : {
|
.text : {
|
||||||
*(.text)
|
*(.text)
|
||||||
*(.data)
|
*(.data)
|
||||||
|
|||||||
@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
OUTPUT_FORMAT("elf64-powerpc", "elf64-powerpc", "elf64-powerpc")
|
OUTPUT_FORMAT("elf64-powerpc", "elf64-powerpc", "elf64-powerpc")
|
||||||
OUTPUT_ARCH(powerpc:common64)
|
OUTPUT_ARCH(powerpc:common64)
|
||||||
/*ENTRY(_start)*/
|
|
||||||
PHDRS
|
PHDRS
|
||||||
{
|
{
|
||||||
text PT_LOAD FILEHDR PHDRS ;
|
text PT_LOAD FILEHDR PHDRS ;
|
||||||
@ -38,6 +38,7 @@ PHDRS
|
|||||||
}
|
}
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
|
. = SIZEOF_HEADERS;
|
||||||
.text : {
|
.text : {
|
||||||
*(.text)
|
*(.text)
|
||||||
*(.data)
|
*(.data)
|
||||||
|
|||||||
@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
OUTPUT_FORMAT("elf64-powerpcle", "elf64-powerpcle", "elf64-powerpcle")
|
OUTPUT_FORMAT("elf64-powerpcle", "elf64-powerpcle", "elf64-powerpcle")
|
||||||
OUTPUT_ARCH(powerpc:common64)
|
OUTPUT_ARCH(powerpc:common64)
|
||||||
/*ENTRY(_start)*/
|
|
||||||
PHDRS
|
PHDRS
|
||||||
{
|
{
|
||||||
text PT_LOAD FILEHDR PHDRS ;
|
text PT_LOAD FILEHDR PHDRS ;
|
||||||
@ -38,6 +38,7 @@ PHDRS
|
|||||||
}
|
}
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
|
. = SIZEOF_HEADERS;
|
||||||
.text : {
|
.text : {
|
||||||
*(.text)
|
*(.text)
|
||||||
*(.data)
|
*(.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