xgcc running when configured with --disable-bootstrap
Brian Drummond
brian@shapes.demon.co.uk
Sun Oct 1 19:21:00 GMT 2017
When compiling gcc, I've sometimes seen errors arise from commands
where the compiler is xgcc, even when not bootstrapping.
Presumably this is the newly generated compiler being used as a second
stage to build essential run-time libraries, and not (as I used to
think) the --disable-bootstrap configure option being ignored.
So far so good ... but my question is, where does the configuration
(specifically Makefile) for that second stage build come from?
To be more specific : using the Debian Stretch gcc-6 source package
(gcc-6.3.0-18), I'm seeing problems with the second stage build of
libiberty which manifest later as the appended error;
xgcc: error: ../libiberty/pic/concat.o: No such file or directory
Indeed there is no such file inÂ
gcc-objs/x86_64-pc-linux-gnu/libiberty/pic/
(in fact there isn't a pic/ folder either) though it's present in the
first stage build, in
gcc-objs/libiberty/pic/
Why is the second stage build of libiberty so different? Well, let's
look at the Makefiles in each folder.
-----------------------------------------------------------------------
 diff '/home/brian/Projects/ghdl/2017/gcc-objs/libiberty/Makefile'
'/home/brian/Projects/ghdl/2017/gcc-objs/x86_64-pc-linux-
gnu/libiberty/Makefile'Â
57c57
< CC = gcc
---
> CC = /home/brian/Projects/ghdl/2017/gcc-objs/./gcc/xgcc
-B/home/brian/Projects/ghdl/2017/gcc-objs/./gcc/
-B/opt/ghdl/gcc/x86_64-pc-linux-gnu/bin/ -B/opt/ghdl/gcc/x86_64-pc-
linux-gnu/lib/ -isystem /opt/ghdl/gcc/x86_64-pc-linux-gnu/include
-isystem /opt/ghdl/gcc/x86_64-pc-linux-gnu/sys-include -isystem
/home/brian/Projects/ghdl/2017/gcc-objs/sys-include  Â
64c64
< PICFLAG = -fpic
---
> PICFLAG =Â
113c113
< enable_shared = yes
---
> enable_shared = no
-----------------------------------------------------------------------
... well the -fpic flag went missing somehow.
I'm not actually clear if this is intended behaviour but it seems odd.
At this point I'm stuck, having no clear idea what derives the latter
Makefile, or why it drops -fpic, or how to control the behaviour (other
than modifying the Makefile by hand each time I run Configure. There
HAS to be a better way!). Or why it used to work with gcc-4.9 but not
gcc-6.3.
But I'd like to know how these options get passed around and the
intended way to change them.
-- Brian
point of failure below...
----------------------------------------------------------------------
: # Make libgnatprj.so
/home/brian/Projects/ghdl/2017/gcc-objs/./gcc/xgcc
-B/home/brian/Projects/ghdl/2017/gcc-objs/./gcc/
-B/opt/ghdl/gcc/x86_64-pc-linux-gnu/bin/ -B/opt/ghdl/gcc/x86_64-pc-
linux-gnu/lib/ -isystem /opt/ghdl/gcc/x86_64-pc-linux-gnu/include
-isystem /opt/ghdl/gcc/x86_64-pc-linux-gnu/sys-include -isystem
/home/brian/Projects/ghdl/2017/gcc-objs/sys-include    -o
libgnatprj.so.6 -shared -fPIC -Wl,--soname,libgnatprj.so.6 -Wl,--no-
allow-shlib-undefined \
   obj-shared/ali.o obj-shared/ali-util.o obj-shared/butil.o obj-
shared/binderr.o obj-shared/errout.o obj-shared/erroutc.o obj-
shared/errutil.o obj-shared/err_vars.o obj-shared/fname-uf.o obj-
shared/fmap.o obj-shared/impunit.o obj-shared/lib-util.o obj-
shared/makeutl.o obj-shared/mlib.o obj-shared/mlib-fil.o obj-
shared/mlib-tgt.o obj-shared/mlib-tgt-specific.o obj-shared/mlib-utl.o
obj-shared/osint.o obj-shared/osint-c.o obj-shared/prj.o obj-
shared/prj-attr.o obj-shared/prj-attr-pm.o obj-shared/prj-com.o obj-
shared/prj-conf.o obj-shared/prj-dect.o obj-shared/prj-env.o obj-
shared/prj-err.o obj-shared/prj-ext.o obj-shared/prj-makr.o obj-
shared/prj-nmsc.o obj-shared/prj-pars.o obj-shared/prj-part.o obj-
shared/prj-pp.o obj-shared/prj-proc.o obj-shared/prj-strt.o obj-
shared/prj-tree.o obj-shared/prj-util.o obj-shared/restrict.o obj-
shared/rident.o obj-shared/scng.o obj-shared/sfn_scan.o obj-
shared/sinfo-cn.o obj-shared/sinput-c.o obj-shared/sinput-p.o obj-
shared/style.o obj-shared/styleg.o obj-shared/stylesw.o obj-
shared/switch.o obj-shared/switch-m.o obj-shared/targparm.o obj-
shared/tempdir.o obj-shared/sdefault.o obj-shared/link.o obj-
shared/prefix.o ../libiberty/pic/concat.o
../libiberty/pic/filename_cmp.o ../libiberty/pic/lrealpath.o
../libiberty/pic/safe-ctype.o ../libiberty/pic/xexit.o
../libiberty/pic/xmalloc.o ../libiberty/pic/xstrdup.o \
   -L../../gcc/ada/rts -lgnat-6 \
   -L../libgnatvsn -lgnatvsnÂ
xgcc: error: ../libiberty/pic/concat.o: No such file or directory
xgcc: error: ../libiberty/pic/filename_cmp.o: No such file or directory
xgcc: error: ../libiberty/pic/lrealpath.o: No such file or directory
xgcc: error: ../libiberty/pic/safe-ctype.o: No such file or directory
xgcc: error: ../libiberty/pic/xexit.o: No such file or directory
xgcc: error: ../libiberty/pic/xmalloc.o: No such file or directory
xgcc: error: ../libiberty/pic/xstrdup.o: No such file or directory
Makefile:76: recipe for target 'libgnatprj.so.6' failed
make[2]: *** [libgnatprj.so.6] Error 1
make[2]: Leaving directory '/home/brian/Projects/ghdl/2017/gcc-
objs/x86_64-pc-linux-gnu/libgnatprj'
Makefile:16418: recipe for target 'all-target-libgnatprj' failed
More information about the Gcc-help
mailing list