chiark / gitweb /
[PATCH] klibc: version 1.0.6
authorkay.sievers@vrfy.org <kay.sievers@vrfy.org>
Mon, 11 Apr 2005 02:51:03 +0000 (04:51 +0200)
committerGreg KH <gregkh@suse.de>
Wed, 27 Apr 2005 06:55:01 +0000 (23:55 -0700)
22 files changed:
klibc/Makefile
klibc/klibc/Makefile
klibc/klibc/arch/alpha/sysstub.ph
klibc/klibc/arch/arm/sysstub.ph
klibc/klibc/arch/cris/sysstub.ph
klibc/klibc/arch/i386/sysstub.ph
klibc/klibc/arch/ia64/sysstub.ph
klibc/klibc/arch/m32r/sysstub.ph
klibc/klibc/arch/mips/sysstub.ph
klibc/klibc/arch/parisc/sysstub.ph
klibc/klibc/arch/ppc/sysstub.ph
klibc/klibc/arch/ppc64/sysstub.ph
klibc/klibc/arch/s390/sysstub.ph
klibc/klibc/arch/s390x/sysstub.ph
klibc/klibc/arch/sh/sysstub.ph
klibc/klibc/arch/sparc/sysstub.ph
klibc/klibc/arch/sparc64/sysstub.ph
klibc/klibc/arch/x86_64/sysstub.ph
klibc/klibc/socketcalls.pl
klibc/klibc/syscalls.pl
klibc/makeklcc.pl
klibc/version

index 7a9b92e..5071e60 100644 (file)
@@ -18,12 +18,12 @@ $(CROSS)klibc.config: Makefile
        echo 'ARCH=$(ARCH)' >> $@
        echo 'CROSS=$(CROSS)' >> $@
        echo 'KCROSS=$(KCROSS)' >> $@
-       echo "CC=$(shell bash -c 'type -p $(CC)')" >> $@
-       echo "LD=$(shell bash -c 'type -p $(LD)')" >> $@
+       echo 'CC=$(CC)' >> $@
+       echo 'LD=$(LD)' >> $@
        echo 'REQFLAGS=$(filter-out -I%,$(REQFLAGS))' >> $@
        echo 'OPTFLAGS=$(OPTFLAGS)' >> $@
        echo 'LDFLAGS=$(LDFLAGS)' >> $@
-       echo "STRIP=$(shell bash -c 'type -p $(STRIP)')" >> $@
+       echo 'STRIP=$(STRIP)' >> $@
        echo 'STRIPFLAGS=$(STRIPFLAGS)' >> $@
        echo 'EMAIN=$(EMAIN)' >> $@
        echo 'BITSIZE=$(BITSIZE)' >> $@
@@ -45,7 +45,7 @@ local-all: $(CROSS)klcc
 local-clean:
        rm -f klibc.config klcc
 
-local-spotless:
+local-spotless: local-clean
        rm -f klibc.spec *~ tags
 
 local-install: $(CROSS)klcc
index c412a9f..181a226 100644 (file)
@@ -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
index a24b6c0..08b97e8 100644 (file)
 # 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";
index bf953cc..256ea3d 100644 (file)
@@ -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";
index 6c894f6..182ad73 100644 (file)
@@ -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";
index 1ba7f36..e2649e2 100644 (file)
@@ -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";
index 34031a2..8e686c6 100644 (file)
@@ -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";
index 3813ea4..98dfb9d 100644 (file)
@@ -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";
index abe599c..a71d5d0 100644 (file)
@@ -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";
index 63b5e17..e2196ac 100644 (file)
@@ -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";
index 542ab55..3b3916c 100644 (file)
@@ -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";
index 0a37915..9ee9370 100644 (file)
@@ -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";
index 3838a1f..35f40a0 100644 (file)
@@ -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";
index 10a47f7..55c721b 100644 (file)
@@ -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";
index add5d35..ce04b73 100644 (file)
@@ -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";
index baad9e3..d8cedb5 100644 (file)
@@ -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";
index 2ef2c6b..deeb88c 100644 (file)
@@ -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";
index 07af122..e2d797b 100644 (file)
@@ -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";
index fd82b2b..024483f 100644 (file)
@@ -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";
index 1c48ce5..9cea630 100644 (file)
@@ -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);
index f8a6294..7404595 100644 (file)
@@ -5,8 +5,27 @@
 # Usage: makeklcc klcc.in klibc.config perlpath
 #
 
+use File::Spec;
+
 ($klccin, $klibcconf, $perlpath) = @ARGV;
 
+sub pathsearch($) {
+    my($file) = @_;
+    my(@path);
+    my($p,$pp);
+
+    if ( $file =~ /\// ) {
+       return File::Spec->rel2abs($file);
+    }
+    
+    foreach $p ( split(/\:/, $ENV{'PATH'}) ) {
+       $pp = File::Spec->rel2abs(File::Spec->catpath(undef, $p, $file));
+       return $pp if ( -x $pp );
+    }
+
+    return undef;
+}
+
 print "#!${perlpath}\n";
 
 open(KLIBCCONF, '<', $klibcconf) or die "$0: cannot open $klibcconf: $!\n";
@@ -14,6 +33,13 @@ while ( defined($l = <KLIBCCONF>) ) {
     chomp $l;
     if ( $l =~ /^([^=]+)\=(.*)$/ ) {
        $n = $1;  $s = $2;
+
+       if ( $n eq 'CC' || $n eq 'LD' || $n eq 'STRIP' ) {
+           $s1 = pathsearch($s);
+           die "$0: Cannot find $n: $s\n" unless ( defined($s1) );
+           $s = $s1;
+       }
+
        print "\$$n = \"\Q$s\E\";\n";
        print "\@$n = qw($s);\n";
        print "\$conf{\'\L$n\E\'} = \\\$$n;\n";
index 90a27f9..af0b7dd 100644 (file)
@@ -1 +1 @@
-1.0.5
+1.0.6