* [Buildroot] [PATCH v1] package/binutils: add upstream patch for v2.37 fixing linking of thin archives
@ 2022-01-26 19:34 Peter Seiderer
2022-01-26 20:09 ` James Hilliard
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Peter Seiderer @ 2022-01-26 19:34 UTC (permalink / raw)
To: buildroot; +Cc: Giulio Benetti, Romain Naour
Add upstream patch ([1]) for v2.37 fixing linkig of thin archives (see [2] for
details).
Fixes:
.../host/bin/arm-buildroot-linux-gnueabihf-g++ [...] -o libQt5WebEngineCore.so.5.15.2 [...]
.../arm-buildroot-linux-gnueabihf/bin/ld: .../build/qt5webengine-5.15.2/src/core/release/obj/third_party/boringssl/libboringssl.a: error adding symbols: malformed archive
collect2: error: ld returned 1 exit status
make[5]: *** [Makefile.core_module:90: ../../lib/libQt5WebEngineCore.so.5.15.2] Error 1
make[4]: *** [Makefile:124: sub-core_module-pro-make_first] Error 2
make[3]: *** [Makefile:79: sub-core-make_first] Error 2
make[2]: *** [Makefile:49: sub-src-make_first] Error 2
make[1]: *** [package/pkg-generic.mk:295: .../build/qt5webengine-5.15.2/.stamp_built] Error 2
make: *** [Makefile:23: _all] Error 2
[1] https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=1c611b40e6bfc8029bff7696814330b5bc0ee5c0
[2] https://sourceware.org/bugzilla/show_bug.cgi?id=28138
Signed-off-by: Peter Seiderer <ps.report@gmx.net>
---
Notes:
- maybe the same failure as
http://autobuild.buildroot.net/results/55c3c66c6c909853d47a470e0bbbab7186c83793
.../host/opt/ext-toolchain/bin/../lib/gcc/x86_64-buildroot-linux-gnu/11.2.0/../../../../x86_64-buildroot-linux-gnu/bin/ld: src/intel/dev/libintel_dev.a: error adding symbols: malformed archive
with BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_GLIBC_BLEEDING_EDGE=y
---
...le-descriptor-if-there-is-no-archive.patch | 236 ++++++++++++++++++
1 file changed, 236 insertions(+)
create mode 100644 package/binutils/2.37/0006-bfd-Close-the-file-descriptor-if-there-is-no-archive.patch
diff --git a/package/binutils/2.37/0006-bfd-Close-the-file-descriptor-if-there-is-no-archive.patch b/package/binutils/2.37/0006-bfd-Close-the-file-descriptor-if-there-is-no-archive.patch
new file mode 100644
index 0000000000..46697cc5c8
--- /dev/null
+++ b/package/binutils/2.37/0006-bfd-Close-the-file-descriptor-if-there-is-no-archive.patch
@@ -0,0 +1,236 @@
+From 1c611b40e6bfc8029bff7696814330b5bc0ee5c0 Mon Sep 17 00:00:00 2001
+From: "H.J. Lu" <hjl.tools@gmail.com>
+Date: Mon, 26 Jul 2021 05:59:55 -0700
+Subject: [PATCH] bfd: Close the file descriptor if there is no archive fd
+
+Close the file descriptor if there is no archive plugin file descriptor
+to avoid running out of file descriptors on thin archives with many
+archive members.
+
+bfd/
+
+ PR ld/28138
+ * plugin.c (bfd_plugin_close_file_descriptor): Close the file
+ descriptor there is no archive plugin file descriptor.
+
+ld/
+
+ PR ld/28138
+ * testsuite/ld-plugin/lto.exp: Run tmpdir/pr28138 only for
+ native build.
+
+ PR ld/28138
+ * testsuite/ld-plugin/lto.exp: Run ld/28138 tests.
+ * testsuite/ld-plugin/pr28138.c: New file.
+ * testsuite/ld-plugin/pr28138-1.c: Likewise.
+ * testsuite/ld-plugin/pr28138-2.c: Likewise.
+ * testsuite/ld-plugin/pr28138-3.c: Likewise.
+ * testsuite/ld-plugin/pr28138-4.c: Likewise.
+ * testsuite/ld-plugin/pr28138-5.c: Likewise.
+ * testsuite/ld-plugin/pr28138-6.c: Likewise.
+ * testsuite/ld-plugin/pr28138-7.c: Likewise.
+
+(cherry picked from commit 5a98fb7513b559e20dfebdbaa2a471afda3b4742)
+(cherry picked from commit 7dc37e1e1209c80e0bab784df6b6bac335e836f2)
+
+[Upstream:
+ https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=1c611b40e6bfc8029bff7696814330b5bc0ee5c0]
+Signed-off-by: Peter Seiderer <ps.report@gmx.net>
+---
+ bfd/plugin.c | 8 +++++++
+ ld/testsuite/ld-plugin/lto.exp | 34 ++++++++++++++++++++++++++++++
+ ld/testsuite/ld-plugin/pr28138-1.c | 6 ++++++
+ ld/testsuite/ld-plugin/pr28138-2.c | 6 ++++++
+ ld/testsuite/ld-plugin/pr28138-3.c | 6 ++++++
+ ld/testsuite/ld-plugin/pr28138-4.c | 6 ++++++
+ ld/testsuite/ld-plugin/pr28138-5.c | 6 ++++++
+ ld/testsuite/ld-plugin/pr28138-6.c | 6 ++++++
+ ld/testsuite/ld-plugin/pr28138-7.c | 6 ++++++
+ ld/testsuite/ld-plugin/pr28138.c | 20 ++++++++++++++++++
+ 10 files changed, 104 insertions(+)
+ create mode 100644 ld/testsuite/ld-plugin/pr28138-1.c
+ create mode 100644 ld/testsuite/ld-plugin/pr28138-2.c
+ create mode 100644 ld/testsuite/ld-plugin/pr28138-3.c
+ create mode 100644 ld/testsuite/ld-plugin/pr28138-4.c
+ create mode 100644 ld/testsuite/ld-plugin/pr28138-5.c
+ create mode 100644 ld/testsuite/ld-plugin/pr28138-6.c
+ create mode 100644 ld/testsuite/ld-plugin/pr28138-7.c
+ create mode 100644 ld/testsuite/ld-plugin/pr28138.c
+
+diff --git a/bfd/plugin.c b/bfd/plugin.c
+index 6cfa2b66470..3bab8febe88 100644
+--- a/bfd/plugin.c
++++ b/bfd/plugin.c
+@@ -291,6 +291,14 @@ bfd_plugin_close_file_descriptor (bfd *abfd, int fd)
+ && !bfd_is_thin_archive (abfd->my_archive))
+ abfd = abfd->my_archive;
+
++ /* Close the file descriptor if there is no archive plugin file
++ descriptor. */
++ if (abfd->archive_plugin_fd == -1)
++ {
++ close (fd);
++ return;
++ }
++
+ abfd->archive_plugin_fd_open_count--;
+ /* Dup the archive plugin file descriptor for later use, which
+ will be closed by _bfd_archive_close_and_cleanup. */
+diff --git a/ld/testsuite/ld-plugin/lto.exp b/ld/testsuite/ld-plugin/lto.exp
+index def69e43ab3..999d911ce6a 100644
+--- a/ld/testsuite/ld-plugin/lto.exp
++++ b/ld/testsuite/ld-plugin/lto.exp
+@@ -687,6 +687,40 @@ if { [is_elf_format] && [check_lto_shared_available] } {
+ }
+ }
+
++run_cc_link_tests [list \
++ [list \
++ "Build pr28138.a" \
++ "-T" "" \
++ {pr28138-1.c pr28138-2.c pr28138-3.c pr28138-4.c pr28138-5.c \
++ pr28138-6.c pr28138-7.c} {} "pr28138.a" \
++ ] \
++ [list \
++ "Build pr28138.o" \
++ "" "" \
++ {pr28138.c} {} \
++ ] \
++]
++
++set exec_output [run_host_cmd "sh" \
++ "-c \"ulimit -n 20; \
++ $CC -Btmpdir/ld -o tmpdir/pr28138 \
++ tmpdir/pr28138.o tmpdir/pr28138.a\""]
++set exec_output [prune_warnings $exec_output]
++if [string match "" $exec_output] then {
++ if { [isnative] } {
++ set exec_output [run_host_cmd "tmpdir/pr28138" ""]
++ if [string match "PASS" $exec_output] then {
++ pass "PR ld/28138"
++ } else {
++ fail "PR ld/28138"
++ }
++ } else {
++ pass "PR ld/28138"
++ }
++} else {
++ fail "PR ld/28138"
++}
++
+ set testname "Build liblto-11.a"
+ remote_file host delete "tmpdir/liblto-11.a"
+ set catch_output [run_host_cmd "$ar" "rc $plug_opt tmpdir/liblto-11.a tmpdir/lto-11a.o tmpdir/lto-11b.o tmpdir/lto-11c.o"]
+diff --git a/ld/testsuite/ld-plugin/pr28138-1.c b/ld/testsuite/ld-plugin/pr28138-1.c
+new file mode 100644
+index 00000000000..51d119e1642
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/pr28138-1.c
+@@ -0,0 +1,6 @@
++extern int a0(void);
++int
++a1(void)
++{
++ return 1 + a0();
++}
+diff --git a/ld/testsuite/ld-plugin/pr28138-2.c b/ld/testsuite/ld-plugin/pr28138-2.c
+new file mode 100644
+index 00000000000..1120cd797e9
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/pr28138-2.c
+@@ -0,0 +1,6 @@
++extern int a1(void);
++int
++a2(void)
++{
++ return 1 + a1();
++}
+diff --git a/ld/testsuite/ld-plugin/pr28138-3.c b/ld/testsuite/ld-plugin/pr28138-3.c
+new file mode 100644
+index 00000000000..ec464947ee6
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/pr28138-3.c
+@@ -0,0 +1,6 @@
++extern int a2(void);
++int
++a3(void)
++{
++ return 1 + a2();
++}
+diff --git a/ld/testsuite/ld-plugin/pr28138-4.c b/ld/testsuite/ld-plugin/pr28138-4.c
+new file mode 100644
+index 00000000000..475701b2c5c
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/pr28138-4.c
+@@ -0,0 +1,6 @@
++extern int a3(void);
++int
++a4(void)
++{
++ return 1 + a3();
++}
+diff --git a/ld/testsuite/ld-plugin/pr28138-5.c b/ld/testsuite/ld-plugin/pr28138-5.c
+new file mode 100644
+index 00000000000..e24f86c363e
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/pr28138-5.c
+@@ -0,0 +1,6 @@
++extern int a4(void);
++int
++a5(void)
++{
++ return 1 + a4();
++}
+diff --git a/ld/testsuite/ld-plugin/pr28138-6.c b/ld/testsuite/ld-plugin/pr28138-6.c
+new file mode 100644
+index 00000000000..b5b938bdb21
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/pr28138-6.c
+@@ -0,0 +1,6 @@
++extern int a5(void);
++int
++a6(void)
++{
++ return 1 + a5();
++}
+diff --git a/ld/testsuite/ld-plugin/pr28138-7.c b/ld/testsuite/ld-plugin/pr28138-7.c
+new file mode 100644
+index 00000000000..4ef75bf0f0c
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/pr28138-7.c
+@@ -0,0 +1,6 @@
++extern int a6(void);
++int
++a7(void)
++{
++ return 1 + a6();
++}
+diff --git a/ld/testsuite/ld-plugin/pr28138.c b/ld/testsuite/ld-plugin/pr28138.c
+new file mode 100644
+index 00000000000..68252c9f382
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/pr28138.c
+@@ -0,0 +1,20 @@
++#include <stdio.h>
++
++extern int a7(void);
++
++int
++a0(void)
++{
++ return 0;
++}
++
++int
++main()
++{
++ if (a7() == 7)
++ {
++ printf ("PASS\n");
++ return 0;
++ }
++ return 1;
++}
+--
+2.34.1
+
--
2.34.1
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [Buildroot] [PATCH v1] package/binutils: add upstream patch for v2.37 fixing linking of thin archives
2022-01-26 19:34 [Buildroot] [PATCH v1] package/binutils: add upstream patch for v2.37 fixing linking of thin archives Peter Seiderer
@ 2022-01-26 20:09 ` James Hilliard
2022-02-01 22:03 ` Arnout Vandecappelle
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: James Hilliard @ 2022-01-26 20:09 UTC (permalink / raw)
To: Peter Seiderer; +Cc: Giulio Benetti, Romain Naour, buildroot
On Wed, Jan 26, 2022 at 12:34 PM Peter Seiderer <ps.report@gmx.net> wrote:
>
> Add upstream patch ([1]) for v2.37 fixing linkig of thin archives (see [2] for
> details).
>
> Fixes:
>
> .../host/bin/arm-buildroot-linux-gnueabihf-g++ [...] -o libQt5WebEngineCore.so.5.15.2 [...]
> .../arm-buildroot-linux-gnueabihf/bin/ld: .../build/qt5webengine-5.15.2/src/core/release/obj/third_party/boringssl/libboringssl.a: error adding symbols: malformed archive
> collect2: error: ld returned 1 exit status
> make[5]: *** [Makefile.core_module:90: ../../lib/libQt5WebEngineCore.so.5.15.2] Error 1
> make[4]: *** [Makefile:124: sub-core_module-pro-make_first] Error 2
> make[3]: *** [Makefile:79: sub-core-make_first] Error 2
> make[2]: *** [Makefile:49: sub-src-make_first] Error 2
> make[1]: *** [package/pkg-generic.mk:295: .../build/qt5webengine-5.15.2/.stamp_built] Error 2
> make: *** [Makefile:23: _all] Error 2
>
> [1] https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=1c611b40e6bfc8029bff7696814330b5bc0ee5c0
> [2] https://sourceware.org/bugzilla/show_bug.cgi?id=28138
>
> Signed-off-by: Peter Seiderer <ps.report@gmx.net>
Reviewed-by: James Hilliard <james.hilliard1@gmail.com>
> ---
> Notes:
> - maybe the same failure as
>
> http://autobuild.buildroot.net/results/55c3c66c6c909853d47a470e0bbbab7186c83793
>
> .../host/opt/ext-toolchain/bin/../lib/gcc/x86_64-buildroot-linux-gnu/11.2.0/../../../../x86_64-buildroot-linux-gnu/bin/ld: src/intel/dev/libintel_dev.a: error adding symbols: malformed archive
>
> with BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_GLIBC_BLEEDING_EDGE=y
> ---
> ...le-descriptor-if-there-is-no-archive.patch | 236 ++++++++++++++++++
> 1 file changed, 236 insertions(+)
> create mode 100644 package/binutils/2.37/0006-bfd-Close-the-file-descriptor-if-there-is-no-archive.patch
>
> diff --git a/package/binutils/2.37/0006-bfd-Close-the-file-descriptor-if-there-is-no-archive.patch b/package/binutils/2.37/0006-bfd-Close-the-file-descriptor-if-there-is-no-archive.patch
> new file mode 100644
> index 0000000000..46697cc5c8
> --- /dev/null
> +++ b/package/binutils/2.37/0006-bfd-Close-the-file-descriptor-if-there-is-no-archive.patch
> @@ -0,0 +1,236 @@
> +From 1c611b40e6bfc8029bff7696814330b5bc0ee5c0 Mon Sep 17 00:00:00 2001
> +From: "H.J. Lu" <hjl.tools@gmail.com>
> +Date: Mon, 26 Jul 2021 05:59:55 -0700
> +Subject: [PATCH] bfd: Close the file descriptor if there is no archive fd
> +
> +Close the file descriptor if there is no archive plugin file descriptor
> +to avoid running out of file descriptors on thin archives with many
> +archive members.
> +
> +bfd/
> +
> + PR ld/28138
> + * plugin.c (bfd_plugin_close_file_descriptor): Close the file
> + descriptor there is no archive plugin file descriptor.
> +
> +ld/
> +
> + PR ld/28138
> + * testsuite/ld-plugin/lto.exp: Run tmpdir/pr28138 only for
> + native build.
> +
> + PR ld/28138
> + * testsuite/ld-plugin/lto.exp: Run ld/28138 tests.
> + * testsuite/ld-plugin/pr28138.c: New file.
> + * testsuite/ld-plugin/pr28138-1.c: Likewise.
> + * testsuite/ld-plugin/pr28138-2.c: Likewise.
> + * testsuite/ld-plugin/pr28138-3.c: Likewise.
> + * testsuite/ld-plugin/pr28138-4.c: Likewise.
> + * testsuite/ld-plugin/pr28138-5.c: Likewise.
> + * testsuite/ld-plugin/pr28138-6.c: Likewise.
> + * testsuite/ld-plugin/pr28138-7.c: Likewise.
> +
> +(cherry picked from commit 5a98fb7513b559e20dfebdbaa2a471afda3b4742)
> +(cherry picked from commit 7dc37e1e1209c80e0bab784df6b6bac335e836f2)
> +
> +[Upstream:
> + https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=1c611b40e6bfc8029bff7696814330b5bc0ee5c0]
> +Signed-off-by: Peter Seiderer <ps.report@gmx.net>
> +---
> + bfd/plugin.c | 8 +++++++
> + ld/testsuite/ld-plugin/lto.exp | 34 ++++++++++++++++++++++++++++++
> + ld/testsuite/ld-plugin/pr28138-1.c | 6 ++++++
> + ld/testsuite/ld-plugin/pr28138-2.c | 6 ++++++
> + ld/testsuite/ld-plugin/pr28138-3.c | 6 ++++++
> + ld/testsuite/ld-plugin/pr28138-4.c | 6 ++++++
> + ld/testsuite/ld-plugin/pr28138-5.c | 6 ++++++
> + ld/testsuite/ld-plugin/pr28138-6.c | 6 ++++++
> + ld/testsuite/ld-plugin/pr28138-7.c | 6 ++++++
> + ld/testsuite/ld-plugin/pr28138.c | 20 ++++++++++++++++++
> + 10 files changed, 104 insertions(+)
> + create mode 100644 ld/testsuite/ld-plugin/pr28138-1.c
> + create mode 100644 ld/testsuite/ld-plugin/pr28138-2.c
> + create mode 100644 ld/testsuite/ld-plugin/pr28138-3.c
> + create mode 100644 ld/testsuite/ld-plugin/pr28138-4.c
> + create mode 100644 ld/testsuite/ld-plugin/pr28138-5.c
> + create mode 100644 ld/testsuite/ld-plugin/pr28138-6.c
> + create mode 100644 ld/testsuite/ld-plugin/pr28138-7.c
> + create mode 100644 ld/testsuite/ld-plugin/pr28138.c
> +
> +diff --git a/bfd/plugin.c b/bfd/plugin.c
> +index 6cfa2b66470..3bab8febe88 100644
> +--- a/bfd/plugin.c
> ++++ b/bfd/plugin.c
> +@@ -291,6 +291,14 @@ bfd_plugin_close_file_descriptor (bfd *abfd, int fd)
> + && !bfd_is_thin_archive (abfd->my_archive))
> + abfd = abfd->my_archive;
> +
> ++ /* Close the file descriptor if there is no archive plugin file
> ++ descriptor. */
> ++ if (abfd->archive_plugin_fd == -1)
> ++ {
> ++ close (fd);
> ++ return;
> ++ }
> ++
> + abfd->archive_plugin_fd_open_count--;
> + /* Dup the archive plugin file descriptor for later use, which
> + will be closed by _bfd_archive_close_and_cleanup. */
> +diff --git a/ld/testsuite/ld-plugin/lto.exp b/ld/testsuite/ld-plugin/lto.exp
> +index def69e43ab3..999d911ce6a 100644
> +--- a/ld/testsuite/ld-plugin/lto.exp
> ++++ b/ld/testsuite/ld-plugin/lto.exp
> +@@ -687,6 +687,40 @@ if { [is_elf_format] && [check_lto_shared_available] } {
> + }
> + }
> +
> ++run_cc_link_tests [list \
> ++ [list \
> ++ "Build pr28138.a" \
> ++ "-T" "" \
> ++ {pr28138-1.c pr28138-2.c pr28138-3.c pr28138-4.c pr28138-5.c \
> ++ pr28138-6.c pr28138-7.c} {} "pr28138.a" \
> ++ ] \
> ++ [list \
> ++ "Build pr28138.o" \
> ++ "" "" \
> ++ {pr28138.c} {} \
> ++ ] \
> ++]
> ++
> ++set exec_output [run_host_cmd "sh" \
> ++ "-c \"ulimit -n 20; \
> ++ $CC -Btmpdir/ld -o tmpdir/pr28138 \
> ++ tmpdir/pr28138.o tmpdir/pr28138.a\""]
> ++set exec_output [prune_warnings $exec_output]
> ++if [string match "" $exec_output] then {
> ++ if { [isnative] } {
> ++ set exec_output [run_host_cmd "tmpdir/pr28138" ""]
> ++ if [string match "PASS" $exec_output] then {
> ++ pass "PR ld/28138"
> ++ } else {
> ++ fail "PR ld/28138"
> ++ }
> ++ } else {
> ++ pass "PR ld/28138"
> ++ }
> ++} else {
> ++ fail "PR ld/28138"
> ++}
> ++
> + set testname "Build liblto-11.a"
> + remote_file host delete "tmpdir/liblto-11.a"
> + set catch_output [run_host_cmd "$ar" "rc $plug_opt tmpdir/liblto-11.a tmpdir/lto-11a.o tmpdir/lto-11b.o tmpdir/lto-11c.o"]
> +diff --git a/ld/testsuite/ld-plugin/pr28138-1.c b/ld/testsuite/ld-plugin/pr28138-1.c
> +new file mode 100644
> +index 00000000000..51d119e1642
> +--- /dev/null
> ++++ b/ld/testsuite/ld-plugin/pr28138-1.c
> +@@ -0,0 +1,6 @@
> ++extern int a0(void);
> ++int
> ++a1(void)
> ++{
> ++ return 1 + a0();
> ++}
> +diff --git a/ld/testsuite/ld-plugin/pr28138-2.c b/ld/testsuite/ld-plugin/pr28138-2.c
> +new file mode 100644
> +index 00000000000..1120cd797e9
> +--- /dev/null
> ++++ b/ld/testsuite/ld-plugin/pr28138-2.c
> +@@ -0,0 +1,6 @@
> ++extern int a1(void);
> ++int
> ++a2(void)
> ++{
> ++ return 1 + a1();
> ++}
> +diff --git a/ld/testsuite/ld-plugin/pr28138-3.c b/ld/testsuite/ld-plugin/pr28138-3.c
> +new file mode 100644
> +index 00000000000..ec464947ee6
> +--- /dev/null
> ++++ b/ld/testsuite/ld-plugin/pr28138-3.c
> +@@ -0,0 +1,6 @@
> ++extern int a2(void);
> ++int
> ++a3(void)
> ++{
> ++ return 1 + a2();
> ++}
> +diff --git a/ld/testsuite/ld-plugin/pr28138-4.c b/ld/testsuite/ld-plugin/pr28138-4.c
> +new file mode 100644
> +index 00000000000..475701b2c5c
> +--- /dev/null
> ++++ b/ld/testsuite/ld-plugin/pr28138-4.c
> +@@ -0,0 +1,6 @@
> ++extern int a3(void);
> ++int
> ++a4(void)
> ++{
> ++ return 1 + a3();
> ++}
> +diff --git a/ld/testsuite/ld-plugin/pr28138-5.c b/ld/testsuite/ld-plugin/pr28138-5.c
> +new file mode 100644
> +index 00000000000..e24f86c363e
> +--- /dev/null
> ++++ b/ld/testsuite/ld-plugin/pr28138-5.c
> +@@ -0,0 +1,6 @@
> ++extern int a4(void);
> ++int
> ++a5(void)
> ++{
> ++ return 1 + a4();
> ++}
> +diff --git a/ld/testsuite/ld-plugin/pr28138-6.c b/ld/testsuite/ld-plugin/pr28138-6.c
> +new file mode 100644
> +index 00000000000..b5b938bdb21
> +--- /dev/null
> ++++ b/ld/testsuite/ld-plugin/pr28138-6.c
> +@@ -0,0 +1,6 @@
> ++extern int a5(void);
> ++int
> ++a6(void)
> ++{
> ++ return 1 + a5();
> ++}
> +diff --git a/ld/testsuite/ld-plugin/pr28138-7.c b/ld/testsuite/ld-plugin/pr28138-7.c
> +new file mode 100644
> +index 00000000000..4ef75bf0f0c
> +--- /dev/null
> ++++ b/ld/testsuite/ld-plugin/pr28138-7.c
> +@@ -0,0 +1,6 @@
> ++extern int a6(void);
> ++int
> ++a7(void)
> ++{
> ++ return 1 + a6();
> ++}
> +diff --git a/ld/testsuite/ld-plugin/pr28138.c b/ld/testsuite/ld-plugin/pr28138.c
> +new file mode 100644
> +index 00000000000..68252c9f382
> +--- /dev/null
> ++++ b/ld/testsuite/ld-plugin/pr28138.c
> +@@ -0,0 +1,20 @@
> ++#include <stdio.h>
> ++
> ++extern int a7(void);
> ++
> ++int
> ++a0(void)
> ++{
> ++ return 0;
> ++}
> ++
> ++int
> ++main()
> ++{
> ++ if (a7() == 7)
> ++ {
> ++ printf ("PASS\n");
> ++ return 0;
> ++ }
> ++ return 1;
> ++}
> +--
> +2.34.1
> +
> --
> 2.34.1
>
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Buildroot] [PATCH v1] package/binutils: add upstream patch for v2.37 fixing linking of thin archives
2022-01-26 19:34 [Buildroot] [PATCH v1] package/binutils: add upstream patch for v2.37 fixing linking of thin archives Peter Seiderer
2022-01-26 20:09 ` James Hilliard
@ 2022-02-01 22:03 ` Arnout Vandecappelle
2022-02-01 22:27 ` Adrian Perez de Castro
2022-02-15 22:11 ` Peter Korsgaard
3 siblings, 0 replies; 5+ messages in thread
From: Arnout Vandecappelle @ 2022-02-01 22:03 UTC (permalink / raw)
To: Peter Seiderer, buildroot; +Cc: Giulio Benetti, Romain Naour
On 26/01/2022 20:34, Peter Seiderer wrote:
> Add upstream patch ([1]) for v2.37 fixing linkig of thin archives (see [2] for
> details).
>
> Fixes:
>
> .../host/bin/arm-buildroot-linux-gnueabihf-g++ [...] -o libQt5WebEngineCore.so.5.15.2 [...]
> .../arm-buildroot-linux-gnueabihf/bin/ld: .../build/qt5webengine-5.15.2/src/core/release/obj/third_party/boringssl/libboringssl.a: error adding symbols: malformed archive
> collect2: error: ld returned 1 exit status
> make[5]: *** [Makefile.core_module:90: ../../lib/libQt5WebEngineCore.so.5.15.2] Error 1
> make[4]: *** [Makefile:124: sub-core_module-pro-make_first] Error 2
> make[3]: *** [Makefile:79: sub-core-make_first] Error 2
> make[2]: *** [Makefile:49: sub-src-make_first] Error 2
> make[1]: *** [package/pkg-generic.mk:295: .../build/qt5webengine-5.15.2/.stamp_built] Error 2
> make: *** [Makefile:23: _all] Error 2
>
> [1] https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=1c611b40e6bfc8029bff7696814330b5bc0ee5c0
> [2] https://sourceware.org/bugzilla/show_bug.cgi?id=28138
>
> Signed-off-by: Peter Seiderer <ps.report@gmx.net>
Applied to master, thanks.
Regards,
Arnout
> ---
> Notes:
> - maybe the same failure as
>
> http://autobuild.buildroot.net/results/55c3c66c6c909853d47a470e0bbbab7186c83793
>
> .../host/opt/ext-toolchain/bin/../lib/gcc/x86_64-buildroot-linux-gnu/11.2.0/../../../../x86_64-buildroot-linux-gnu/bin/ld: src/intel/dev/libintel_dev.a: error adding symbols: malformed archive
>
> with BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_X86_64_CORE_I7_GLIBC_BLEEDING_EDGE=y
> ---
> ...le-descriptor-if-there-is-no-archive.patch | 236 ++++++++++++++++++
> 1 file changed, 236 insertions(+)
> create mode 100644 package/binutils/2.37/0006-bfd-Close-the-file-descriptor-if-there-is-no-archive.patch
>
> diff --git a/package/binutils/2.37/0006-bfd-Close-the-file-descriptor-if-there-is-no-archive.patch b/package/binutils/2.37/0006-bfd-Close-the-file-descriptor-if-there-is-no-archive.patch
> new file mode 100644
> index 0000000000..46697cc5c8
> --- /dev/null
> +++ b/package/binutils/2.37/0006-bfd-Close-the-file-descriptor-if-there-is-no-archive.patch
> @@ -0,0 +1,236 @@
> +From 1c611b40e6bfc8029bff7696814330b5bc0ee5c0 Mon Sep 17 00:00:00 2001
> +From: "H.J. Lu" <hjl.tools@gmail.com>
> +Date: Mon, 26 Jul 2021 05:59:55 -0700
> +Subject: [PATCH] bfd: Close the file descriptor if there is no archive fd
> +
> +Close the file descriptor if there is no archive plugin file descriptor
> +to avoid running out of file descriptors on thin archives with many
> +archive members.
> +
> +bfd/
> +
> + PR ld/28138
> + * plugin.c (bfd_plugin_close_file_descriptor): Close the file
> + descriptor there is no archive plugin file descriptor.
> +
> +ld/
> +
> + PR ld/28138
> + * testsuite/ld-plugin/lto.exp: Run tmpdir/pr28138 only for
> + native build.
> +
> + PR ld/28138
> + * testsuite/ld-plugin/lto.exp: Run ld/28138 tests.
> + * testsuite/ld-plugin/pr28138.c: New file.
> + * testsuite/ld-plugin/pr28138-1.c: Likewise.
> + * testsuite/ld-plugin/pr28138-2.c: Likewise.
> + * testsuite/ld-plugin/pr28138-3.c: Likewise.
> + * testsuite/ld-plugin/pr28138-4.c: Likewise.
> + * testsuite/ld-plugin/pr28138-5.c: Likewise.
> + * testsuite/ld-plugin/pr28138-6.c: Likewise.
> + * testsuite/ld-plugin/pr28138-7.c: Likewise.
> +
> +(cherry picked from commit 5a98fb7513b559e20dfebdbaa2a471afda3b4742)
> +(cherry picked from commit 7dc37e1e1209c80e0bab784df6b6bac335e836f2)
> +
> +[Upstream:
> + https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=1c611b40e6bfc8029bff7696814330b5bc0ee5c0]
> +Signed-off-by: Peter Seiderer <ps.report@gmx.net>
> +---
> + bfd/plugin.c | 8 +++++++
> + ld/testsuite/ld-plugin/lto.exp | 34 ++++++++++++++++++++++++++++++
> + ld/testsuite/ld-plugin/pr28138-1.c | 6 ++++++
> + ld/testsuite/ld-plugin/pr28138-2.c | 6 ++++++
> + ld/testsuite/ld-plugin/pr28138-3.c | 6 ++++++
> + ld/testsuite/ld-plugin/pr28138-4.c | 6 ++++++
> + ld/testsuite/ld-plugin/pr28138-5.c | 6 ++++++
> + ld/testsuite/ld-plugin/pr28138-6.c | 6 ++++++
> + ld/testsuite/ld-plugin/pr28138-7.c | 6 ++++++
> + ld/testsuite/ld-plugin/pr28138.c | 20 ++++++++++++++++++
> + 10 files changed, 104 insertions(+)
> + create mode 100644 ld/testsuite/ld-plugin/pr28138-1.c
> + create mode 100644 ld/testsuite/ld-plugin/pr28138-2.c
> + create mode 100644 ld/testsuite/ld-plugin/pr28138-3.c
> + create mode 100644 ld/testsuite/ld-plugin/pr28138-4.c
> + create mode 100644 ld/testsuite/ld-plugin/pr28138-5.c
> + create mode 100644 ld/testsuite/ld-plugin/pr28138-6.c
> + create mode 100644 ld/testsuite/ld-plugin/pr28138-7.c
> + create mode 100644 ld/testsuite/ld-plugin/pr28138.c
> +
> +diff --git a/bfd/plugin.c b/bfd/plugin.c
> +index 6cfa2b66470..3bab8febe88 100644
> +--- a/bfd/plugin.c
> ++++ b/bfd/plugin.c
> +@@ -291,6 +291,14 @@ bfd_plugin_close_file_descriptor (bfd *abfd, int fd)
> + && !bfd_is_thin_archive (abfd->my_archive))
> + abfd = abfd->my_archive;
> +
> ++ /* Close the file descriptor if there is no archive plugin file
> ++ descriptor. */
> ++ if (abfd->archive_plugin_fd == -1)
> ++ {
> ++ close (fd);
> ++ return;
> ++ }
> ++
> + abfd->archive_plugin_fd_open_count--;
> + /* Dup the archive plugin file descriptor for later use, which
> + will be closed by _bfd_archive_close_and_cleanup. */
> +diff --git a/ld/testsuite/ld-plugin/lto.exp b/ld/testsuite/ld-plugin/lto.exp
> +index def69e43ab3..999d911ce6a 100644
> +--- a/ld/testsuite/ld-plugin/lto.exp
> ++++ b/ld/testsuite/ld-plugin/lto.exp
> +@@ -687,6 +687,40 @@ if { [is_elf_format] && [check_lto_shared_available] } {
> + }
> + }
> +
> ++run_cc_link_tests [list \
> ++ [list \
> ++ "Build pr28138.a" \
> ++ "-T" "" \
> ++ {pr28138-1.c pr28138-2.c pr28138-3.c pr28138-4.c pr28138-5.c \
> ++ pr28138-6.c pr28138-7.c} {} "pr28138.a" \
> ++ ] \
> ++ [list \
> ++ "Build pr28138.o" \
> ++ "" "" \
> ++ {pr28138.c} {} \
> ++ ] \
> ++]
> ++
> ++set exec_output [run_host_cmd "sh" \
> ++ "-c \"ulimit -n 20; \
> ++ $CC -Btmpdir/ld -o tmpdir/pr28138 \
> ++ tmpdir/pr28138.o tmpdir/pr28138.a\""]
> ++set exec_output [prune_warnings $exec_output]
> ++if [string match "" $exec_output] then {
> ++ if { [isnative] } {
> ++ set exec_output [run_host_cmd "tmpdir/pr28138" ""]
> ++ if [string match "PASS" $exec_output] then {
> ++ pass "PR ld/28138"
> ++ } else {
> ++ fail "PR ld/28138"
> ++ }
> ++ } else {
> ++ pass "PR ld/28138"
> ++ }
> ++} else {
> ++ fail "PR ld/28138"
> ++}
> ++
> + set testname "Build liblto-11.a"
> + remote_file host delete "tmpdir/liblto-11.a"
> + set catch_output [run_host_cmd "$ar" "rc $plug_opt tmpdir/liblto-11.a tmpdir/lto-11a.o tmpdir/lto-11b.o tmpdir/lto-11c.o"]
> +diff --git a/ld/testsuite/ld-plugin/pr28138-1.c b/ld/testsuite/ld-plugin/pr28138-1.c
> +new file mode 100644
> +index 00000000000..51d119e1642
> +--- /dev/null
> ++++ b/ld/testsuite/ld-plugin/pr28138-1.c
> +@@ -0,0 +1,6 @@
> ++extern int a0(void);
> ++int
> ++a1(void)
> ++{
> ++ return 1 + a0();
> ++}
> +diff --git a/ld/testsuite/ld-plugin/pr28138-2.c b/ld/testsuite/ld-plugin/pr28138-2.c
> +new file mode 100644
> +index 00000000000..1120cd797e9
> +--- /dev/null
> ++++ b/ld/testsuite/ld-plugin/pr28138-2.c
> +@@ -0,0 +1,6 @@
> ++extern int a1(void);
> ++int
> ++a2(void)
> ++{
> ++ return 1 + a1();
> ++}
> +diff --git a/ld/testsuite/ld-plugin/pr28138-3.c b/ld/testsuite/ld-plugin/pr28138-3.c
> +new file mode 100644
> +index 00000000000..ec464947ee6
> +--- /dev/null
> ++++ b/ld/testsuite/ld-plugin/pr28138-3.c
> +@@ -0,0 +1,6 @@
> ++extern int a2(void);
> ++int
> ++a3(void)
> ++{
> ++ return 1 + a2();
> ++}
> +diff --git a/ld/testsuite/ld-plugin/pr28138-4.c b/ld/testsuite/ld-plugin/pr28138-4.c
> +new file mode 100644
> +index 00000000000..475701b2c5c
> +--- /dev/null
> ++++ b/ld/testsuite/ld-plugin/pr28138-4.c
> +@@ -0,0 +1,6 @@
> ++extern int a3(void);
> ++int
> ++a4(void)
> ++{
> ++ return 1 + a3();
> ++}
> +diff --git a/ld/testsuite/ld-plugin/pr28138-5.c b/ld/testsuite/ld-plugin/pr28138-5.c
> +new file mode 100644
> +index 00000000000..e24f86c363e
> +--- /dev/null
> ++++ b/ld/testsuite/ld-plugin/pr28138-5.c
> +@@ -0,0 +1,6 @@
> ++extern int a4(void);
> ++int
> ++a5(void)
> ++{
> ++ return 1 + a4();
> ++}
> +diff --git a/ld/testsuite/ld-plugin/pr28138-6.c b/ld/testsuite/ld-plugin/pr28138-6.c
> +new file mode 100644
> +index 00000000000..b5b938bdb21
> +--- /dev/null
> ++++ b/ld/testsuite/ld-plugin/pr28138-6.c
> +@@ -0,0 +1,6 @@
> ++extern int a5(void);
> ++int
> ++a6(void)
> ++{
> ++ return 1 + a5();
> ++}
> +diff --git a/ld/testsuite/ld-plugin/pr28138-7.c b/ld/testsuite/ld-plugin/pr28138-7.c
> +new file mode 100644
> +index 00000000000..4ef75bf0f0c
> +--- /dev/null
> ++++ b/ld/testsuite/ld-plugin/pr28138-7.c
> +@@ -0,0 +1,6 @@
> ++extern int a6(void);
> ++int
> ++a7(void)
> ++{
> ++ return 1 + a6();
> ++}
> +diff --git a/ld/testsuite/ld-plugin/pr28138.c b/ld/testsuite/ld-plugin/pr28138.c
> +new file mode 100644
> +index 00000000000..68252c9f382
> +--- /dev/null
> ++++ b/ld/testsuite/ld-plugin/pr28138.c
> +@@ -0,0 +1,20 @@
> ++#include <stdio.h>
> ++
> ++extern int a7(void);
> ++
> ++int
> ++a0(void)
> ++{
> ++ return 0;
> ++}
> ++
> ++int
> ++main()
> ++{
> ++ if (a7() == 7)
> ++ {
> ++ printf ("PASS\n");
> ++ return 0;
> ++ }
> ++ return 1;
> ++}
> +--
> +2.34.1
> +
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Buildroot] [PATCH v1] package/binutils: add upstream patch for v2.37 fixing linking of thin archives
2022-01-26 19:34 [Buildroot] [PATCH v1] package/binutils: add upstream patch for v2.37 fixing linking of thin archives Peter Seiderer
2022-01-26 20:09 ` James Hilliard
2022-02-01 22:03 ` Arnout Vandecappelle
@ 2022-02-01 22:27 ` Adrian Perez de Castro
2022-02-15 22:11 ` Peter Korsgaard
3 siblings, 0 replies; 5+ messages in thread
From: Adrian Perez de Castro @ 2022-02-01 22:27 UTC (permalink / raw)
To: Peter Seiderer; +Cc: Giulio Benetti, Romain Naour, buildroot
[-- Attachment #1.1: Type: text/plain, Size: 1443 bytes --]
Hi,
On Wed, 26 Jan 2022 20:34:31 +0100 Peter Seiderer <ps.report@gmx.net> wrote:
> Add upstream patch ([1]) for v2.37 fixing linkig of thin archives (see [2] for
> details).
>
> Fixes:
>
> .../host/bin/arm-buildroot-linux-gnueabihf-g++ [...] -o libQt5WebEngineCore.so.5.15.2 [...]
> .../arm-buildroot-linux-gnueabihf/bin/ld: .../build/qt5webengine-5.15.2/src/core/release/obj/third_party/boringssl/libboringssl.a: error adding symbols: malformed archive
> collect2: error: ld returned 1 exit status
> make[5]: *** [Makefile.core_module:90: ../../lib/libQt5WebEngineCore.so.5.15.2] Error 1
> make[4]: *** [Makefile:124: sub-core_module-pro-make_first] Error 2
> make[3]: *** [Makefile:79: sub-core-make_first] Error 2
> make[2]: *** [Makefile:49: sub-src-make_first] Error 2
> make[1]: *** [package/pkg-generic.mk:295: .../build/qt5webengine-5.15.2/.stamp_built] Error 2
> make: *** [Makefile:23: _all] Error 2
>
> [1] https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=1c611b40e6bfc8029bff7696814330b5bc0ee5c0
> [2] https://sourceware.org/bugzilla/show_bug.cgi?id=28138
Amusingly I ran into this a couple of days ago and almost simultaneously sent
a patch to include the fixes in the WebKit SDK we use for development [1] =)
> Signed-off-by: Peter Seiderer <ps.report@gmx.net>
Reviewed-by: Adrian Perez de Castro <aperez@igalia.com>
Cheers,
—Adrián
---
[1] https://bugs.webkit.org/show_bug.cgi?id=235975
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]
[-- Attachment #2: Type: text/plain, Size: 150 bytes --]
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Buildroot] [PATCH v1] package/binutils: add upstream patch for v2.37 fixing linking of thin archives
2022-01-26 19:34 [Buildroot] [PATCH v1] package/binutils: add upstream patch for v2.37 fixing linking of thin archives Peter Seiderer
` (2 preceding siblings ...)
2022-02-01 22:27 ` Adrian Perez de Castro
@ 2022-02-15 22:11 ` Peter Korsgaard
3 siblings, 0 replies; 5+ messages in thread
From: Peter Korsgaard @ 2022-02-15 22:11 UTC (permalink / raw)
To: Peter Seiderer; +Cc: Giulio Benetti, Romain Naour, buildroot
>>>>> "Peter" == Peter Seiderer <ps.report@gmx.net> writes:
> Add upstream patch ([1]) for v2.37 fixing linkig of thin archives (see [2] for
> details).
> Fixes:
> .../host/bin/arm-buildroot-linux-gnueabihf-g++ [...] -o libQt5WebEngineCore.so.5.15.2 [...]
> .../arm-buildroot-linux-gnueabihf/bin/ld: .../build/qt5webengine-5.15.2/src/core/release/obj/third_party/boringssl/libboringssl.a: error adding symbols: malformed archive
> collect2: error: ld returned 1 exit status
> make[5]: *** [Makefile.core_module:90: ../../lib/libQt5WebEngineCore.so.5.15.2] Error 1
> make[4]: *** [Makefile:124: sub-core_module-pro-make_first] Error 2
> make[3]: *** [Makefile:79: sub-core-make_first] Error 2
> make[2]: *** [Makefile:49: sub-src-make_first] Error 2
> make[1]: *** [package/pkg-generic.mk:295: .../build/qt5webengine-5.15.2/.stamp_built] Error 2
> make: *** [Makefile:23: _all] Error 2
> [1] https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=1c611b40e6bfc8029bff7696814330b5bc0ee5c0
> [2] https://sourceware.org/bugzilla/show_bug.cgi?id=28138
> Signed-off-by: Peter Seiderer <ps.report@gmx.net>
Committed to 2021.11.x, thanks.
--
Bye, Peter Korsgaard
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2022-02-15 22:11 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-26 19:34 [Buildroot] [PATCH v1] package/binutils: add upstream patch for v2.37 fixing linking of thin archives Peter Seiderer
2022-01-26 20:09 ` James Hilliard
2022-02-01 22:03 ` Arnout Vandecappelle
2022-02-01 22:27 ` Adrian Perez de Castro
2022-02-15 22:11 ` Peter Korsgaard
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.