diff options
author | Patrick 'P. J.' McDermott <pj@pehjota.net> | 2013-09-11 17:53:08 -0400 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2013-09-28 23:03:09 -0400 |
commit | 0a834ddecbb08b79cbcf7d9460ab3d3d539c9962 (patch) | |
tree | 95f9050e7fdcebc7468978139ec2738b834f262b | |
parent | e74a6fd9067e41bffe12406fc86277132bad5043 (diff) | |
download | glibc-0a834ddecbb08b79cbcf7d9460ab3d3d539c9962.tar glibc-0a834ddecbb08b79cbcf7d9460ab3d3d539c9962.tar.gz glibc-0a834ddecbb08b79cbcf7d9460ab3d3d539c9962.tar.bz2 glibc-0a834ddecbb08b79cbcf7d9460ab3d3d539c9962.zip |
don't use Bash-specific ${parameter/pattern/string} expansion
sysdeps/unix/make-syscalls.sh and sysdeps/unix/Makefile use GNU Bash's
${parameter/pattern/string} parameter expansion. Non-Bash shells (e.g.
dash or BusyBox ash when built with CONFIG_ASH_BASH_COMPAT disabled)
don't support this expansion syntax. So glibc will fail to build when
$(SHELL) expands to a path that isn't provided by Bash.
An example build failure:
for dir in [...]; do \
test -f $dir/syscalls.list && \
{ sysdirs='[...]' \
asm_CPP='gcc -c -I[...] -D_LIBC_REENTRANT -include include/libc-symbols.h -DASSEMBLER -g -Wa,--noexecstack -E -x assembler-with-cpp' \
/bin/sh sysdeps/unix/make-syscalls.sh $dir || exit 1; }; \
test $dir = sysdeps/unix && break; \
done > [build-dir]/sysd-syscallsT
sysdeps/unix/make-syscalls.sh: line 273: syntax error: bad substitution
This patch simply replaces the three instances of the Bash-only syntax
in these files with an echo and sed command substitution.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | sysdeps/unix/Makefile | 6 | ||||
-rw-r--r-- | sysdeps/unix/make-syscalls.sh | 2 |
3 files changed, 11 insertions, 3 deletions
@@ -1,3 +1,9 @@ +2013-09-11 P. J. McDermott <pj@pehjota.net> + + * sysdeps/unix/Makefile ($(objpfx)stub-syscalls.c): Don't use + ${Bash-specific parameter/pattern/string} parameter expansion. + * sysdeps/unix/make-syscalls.sh: Likewise. + 2013-09-27 Kaz Kojima <kkojima@rr.iij4u.or.jp> * sysdeps/sh/stackguard-macros.h: New file. diff --git a/sysdeps/unix/Makefile b/sysdeps/unix/Makefile index 375561f0d0..2b607a007a 100644 --- a/sysdeps/unix/Makefile +++ b/sysdeps/unix/Makefile @@ -51,12 +51,14 @@ $(objpfx)stub-syscalls.c: $(common-objpfx)sysd-syscalls \ for call in $(unix-stub-syscalls); do \ case $$call in \ *@@*) \ - ver=$${call##*@}; call=$${call%%@*}; ver=$${ver//./_}; \ + ver=$${call##*@}; call=$${call%%@*}; \ + ver=`echo "$ver" | sed 's/\./_/g'`; \ echo "strong_alias (_no_syscall, __$${call}_$${ver})"; \ echo "versioned_symbol (libc, __$${call}_$${ver}, $$call, $$ver);"\ ;; \ *@*) \ - ver=$${call##*@}; call=$${call%%@*}; ver=$${ver//./_}; \ + ver=$${call##*@}; call=$${call%%@*}; \ + ver=`echo "$ver" | sed 's/\./_/g'`; \ echo "strong_alias (_no_syscall, __$${call}_$${ver})"; \ echo "compat_symbol (libc, __$${call}_$${ver}, $$call, $$ver);" \ ;; \ diff --git a/sysdeps/unix/make-syscalls.sh b/sysdeps/unix/make-syscalls.sh index f04f2abb3f..6eba62c946 100644 --- a/sysdeps/unix/make-syscalls.sh +++ b/sysdeps/unix/make-syscalls.sh @@ -275,7 +275,7 @@ while read file srcfile caller syscall args strong weak; do # name in the vDSO and KERNEL_X.Y is its symbol version. vdso_symbol="${vdso_syscall%@*}" vdso_symver="${vdso_syscall#*@}" - vdso_symver="${vdso_symver//./_}" + vdso_symver=`echo "$vdso_symver" | sed 's/\./_/g'` echo "\ \$(foreach p,\$(sysd-rules-targets),\$(objpfx)\$(patsubst %,\$p,$file).os): \\ \$(..)sysdeps/unix/make-syscalls.sh\ |