* [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).