On Sun, Aug 7, 2022 at 7:00 AM Martin Jansa <martin.ja...@gmail.com> wrote:
>
> This issue is still reproducible in latest 2.36, I've updated:
> https://sourceware.org/bugzilla/show_bug.cgi?id=29249
> and for the new strcpy issue I've bisected where it was introduced and 
> created new ticket upstream:
> https://sourceware.org/bugzilla/show_bug.cgi?id=29454
> we can revert 2 more upstream commits as work around, but lets wait a bit for 
> upstream, maybe there is some simple fix, but I wasn't able to figure it out 
> today (and don't want to spent even more time on it). Reverts included in 
> https://git.openembedded.org/openembedded-core-contrib/log/?h=jansa/master if 
> someone want's to test it as well.
>

I think, we can also track them until they are baked a bit upstream
and backport the final fixes after we have upgraded to 2.36.

> Regards,
>
> On Mon, Aug 1, 2022 at 1:05 PM Martin Jansa via lists.openembedded.org 
> <Martin.Jansa=gmail....@lists.openembedded.org> wrote:
>>
>> FWIW: I was checking if this is still reproducible with 2.36 from khem's 
>> branch:
>> https://github.com/YoeDistro/openembedded-core/commit/eec0967b92973b8ed5b2fe98ac652fe0da21493b
>>
>> and with DEBUG_BUILD it failed elsewhere now:
>> http://errors.yoctoproject.org/Errors/Details/663898/
>>
>> | 
>> /OE/build/oe-core/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:
>>  
>> /OE/build/oe-core/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'
>>
>> On Wed, Jul 27, 2022 at 1:57 PM Martin Jansa via lists.openembedded.org 
>> <Martin.Jansa=gmail....@lists.openembedded.org> wrote:
>>>
>>> * work around for build failure with DEBUG_BUILD:
>>>   http://errors.yoctoproject.org/Errors/Details/661468/
>>>
>>>   
>>> TOPDIR/tmp-glibc/work/core2-64-oe-linux/glibc/2.35-r0/recipe-sysroot-native/usr/bin/x86_64-oe-linux/../../libexec/x86_64-oe-linux/gcc/x86_64-oe-linux/11.3.0/ld.bfd:
>>>   
>>> TOPDIR/tmp-glibc/work/core2-64-oe-linux/glibc/2.35-r0/build-x86_64-oe-linux/libc.a(libc-tls.o):
>>>   in function `__libc_setup_tls':
>>>   /usr/src/debug/glibc/2.35-r0/git/csu/libc-tls.c:202: undefined reference 
>>> to `_startup_fatal_not_constant'
>>>
>>>   introduced in:
>>>   
>>> https://git.openembedded.org/openembedded-core/commit/?id=50ca0eea5424c89c9b39cf69d8bd73fd65f06e95
>>>   with:
>>>   
>>> https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=a2a6bce7d7e52c1c34369a7da62c501cc350bc31
>>>
>>>   Temporary reverting as discussed in:
>>>   https://lists.openembedded.org/g/openembedded-core/message/168463
>>>   (it's also reverted in buildroot now with: 
>>> https://lore.kernel.org/buildroot/20220720213853.1a27184...@busybox.osuosl.org/t/)
>>>
>>>   instead of revert we can use -fexpensive-optimizations which
>>>   will optimize-out the symbol, but that works only with -O1 and
>>>   not -Og used by DEBUG_BUILD
>>>
>>>   upstream report:
>>>   https://sourceware.org/bugzilla/show_bug.cgi?id=29249
>>>
>>> Signed-off-by: Martin Jansa <martin.ja...@gmail.com>
>>> ---
>>>
>>>  v2: mention -fexpensive-optimizations and add link to upstream
>>>      bug report
>>>
>>>  ...lement-a-useful-version-of-_startup_.patch | 128 ++++++++++++++++++
>>>  meta/recipes-core/glibc/glibc_2.35.bb         |   2 +
>>>  2 files changed, 130 insertions(+)
>>>  create mode 100644 
>>> meta/recipes-core/glibc/glibc/0001-Revert-Linux-Implement-a-useful-version-of-_startup_.patch
>>>
>>> diff --git 
>>> a/meta/recipes-core/glibc/glibc/0001-Revert-Linux-Implement-a-useful-version-of-_startup_.patch
>>>  
>>> b/meta/recipes-core/glibc/glibc/0001-Revert-Linux-Implement-a-useful-version-of-_startup_.patch
>>> new file mode 100644
>>> index 0000000000..2421a63605
>>> --- /dev/null
>>> +++ 
>>> b/meta/recipes-core/glibc/glibc/0001-Revert-Linux-Implement-a-useful-version-of-_startup_.patch
>>> @@ -0,0 +1,128 @@
>>> +From 6b8959add09e425df262bf9178b39ca35bc4003c Mon Sep 17 00:00:00 2001
>>> +From: Martin Jansa <martin.ja...@gmail.com>
>>> +Date: Sun, 24 Jul 2022 19:41:41 +0200
>>> +Subject: [PATCH] Revert "Linux: Implement a useful version of 
>>> _startup_fatal"
>>> +
>>> +This reverts commit 2d05ba7f8ef979947e910a37ae8115a816eb4d08.
>>> +Upstream-Status: Inappropriate [temporary work around]
>>> +
>>> +Signed-off-by: Martin Jansa <martin.ja...@gmail.com>
>>> +
>>> +---
>>> + sysdeps/unix/sysv/linux/i386/startup.h | 23 ++++++++++++---
>>> + sysdeps/unix/sysv/linux/ia64/startup.h | 22 ---------------
>>> + sysdeps/unix/sysv/linux/startup.h      | 39 --------------------------
>>> + 3 files changed, 19 insertions(+), 65 deletions(-)
>>> + delete mode 100644 sysdeps/unix/sysv/linux/ia64/startup.h
>>> + delete mode 100644 sysdeps/unix/sysv/linux/startup.h
>>> +
>>> +diff --git a/sysdeps/unix/sysv/linux/i386/startup.h 
>>> b/sysdeps/unix/sysv/linux/i386/startup.h
>>> +index 213805d7d2..67c9310f3a 100644
>>> +--- a/sysdeps/unix/sysv/linux/i386/startup.h
>>> ++++ b/sysdeps/unix/sysv/linux/i386/startup.h
>>> +@@ -1,5 +1,5 @@
>>> + /* Linux/i386 definitions of functions used by static libc main startup.
>>> +-   Copyright (C) 2022 Free Software Foundation, Inc.
>>> ++   Copyright (C) 2017-2022 Free Software Foundation, Inc.
>>> +    This file is part of the GNU C Library.
>>> +
>>> +    The GNU C Library is free software; you can redistribute it and/or
>>> +@@ -16,7 +16,22 @@
>>> +    License along with the GNU C Library; if not, see
>>> +    <https://www.gnu.org/licenses/>.  */
>>> +
>>> +-/* Can't use "call *%gs:SYSINFO_OFFSET" during startup.  */
>>> +-#define I386_USE_SYSENTER 0
>>> ++#if BUILD_PIE_DEFAULT
>>> ++/* Can't use "call *%gs:SYSINFO_OFFSET" during statup in static PIE.  */
>>> ++# define I386_USE_SYSENTER 0
>>> +
>>> +-#include_next <startup.h>
>>> ++# include <sysdep.h>
>>> ++# include <abort-instr.h>
>>> ++
>>> ++__attribute__ ((__noreturn__))
>>> ++static inline void
>>> ++_startup_fatal (const char *message __attribute__ ((unused)))
>>> ++{
>>> ++  /* This is only called very early during startup in static PIE.
>>> ++     FIXME: How can it be improved?  */
>>> ++  ABORT_INSTRUCTION;
>>> ++  __builtin_unreachable ();
>>> ++}
>>> ++#else
>>> ++# include_next <startup.h>
>>> ++#endif
>>> +diff --git a/sysdeps/unix/sysv/linux/ia64/startup.h 
>>> b/sysdeps/unix/sysv/linux/ia64/startup.h
>>> +deleted file mode 100644
>>> +index 77f29f15a2..0000000000
>>> +--- a/sysdeps/unix/sysv/linux/ia64/startup.h
>>> ++++ /dev/null
>>> +@@ -1,22 +0,0 @@
>>> +-/* Linux/ia64 definitions of functions used by static libc main startup.
>>> +-   Copyright (C) 2022 Free Software Foundation, Inc.
>>> +-   This file is part of the GNU C Library.
>>> +-
>>> +-   The GNU C Library is free software; you can redistribute it and/or
>>> +-   modify it under the terms of the GNU Lesser General Public
>>> +-   License as published by the Free Software Foundation; either
>>> +-   version 2.1 of the License, or (at your option) any later version.
>>> +-
>>> +-   The GNU C Library is distributed in the hope that it will be useful,
>>> +-   but WITHOUT ANY WARRANTY; without even the implied warranty of
>>> +-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
>>> +-   Lesser General Public License for more details.
>>> +-
>>> +-   You should have received a copy of the GNU Lesser General Public
>>> +-   License along with the GNU C Library; if not, see
>>> +-   <https://www.gnu.org/licenses/>.  */
>>> +-
>>> +-/* This code is used before the TCB is set up.  */
>>> +-#define IA64_USE_NEW_STUB 0
>>> +-
>>> +-#include_next <startup.h>
>>> +diff --git a/sysdeps/unix/sysv/linux/startup.h 
>>> b/sysdeps/unix/sysv/linux/startup.h
>>> +deleted file mode 100644
>>> +index 39859b404a..0000000000
>>> +--- a/sysdeps/unix/sysv/linux/startup.h
>>> ++++ /dev/null
>>> +@@ -1,39 +0,0 @@
>>> +-/* Linux definitions of functions used by static libc main startup.
>>> +-   Copyright (C) 2017-2022 Free Software Foundation, Inc.
>>> +-   This file is part of the GNU C Library.
>>> +-
>>> +-   The GNU C Library is free software; you can redistribute it and/or
>>> +-   modify it under the terms of the GNU Lesser General Public
>>> +-   License as published by the Free Software Foundation; either
>>> +-   version 2.1 of the License, or (at your option) any later version.
>>> +-
>>> +-   The GNU C Library is distributed in the hope that it will be useful,
>>> +-   but WITHOUT ANY WARRANTY; without even the implied warranty of
>>> +-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
>>> +-   Lesser General Public License for more details.
>>> +-
>>> +-   You should have received a copy of the GNU Lesser General Public
>>> +-   License along with the GNU C Library; if not, see
>>> +-   <https://www.gnu.org/licenses/>.  */
>>> +-
>>> +-#ifdef SHARED
>>> +-# include_next <startup.h>
>>> +-#else
>>> +-# include <sysdep.h>
>>> +-
>>> +-/* Avoid a run-time invocation of strlen.  */
>>> +-#define _startup_fatal(message)                                         \
>>> +-  do                                                                    \
>>> +-    {                                                                   \
>>> +-      size_t __message_length = __builtin_strlen (message);             \
>>> +-      if (! __builtin_constant_p (__message_length))                    \
>>> +-        {                                                               \
>>> +-          extern void _startup_fatal_not_constant (void);               \
>>> +-          _startup_fatal_not_constant ();                               \
>>> +-        }                                                               \
>>> +-      INTERNAL_SYSCALL_CALL (write, STDERR_FILENO, (message),           \
>>> +-                             __message_length);                         \
>>> +-      INTERNAL_SYSCALL_CALL (exit_group, 127);                          \
>>> +-    }                                                                   \
>>> +-  while (0)
>>> +-#endif  /* !SHARED */
>>> diff --git a/meta/recipes-core/glibc/glibc_2.35.bb 
>>> b/meta/recipes-core/glibc/glibc_2.35.bb
>>> index 96fe39c548..df847e76bf 100644
>>> --- a/meta/recipes-core/glibc/glibc_2.35.bb
>>> +++ b/meta/recipes-core/glibc/glibc_2.35.bb
>>> @@ -48,6 +48,8 @@ SRC_URI =  
>>> "${GLIBC_GIT_URI};branch=${SRCBRANCH};name=glibc \
>>>             
>>> file://0022-sysdeps-gnu-configure.ac-Set-libc_cv_rootsbindir-onl.patch \
>>>             
>>> file://0023-timezone-Make-shell-interpreter-overridable-in-tzsel.patch \
>>>             
>>> file://0024-fix-create-thread-failed-in-unprivileged-process-BZ-.patch \
>>> +           \
>>> +           
>>> file://0001-Revert-Linux-Implement-a-useful-version-of-_startup_.patch \
>>>             "
>>>  S = "${WORKDIR}/git"
>>>  B = "${WORKDIR}/build-${TARGET_SYS}"
>>>
>>>
>>>
>>
>> 
>>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#168995): 
https://lists.openembedded.org/g/openembedded-core/message/168995
Mute This Topic: https://lists.openembedded.org/mt/92871770/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to