make-syscalls.sh broken :-(
Greg McGary
greg@mcgary.org
Fri Jul 7 10:03:00 GMT 2000
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
More information about the Libc-hacker
mailing list