aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@zytor.com>2005-04-10 00:33:46 +0000
committerH. Peter Anvin <hpa@zytor.com>2005-04-10 00:33:46 +0000
commit4419fcc42fd49fc8ea98af09aa188eddb8ed0219 (patch)
tree9212f988e520fb25eb6af13446a61116d92713b7
parent910b6a39ddd063374eae1cccf5604466183550b4 (diff)
downloadklibc-4419fcc42fd49fc8ea98af09aa188eddb8ed0219.tar.gz
Perl changes to make kbuild integration easier.klibc-1.0.6
-rw-r--r--klibc/Makefile6
-rw-r--r--klibc/arch/alpha/sysstub.ph6
-rw-r--r--klibc/arch/arm/sysstub.ph6
-rw-r--r--klibc/arch/cris/sysstub.ph6
-rw-r--r--klibc/arch/i386/sysstub.ph6
-rw-r--r--klibc/arch/ia64/sysstub.ph6
-rw-r--r--klibc/arch/m32r/sysstub.ph6
-rw-r--r--klibc/arch/mips/sysstub.ph6
-rw-r--r--klibc/arch/parisc/sysstub.ph6
-rw-r--r--klibc/arch/ppc/sysstub.ph6
-rw-r--r--klibc/arch/ppc64/sysstub.ph6
-rw-r--r--klibc/arch/s390/sysstub.ph6
-rw-r--r--klibc/arch/s390x/sysstub.ph6
-rw-r--r--klibc/arch/sh/sysstub.ph6
-rw-r--r--klibc/arch/sparc/sysstub.ph6
-rw-r--r--klibc/arch/sparc64/sysstub.ph6
-rw-r--r--klibc/arch/x86_64/sysstub.ph6
-rw-r--r--klibc/socketcalls.pl16
-rw-r--r--klibc/syscalls.pl12
19 files changed, 71 insertions, 59 deletions
diff --git a/klibc/Makefile b/klibc/Makefile
index c412a9ffea33b..181a226151d80 100644
--- a/klibc/Makefile
+++ b/klibc/Makefile
@@ -141,7 +141,9 @@ syscalls.nrs: ../include/sys/syscall.h
syscalls.dir: SYSCALLS.i syscalls.pl arch/$(ARCH)/sysstub.ph syscommon.h syscalls.nrs
rm -rf syscalls
mkdir syscalls
- $(PERL) syscalls.pl SYSCALLS.i $(ARCH) $(BITSIZE) syscalls.nrs ../include/klibc/havesyscall.h
+ $(PERL) syscalls.pl SYSCALLS.i arch/$(ARCH)/sysstub.ph $(ARCH) \
+ $(BITSIZE) syscalls.nrs \
+ syscalls ../include/klibc/havesyscall.h
touch $@
../include/klibc/havesyscall.h: syscalls.dir
@@ -150,7 +152,7 @@ syscalls.dir: SYSCALLS.i syscalls.pl arch/$(ARCH)/sysstub.ph syscommon.h syscall
socketcalls.dir: SOCKETCALLS.def socketcalls.pl socketcommon.h
rm -rf socketcalls
mkdir socketcalls
- $(PERL) socketcalls.pl SOCKETCALLS.def $(ARCH)
+ $(PERL) socketcalls.pl SOCKETCALLS.def $(ARCH) socketcalls
touch $@
%/static.obj: %.dir
diff --git a/klibc/arch/alpha/sysstub.ph b/klibc/arch/alpha/sysstub.ph
index a24b6c07dc81b..08b97e807e7f9 100644
--- a/klibc/arch/alpha/sysstub.ph
+++ b/klibc/arch/alpha/sysstub.ph
@@ -12,13 +12,13 @@
# A few system calls are dual-return with the second return value in
# r20 (a4).
-sub make_sysstub($$$$@) {
- my($fname, $type, $sname, $stype, @args) = @_;
+sub make_sysstub($$$$$@) {
+ my($outputdir, $fname, $type, $sname, $stype, @args) = @_;
$stype = $stype || 'common';
$stype = 'common' if ( $stype eq 'dual0' );
- open(OUT, '>', "syscalls/${fname}.S");
+ open(OUT, '>', "${outputdir}/${fname}.S");
print OUT "#include <asm/unistd.h>\n";
print OUT "#include <machine/asm.h>\n";
print OUT "\n";
diff --git a/klibc/arch/arm/sysstub.ph b/klibc/arch/arm/sysstub.ph
index bf953ccd801b5..256ea3d53432c 100644
--- a/klibc/arch/arm/sysstub.ph
+++ b/klibc/arch/arm/sysstub.ph
@@ -6,10 +6,10 @@
#
-sub make_sysstub($$$$@) {
- my($fname, $type, $sname, $stype, @args) = @_;
+sub make_sysstub($$$$$@) {
+ my($outputdir, $fname, $type, $sname, $stype, @args) = @_;
- open(OUT, '>', "syscalls/${fname}.S");
+ open(OUT, '>', "${outputdir}/${fname}.S");
print OUT "#include <asm/unistd.h>\n";
print OUT "\t.text\n";
diff --git a/klibc/arch/cris/sysstub.ph b/klibc/arch/cris/sysstub.ph
index 6c894f62f5269..182ad73f8ce60 100644
--- a/klibc/arch/cris/sysstub.ph
+++ b/klibc/arch/cris/sysstub.ph
@@ -5,10 +5,10 @@
# Script to generate system call stubs
#
-sub make_sysstub($$$$@) {
- my($fname, $type, $sname, $stype, @args) = @_;
+sub make_sysstub($$$$$@) {
+ my($outputdir, $fname, $type, $sname, $stype, @args) = @_;
- open(OUT, '>', "syscalls/${fname}.S");
+ open(OUT, '>', "${outputdir}/${fname}.S");
print OUT "#include <asm/unistd.h>\n";
print OUT "\n";
print OUT "\t.text\n";
diff --git a/klibc/arch/i386/sysstub.ph b/klibc/arch/i386/sysstub.ph
index 1ba7f36bac989..e2649e283e75a 100644
--- a/klibc/arch/i386/sysstub.ph
+++ b/klibc/arch/i386/sysstub.ph
@@ -5,10 +5,10 @@
# Script to generate system call stubs
#
-sub make_sysstub($$$$@) {
- my($fname, $type, $sname, $stype, @args) = @_;
+sub make_sysstub($$$$$@) {
+ my($outputdir, $fname, $type, $sname, $stype, @args) = @_;
- open(OUT, '>', "syscalls/${fname}.S");
+ open(OUT, '>', "${outputdir}/${fname}.S");
print OUT "#include <asm/unistd.h>\n";
print OUT "\n";
print OUT "\t.type ${fname},\@function\n";
diff --git a/klibc/arch/ia64/sysstub.ph b/klibc/arch/ia64/sysstub.ph
index 34031a29ae1e0..8e686c68a33cd 100644
--- a/klibc/arch/ia64/sysstub.ph
+++ b/klibc/arch/ia64/sysstub.ph
@@ -5,10 +5,10 @@
# Script to generate system call stubs
#
-sub make_sysstub($$$$@) {
- my($fname, $type, $sname, $stype, @args) = @_;
+sub make_sysstub($$$$$@) {
+ my($outputdir, $fname, $type, $sname, $stype, @args) = @_;
- open(OUT, '>', "syscalls/${fname}.S");
+ open(OUT, '>', "${outputdir}/${fname}.S");
print OUT "#include <asm/unistd.h>\n";
print OUT "\n";
print OUT "\t.text\n";
diff --git a/klibc/arch/m32r/sysstub.ph b/klibc/arch/m32r/sysstub.ph
index 3813ea4144eff..98dfb9d0a8478 100644
--- a/klibc/arch/m32r/sysstub.ph
+++ b/klibc/arch/m32r/sysstub.ph
@@ -5,10 +5,10 @@
# Script to generate system call stubs
#
-sub make_sysstub($$$$@) {
- my($fname, $type, $sname, $stype, @args) = @_;
+sub make_sysstub($$$$$@) {
+ my($outputdir, $fname, $type, $sname, $stype, @args) = @_;
- open(OUT, '>', "syscalls/${fname}.S");
+ open(OUT, '>', "${outputdir}/${fname}.S");
print OUT "#include <asm/unistd.h>\n";
print OUT "\n";
print OUT "\t.text\n";
diff --git a/klibc/arch/mips/sysstub.ph b/klibc/arch/mips/sysstub.ph
index abe599c17d933..a71d5d02efab8 100644
--- a/klibc/arch/mips/sysstub.ph
+++ b/klibc/arch/mips/sysstub.ph
@@ -9,11 +9,11 @@
# system call number in r0 (v0), return an error value in r19 (a3) as
# well as the return value in r0 (v0).
-sub make_sysstub($$$$@) {
- my($fname, $type, $sname, $stype, @args) = @_;
+sub make_sysstub($$$$$@) {
+ my($outputdir, $fname, $type, $sname, $stype, @args) = @_;
$stype = $stype || 'common';
- open(OUT, '>', "syscalls/${fname}.S");
+ open(OUT, '>', "${outputdir}/${fname}.S");
print OUT "#include <asm/asm.h>\n";
print OUT "#include <asm/regdef.h>\n";
print OUT "#include <asm/unistd.h>\n";
diff --git a/klibc/arch/parisc/sysstub.ph b/klibc/arch/parisc/sysstub.ph
index 63b5e17fcf65f..e2196acaf3b29 100644
--- a/klibc/arch/parisc/sysstub.ph
+++ b/klibc/arch/parisc/sysstub.ph
@@ -5,10 +5,10 @@
# Script to generate system call stubs
#
-sub make_sysstub($$$$@) {
- my($fname, $type, $sname, $stype, @args) = @_;
+sub make_sysstub($$$$$@) {
+ my($outputdir, $fname, $type, $sname, $stype, @args) = @_;
- open(OUT, '>', "syscalls/${fname}.S");
+ open(OUT, '>', "${outputdir}/${fname}.S");
print OUT "#include <asm/unistd.h>\n";
print OUT "\n";
print OUT "\t.text\n";
diff --git a/klibc/arch/ppc/sysstub.ph b/klibc/arch/ppc/sysstub.ph
index 542ab5575c963..3b3916c726f4d 100644
--- a/klibc/arch/ppc/sysstub.ph
+++ b/klibc/arch/ppc/sysstub.ph
@@ -5,10 +5,10 @@
# Script to generate system call stubs
#
-sub make_sysstub($$$$@) {
- my($fname, $type, $sname, $stype, @args) = @_;
+sub make_sysstub($$$$$@) {
+ my($outputdir, $fname, $type, $sname, $stype, @args) = @_;
- open(OUT, '>', "syscalls/${fname}.S");
+ open(OUT, '>', "${outputdir}/${fname}.S");
print OUT "#include <asm/unistd.h>\n";
print OUT "\n";
print OUT "\t.type ${fname},\@function\n";
diff --git a/klibc/arch/ppc64/sysstub.ph b/klibc/arch/ppc64/sysstub.ph
index 0a379158e1c82..9ee93701f6fae 100644
--- a/klibc/arch/ppc64/sysstub.ph
+++ b/klibc/arch/ppc64/sysstub.ph
@@ -5,10 +5,10 @@
# Script to generate system call stubs
#
-sub make_sysstub($$$$@) {
- my($fname, $type, $sname, $stype, @args) = @_;
+sub make_sysstub($$$$$@) {
+ my($outputdir, $fname, $type, $sname, $stype, @args) = @_;
- open(OUT, '>', "syscalls/${fname}.S");
+ open(OUT, '>', "${outputdir}/${fname}.S");
print OUT "#include <asm/unistd.h>\n";
print OUT "\n";
print OUT "\t.globl ${fname}\n";
diff --git a/klibc/arch/s390/sysstub.ph b/klibc/arch/s390/sysstub.ph
index 3838a1f1b2863..35f40a0865f1c 100644
--- a/klibc/arch/s390/sysstub.ph
+++ b/klibc/arch/s390/sysstub.ph
@@ -5,10 +5,10 @@
# Script to generate system call stubs
#
-sub make_sysstub($$$$@) {
- my($fname, $type, $sname, $stype, @args) = @_;
+sub make_sysstub($$$$$@) {
+ my($outputdir, $fname, $type, $sname, $stype, @args) = @_;
- open(OUT, '>', "syscalls/${fname}.S");
+ open(OUT, '>', "${outputdir}/${fname}.S");
print OUT "#include <asm/unistd.h>\n";
print OUT "\n";
print OUT "\t.type ${fname},\@function\n";
diff --git a/klibc/arch/s390x/sysstub.ph b/klibc/arch/s390x/sysstub.ph
index 10a47f7b07265..55c721b558bb8 100644
--- a/klibc/arch/s390x/sysstub.ph
+++ b/klibc/arch/s390x/sysstub.ph
@@ -5,10 +5,10 @@
# Script to generate system call stubs
#
-sub make_sysstub($$$$@) {
- my($fname, $type, $sname, $stype, @args) = @_;
+sub make_sysstub($$$$$@) {
+ my($outputdir, $fname, $type, $sname, $stype, @args) = @_;
- open(OUT, '>', "syscalls/${fname}.S");
+ open(OUT, '>', "${outputdir}/${fname}.S");
print OUT "#include <asm/unistd.h>\n";
print OUT "\n";
print OUT "\t.type ${fname},\@function\n";
diff --git a/klibc/arch/sh/sysstub.ph b/klibc/arch/sh/sysstub.ph
index add5d358928ed..ce04b739e9503 100644
--- a/klibc/arch/sh/sysstub.ph
+++ b/klibc/arch/sh/sysstub.ph
@@ -5,10 +5,10 @@
# Script to generate system call stubs
#
-sub make_sysstub($$$$@) {
- my($fname, $type, $sname, $stype, @args) = @_;
+sub make_sysstub($$$$$@) {
+ my($outputdir, $fname, $type, $sname, $stype, @args) = @_;
- open(OUT, '>', "syscalls/${fname}.S");
+ open(OUT, '>', "${outputdir}/${fname}.S");
print OUT "#include <asm/unistd.h>\n";
print OUT "\n";
print OUT "\t.section\t\".text.syscall\",\"ax\"\n";
diff --git a/klibc/arch/sparc/sysstub.ph b/klibc/arch/sparc/sysstub.ph
index baad9e3d8216c..d8cedb5ae5d48 100644
--- a/klibc/arch/sparc/sysstub.ph
+++ b/klibc/arch/sparc/sysstub.ph
@@ -5,12 +5,12 @@
# Script to generate system call stubs
#
-sub make_sysstub($$$$@) {
- my($fname, $type, $sname, $stype, @args) = @_;
+sub make_sysstub($$$$$@) {
+ my($outputdir, $fname, $type, $sname, $stype, @args) = @_;
$stype = $stype || 'common';
- open(OUT, '>', "syscalls/${fname}.S");
+ open(OUT, '>', "${outputdir}/${fname}.S");
print OUT "#include <asm/unistd.h>\n";
print OUT "\n";
print OUT "\t.type ${fname},\@function\n";
diff --git a/klibc/arch/sparc64/sysstub.ph b/klibc/arch/sparc64/sysstub.ph
index 2ef2c6b66efa1..deeb88ce07b2f 100644
--- a/klibc/arch/sparc64/sysstub.ph
+++ b/klibc/arch/sparc64/sysstub.ph
@@ -5,12 +5,12 @@
# Script to generate system call stubs
#
-sub make_sysstub($$$$@) {
- my($fname, $type, $sname, $stype, @args) = @_;
+sub make_sysstub($$$$$@) {
+ my($outputdir, $fname, $type, $sname, $stype, @args) = @_;
$stype = $stype || 'common';
- open(OUT, '>', "syscalls/${fname}.S");
+ open(OUT, '>', "${outputdir}/${fname}.S");
print OUT "#include <asm/unistd.h>\n";
print OUT "\n";
print OUT "\t.type ${fname},\@function\n";
diff --git a/klibc/arch/x86_64/sysstub.ph b/klibc/arch/x86_64/sysstub.ph
index 07af1227ca47a..e2d797b1667f7 100644
--- a/klibc/arch/x86_64/sysstub.ph
+++ b/klibc/arch/x86_64/sysstub.ph
@@ -5,10 +5,10 @@
# Script to generate system call stubs
#
-sub make_sysstub($$$$@) {
- my($fname, $type, $sname, $stype, @args) = @_;
+sub make_sysstub($$$$$@) {
+ my($outputdir, $fname, $type, $sname, $stype, @args) = @_;
- open(OUT, '>', "syscalls/${fname}.S");
+ open(OUT, '>', "${outputdir}/${fname}.S");
print OUT "#include <asm/unistd.h>\n";
print OUT "\n";
print OUT "\t.type ${fname},\@function\n";
diff --git a/klibc/socketcalls.pl b/klibc/socketcalls.pl
index fd82b2b49f2a7..024483f716429 100644
--- a/klibc/socketcalls.pl
+++ b/klibc/socketcalls.pl
@@ -15,12 +15,13 @@ for $arg ( @ARGV ) {
push(@args, $arg);
}
}
-($file, $arch) = @args;
+($file, $arch, $outputdir) = @args;
if (!open(FILE, "< $file")) {
die "$file: $!\n";
}
+print "socketcall-objs := ";
while ( defined($line = <FILE>) ) {
chomp $line;
$line =~ s/\s*[\#\;].*$//; # Strip comments and trailing blanks
@@ -39,10 +40,11 @@ while ( defined($line = <FILE>) ) {
push(@cargs, "$arg a".$i++);
}
$nargs = $i;
+ print " \\\n\tsocketcalls/${name}.o";
if ( $arch eq 'i386' ) {
- open(OUT, '>', "socketcalls/${name}.S")
- or die "$0: Cannot open socketcalls/${name}.S\n";
+ open(OUT, '>', "${outputdir}/${name}.S")
+ or die "$0: Cannot open ${outputdir}/${name}.S\n";
print OUT "#include <sys/socketcalls.h>\n";
print OUT "\n";
@@ -56,10 +58,10 @@ while ( defined($line = <FILE>) ) {
print OUT "\t.size ${name},.-${name}\n";
close(OUT);
} else {
- open(OUT, '>', "socketcalls/${name}.c")
- or die "$0: Cannot open socketcalls/${name}.c\n";
+ open(OUT, '>', "${outputdir}/${name}.c")
+ or die "$0: Cannot open ${outputdir}/${name}.c\n";
- print OUT "#include \"../socketcommon.h\"\n";
+ print OUT "#include \"socketcommon.h\"\n";
print OUT "\n";
print OUT "#ifndef __NR_${name}\n\n";
@@ -82,3 +84,5 @@ while ( defined($line = <FILE>) ) {
die "$file:$.: Could not parse input\n";
}
}
+
+print "\n";
diff --git a/klibc/syscalls.pl b/klibc/syscalls.pl
index 1c48ce58ff623..9cea63097bfff 100644
--- a/klibc/syscalls.pl
+++ b/klibc/syscalls.pl
@@ -18,13 +18,14 @@ for $arg ( @ARGV ) {
push(@args, $arg);
}
}
-($file, $arch, $bits, $unistd, $havesyscall) = @args;
+($file, $sysstub, $arch, $bits, $unistd, $outputdir, $havesyscall) = @args;
-require "arch/$arch/sysstub.ph";
+require "$sysstub";
if (!open(UNISTD, '<', $unistd)) {
die "$0: $unistd: $!\n";
}
+
while ( defined($line = <UNISTD>) ) {
chomp $line;
@@ -46,6 +47,8 @@ if (!open(FILE, '<', $file)) {
die "$0: $file: $!\n";
}
+print "syscall-objs := ";
+
while ( defined($line = <FILE>) ) {
chomp $line;
$line =~ s/\s*(|[\#;].*)$//; # Strip comments and trailing blanks
@@ -104,11 +107,14 @@ while ( defined($line = <FILE>) ) {
@args = split(/\s*\,\s*/, $argv);
print HAVESYS "#define _KLIBC_HAVE_SYSCALL_${fname} ${sname}\n";
- make_sysstub($fname, $type, $sname, $stype, @args);
+ print " \\\n\tsyscalls/${fname}.o";
+ make_sysstub($outputdir, $fname, $type, $sname, $stype, @args);
} else {
die "$file:$.: Could not parse input: \"$line\"\n";
}
}
+print "\n";
+
print HAVESYS "\n#endif\n";
close(HAVESYS);