unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#75483] [PATCH] gnu: gcc-4.7: Fix slash in startfile prefix.
@ 2025-01-11  1:43 Leo Nikkilä via Guix-patches via
  2025-01-16 22:44 ` bug#75483: " Ludovic Courtès
  0 siblings, 1 reply; 3+ messages in thread
From: Leo Nikkilä via Guix-patches via @ 2025-01-11  1:43 UTC (permalink / raw)
  To: 75483; +Cc: Leo Nikkilä

These prefixes must have a trailing slash.[0] When this slash is
omitted, gcc fails to find ?crt*.o files when LIBRARY_PATH is not set:

    $ uname -a
    Linux guix 6.10.14-gnu #1 SMP PREEMPT_DYNAMIC 1 aarch64 GNU/Linux
    $ guix shell --pure gcc-toolchain -- /bin/sh -c 'LIBRARY_PATH= gcc hello.c'
    ld: cannot find crt1.o: No such file or directory
    ld: cannot find crti.o: No such file or directory
    collect2: error: ld returned 1 exit status

I ran into this when building Yocto images in Guix containers, where
bitbake resets the environment and expects an FHS system.

Looking at `-print-search-dirs', the prefix is definitely present at the
end of the startfiles prefixes list[1]:

    $ guix shell --pure gcc-toolchain -- /bin/sh -c 'LIBRARY_PATH= gcc -print-search-dirs'
    <...>
    libraries: <...>:/gnu/store/3gvs8sw95ldfypr1n688svl5brwdmdi9-glibc-2.39/lib

However, looking closer with strace, gcc is trying to find crt1.o at
`/lib../lib/crt1.o' and `/libcrt1.o', which are paths that have been
mangled due to the missing slash:

    $ guix shell --pure gcc-toolchain strace -- /bin/sh -c 'LIBRARY_PATH= strace -e trace=file gcc hello.c' 2>&1 | grep /gnu/store/3gvs8sw95ldfypr1n688svl5brwdmdi9-glibc-2.39/lib
    <...>
    faccessat(AT_FDCWD, "/gnu/store/3gvs8sw95ldfypr1n688svl5brwdmdi9-glibc-2.39/lib../lib/crt1.o", R_OK) = -1 ENOENT (No such file or directory)
    faccessat(AT_FDCWD, "/gnu/store/3gvs8sw95ldfypr1n688svl5brwdmdi9-glibc-2.39/libcrt1.o", R_OK) = -1 ENOENT (No such file or directory)
    <...>

[0]: <https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=gcc/gcc.cc;h=92c92996401005a9ad17fecd1af4385833785cec;hb=HEAD#l1610>
[1]: <https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=gcc/gcc.cc;h=92c92996401005a9ad17fecd1af4385833785cec;hb=HEAD#l8604>

* gnu/packages/gcc.scm (gcc-4.7): Fix replaced startfile prefix.
[arguments]: <#:phases>: Fix it.
---
 gnu/packages/gcc.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index 6247919fec..3af2fe5c31 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -285,7 +285,7 @@ (define-public gcc-4.7
 \"-L~a/lib %{!static:-rpath=~a/lib %{!static-libgcc:-rpath=~a/lib -lgcc_s}} \" ~a"
                                libc libc libdir suffix))
                       (("#define GNU_USER_TARGET_STARTFILE_SPEC.*$" line)
-                       (format #f "#define STANDARD_STARTFILE_PREFIX_1 \"~a/lib\"
+                       (format #f "#define STANDARD_STARTFILE_PREFIX_1 \"~a/lib/\"
 #define STANDARD_STARTFILE_PREFIX_2 \"\"
 ~a"
                                libc line)))
@@ -299,7 +299,7 @@ (define-public gcc-4.7
 \"-L~a/lib %{!static:-rpath=~a/lib %{!static-libgcc:-rpath=~a/lib -lgcc_s}} \" ~a"
                                libc libc libdir suffix))
                       (("#define	STARTFILE_LINUX_SPEC.*$" line)
-                       (format #f "#define STANDARD_STARTFILE_PREFIX_1 \"~a/lib\"
+                       (format #f "#define STANDARD_STARTFILE_PREFIX_1 \"~a/lib/\"
 #define STANDARD_STARTFILE_PREFIX_2 \"\"
 ~a"
                                libc line))))
-- 
2.46.0





^ permalink raw reply related	[flat|nested] 3+ messages in thread

* bug#75483: [PATCH] gnu: gcc-4.7: Fix slash in startfile prefix.
  2025-01-11  1:43 [bug#75483] [PATCH] gnu: gcc-4.7: Fix slash in startfile prefix Leo Nikkilä via Guix-patches via
@ 2025-01-16 22:44 ` Ludovic Courtès
  2025-01-17  3:17   ` [bug#75483] " Leo Nikkilä via Guix-patches via
  0 siblings, 1 reply; 3+ messages in thread
From: Ludovic Courtès @ 2025-01-16 22:44 UTC (permalink / raw)
  To: Leo Nikkilä; +Cc: 75483-done, Janneke Nieuwenhuizen

Hi Leo,

Leo Nikkilä <hello@lnikki.la> skribis:

> These prefixes must have a trailing slash.[0] When this slash is
> omitted, gcc fails to find ?crt*.o files when LIBRARY_PATH is not set:
>
>     $ uname -a
>     Linux guix 6.10.14-gnu #1 SMP PREEMPT_DYNAMIC 1 aarch64 GNU/Linux
>     $ guix shell --pure gcc-toolchain -- /bin/sh -c 'LIBRARY_PATH= gcc hello.c'
>     ld: cannot find crt1.o: No such file or directory
>     ld: cannot find crti.o: No such file or directory
>     collect2: error: ld returned 1 exit status
>
> I ran into this when building Yocto images in Guix containers, where
> bitbake resets the environment and expects an FHS system.
>
> Looking at `-print-search-dirs', the prefix is definitely present at the
> end of the startfiles prefixes list[1]:
>
>     $ guix shell --pure gcc-toolchain -- /bin/sh -c 'LIBRARY_PATH= gcc -print-search-dirs'
>     <...>
>     libraries: <...>:/gnu/store/3gvs8sw95ldfypr1n688svl5brwdmdi9-glibc-2.39/lib
>
> However, looking closer with strace, gcc is trying to find crt1.o at
> `/lib../lib/crt1.o' and `/libcrt1.o', which are paths that have been
> mangled due to the missing slash:
>
>     $ guix shell --pure gcc-toolchain strace -- /bin/sh -c 'LIBRARY_PATH= strace -e trace=file gcc hello.c' 2>&1 | grep /gnu/store/3gvs8sw95ldfypr1n688svl5brwdmdi9-glibc-2.39/lib
>     <...>
>     faccessat(AT_FDCWD, "/gnu/store/3gvs8sw95ldfypr1n688svl5brwdmdi9-glibc-2.39/lib../lib/crt1.o", R_OK) = -1 ENOENT (No such file or directory)
>     faccessat(AT_FDCWD, "/gnu/store/3gvs8sw95ldfypr1n688svl5brwdmdi9-glibc-2.39/libcrt1.o", R_OK) = -1 ENOENT (No such file or directory)
>     <...>
>
> [0]: <https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=gcc/gcc.cc;h=92c92996401005a9ad17fecd1af4385833785cec;hb=HEAD#l1610>
> [1]: <https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=gcc/gcc.cc;h=92c92996401005a9ad17fecd1af4385833785cec;hb=HEAD#l8604>
>
> * gnu/packages/gcc.scm (gcc-4.7): Fix replaced startfile prefix.
> [arguments]: <#:phases>: Fix it.

Good catch.  Pushed to the ‘core-packages-team’ branch.  (You can see
the position of this branch in the merge queue at
<https://qa.guix.gnu.org/>.)

Now’s a good time if you have other world-rebuild toolchain changes like
this one to submit them!

Thanks,
Ludo’.




^ permalink raw reply	[flat|nested] 3+ messages in thread

* [bug#75483] [PATCH] gnu: gcc-4.7: Fix slash in startfile prefix.
  2025-01-16 22:44 ` bug#75483: " Ludovic Courtès
@ 2025-01-17  3:17   ` Leo Nikkilä via Guix-patches via
  0 siblings, 0 replies; 3+ messages in thread
From: Leo Nikkilä via Guix-patches via @ 2025-01-17  3:17 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 75483, Janneke Nieuwenhuizen

Thanks!

> Now’s a good time if you have other world-rebuild toolchain changes like
> this one to submit them!

Here's one more I found and just submitted:
<https://debbugs.gnu.org/cgi/bugreport.cgi?bug=75620>

With these two changes I'm now able to build a Yocto image on Guix :-)




^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2025-01-17  3:19 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-01-11  1:43 [bug#75483] [PATCH] gnu: gcc-4.7: Fix slash in startfile prefix Leo Nikkilä via Guix-patches via
2025-01-16 22:44 ` bug#75483: " Ludovic Courtès
2025-01-17  3:17   ` [bug#75483] " Leo Nikkilä via Guix-patches via

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).