[Bug driver/82754] New: -m32 -B doesn't work with crtn.o
hjl.tools at gmail dot com
gcc-bugzilla@gcc.gnu.org
Fri Oct 27 22:23:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82754
Bug ID: 82754
Summary: -m32 -B doesn't work with crtn.o
Product: gcc
Version: 8.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: driver
Assignee: unassigned at gcc dot gnu.org
Reporter: hjl.tools at gmail dot com
Target Milestone: ---
Host: x86_64
Target: i386
[hjl@gnu-6 tmp]$ cat foo.c
#include <stdio.h>
int
main ()
{
printf ("hello\n");
return 0;
}
[hjl@gnu-6 tmp]$ /usr/gcc-8.0.0-x32/bin/gcc -c foo.c
[hjl@gnu-6 tmp]$ cp /lib64/crtn.o .
[hjl@gnu-6 tmp]$ /usr/gcc-8.0.0-x32/bin/gcc -v -B./ foo.o
Using built-in specs.
COLLECT_GCC=/usr/gcc-8.0.0-x32/bin/gcc
COLLECT_LTO_WRAPPER=/usr/gcc-8.0.0-x32/libexec/gcc/x86_64-pc-linux-gnu/8.0.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /export/gnu/import/git/sources/gcc/configure
--with-demangler-in-ld --enable-languages=c,c++,fortran,lto,objc,ada,obj-c++,go
--prefix=/usr/gcc-8.0.0-x32 --with-local-prefix=/usr/local
--enable-gnu-indirect-function --enable-clocale=gnu --with-system-zlib
--enable-libmpx --with-multilib-list=m32,m64,mx32 --enable-linker-build-id
--enable-gnu-unique-object --with-fpmath=sse : (reconfigured)
/export/gnu/import/git/sources/gcc/configure --with-demangler-in-ld
--enable-languages=c,c++,fortran,lto,objc,ada,obj-c++,go
--prefix=/usr/gcc-8.0.0-x32 --with-local-prefix=/usr/local
--enable-gnu-indirect-function --enable-clocale=gnu --with-system-zlib
--enable-libmpx --with-multilib-list=m32,m64,mx32 --enable-linker-build-id
--enable-gnu-unique-object --with-fpmath=sse : (reconfigured)
/export/gnu/import/git/sources/gcc/configure --with-demangler-in-ld
--enable-languages=c,c++,fortran,lto,objc,ada,obj-c++,go
--prefix=/usr/gcc-8.0.0-x32 --with-local-prefix=/usr/local
--enable-gnu-indirect-function --enable-clocale=gnu --with-system-zlib
--enable-libmpx --with-multilib-list=m32,m64,mx32 --enable-linker-build-id
--enable-gnu-unique-object --with-fpmath=sse
Thread model: posix
gcc version 8.0.0 20171024 (experimental) (GCC)
COMPILER_PATH=./:/usr/gcc-8.0.0-x32/libexec/gcc/x86_64-pc-linux-gnu/8.0.0/:/usr/gcc-8.0.0-x32/libexec/gcc/x86_64-pc-linux-gnu/8.0.0/:/usr/gcc-8.0.0-x32/libexec/gcc/x86_64-pc-linux-gnu/:/usr/gcc-8.0.0-x32/lib/gcc/x86_64-pc-linux-gnu/8.0.0/:/usr/gcc-8.0.0-x32/lib/gcc/x86_64-pc-linux-gnu/
LIBRARY_PATH=./:/usr/gcc-8.0.0-x32/lib/gcc/x86_64-pc-linux-gnu/8.0.0/:/usr/gcc-8.0.0-x32/lib/gcc/x86_64-pc-linux-gnu/8.0.0/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/usr/gcc-8.0.0-x32/lib/gcc/x86_64-pc-linux-gnu/8.0.0/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-B' './' '-mtune=generic' '-march=x86-64'
/usr/gcc-8.0.0-x32/libexec/gcc/x86_64-pc-linux-gnu/8.0.0/collect2 -plugin
/usr/gcc-8.0.0-x32/libexec/gcc/x86_64-pc-linux-gnu/8.0.0/liblto_plugin.so
-plugin-opt=/usr/gcc-8.0.0-x32/libexec/gcc/x86_64-pc-linux-gnu/8.0.0/lto-wrapper
-plugin-opt=-fresolution=/tmp/ccyafVxV.res -plugin-opt=-pass-through=-lgcc
-plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc
-plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id
--eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2
/lib/../lib64/crt1.o /lib/../lib64/crti.o
/usr/gcc-8.0.0-x32/lib/gcc/x86_64-pc-linux-gnu/8.0.0/crtbegin.o -L.
-L/usr/gcc-8.0.0-x32/lib/gcc/x86_64-pc-linux-gnu/8.0.0
-L/usr/gcc-8.0.0-x32/lib/gcc/x86_64-pc-linux-gnu/8.0.0/../../../../lib64
-L/lib/../lib64 -L/usr/lib/../lib64
-L/usr/gcc-8.0.0-x32/lib/gcc/x86_64-pc-linux-gnu/8.0.0/../../.. foo.o -lgcc
--as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed
/usr/gcc-8.0.0-x32/lib/gcc/x86_64-pc-linux-gnu/8.0.0/crtend.o ./crtn.o
COLLECT_GCC_OPTIONS='-v' '-B' './' '-mtune=generic' '-march=x86-64'
[hjl@gnu-6 tmp]$
./crtn.o is used. But with -m32:
[hjl@gnu-6 tmp]$ /usr/gcc-8.0.0-x32/bin/gcc -c foo.c -m32
[hjl@gnu-6 tmp]$ cp /lib/crtn.o .
[hjl@gnu-6 tmp]$ /usr/gcc-8.0.0-x32/bin/gcc -v -B./ foo.o -m32
Using built-in specs.
COLLECT_GCC=/usr/gcc-8.0.0-x32/bin/gcc
COLLECT_LTO_WRAPPER=/usr/gcc-8.0.0-x32/libexec/gcc/x86_64-pc-linux-gnu/8.0.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /export/gnu/import/git/sources/gcc/configure
--with-demangler-in-ld --enable-languages=c,c++,fortran,lto,objc,ada,obj-c++,go
--prefix=/usr/gcc-8.0.0-x32 --with-local-prefix=/usr/local
--enable-gnu-indirect-function --enable-clocale=gnu --with-system-zlib
--enable-libmpx --with-multilib-list=m32,m64,mx32 --enable-linker-build-id
--enable-gnu-unique-object --with-fpmath=sse : (reconfigured)
/export/gnu/import/git/sources/gcc/configure --with-demangler-in-ld
--enable-languages=c,c++,fortran,lto,objc,ada,obj-c++,go
--prefix=/usr/gcc-8.0.0-x32 --with-local-prefix=/usr/local
--enable-gnu-indirect-function --enable-clocale=gnu --with-system-zlib
--enable-libmpx --with-multilib-list=m32,m64,mx32 --enable-linker-build-id
--enable-gnu-unique-object --with-fpmath=sse : (reconfigured)
/export/gnu/import/git/sources/gcc/configure --with-demangler-in-ld
--enable-languages=c,c++,fortran,lto,objc,ada,obj-c++,go
--prefix=/usr/gcc-8.0.0-x32 --with-local-prefix=/usr/local
--enable-gnu-indirect-function --enable-clocale=gnu --with-system-zlib
--enable-libmpx --with-multilib-list=m32,m64,mx32 --enable-linker-build-id
--enable-gnu-unique-object --with-fpmath=sse
Thread model: posix
gcc version 8.0.0 20171024 (experimental) (GCC)
COMPILER_PATH=./:/usr/gcc-8.0.0-x32/libexec/gcc/x86_64-pc-linux-gnu/8.0.0/:/usr/gcc-8.0.0-x32/libexec/gcc/x86_64-pc-linux-gnu/8.0.0/:/usr/gcc-8.0.0-x32/libexec/gcc/x86_64-pc-linux-gnu/:/usr/gcc-8.0.0-x32/lib/gcc/x86_64-pc-linux-gnu/8.0.0/:/usr/gcc-8.0.0-x32/lib/gcc/x86_64-pc-linux-gnu/
LIBRARY_PATH=/usr/gcc-8.0.0-x32/lib/gcc/x86_64-pc-linux-gnu/8.0.0/32/:/usr/gcc-8.0.0-x32/lib/gcc/x86_64-pc-linux-gnu/8.0.0/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:./:/usr/gcc-8.0.0-x32/lib/gcc/x86_64-pc-linux-gnu/8.0.0/:/usr/gcc-8.0.0-x32/lib/gcc/x86_64-pc-linux-gnu/8.0.0/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-B' './' '-m32' '-mtune=generic' '-march=x86-64'
/usr/gcc-8.0.0-x32/libexec/gcc/x86_64-pc-linux-gnu/8.0.0/collect2 -plugin
/usr/gcc-8.0.0-x32/libexec/gcc/x86_64-pc-linux-gnu/8.0.0/liblto_plugin.so
-plugin-opt=/usr/gcc-8.0.0-x32/libexec/gcc/x86_64-pc-linux-gnu/8.0.0/lto-wrapper
-plugin-opt=-fresolution=/tmp/ccnQpjoN.res -plugin-opt=-pass-through=-lgcc
-plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc
-plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id
--eh-frame-hdr -m elf_i386 -dynamic-linker /lib/ld-linux.so.2
/lib/../lib/crt1.o /lib/../lib/crti.o
/usr/gcc-8.0.0-x32/lib/gcc/x86_64-pc-linux-gnu/8.0.0/32/crtbegin.o
-L/usr/gcc-8.0.0-x32/lib/gcc/x86_64-pc-linux-gnu/8.0.0/32
-L/usr/gcc-8.0.0-x32/lib/gcc/x86_64-pc-linux-gnu/8.0.0/../../../../lib
-L/lib/../lib -L/usr/lib/../lib -L.
-L/usr/gcc-8.0.0-x32/lib/gcc/x86_64-pc-linux-gnu/8.0.0
-L/usr/gcc-8.0.0-x32/lib/gcc/x86_64-pc-linux-gnu/8.0.0/../../.. foo.o -lgcc
--as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed
/usr/gcc-8.0.0-x32/lib/gcc/x86_64-pc-linux-gnu/8.0.0/32/crtend.o
/lib/../lib/crtn.o
COLLECT_GCC_OPTIONS='-v' '-B' './' '-m32' '-mtune=generic' '-march=x86-64'
[hjl@gnu-6 tmp]$
./crtn.o isn't used. It looks like -m32 takes precedent over -B./. If
I rename /lib/crtn.o, ./crtn.o is used:
[root@gnu-6 lib64]# cd /lib
[root@gnu-6 lib]# mv crtn.o crtn.o.saved
[root@gnu-6 lib]#
[hjl@gnu-6 tmp]$ /usr/gcc-8.0.0-x32/bin/gcc -v -m32 -B./ foo.o
Using built-in specs.
COLLECT_GCC=/usr/gcc-8.0.0-x32/bin/gcc
COLLECT_LTO_WRAPPER=/usr/gcc-8.0.0-x32/libexec/gcc/x86_64-pc-linux-gnu/8.0.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /export/gnu/import/git/sources/gcc/configure
--with-demangler-in-ld --enable-languages=c,c++,fortran,lto,objc,ada,obj-c++,go
--prefix=/usr/gcc-8.0.0-x32 --with-local-prefix=/usr/local
--enable-gnu-indirect-function --enable-clocale=gnu --with-system-zlib
--enable-libmpx --with-multilib-list=m32,m64,mx32 --enable-linker-build-id
--enable-gnu-unique-object --with-fpmath=sse : (reconfigured)
/export/gnu/import/git/sources/gcc/configure --with-demangler-in-ld
--enable-languages=c,c++,fortran,lto,objc,ada,obj-c++,go
--prefix=/usr/gcc-8.0.0-x32 --with-local-prefix=/usr/local
--enable-gnu-indirect-function --enable-clocale=gnu --with-system-zlib
--enable-libmpx --with-multilib-list=m32,m64,mx32 --enable-linker-build-id
--enable-gnu-unique-object --with-fpmath=sse : (reconfigured)
/export/gnu/import/git/sources/gcc/configure --with-demangler-in-ld
--enable-languages=c,c++,fortran,lto,objc,ada,obj-c++,go
--prefix=/usr/gcc-8.0.0-x32 --with-local-prefix=/usr/local
--enable-gnu-indirect-function --enable-clocale=gnu --with-system-zlib
--enable-libmpx --with-multilib-list=m32,m64,mx32 --enable-linker-build-id
--enable-gnu-unique-object --with-fpmath=sse
Thread model: posix
gcc version 8.0.0 20171024 (experimental) (GCC)
COMPILER_PATH=./:/usr/gcc-8.0.0-x32/libexec/gcc/x86_64-pc-linux-gnu/8.0.0/:/usr/gcc-8.0.0-x32/libexec/gcc/x86_64-pc-linux-gnu/8.0.0/:/usr/gcc-8.0.0-x32/libexec/gcc/x86_64-pc-linux-gnu/:/usr/gcc-8.0.0-x32/lib/gcc/x86_64-pc-linux-gnu/8.0.0/:/usr/gcc-8.0.0-x32/lib/gcc/x86_64-pc-linux-gnu/
LIBRARY_PATH=/usr/gcc-8.0.0-x32/lib/gcc/x86_64-pc-linux-gnu/8.0.0/32/:/usr/gcc-8.0.0-x32/lib/gcc/x86_64-pc-linux-gnu/8.0.0/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:./:/usr/gcc-8.0.0-x32/lib/gcc/x86_64-pc-linux-gnu/8.0.0/:/usr/gcc-8.0.0-x32/lib/gcc/x86_64-pc-linux-gnu/8.0.0/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-m32' '-B' './' '-mtune=generic' '-march=x86-64'
/usr/gcc-8.0.0-x32/libexec/gcc/x86_64-pc-linux-gnu/8.0.0/collect2 -plugin
/usr/gcc-8.0.0-x32/libexec/gcc/x86_64-pc-linux-gnu/8.0.0/liblto_plugin.so
-plugin-opt=/usr/gcc-8.0.0-x32/libexec/gcc/x86_64-pc-linux-gnu/8.0.0/lto-wrapper
-plugin-opt=-fresolution=/tmp/cc023LGU.res -plugin-opt=-pass-through=-lgcc
-plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc
-plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id
--eh-frame-hdr -m elf_i386 -dynamic-linker /lib/ld-linux.so.2
/lib/../lib/crt1.o /lib/../lib/crti.o
/usr/gcc-8.0.0-x32/lib/gcc/x86_64-pc-linux-gnu/8.0.0/32/crtbegin.o
-L/usr/gcc-8.0.0-x32/lib/gcc/x86_64-pc-linux-gnu/8.0.0/32
-L/usr/gcc-8.0.0-x32/lib/gcc/x86_64-pc-linux-gnu/8.0.0/../../../../lib
-L/lib/../lib -L/usr/lib/../lib -L.
-L/usr/gcc-8.0.0-x32/lib/gcc/x86_64-pc-linux-gnu/8.0.0
-L/usr/gcc-8.0.0-x32/lib/gcc/x86_64-pc-linux-gnu/8.0.0/../../.. foo.o -lgcc
--as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed
/usr/gcc-8.0.0-x32/lib/gcc/x86_64-pc-linux-gnu/8.0.0/32/crtend.o ./crtn.o
COLLECT_GCC_OPTIONS='-v' '-m32' '-B' './' '-mtune=generic' '-march=x86-64'
[hjl@gnu-6 tmp]$
More information about the Gcc-bugs
mailing list