control: tag -1 + moreinfo
control: tag -1 + unreproducible

On 2021-08-04 19:03, Matthias Klose wrote:
> Package: src:glibc
> Version: 2.31-13
> Severity: serious
> Tags: sid bullseye
> 
> when cross-building glibc in the c-t-b packages, the libc.so linker file for
> some non-default multilib builds like the sparc build for sparc64 is broken,
> leading to build failures for at least all gcc-N cross multilib packages at 
> least.
> 
> $ cat usr/lib32/libc.so
> /* GNU ld script
>    Use the shared library, but some functions are only in
>    the static library, so try that secondarily.  */
> OUTPUT_FORMAT(elf32-sparc)
> GROUP ( /lib32/libc.so.6 /usr/lib32/libc_nonshared.a  AS_NEEDED (
> /lib/ld-linux.so.2 ) )

Can you point me where you got that file? It doesn't make sense from the
path and the content point of view. Also it's not what I get in the
libc6-sparc-sparc64-cross package generated by building
cross-toolchain-base-ports in a bullseye chroot. I get instead:

| cat /usr/sparc64-linux-gnu/lib32/libc.so  
| /* GNU ld script
|    Use the shared library, but some functions are only in
|    the static library, so try that secondarily.  */
| OUTPUT_FORMAT(elf32-sparc)
| GROUP ( /usr/sparc64-linux-gnu/lib32/libc.so.6 
/usr/sparc64-linux-gnu/lib32/libc_nonshared.a  AS_NEEDED ( 
/usr/sparc64-linux-gnu/lib/ld-linux.so.2 ) )

> https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=985617#62 says that the
> maintainer is investigating, but apparently this never happened.

I *did* investigate, and checked that the changes in the linker files
are correct. I have just done that again for both cross-toolchain-base
and cross-toolchain-base-ports. Here are the differences I observed on
the linker scripts:

--- old/./unpack/usr/powerpc64-linux-gnu/lib/libc.so    2021-03-03 
15:22:03.000000000 +0100
+++ new/./unpack/usr/powerpc64-linux-gnu/lib/libc.so    2021-03-03 
15:22:03.000000000 +0100
@@ -2,4 +2,4 @@
    Use the shared library, but some functions are only in
    the static library, so try that secondarily.  */
 OUTPUT_FORMAT(elf64-powerpc)
-GROUP ( /usr/powerpc64-linux-gnu/lib/libc.so.6 
/usr/powerpc64-linux-gnu/lib/libc_nonshared.a  AS_NEEDED ( 
/usr/powerpc64-linux-gnu/lib/ld64.so.1 ) )
+GROUP ( /usr/powerpc64-linux-gnu/lib/libc.so.6 
/usr/powerpc64-linux-gnu/lib/libc_nonshared.a  AS_NEEDED ( 
/usr/powerpc64-linux-gnu/lib64/ld64.so.1 ) )
--- old/./unpack/usr/powerpc64-linux-gnu/lib32/libc.so  2021-03-03 
15:22:03.000000000 +0100
+++ new/./unpack/usr/powerpc64-linux-gnu/lib32/libc.so  2021-03-03 
15:22:03.000000000 +0100
@@ -2,4 +2,4 @@
    Use the shared library, but some functions are only in
    the static library, so try that secondarily.  */
 OUTPUT_FORMAT(elf32-powerpc)
-GROUP ( /usr/powerpc64-linux-gnu/lib32/libc.so.6 
/usr/powerpc64-linux-gnu/lib32/libc_nonshared.a  AS_NEEDED ( 
/usr/powerpc64-linux-gnu/lib32/ld.so.1 ) )
+GROUP ( /usr/powerpc64-linux-gnu/lib32/libc.so.6 
/usr/powerpc64-linux-gnu/lib32/libc_nonshared.a  AS_NEEDED ( 
/usr/powerpc64-linux-gnu/lib/ld.so.1 ) )
--- old/./unpack/usr/powerpc64le-linux-gnu/lib/libc.so  2021-03-03 
12:54:20.000000000 +0100
+++ new/./unpack/usr/powerpc64le-linux-gnu/lib/libc.so  2021-03-03 
12:54:20.000000000 +0100
@@ -2,4 +2,4 @@
    Use the shared library, but some functions are only in
    the static library, so try that secondarily.  */
 OUTPUT_FORMAT(elf64-powerpcle)
-GROUP ( /usr/powerpc64le-linux-gnu/lib/libc.so.6 
/usr/powerpc64le-linux-gnu/lib/libc_nonshared.a  AS_NEEDED ( 
/usr/powerpc64le-linux-gnu/lib/ld64.so.2 ) )
+GROUP ( /usr/powerpc64le-linux-gnu/lib/libc.so.6 
/usr/powerpc64le-linux-gnu/lib/libc_nonshared.a  AS_NEEDED ( 
/usr/powerpc64le-linux-gnu/lib64/ld64.so.2 ) )
--- old/./unpack/usr/s390x-linux-gnu/lib32/libc.so      2021-03-03 
12:54:20.000000000 +0100
+++ new/./unpack/usr/s390x-linux-gnu/lib32/libc.so      2021-03-03 
12:54:20.000000000 +0100
@@ -2,4 +2,4 @@
    Use the shared library, but some functions are only in
    the static library, so try that secondarily.  */
 OUTPUT_FORMAT(elf32-s390)
-GROUP ( /usr/s390x-linux-gnu/lib32/libc.so.6 
/usr/s390x-linux-gnu/lib32/libc_nonshared.a  AS_NEEDED ( 
/usr/s390x-linux-gnu/lib32/ld.so.1 ) )
+GROUP ( /usr/s390x-linux-gnu/lib32/libc.so.6 
/usr/s390x-linux-gnu/lib32/libc_nonshared.a  AS_NEEDED ( 
/usr/s390x-linux-gnu/lib/ld.so.1 ) )
--- old/./unpack/usr/sparc64-linux-gnu/lib/libc.so      2021-03-03 
15:22:03.000000000 +0100
+++ new/./unpack/usr/sparc64-linux-gnu/lib/libc.so      2021-03-03 
15:22:03.000000000 +0100
@@ -2,4 +2,4 @@
    Use the shared library, but some functions are only in
    the static library, so try that secondarily.  */
 OUTPUT_FORMAT(elf64-sparc)
-GROUP ( /usr/sparc64-linux-gnu/lib/libc.so.6 
/usr/sparc64-linux-gnu/lib/libc_nonshared.a  AS_NEEDED ( 
/usr/sparc64-linux-gnu/lib/ld-linux.so.2 ) )
+GROUP ( /usr/sparc64-linux-gnu/lib/libc.so.6 
/usr/sparc64-linux-gnu/lib/libc_nonshared.a  AS_NEEDED ( 
/usr/sparc64-linux-gnu/lib64/ld-linux.so.2 ) )
--- old/./unpack/usr/sparc64-linux-gnu/lib32/libc.so    2021-03-03 
15:22:03.000000000 +0100
+++ new/./unpack/usr/sparc64-linux-gnu/lib32/libc.so    2021-03-03 
15:22:03.000000000 +0100
@@ -2,4 +2,4 @@
    Use the shared library, but some functions are only in
    the static library, so try that secondarily.  */
 OUTPUT_FORMAT(elf32-sparc)
-GROUP ( /usr/sparc64-linux-gnu/lib32/libc.so.6 
/usr/sparc64-linux-gnu/lib32/libc_nonshared.a  AS_NEEDED ( 
/usr/sparc64-linux-gnu/lib32/ld-linux.so.2 ) )
+GROUP ( /usr/sparc64-linux-gnu/lib32/libc.so.6 
/usr/sparc64-linux-gnu/lib32/libc_nonshared.a  AS_NEEDED ( 
/usr/sparc64-linux-gnu/lib/ld-linux.so.2 ) )
--- old/./unpack/usr/x86_64-linux-gnu/lib/libc.so       2021-03-03 
12:54:20.000000000 +0100
+++ new/./unpack/usr/x86_64-linux-gnu/lib/libc.so       2021-03-03 
12:54:20.000000000 +0100
@@ -2,4 +2,4 @@
    Use the shared library, but some functions are only in
    the static library, so try that secondarily.  */
 OUTPUT_FORMAT(elf64-x86-64)
-GROUP ( /usr/x86_64-linux-gnu/lib/libc.so.6 
/usr/x86_64-linux-gnu/lib/libc_nonshared.a  AS_NEEDED ( 
/usr/x86_64-linux-gnu/lib/ld-linux-x86-64.so.2 ) )
+GROUP ( /usr/x86_64-linux-gnu/lib/libc.so.6 
/usr/x86_64-linux-gnu/lib/libc_nonshared.a  AS_NEEDED ( 
/usr/x86_64-linux-gnu/lib64/ld-linux-x86-64.so.2 ) )
--- old/./unpack/usr/x86_64-linux-gnu/lib32/libc.so     2021-03-03 
12:54:20.000000000 +0100
+++ new/./unpack/usr/x86_64-linux-gnu/lib32/libc.so     2021-03-03 
12:54:20.000000000 +0100
@@ -2,4 +2,4 @@
    Use the shared library, but some functions are only in
    the static library, so try that secondarily.  */
 OUTPUT_FORMAT(elf32-i386)
-GROUP ( /usr/x86_64-linux-gnu/lib32/libc.so.6 
/usr/x86_64-linux-gnu/lib32/libc_nonshared.a  AS_NEEDED ( 
/usr/x86_64-linux-gnu/lib32/ld-linux.so.2 ) )
+GROUP ( /usr/x86_64-linux-gnu/lib32/libc.so.6 
/usr/x86_64-linux-gnu/lib32/libc_nonshared.a  AS_NEEDED ( 
/usr/x86_64-linux-gnu/lib/ld-linux.so.2 ) )
--- old/./unpack/usr/x86_64-linux-gnux32/lib/libc.so    2021-03-03 
15:22:03.000000000 +0100
+++ new/./unpack/usr/x86_64-linux-gnux32/lib/libc.so    2021-03-03 
15:22:03.000000000 +0100
@@ -2,4 +2,4 @@
    Use the shared library, but some functions are only in
    the static library, so try that secondarily.  */
 OUTPUT_FORMAT(elf32-x86-64)
-GROUP ( /usr/x86_64-linux-gnux32/lib/libc.so.6 
/usr/x86_64-linux-gnux32/lib/libc_nonshared.a  AS_NEEDED ( 
/usr/x86_64-linux-gnux32/lib/ld-linux-x32.so.2 ) )
+GROUP ( /usr/x86_64-linux-gnux32/lib/libc.so.6 
/usr/x86_64-linux-gnux32/lib/libc_nonshared.a  AS_NEEDED ( 
/usr/x86_64-linux-gnux32/libx32/ld-linux-x32.so.2 ) )
--- old/./unpack/usr/x86_64-linux-gnux32/lib32/libc.so  2021-03-03 
15:22:03.000000000 +0100
+++ new/./unpack/usr/x86_64-linux-gnux32/lib32/libc.so  2021-03-03 
15:22:03.000000000 +0100
@@ -2,4 +2,4 @@
    Use the shared library, but some functions are only in
    the static library, so try that secondarily.  */
 OUTPUT_FORMAT(elf32-i386)
-GROUP ( /usr/x86_64-linux-gnux32/lib32/libc.so.6 
/usr/x86_64-linux-gnux32/lib32/libc_nonshared.a  AS_NEEDED ( 
/usr/x86_64-linux-gnux32/lib32/ld-linux.so.2 ) )
+GROUP ( /usr/x86_64-linux-gnux32/lib32/libc.so.6 
/usr/x86_64-linux-gnux32/lib32/libc_nonshared.a  AS_NEEDED ( 
/usr/x86_64-linux-gnux32/lib/ld-linux.so.2 ) )

Basically the AS_NEEDED entry now points directly to the dynamic linker
instead of going through one more level of indirection. But the target
link is still valid.

Regards,
Aurelien

-- 
Aurelien Jarno                          GPG: 4096R/1DDD8C9B
aurel...@aurel32.net                 http://www.aurel32.net

Reply via email to