This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
arm mulltilib build
- From: "Warlich, Christof" <christof dot warlich at siemens dot com>
- To: "gcc-help (gcc-help at gcc dot gnu dot org)" <gcc-help at gcc dot gnu dot org>
- Date: Wed, 11 Jan 2017 07:22:42 +0000
- Subject: arm mulltilib build
- Authentication-results: sourceware.org; auth=none
Hi,
I have a conceptual question w.r.t. an arm miltilib build (e.g. using --with-multilib-list=aprofile):
Comparing the arm multilib build with an x86_64 multilib build, I see that for x86_64, dedicated binaries (e.g. libgcc.a) are built for each subarch, i.e. I get:
$toolchain_root/lib/gcc/x86_64-linux-gnu/6.3.0/libgcc.a
$toolchain_root/lib/gcc/x86_64-linux-gnu/6.3.0/32/libgcc.a
$toolchain_root/lib/gcc/x86_64-linux-gnu/6.3.0/x32/libgcc.a
when passing --with-multilib-list=m64,m32,mx32 to GCC's configure script.
On the other hand, the ARM multilib build always only generates one libgcc.a, i,e,:
$toolchain_root/lib/gcc/arm-linux-gnueabi/6.3.0/libgcc.a
My question: How could this possibly work? I'd rather assumed that, similar to an x86_64 multilib build, dedicated binaries are needed for each of the available subarchs according to the output of:
$ /disk2/ccache/install/arm-audis4-linux-gnueabihf@x86_64-linux-gnu/bin/arm-audis4-linux-gnueabihf-gcc -print-multi-lib
.;
thumb;@mthumb
v7-a;@march=armv7-a
v7ve;@march=armv7ve
v8-a;@march=armv8-a
v7-a/fpv3/softfp;@march=armv7-a@mfpu=vfpv3-d16@mfloat-abi=softfp
v7-a/fpv3/hard;@march=armv7-a@mfpu=vfpv3-d16@mfloat-abi=hard
v7-a/simdv1/softfp;@march=armv7-a@mfpu=neon@mfloat-abi=softfp
v7-a/simdv1/hard;@march=armv7-a@mfpu=neon@mfloat-abi=hard
v7ve/fpv4/softfp;@march=armv7ve@mfpu=vfpv4-d16@mfloat-abi=softfp
v7ve/fpv4/hard;@march=armv7ve@mfpu=vfpv4-d16@mfloat-abi=hard
v7ve/simdvfpv4/softfp;@march=armv7ve@mfpu=neon-vfpv4@mfloat-abi=softfp
v7ve/simdvfpv4/hard;@march=armv7ve@mfpu=neon-vfpv4@mfloat-abi=hard
v8-a/simdv8/softfp;@march=armv8-a@mfpu=neon-fp-armv8@mfloat-abi=softfp
v8-a/simdv8/hard;@march=armv8-a@mfpu=neon-fp-armv8@mfloat-abi=hard
thumb/v7-a;@mthumb@march=armv7-a
thumb/v7ve;@mthumb@march=armv7ve
thumb/v8-a;@mthumb@march=armv8-a
thumb/v7-a/fpv3/softfp;@mthumb@march=armv7-a@mfpu=vfpv3-d16@mfloat-abi=softfp
thumb/v7-a/fpv3/hard;@mthumb@march=armv7-a@mfpu=vfpv3-d16@mfloat-abi=hard
thumb/v7-a/simdv1/softfp;@mthumb@march=armv7-a@mfpu=neon@mfloat-abi=softfp
thumb/v7-a/simdv1/hard;@mthumb@march=armv7-a@mfpu=neon@mfloat-abi=hard
thumb/v7ve/fpv4/softfp;@mthumb@march=armv7ve@mfpu=vfpv4-d16@mfloat-abi=softfp
thumb/v7ve/fpv4/hard;@mthumb@march=armv7ve@mfpu=vfpv4-d16@mfloat-abi=hard
thumb/v7ve/simdvfpv4/softfp;@mthumb@march=armv7ve@mfpu=neon-vfpv4@mfloat-abi=softfp
thumb/v7ve/simdvfpv4/hard;@mthumb@march=armv7ve@mfpu=neon-vfpv4@mfloat-abi=hard
thumb/v8-a/simdv8/softfp;@mthumb@march=armv8-a@mfpu=neon-fp-armv8@mfloat-abi=softfp
thumb/v8-a/simdv8/hard;@mthumb@march=armv8-a@mfpu=neon-fp-armv8@mfloat-abi=hard
And what about a related multilib GLIBC for arm? Do I also only need only one?
Thanks for sharing your thoughts,
Chris