#836806 clang on dual arch (x86_64/i386) system tries to use 64 bit libs when m32 is passed

Package:
clang
Source:
llvm-defaults
Description:
C, C++ and Objective-C compiler (LLVM based), clang binary
Submitter:
Matt Parnell
Date:
2026-10-25 09:15:06 UTC
Severity:
normal
Tags:
#836806#5
Date:
2016-09-06 00:45:55 UTC
From:
To:
Ever since the upgrade to gcc6/libstdc++6, this has been an issue.
I build a private application that only works with 32 bit libs currently and
as a result have to include the i386 architecture to pull in a few
specific libraries.
For whatever reason, clang chooses to ignore -m32 and use the x86_64 libraries
if I do not disable (rename/move) them.

Before workaround:

clang -v -m32
Debian clang version 3.6.2-3 (tags/RELEASE_362/final) (based on LLVM 3.6.2)
Target: i386-pc-linux-gnu
Thread model: posix
Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/5.4.1
Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/6.1.1
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8.5
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.9
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.9.3
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.1
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/5.4.1
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/6.1.1
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.8
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.8.5
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.9
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.9.3
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5.4.1
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6.1.1
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Candidate multilib: x32;@mx32
Selected multilib: .;@m64

After:

clang -v -m32
Debian clang version 3.6.2-3 (tags/RELEASE_362/final) (based on LLVM 3.6.2)
Target: i386-pc-linux-gnu
Thread model: posix
Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/5.4.1
Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/6.1.1
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8.5
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.9
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.9.3
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.1
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/5.4.1
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/6.1.1
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.8
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.8.5
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.9
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.9.3
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5.4.1
Selected GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/5.4.1
Candidate multilib: .;@m32
Selected multilib: .;@m32

#836806#10
Date:
2016-09-06 07:51:23 UTC
From:
To:
Le 06/09/2016 à 02:45, Matt Parnell a écrit :
Yes this is because some paths changed during the libstdc++6 migration ?!

Could you report a bug upstream?

Thanks
Sylvestre

#836806#17
Date:
2016-09-06 09:06:08 UTC
From:
To:
hmm, besides the usual 5/6 thing we changed the gnu triplet on i386.  I think
Michael Hudson reported an issue in Ubuntu that clang tries to use a newer
version of g++ if it doesn't exist (e.g. gccgo-6 is installed, but not g++-6).
I'm not aware of other issues.

Matthias