sub main'asm_init
{
- ($type,$fn)=@_;
+ ($type,$fn,$i386)=@_;
$filename=$fn;
- if ($ARGV[$#ARGV] eq "386")
- {
- $i386=1;
- }
-
- $cpp=$sol=$aout=$win32=0;
+ $elf=$cpp=$coff=$aout=$win32=$netware=$mwerks=0;
if ( ($type eq "elf"))
- { require "x86unix.pl"; }
+ { $elf=1; require "x86unix.pl"; }
elsif ( ($type eq "a.out"))
{ $aout=1; require "x86unix.pl"; }
- elsif ( ($type eq "sol"))
- { $sol=1; require "x86unix.pl"; }
+ elsif ( ($type eq "coff" or $type eq "gaswin"))
+ { $coff=1; require "x86unix.pl"; }
elsif ( ($type eq "cpp"))
{ $cpp=1; require "x86unix.pl"; }
elsif ( ($type eq "win32"))
{ $win32=1; require "x86ms.pl"; }
+ elsif ( ($type eq "win32n"))
+ { $win32=1; require "x86nasm.pl"; }
+ elsif ( ($type eq "nw-nasm"))
+ { $netware=1; require "x86nasm.pl"; }
+ elsif ( ($type eq "nw-mwasm"))
+ { $netware=1; $mwerks=1; require "x86nasm.pl"; }
else
{
print STDERR <<"EOF";
-Usage: $filename <target> [386]
-
Pick one target type from
- elf - linux, FreeBSD etc
- a.out - old linux
- sol - x86 solaris
- cpp - format so x86unix.cpp can be used
+ elf - Linux, FreeBSD, Solaris x86, etc.
+ a.out - OpenBSD, DJGPP, etc.
+ coff - GAS/COFF such as Win32 targets
win32 - Windows 95/Windows NT
+ win32n - Windows 95/Windows NT NASM format
+ nw-nasm - NetWare NASM format
+ nw-mwasm- NetWare Metrowerks Assembler
EOF
exit(1);
}
+ $pic=0;
+ for (@ARGV) { $pic=1 if (/\-[fK]PIC/i); }
+
&asm_init_output();
&comment("Don't even think of reading this code");
&comment("It was automatically generated by $filename");
&comment("Which is a perl program used to generate the x86 assember for");
-&comment("any of elf, a.out, BSDI,Win32, or Solaris");
+&comment("any of ELF, a.out, COFF, Win32, ...");
&comment("eric <eay\@cryptsoft.com>");
&comment("");
#define TYPE(a,b) .type a,b
#define SIZE(a,b) .size a,b
-#if defined(OUT) || defined(BSDI)
+#if defined(OUT) || (defined(BSDI) && !defined(ELF))
$tmp
#endif
#ifdef OUT
#define OK 1
#define ALIGN 4
+#if defined(__CYGWIN__) || defined(__DJGPP__) || defined(__MINGW32__)
+#undef SIZE
+#undef TYPE
+#define SIZE(a,b)
+#define TYPE(a,b) .def a; .scl 2; .type 32; .endef
+#endif /* __CYGWIN || __DJGPP */
#endif
-#ifdef BSDI
+#if defined(BSDI) && !defined(ELF)
#define OK 1
#define ALIGN 4
#undef SIZE