This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: make-syscalls.sh broken :-(


Andreas Schwab <schwab@suse.de> writes:

> Andreas Jaeger <aj@suse.de> writes:
> 
> |> This line in make-syscalls.sh:
> |> 
> |>     # find the name without leading underscores
> |>     set `echo $strong $weak |tr -s ' \t' '\12' |sed '/^_/d'`
> |> 
> |> doesn't work with these declarations in
> |> sysdeps/unix/sysv/linux/mips/syscalls.list:
> |> 
> |> s_llseek	llseek	_llseek		i:iiipi	__syscall__llseek
> |> s_sigaction	sigaction sigaction	i:ipp	__syscall_sigaction
> |> s_ustat		ustat	ustat		i:ip	__syscall_ustat
> |> sys_mknod	xmknod	mknod		i:sii	__syscall_mknod
> |> 
> |> For testing run this:
> |> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> |> #! /bin/bash
> |> 
> |> strong="__syscall__llseek"
> |> echo $strong $weak |tr -s ' \t' '\12' |sed '/^_/d'
> |> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> |> 
> |> The output is empty - and therefore set is invoked as set `` - which
> |> puts the whole environment into sysd-syscalls :-(
> |> 
> |> What's the proper way to fix this?
> 
> What about this:
> 
>     set x `...`
>     callname=$2
>     if test -n "$callname"; then
>         ....

I'd rather do this:

OK?

Index: sysdeps/unix/make-syscalls.sh
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/unix/make-syscalls.sh,v
retrieving revision 1.17
diff -u -p -r1.17 make-syscalls.sh
--- make-syscalls.sh	2000/07/06 00:48:38	1.17
+++ make-syscalls.sh	2000/07/07 17:02:07
@@ -193,8 +193,8 @@ shared-only-routines += $file
   x-,-,* | x*,*.[sS],*V*) ;;
   x*,-,*$ptrlet* | x*,*.[sS],*$ptrlet*)
 
-    # find the name without leading underscores
-    set `echo $strong $weak |tr -s ' \t' '\12' |sed '/^_/d'`
+    # find the name with the fewest leading underscores, preferably none
+    set `echo $strong $weak |tr -s ' \t' '\12' |tr _ \~ |sort |tr \~ _`
     callname=$1
 
     # convert signature string to individual numbered arg names

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]