Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 442548

Summary: sys-devel/gcc: doesn't build n32 libraries in n64 mips multilib config
Product: Gentoo Linux Reporter: Matt Turner <mattst88>
Component: Current packagesAssignee: Gentoo Toolchain Maintainers <toolchain>
Status: CONFIRMED ---    
Severity: normal CC: kripton, mips
Priority: Normal    
Version: unspecified   
Hardware: MIPS   
OS: Linux   
Whiteboard:
Package list:
Runtime testing required: ---
Bug Depends on:    
Bug Blocks: 477956    
Attachments: gcc-4.6.3-n64.log.gz

Description Matt Turner gentoo-dev 2012-11-10 05:51:06 UTC
Created attachment 329062 [details]
gcc-4.6.3-n64.log.gz

When building gcc with a default/linux/mips/10.0/mipsel/multilib/n64 profile, I expect gcc and other executables to be n64 ABI binaries and for o32, n32, and n64 libraries to be built, such as crt*.o and libgcc_s.so.

Instead, configure prints 'Running configure in multilib subdirs 32 64' and then only o32 and n64 libraries are built, leaving out n32.

It looks like the libraries gcc installs in /usr/lib/gcc/$CHOST/$GCC_VER/ are the default ABI. On n32 profiles, n32 libraries are installed here, but on other multilib profiles the build system doesn't make any special effort to build n32 libs, so they're left out.
Comment 1 SpanKY gentoo-dev 2012-11-11 21:39:11 UTC
when you see "Running configure in multilib subdirs 32 64", it's talking about the subdirs being built, not the main dir.  so the fact it doesn't list all three isn't a bug in and of itself.

the problem is that the configure logic doesn't appear to handle --with-abi correctly.  it does change the default abi to match that flag, but it doesn't shuffle the subdirs accordingly.  it actually ends up building n64 twice -- once in the toplevel and again in the subdir.
Comment 2 Matt Turner gentoo-dev 2012-11-13 04:40:41 UTC
(In reply to comment #1)
> the problem is that the configure logic doesn't appear to handle --with-abi
> correctly.  it does change the default abi to match that flag, but it
> doesn't shuffle the subdirs accordingly.  it actually ends up building n64
> twice -- once in the toplevel and again in the subdir.

To clarify, is that a problem with gcc's configure logic or with toolchain.eclass? I can't see much in toolchain.eclass that seems related, but it's also surprising that gcc's configure logic could be broken like this.
Comment 3 SpanKY gentoo-dev 2012-11-13 05:31:36 UTC
(In reply to comment #2)

afaict, it's a bug in the gcc build system.  just grab gcc-4.7.2 and build it with these keep bits of info:
 --target=mips64el-unknown-linux-gnu
 --enable-multilib
 --with-abi=64
Comment 4 Matt Turner gentoo-dev 2012-12-03 21:20:15 UTC
Talking with Andrew Pinski:

<pinskia> MULTILIB_OPTIONS/MULTILIB_DIRNAMES don't depend on the --with-abi option as far as I can tell
<pinskia> also I think --with-abi= does not set the default one
<pinskia> MIPS_ABI_DEFAULT in config.gcc is not changed by that option
<pinskia> that might be the bug really :)
Comment 5 Joshua Kinard gentoo-dev 2017-07-17 08:56:17 UTC
Does this bug still look relevant on gcc-6.3.0?  Checking a recent stage run I did for multilib/mips3, I have this for gcc-6.3.0:

# file usr/lib/gcc/mips64-unknown-linux-gnu/6.3.0/libgcc_s.so.1
usr/lib/gcc/mips64-unknown-linux-gnu/6.3.0/libgcc_s.so.1: ELF 32-bit MSB shared object, MIPS, N32 MIPS-III version 1 (SYSV), dynamically linked, stripped

# file usr/lib/gcc/mips64-unknown-linux-gnu/6.3.0/64/libgcc_s.so.1
usr/lib/gcc/mips64-unknown-linux-gnu/6.3.0/64/libgcc_s.so.1: ELF 64-bit MSB shared object, MIPS, MIPS-III version 1 (SYSV), dynamically linked, stripped

# file usr/lib/gcc/mips64-unknown-linux-gnu/6.3.0/32/libgcc_s.so.1
usr/lib/gcc/mips64-unknown-linux-gnu/6.3.0/32/libgcc_s.so.1: ELF 32-bit MSB shared object, MIPS, MIPS-III version 1 (SYSV), dynamically linked, stripped

It looks like gcc is building the main binaries/libs as N32, and then creating separate libraries for N64 and O32, not defaulting to N64 and then doing N32/O32.  So it seems like this might be fixed, just in a different fashion?
Comment 6 Matt Turner gentoo-dev 2017-09-04 22:57:10 UTC
(In reply to Joshua Kinard from comment #5)
> Does this bug still look relevant on gcc-6.3.0?  Checking a recent stage run
> I did for multilib/mips3, I have this for gcc-6.3.0:

Was it a n64/multilib stage? When the default ABI is n32, everything matches what you said. This bug is specifically about when the default ABI is n64.
Comment 7 Joshua Kinard gentoo-dev 2018-04-01 06:48:26 UTC
(In reply to Matt Turner from comment #6)
> (In reply to Joshua Kinard from comment #5)
> > Does this bug still look relevant on gcc-6.3.0?  Checking a recent stage run
> > I did for multilib/mips3, I have this for gcc-6.3.0:
> 
> Was it a n64/multilib stage? When the default ABI is n32, everything matches
> what you said. This bug is specifically about when the default ABI is n64.

No, was a multilib/n32 build.