aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick 'P. J.' McDermott <pj@pehjota.net>2013-09-11 17:53:08 -0400
committerMike Frysinger <vapier@gentoo.org>2013-09-28 23:03:09 -0400
commit0a834ddecbb08b79cbcf7d9460ab3d3d539c9962 (patch)
tree95f9050e7fdcebc7468978139ec2738b834f262b
parente74a6fd9067e41bffe12406fc86277132bad5043 (diff)
downloadglibc-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--ChangeLog6
-rw-r--r--sysdeps/unix/Makefile6
-rw-r--r--sysdeps/unix/make-syscalls.sh2
3 files changed, 11 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 19152d604b..3594b32726 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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\