diff --git a/src/stub/src/arch/i086/app-nasm.pl b/src/stub/src/arch/i086/app-nasm.pl deleted file mode 100644 index a87bb04e..00000000 --- a/src/stub/src/arch/i086/app-nasm.pl +++ /dev/null @@ -1,121 +0,0 @@ -#! /usr/bin/perl -w -# -# app_i386.pl -- assembly preprocessor for upx -# -# This file is part of the UPX executable compressor. -# -# Copyright (C) 1996-2006 Markus Franz Xaver Johannes Oberhumer -# Copyright (C) 1996-2006 Laszlo Molnar -# All Rights Reserved. -# -# UPX and the UCL library are free software; you can redistribute them -# and/or modify them under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. -# If not, write to the Free Software Foundation, Inc., -# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# Markus F.X.J. Oberhumer Laszlo Molnar -# -# - -# -# usage: app.pl infile outfile -# - -$in = shift || die; -$ou = shift || die; - -open (IN,"<$in") or die; -open (OU,">$ou") or die; -binmode IN; -binmode OU; - -@lines = ; - -%labels = (); -$i = 0; -$cs = ""; - -($ilabel = $in) =~ s,^.*[\/\\],,; # get basename -$ilabel =~ s/\W//g; - -# 1st pass -for $line (@lines) -{ - $labels{$1} = "$cs" if ($line =~ /^(\w+):/ && $cs); - if ($line =~ /__([A-Z][A-Z0-9_]+)__/) { - $cs = $1; - # verify the line - if ($line =~ /^[\%\;]ifdef/) { - # ok - } elsif ($line =~ /^([\%\;]\w+)?\s*;/) { - # ok - } else { - print STDERR "$in:$i:warning 1:$line" - } - } - - if ($line =~ /^[\%\;](if|el|endi)/) - { - if ($line =~ /__([A-Z][A-Z0-9_]+)__/) - { - $line=";$line" unless ($line =~ /^\;/); - } - else - { - print STDERR "$in:$i:warning 2:$line"; - } - } - $line =~ s/\.ash/\.asy/ if ($line =~ /^\s*\%include/); - $i++; -} - -$cs = ""; -$i = 0; - -# 2nd pass -for $line (@lines) -{ - if ($line =~ /^\s+(j\w+|loop|call)\s+(\w*)/) - { - $label = $2; - die "$line" if ($label =~ /(\bnear\b|\bshort\b)/); - if (defined $labels{$label}) - { - $ts = $labels{$label}; - if ($ts ne $cs) - { - $line =~ s/$label/J$i$ilabel/; - print OU $line; - print OU "J$i$ilabel:\n"; - print OU "\t\tsection\t.data\n\t\tdd\t"; - print OU "0,J$i$ilabel\n\t\tdb\t\'$ts\',0\n\t\tdd\t$label - S$ts$ilabel\n"; - print OU "\t\tsection\t.text\n\n"; - $line = ""; - } - } - } - - $line = ";$line" if ($line =~ /^\s+align\s/); - - print OU $line; - if ($line =~ /__([A-Z][A-Z0-9_]+)__/) - { - print OU "S$1$ilabel:\n"; - print OU "\t\tsection\t.data\n\t\tdb\t\'$1\',0\n\t\tdd\tS$1$ilabel\n"; - print OU "\t\tsection\t.text\n\n"; - $cs = $1; - } - $i++; -} - -# vi:ts=4:et diff --git a/src/stub/src/arch/i386/app-nasm.pl b/src/stub/src/arch/i386/app-nasm.pl deleted file mode 100644 index a87bb04e..00000000 --- a/src/stub/src/arch/i386/app-nasm.pl +++ /dev/null @@ -1,121 +0,0 @@ -#! /usr/bin/perl -w -# -# app_i386.pl -- assembly preprocessor for upx -# -# This file is part of the UPX executable compressor. -# -# Copyright (C) 1996-2006 Markus Franz Xaver Johannes Oberhumer -# Copyright (C) 1996-2006 Laszlo Molnar -# All Rights Reserved. -# -# UPX and the UCL library are free software; you can redistribute them -# and/or modify them under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. -# If not, write to the Free Software Foundation, Inc., -# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# Markus F.X.J. Oberhumer Laszlo Molnar -# -# - -# -# usage: app.pl infile outfile -# - -$in = shift || die; -$ou = shift || die; - -open (IN,"<$in") or die; -open (OU,">$ou") or die; -binmode IN; -binmode OU; - -@lines = ; - -%labels = (); -$i = 0; -$cs = ""; - -($ilabel = $in) =~ s,^.*[\/\\],,; # get basename -$ilabel =~ s/\W//g; - -# 1st pass -for $line (@lines) -{ - $labels{$1} = "$cs" if ($line =~ /^(\w+):/ && $cs); - if ($line =~ /__([A-Z][A-Z0-9_]+)__/) { - $cs = $1; - # verify the line - if ($line =~ /^[\%\;]ifdef/) { - # ok - } elsif ($line =~ /^([\%\;]\w+)?\s*;/) { - # ok - } else { - print STDERR "$in:$i:warning 1:$line" - } - } - - if ($line =~ /^[\%\;](if|el|endi)/) - { - if ($line =~ /__([A-Z][A-Z0-9_]+)__/) - { - $line=";$line" unless ($line =~ /^\;/); - } - else - { - print STDERR "$in:$i:warning 2:$line"; - } - } - $line =~ s/\.ash/\.asy/ if ($line =~ /^\s*\%include/); - $i++; -} - -$cs = ""; -$i = 0; - -# 2nd pass -for $line (@lines) -{ - if ($line =~ /^\s+(j\w+|loop|call)\s+(\w*)/) - { - $label = $2; - die "$line" if ($label =~ /(\bnear\b|\bshort\b)/); - if (defined $labels{$label}) - { - $ts = $labels{$label}; - if ($ts ne $cs) - { - $line =~ s/$label/J$i$ilabel/; - print OU $line; - print OU "J$i$ilabel:\n"; - print OU "\t\tsection\t.data\n\t\tdd\t"; - print OU "0,J$i$ilabel\n\t\tdb\t\'$ts\',0\n\t\tdd\t$label - S$ts$ilabel\n"; - print OU "\t\tsection\t.text\n\n"; - $line = ""; - } - } - } - - $line = ";$line" if ($line =~ /^\s+align\s/); - - print OU $line; - if ($line =~ /__([A-Z][A-Z0-9_]+)__/) - { - print OU "S$1$ilabel:\n"; - print OU "\t\tsection\t.data\n\t\tdb\t\'$1\',0\n\t\tdd\tS$1$ilabel\n"; - print OU "\t\tsection\t.text\n\n"; - $cs = $1; - } - $i++; -} - -# vi:ts=4:et diff --git a/src/stub/src/arch/i386/upx_itoa.S b/src/stub/src/arch/i386/upx_itoa.S index ecf28055..b157281a 100644 --- a/src/stub/src/arch/i386/upx_itoa.S +++ b/src/stub/src/arch/i386/upx_itoa.S @@ -1,5 +1,5 @@ /* -; upx_itoa.asm -- decimal print; smaller than gcc, and no relocations +; upx_itoa.S -- decimal print; smaller than gcc, and no relocations ; ; This file is part of the UPX executable compressor. ; diff --git a/src/stub/src/arch/i386/upx_itoa.ash b/src/stub/src/arch/i386/upx_itoa.ash deleted file mode 100644 index bdbc320a..00000000 --- a/src/stub/src/arch/i386/upx_itoa.ash +++ /dev/null @@ -1,58 +0,0 @@ -; upx_itoa.asm -- decimal print; smaller than gcc, and no relocations -; -; This file is part of the UPX executable compressor. -; -; Copyright (C) 2002-2006 John F. Reiser -; All Rights Reserved. -; -; UPX and the UCL library are free software; you can redistribute them -; and/or modify them under the terms of the GNU General Public License as -; published by the Free Software Foundation; either version 2 of -; the License, or (at your option) any later version. -; -; This program is distributed in the hope that it will be useful, -; but WITHOUT ANY WARRANTY; without even the implied warranty of -; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -; GNU General Public License for more details. -; -; You should have received a copy of the GNU General Public License -; along with this program; see the file COPYING. -; If not, write to the Free Software Foundation, Inc., -; 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -; -; John F. Reiser -; -; - - - BITS 32 - SECTION .text - CPU 386 - GLOBAL upx_itoa - -upx_itoa: ; char *upx_itoa(eax= unsigned v, edx= char *buf) /* 0<=(int)v */ - push edi ; save register - mov edi,edx ; output ptr - push byte 10 - cld - pop ecx ; radix - call recur - mov [edi],ah ; NUL terminate - xchg eax,edi ; eax= continuation point - pop edi ; restore register - ret -recur: - cdq ; zero extend eax into edx [use "sub edx,edx" if eax < 0 ] - div ecx ; eax=quo, edx=rem; flags are undefined - push edx - test eax,eax - je quo0 - call recur -quo0: - pop eax ; remainder - add al, byte '0' - stosb - ret - - -; vi:ts=8:et:nowrap diff --git a/src/stub/src/arch/m68k/app-a68k.pl b/src/stub/src/arch/m68k/app-a68k.pl deleted file mode 100644 index 161e1a8c..00000000 --- a/src/stub/src/arch/m68k/app-a68k.pl +++ /dev/null @@ -1,155 +0,0 @@ -#! /usr/bin/perl -w -# -# app_m68k.pl -- assembly preprocessor for upx -# -# This file is part of the UPX executable compressor. -# -# Copyright (C) 1996-2006 Markus Franz Xaver Johannes Oberhumer -# Copyright (C) 1996-2006 Laszlo Molnar -# All Rights Reserved. -# -# UPX and the UCL library are free software; you can redistribute them -# and/or modify them under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; see the file COPYING. -# If not, write to the Free Software Foundation, Inc., -# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# Markus F.X.J. Oberhumer Laszlo Molnar -# -# - -# -# usage: app_m68k.pl infile outfile -# - -$in = shift || die; -$ou = shift || die; - -open (IN,"<$in") or die; -open (OU,">$ou") or die; -binmode IN; -binmode OU; - -@lines = ; - -%labels = (); -$i = 0; -$cs = ""; - -($ilabel = $in) =~ s,^.*[\/\\],,; # get basename -$ilabel =~ s/\W//g; - -# 1st pass -for $line (@lines) -{ - $labels{$1} = "$cs" if ($line =~ /^(\w+):/ && $cs); - if ($line =~ /__([A-Z0-9]{8})__/) { - $cs = $1; - # verify the line - if ($line =~ /^[\%\;]ifdef/) { - # ok - } elsif ($line =~ /^([\%\;]\w+)?\s*;/) { - # ok - } else { - print STDERR "$in:$i:warning 1:$line" - } - } - - if ($line =~ /^[\%\;](if|el|endi)/) - { - if ($line =~ /__([A-Z0-9]{8})__/) - { - $line=";$line" unless ($line =~ /^\;/); - } - else - { - print STDERR "$in:$i:warning 2:$line"; - } - } - $line =~ s/\.ash/\.asy/ if ($line =~ /^\s*\%include/); - $i++; -} - -$cs = ""; -$i = 0; - -@data = (); - -# 2nd pass -for $line (@lines) -{ - last if ($line =~ /^\s*end\b/i); - - if ($line =~ /^\s+(b[\w\.]+|db[\w\.]+)\s+(\w*)/) - { - $label = $2; - ##print STDERR "$label $cs\n"; # debug - if (defined $labels{$label}) - { - $ts = $labels{$label}; - if ($ts ne $cs) - { - $line =~ s/$label/J$i$ilabel/; - print OU $line; - print OU "J$i$ilabel:\n"; - $d = "dc.l\t0, J$i$ilabel"; - push(@data, $d); - $d = "dc.b\t'$ts'"; - push(@data, $d); - $d = "dc.l\t$label - S$ts$ilabel"; - push(@data, $d); - $line = ""; - } - } - } - - $line = ";$line" if ($line =~ /^\s+align\b/i); - $line = ";$line" if ($line =~ /^\s+even\b/i); - - if ($line =~ /^;*\s+print_data\b/i) { - &print_data(); - } else { - print OU $line; - } - - if ($line =~ /__([A-Z0-9]{8})__/) - { - print OU "S$1$ilabel:\n"; - $cs = $1; - $d = "dc.b\t'$1'"; - push(@data, $d); - $d = "dc.l\tS$1$ilabel"; - push(@data, $d); - } - $i++; -} - -&print_data(); -print OU "\t\tend\n"; -exit(0); - - -# /*********************************************************************** -# // -# ************************************************************************/ - -sub print_data { - return if ($#data < 0); - ###print OU "\n\n\t\tsection_data\n"; - local ($d); - for $d (@data) { - print OU "\t\t$d\n"; - } - @data = (); -} - -# vi:ts=4:et diff --git a/src/stub/src/i386-linux.elf.execve-main.c b/src/stub/src/i386-linux.elf.execve-main.c index 62142bf0..7fda6363 100644 --- a/src/stub/src/i386-linux.elf.execve-main.c +++ b/src/stub/src/i386-linux.elf.execve-main.c @@ -87,7 +87,7 @@ upx_itoa(unsigned long v, char *buf); // Some versions of gcc optimize the division and/or remainder using // a multiplication by (2**32)/10, and use a relocatable 32-bit address // to reference the constant. We require no relocations because we move -// the code at runtime. See upx_itoa.asm for replacement [also smaller.] +// the code at runtime. See upx_itoa.S for replacement [also smaller.] static char *upx_itoa(unsigned long v, char *buf) { // const unsigned TEN = 10;