From aba09d07c95c417ed58325b0a22a552210780023 Mon Sep 17 00:00:00 2001 From: "Markus F.X.J. Oberhumer" Date: Mon, 26 Jun 2000 16:55:00 +0000 Subject: [PATCH] Make it compile again by adding a more portable setfold.sh script. committer: mfx 962038500 +0000 --- .cvsignore | 0 doc/.cvsignore | 6 +++ patches/.cvsignore | 0 {src/stub => patches}/patch-elfcode.h | 0 src/.cvsignore | 3 ++ src/config_h/.cvsignore | 0 src/stub/.cvsignore | 27 ++++++++++ src/stub/Makefile | 77 +++++++++++---------------- src/stub/l_lx_sep.c | 6 +-- src/stub/scripts/setfold.pl | 6 ++- src/stub/scripts/setfold.sh | 23 ++++++++ 11 files changed, 97 insertions(+), 51 deletions(-) create mode 100644 .cvsignore create mode 100644 doc/.cvsignore create mode 100644 patches/.cvsignore rename {src/stub => patches}/patch-elfcode.h (100%) create mode 100644 src/.cvsignore create mode 100644 src/config_h/.cvsignore create mode 100644 src/stub/.cvsignore create mode 100644 src/stub/scripts/setfold.sh diff --git a/.cvsignore b/.cvsignore new file mode 100644 index 00000000..e69de29b diff --git a/doc/.cvsignore b/doc/.cvsignore new file mode 100644 index 00000000..f6a05f85 --- /dev/null +++ b/doc/.cvsignore @@ -0,0 +1,6 @@ +upx.1 +upx.doc +upx.html +upx.man +upx.ps +upx.tex diff --git a/patches/.cvsignore b/patches/.cvsignore new file mode 100644 index 00000000..e69de29b diff --git a/src/stub/patch-elfcode.h b/patches/patch-elfcode.h similarity index 100% rename from src/stub/patch-elfcode.h rename to patches/patch-elfcode.h diff --git a/src/.cvsignore b/src/.cvsignore new file mode 100644 index 00000000..4afe33d3 --- /dev/null +++ b/src/.cvsignore @@ -0,0 +1,3 @@ +*.upx +upx +upx.map diff --git a/src/config_h/.cvsignore b/src/config_h/.cvsignore new file mode 100644 index 00000000..e69de29b diff --git a/src/stub/.cvsignore b/src/stub/.cvsignore new file mode 100644 index 00000000..84d4ad0a --- /dev/null +++ b/src/stub/.cvsignore @@ -0,0 +1,27 @@ +*.asx +*.asy +*.bin +*.i +*.lst +*.map +*.o +l_com.h +l_djgpp2.h +l_exe.h +l_le_n2b.h +l_le_n2d.h +l_lx_n2b.h +l_lx_n2d.h +l_sh_n2b.h +l_sh_n2d.h +l_sys.h +l_tmt.h +l_t_n2b.h +l_t_n2bs.h +l_t_n2d.h +l_t_n2ds.h +l_w32pe.h +l_wcle.h +stubify.h +upxb +upxd diff --git a/src/stub/Makefile b/src/stub/Makefile index 221321ee..0517bb23 100644 --- a/src/stub/Makefile +++ b/src/stub/Makefile @@ -61,7 +61,7 @@ APP = perl -w scripts/app.pl BIN2H = perl -w scripts/bin2h.pl BRANDELF = perl -w scripts/brandelf.pl O2BIN = perl -w scripts/o2bin.pl -SETFOLD = perl -w scripts/setfold.pl +SETFOLD = /bin/sh scripts/setfold.sh ##STRIPELF = perl -w scripts/stripelf.pl STRIPELF = ./util/sstrip/sstrip @@ -95,14 +95,14 @@ mostlyclean: -rm -f *~ *.bin *.bkp *.i *.lst *.map clean: mostlyclean - -rm -f *.o *.asx *.asy upxb upxd + -rm -f *.o *.asx *.asy distclean: clean # This command is intended for maintainers to use; it deletes files # that may require special tools to rebuild. maintainer-clean: distclean - -rm -f $(STUBS) + -rm -f $(STUBS) upxb upxd ident: all ident *.bin @@ -188,12 +188,9 @@ l_w32pe.h: l_w32pe.asx l_lx_n2b.h: l_lx_exec.c l_xe_n2b.o l_lx_exec86.lds Makefile $(CC_LINUX) -DNRV2B -o $T.o -c $< - ld -T l_lx_exec86.lds -Map l_lx_n2b.map -o $T.bin \ + ld -T l_lx_exec86.lds -Map $T.map -o $T.bin \ l_xe_n2b.o $T.o - fold=`nm $T.bin | grep fold_begin | sed 's/.....\(...\).*/0x\1/'`; \ - objcopy -S -R .comment -R .note $T.bin; \ - $(SETFOLD) $T.bin $$fold - $(STRIPELF) $T.bin + $(SETFOLD) $T.bin $(BRANDELF) $T.bin $(BIN2H) $T.bin linux_i386exec_nrv2b_loader $@ @@ -201,10 +198,7 @@ l_le_n2b.h: l_lx_elf.c l_6e_n2b.o l_lx_elf86.lds $(CC_LINUX) -DNRV2B -o $T.o -c $< ld -T l_lx_elf86.lds -Map $T.map -o $T.bin \ l_6e_n2b.o $T.o - fold=`nm $T.bin | grep fold_begin | sed 's/.....\(...\).*/0x\1/'`; \ - objcopy -S -R .comment -R .note $T.bin; \ - $(SETFOLD) $T.bin $$fold - $(STRIPELF) $T.bin + $(SETFOLD) $T.bin $(BRANDELF) $T.bin $(BIN2H) $T.bin linux_i386elf_nrv2b_loader $@ @@ -212,10 +206,7 @@ l_sh_n2b.h: l_lx_sh.c l_6h_n2b.o l_lx_sh86.lds $(CC_LINUX) -DNRV2B -o $T.o -c $< ld -T l_lx_sh86.lds -Map $T.map -o $T.bin \ l_6h_n2b.o $T.o - fold=`nm $T.bin | grep fold_begin | sed 's/.....\(...\).*/0x\1/'`; \ - objcopy -S -R .comment -R .note $T.bin; \ - $(SETFOLD) $T.bin $$fold - $(STRIPELF) $T.bin + $(SETFOLD) $T.bin $(BRANDELF) $T.bin $(BIN2H) $T.bin linux_i386sh_nrv2b_loader $@ @@ -233,10 +224,7 @@ l_lx_n2d.h: l_lx_exec.c l_xe_n2d.o l_lx_exec86.lds $(CC_LINUX) -DNRV2D -o $T.o -c $< ld -T l_lx_exec86.lds -Map $T.map -o $T.bin \ l_xe_n2d.o $T.o - fold=`nm $T.bin | grep fold_begin | sed 's/.....\(...\).*/0x\1/'`; \ - objcopy -S -R .comment -R .note $T.bin; \ - $(SETFOLD) $T.bin $$fold - $(STRIPELF) $T.bin + $(SETFOLD) $T.bin $(BRANDELF) $T.bin $(BIN2H) $T.bin linux_i386exec_nrv2d_loader $@ @@ -244,10 +232,7 @@ l_le_n2d.h: l_lx_elf.c l_6e_n2d.o l_lx_elf86.lds $(CC_LINUX) -DNRV2D -o $T.o -c $< ld -T l_lx_elf86.lds -Map $T.map -o $T.bin \ l_6e_n2d.o $T.o - fold=`nm $T.bin | grep fold_begin | sed 's/.....\(...\).*/0x\1/'`; \ - objcopy -S -R .comment -R .note $T.bin; \ - $(SETFOLD) $T.bin $$fold - $(STRIPELF) $T.bin + $(SETFOLD) $T.bin $(BRANDELF) $T.bin $(BIN2H) $T.bin linux_i386elf_nrv2d_loader $@ @@ -255,10 +240,7 @@ l_sh_n2d.h: l_lx_sh.c l_6h_n2d.o l_lx_sh86.lds $(CC_LINUX) -DNRV2D -o $T.o -c $< ld -T l_lx_sh86.lds -Map $T.map -o $T.bin \ l_6h_n2d.o $T.o - fold=`nm $T.bin | grep fold_begin | sed 's/.....\(...\).*/0x\1/'`; \ - objcopy -S -R .comment -R .note $T.bin; \ - $(SETFOLD) $T.bin $$fold - $(STRIPELF) $T.bin + $(SETFOLD) $T.bin $(BRANDELF) $T.bin $(BIN2H) $T.bin linux_i386sh_nrv2d_loader $@ @@ -273,20 +255,21 @@ l_6h_n2d.o: l_lx_sh86.asm l_lx_sep.o: l_lx_sep.c $(CC_LINUX) -c $< - + upxb: l_lx_sep.o l_lx_sep86.asm - $(NASM) -i$(UCL_I386)/ -f elf -dNRV2B -o upxb.o l_lx_sep86.asm - ld -T l_lx_sep86.lds -Map upxb.map -o upxb upxb.o l_lx_sep.o - objcopy -S -R .comment -R .note upxb - $(STRIPELF) upxb - $(BRANDELF) upxb + $(NASM) -i$(UCL_I386)/ -f elf -dNRV2B -o $T.o l_lx_sep86.asm + ld -T l_lx_sep86.lds -Map $T.map -o $@ $T.o l_lx_sep.o + objcopy -S -R .comment -R .note $@ + $(STRIPELF) $@ + $(BRANDELF) $@ upxd: l_lx_sep.o l_lx_sep86.asm - $(NASM) -i$(UCL_I386)/ -f elf -dNRV2D -o upxd.o l_lx_sep86.asm - ld -T l_lx_sep86.lds -Map upxd.map -o upxd upxd.o l_lx_sep.o - objcopy -S -R .comment -R .note upxd - $(STRIPELF) upxd - $(BRANDELF) upxd + $(NASM) -i$(UCL_I386)/ -f elf -dNRV2D -o $T.o l_lx_sep86.asm + ld -T l_lx_sep86.lds -Map $T.map -o $@ $T.o l_lx_sep.o + objcopy -S -R .comment -R .note $@ + $(STRIPELF) $@ + $(BRANDELF) $@ + # /*********************************************************************** # // dependencies @@ -316,14 +299,14 @@ l_xe_n2d.o: n2d_d32.ash $(DEPS1) l_6e_n2d.o: n2d_d32.ash $(DEPS1) l_6h_n2d.o: n2d_d32.ash $(DEPS1) -l_lx_n2b.h: linux.hh -l_lx_n2d.h: linux.hh -l_le_n2b.h: linux.hh -l_le_n2d.h: linux.hh -l_sh_n2b.h: linux.hh -l_sh_n2d.h: linux.hh -upxb: linux.hh -upxd: linux.hh +l_lx_n2b.h: linux.hh +l_lx_n2d.h: linux.hh +l_le_n2b.h: linux.hh +l_le_n2d.h: linux.hh +l_sh_n2b.h: linux.hh +l_sh_n2d.h: linux.hh +upxb: linux.hh +upxd: linux.hh .NOEXPORT: diff --git a/src/stub/l_lx_sep.c b/src/stub/l_lx_sep.c index 40049ddd..f73ec4ce 100644 --- a/src/stub/l_lx_sep.c +++ b/src/stub/l_lx_sep.c @@ -270,7 +270,7 @@ do_xmap(int fdi, Elf32_Ehdr const *const ehdr, f_expand *const f_decompress, (char const *)ehdr); unsigned long base = (ET_DYN==ehdr->e_type) ? 0x40000000 : 0; int j; - for (j=0; j < ehdr->e_phnum; ++phdr, ++j) + for (j=0; j < ehdr->e_phnum; ++phdr, ++j) if (PT_PHDR==phdr->p_type) { a->a_un.a_val = phdr->p_vaddr; } @@ -340,7 +340,7 @@ ERR_LAB do_brk(haddr); } } - if (close(fdi) != 0) + if (close(fdi) != 0) err_exit(11); if (ET_DYN==ehdr->e_type) { return ehdr->e_entry + base; @@ -402,7 +402,7 @@ void *upx_main( // ----- Step 4: decompress blocks ----- // - // Get Elf32_Ehdr. First set xo.size = size[0] = uncompressed size + // Get Elf32_Ehdr. First set xo.size = size[0] = uncompressed size if (0!=xread(fdi, (void *)&xo, sizeof(xo))) { err_exit(15); } diff --git a/src/stub/scripts/setfold.pl b/src/stub/scripts/setfold.pl index 5424d67b..be4fc9c6 100644 --- a/src/stub/scripts/setfold.pl +++ b/src/stub/scripts/setfold.pl @@ -29,7 +29,11 @@ $fname = shift || die; sysopen (FH,$fname,2) || die; binmode FH; -$val = oct shift || die; +$val = shift || die "$val"; +###print STDERR "$val\n"; +$val = oct($val); # acutally hex() +###print STDERR "$val\n"; +die unless $val; $num = pack("V", $val); # 0x34 = sizeof(Elf32_Ehdr) diff --git a/src/stub/scripts/setfold.sh b/src/stub/scripts/setfold.sh new file mode 100644 index 00000000..cad0dd35 --- /dev/null +++ b/src/stub/scripts/setfold.sh @@ -0,0 +1,23 @@ +#!/bin/sh +set -e + +file="$1" + +# get directory of this script +bindir=`echo "$0" | sed -e 's|[^/][^/]*$||'` +bindir=`cd "$bindir" && pwd` + +sstrip="$bindir/../util/sstrip/sstrip" + +# get address of symbol "fold_begin" +fold=`nm -f bsd "$file" | grep fold_begin | sed 's/^0*\([0-9a-fA-F]*\).*/0x\1/'` + +# strip +objcopy -S -R .comment -R .note "$file" +"$sstrip" "$file" + +# patch address +perl -w "$bindir/setfold.pl" "$file" "$fold" + +exit 0 +