[PATCH v3] elf: Escape sed delimiter in Makefile [BZ #25127]
Adhemerval Zanella Netto
adhemerval.zanella@linaro.org
Fri Dec 22 14:07:05 GMT 2023
On 24/08/23 12:23, Shane Slattery wrote:
> This is v3 of the patch.
> Now uses subst and shell variables for escaped string.
>
> This patch proposes a fix for BZ report #25127.
>
> Like mentioned in BZ #25127, the use of an @ character in glibc's
> build path breaks two sed commands, as @ is the delimiter used.
> This subsequently makes the build fail, as the path
> is then considered part of the regex.
>
> This commonly ends up affecting Jenkins concurrent builds, due to
> it's default usage of @ in the workspace path for said builds.
>
> While a patch was suggested in the original BZ report, this is only
> a mitigation and doesn't fix the issue, i.e. the same issue would
> occur with the character #.
>
> The issue is fixed by escaping possible @'s in the path before
> the path is used with sed later.
>
> No regressions or further issues have been observed due to this change.
LGTM, thanks.
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
> ---
> elf/Makefile | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/elf/Makefile b/elf/Makefile
> index c00e2ccfc5..a1ff5cf28f 100644
> --- a/elf/Makefile
> +++ b/elf/Makefile
> @@ -1291,8 +1291,9 @@ $(objpfx)librtld.map: $(objpfx)dl-allobjs.os $(common-objpfx)libc_pic.a
>
> # For lld, skip preceding addresses and values before matching the archive and the member.
> $(objpfx)librtld.mk: $(objpfx)librtld.map Makefile
> + common_objpfx_esc=$(subst @,\\\@,${common-objpfx}) ; \
> LC_ALL=C \
> - sed -n 's@^[0-9a-f ]*$(common-objpfx)\([^(]*\)(\([^)]*\.os\)) *.*$$@\1 \2@p' \
> + sed -n 's@^[0-9a-f ]*'$${common_objpfx_esc}'\([^(]*\)(\([^)]*\.os\)) *.*$$@\1 \2@p' \
> $< | \
> while read lib file; do \
> case $$lib in \
> @@ -1300,7 +1301,7 @@ $(objpfx)librtld.mk: $(objpfx)librtld.map Makefile
> LC_ALL=C grep -F -l /$$file \
> $(common-objpfx)stamp.os $(common-objpfx)*/stamp.os | \
> LC_ALL=C \
> - sed 's@^$(common-objpfx)\([^/]*\)/stamp\.os$$@rtld-\1'" +=$$file@"\
> + sed 's@^'$${common_objpfx_esc}'\([^/]*\)/stamp\.os$$@rtld-\1'" +=$$file@"\
> ;; \
> */*.a) \
> echo rtld-$${lib%%/*} += $$file ;; \
More information about the Libc-alpha
mailing list