openembedded-core.lists.openembedded.org archive mirror
 help / color / mirror / Atom feed
From: Martin Jansa <martin.jansa@gmail.com>
To: Khem Raj <raj.khem@gmail.com>
Cc: openembedded-core@lists.openembedded.org
Subject: Re: [PATCH V3 2/2] glibc: fix new upstream build issue with DEBUG_BUILD build
Date: Tue, 9 Aug 2022 12:12:53 +0200	[thread overview]
Message-ID: <CA+chaQe8g1A3FUu=ct3JXGY017saV3V=f7G9fKc_ccZB5ji=CA@mail.gmail.com> (raw)
In-Reply-To: <20220809054340.822999-2-raj.khem@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 8305 bytes --]

312ded0d63 x86: Fix `#define STRCPY` guard in strcpy-sse2.S
483cfe1a6a elf: Replace `strcpy` call with `memcpy` [BZ #29454]

These 2 are now merged in master branch (without any further changes), we
can update Upstream-Status to Backported, but hopefully they'll be
backported to release/2.36/master branch as well and we'll remove them
completely with next SRCREV bump.

Cheers,

On Tue, Aug 9, 2022 at 7:43 AM Khem Raj <raj.khem@gmail.com> wrote:

> From: Martin Jansa <martin.jansa@gmail.com>
>
> * refresh 0001-Revert-Linux-Implement-a-useful-version-of-_startup_.patch
>   (just different commit SHA in master and 2.35 branch)
>
> * add proposed fixes for build failure with DEBUG_BUILD:
>   http://errors.yoctoproject.org/Errors/Details/663898/
>
> 86_64-oe-linux-gcc  -m64 -march=core2 -mtune=core2 -msse3 -mfpmath=sse
> --sysroot=TOPDIR/tmp-glibc/work/core2-64-oe-linux/glibc/2.36-r0/recipe-sysroot
> -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed
> -fmacro-prefix-map=TOPDIR/tmp-glibc/work/core2-64-oe-linux/glibc/2.36-r0=/usr/src/debug/glibc/2.36-r0
>
> -fdebug-prefix-map=TOPDIR/tmp-glibc/work/core2-64-oe-linux/glibc/2.36-r0=/usr/src/debug/glibc/2.36-r0
>
> -fdebug-prefix-map=TOPDIR/tmp-glibc/work/core2-64-oe-linux/glibc/2.36-r0/recipe-sysroot=
>
> -fdebug-prefix-map=TOPDIR/tmp-glibc/work/core2-64-oe-linux/glibc/2.36-r0/recipe-sysroot-native=
> -Wl,-z,relro,-z,now -fuse-ld=bfd  -nostdlib -nostartfiles -r -o
> TOPDIR/tmp-glibc/work/core2-64-oe-linux/glibc/2.36-r0/build-x86_64-oe-linux/elf/librtld.os
> '-Wl,-('
> TOPDIR/tmp-glibc/work/core2-64-oe-linux/glibc/2.36-r0/build-x86_64-oe-linux/elf/dl-allobjs.os
> TOPDIR/tmp-glibc/work/core2-64-oe-linux/glibc/2.36-r0/build-x86_64-oe-linux/elf/rtld-libc.a
> -lgcc '-Wl,-)' \
>
> -Wl,-Map,TOPDIR/tmp-glibc/work/core2-64-oe-linux/glibc/2.36-r0/build-x86_64-oe-linux/elf/librtld.os.map
> x86_64-oe-linux-gcc  -m64 -march=core2 -mtune=core2 -msse3 -mfpmath=sse
> --sysroot=TOPDIR/tmp-glibc/work/core2-64-oe-linux/glibc/2.36-r0/recipe-sysroot
> -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed
> -fmacro-prefix-map=TOPDIR/tmp-glibc/work/core2-64-oe-linux/glibc/2.36-r0=/usr/src/debug/glibc/2.36-r0
>
> -fdebug-prefix-map=TOPDIR/tmp-glibc/work/core2-64-oe-linux/glibc/2.36-r0=/usr/src/debug/glibc/2.36-r0
>
> -fdebug-prefix-map=TOPDIR/tmp-glibc/work/core2-64-oe-linux/glibc/2.36-r0/recipe-sysroot=
>
> -fdebug-prefix-map=TOPDIR/tmp-glibc/work/core2-64-oe-linux/glibc/2.36-r0/recipe-sysroot-native=
> -Wl,-z,relro,-z,now -fuse-ld=bfd  -nostdlib -nostartfiles -shared -o
> TOPDIR/tmp-glibc/work/core2-64-oe-linux/glibc/2.36-r0/build-x86_64-oe-linux/elf/ld.so.new
>               \
>           -Wl,-z,relro -Wl,-z,defs -Wl,-z,now   \
>           -Wl,-z,pack-relative-relocs \
>
> TOPDIR/tmp-glibc/work/core2-64-oe-linux/glibc/2.36-r0/build-x86_64-oe-linux/elf/librtld.os
> -Wl,--version-script=TOPDIR/tmp-glibc/work/core2-64-oe-linux/glibc/2.36-r0/build-x86_64-oe-linux/ld.map
>           \
>           -Wl,-soname=ld-linux-x86-64.so.2
> TOPDIR/tmp-glibc/work/core2-64-oe-linux/glibc/2.36-r0/recipe-sysroot-native/usr/bin/x86_64-oe-linux/../../libexec/x86_64-oe-linux/gcc/x86_64-oe-linux/12.1.0/ld.bfd:
> TOPDIR/tmp-glibc/work/core2-64-oe-linux/glibc/2.36-r0/build-x86_64-oe-linux/elf/librtld.os:
> in function `_dl_load_cache_lookup':
> /usr/src/debug/glibc/2.36-r0/git/elf/dl-cache.c:513: undefined reference
> to `strcpy'
> collect2: error: ld returned 1 exit status
>
>   introduced in 2.36 version, with:
>   https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=6b9006bfb0
>
>   upstream report with this fix proposed:
>   https://sourceware.org/bugzilla/show_bug.cgi?id=29454
>
> Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
> Signed-off-by: Khem Raj <raj.khem@gmail.com>
> ---
> v3: Rebased, no code changes
>
>  ...define-STRCPY-guard-in-strcpy-sse2.S.patch | 28 ++++++++++++++++
>  ...ace-strcpy-call-with-memcpy-BZ-29454.patch | 32 +++++++++++++++++++
>  meta/recipes-core/glibc/glibc_2.36.bb         |  4 ++-
>  3 files changed, 63 insertions(+), 1 deletion(-)
>  create mode 100644
> meta/recipes-core/glibc/glibc/0026-x86-Fix-define-STRCPY-guard-in-strcpy-sse2.S.patch
>  create mode 100644
> meta/recipes-core/glibc/glibc/0027-elf-Replace-strcpy-call-with-memcpy-BZ-29454.patch
>
> diff --git
> a/meta/recipes-core/glibc/glibc/0026-x86-Fix-define-STRCPY-guard-in-strcpy-sse2.S.patch
> b/meta/recipes-core/glibc/glibc/0026-x86-Fix-define-STRCPY-guard-in-strcpy-sse2.S.patch
> new file mode 100644
> index 00000000000..2d14a4c6196
> --- /dev/null
> +++
> b/meta/recipes-core/glibc/glibc/0026-x86-Fix-define-STRCPY-guard-in-strcpy-sse2.S.patch
> @@ -0,0 +1,28 @@
> +From 1d4d09d9dff96f46674262534ce1f0e51a8252cb Mon Sep 17 00:00:00 2001
> +From: Noah Goldstein <goldstein.w.n@gmail.com>
> +Date: Sun, 7 Aug 2022 22:42:30 +0800
> +Subject: [PATCH] x86: Fix `#define STRCPY` guard in strcpy-sse2.S
> +
> +`#ifndef STPCPY` is incorrect for checking if `STRCPY` is already
> +defined.  It doesn't end up mattering as the whole check is
> +guarded by `#if IS_IN (libc)` but is incorrect none the less.
> +
> +Upstream-Status: Submitted [
> https://sourceware.org/bugzilla/show_bug.cgi?id=29454
> https://sourceware.org/pipermail/libc-alpha/2022-August/141289.html]
> +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
> +---
> + sysdeps/x86_64/multiarch/strcpy-sse2.S | 2 +-
> + 1 file changed, 1 insertion(+), 1 deletion(-)
> +
> +diff --git a/sysdeps/x86_64/multiarch/strcpy-sse2.S
> b/sysdeps/x86_64/multiarch/strcpy-sse2.S
> +index e29b411314..d6b9bae5f8 100644
> +--- a/sysdeps/x86_64/multiarch/strcpy-sse2.S
> ++++ b/sysdeps/x86_64/multiarch/strcpy-sse2.S
> +@@ -22,7 +22,7 @@
> +
> + # include <sysdep.h>
> +
> +-# ifndef STPCPY
> ++# ifndef STRCPY
> + #  define STRCPY __strcpy_sse2
> + # endif
> +
> diff --git
> a/meta/recipes-core/glibc/glibc/0027-elf-Replace-strcpy-call-with-memcpy-BZ-29454.patch
> b/meta/recipes-core/glibc/glibc/0027-elf-Replace-strcpy-call-with-memcpy-BZ-29454.patch
> new file mode 100644
> index 00000000000..1b347b33226
> --- /dev/null
> +++
> b/meta/recipes-core/glibc/glibc/0027-elf-Replace-strcpy-call-with-memcpy-BZ-29454.patch
> @@ -0,0 +1,32 @@
> +From f0e36cf0b348dbc990af9f869196710ca89c28c2 Mon Sep 17 00:00:00 2001
> +From: Noah Goldstein <goldstein.w.n@gmail.com>
> +Date: Sun, 7 Aug 2022 23:54:19 +0800
> +Subject: [PATCH] elf: Replace `strcpy` call with `memcpy` [BZ #29454]
> +
> +GCC normally does this optimization for us in
> +strlen_pass::handle_builtin_strcpy but only for optimized
> +build. To avoid needing to include strcpy.S in the rtld build to
> +support the debug build, just do the optimization by hand.
> +
> +Upstream-Status: Submitted [
> https://sourceware.org/bugzilla/show_bug.cgi?id=29454
> https://sourceware.org/pipermail/libc-alpha/2022-August/141290.html]
> +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
> +---
> + elf/dl-cache.c | 5 +++--
> + 1 file changed, 3 insertions(+), 2 deletions(-)
> +
> +diff --git a/elf/dl-cache.c b/elf/dl-cache.c
> +index c02a95d9b5..03a6d236e8 100644
> +--- a/elf/dl-cache.c
> ++++ b/elf/dl-cache.c
> +@@ -513,8 +513,9 @@ _dl_load_cache_lookup (const char *name)
> +      we are accessing. Therefore we must make the copy of the
> +      mapping data without using malloc.  */
> +   char *temp;
> +-  temp = alloca (strlen (best) + 1);
> +-  strcpy (temp, best);
> ++  size_t best_len = strlen (best) + 1;
> ++  temp = alloca (best_len);
> ++  memcpy (temp, best, best_len);
> +   return __strdup (temp);
> + }
> +
> diff --git a/meta/recipes-core/glibc/glibc_2.36.bb
> b/meta/recipes-core/glibc/glibc_2.36.bb
> index c64b65db3e3..2db3994cf7b 100644
> --- a/meta/recipes-core/glibc/glibc_2.36.bb
> +++ b/meta/recipes-core/glibc/glibc_2.36.bb
> @@ -51,7 +51,9 @@ SRC_URI =
> "${GLIBC_GIT_URI};branch=${SRCBRANCH};name=glibc \
>
> file://0023-fix-create-thread-failed-in-unprivileged-process-BZ-.patch \
>
> file://0024-Avoid-hardcoded-build-time-paths-in-the-output-binar.patch \
>
> file://0025-Revert-Linux-Implement-a-useful-version-of-_startup_.patch \
> -           "
> +           file://0026-x86-Fix-define-STRCPY-guard-in-strcpy-sse2.S.patch
> \
> +           file://0027-elf-Replace-strcpy-call-with-memcpy-BZ-29454.patch
> \
> +"
>  S = "${WORKDIR}/git"
>  B = "${WORKDIR}/build-${TARGET_SYS}"
>
> --
> 2.37.1
>
>

[-- Attachment #2: Type: text/html, Size: 10925 bytes --]

      reply	other threads:[~2022-08-09 10:13 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-09  5:43 [PATCH V3 1/2] glibc: Bump to 2.36 Khem Raj
2022-08-09  5:43 ` [PATCH V3 2/2] glibc: fix new upstream build issue with DEBUG_BUILD build Khem Raj
2022-08-09 10:12   ` Martin Jansa [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CA+chaQe8g1A3FUu=ct3JXGY017saV3V=f7G9fKc_ccZB5ji=CA@mail.gmail.com' \
    --to=martin.jansa@gmail.com \
    --cc=openembedded-core@lists.openembedded.org \
    --cc=raj.khem@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).