This is just a strange situation that I know I have seen before and
really can not recall how to fix it. For that matter, I do not recall
what the problem really is. Let it be said that I have done a bootstrap
before a few times and I just _know_ this has happened before. With that
said I apologize if this is a "dummy you did that to yourself" question.
After doing a bootstrap and test report with the new binutils 2.44
and then GCC 14.2.0 on an IBM POWER9 machine and an x86_64 Xeon machine
I get strange behavior. However only on the x86_64 machine. Here is what
happens :
triton$ uname -a
Linux triton 6.1.128-genunix #1 SMP Sun Mar 9 19:44:14 UTC 2025 x86_64
GNU/Linux
triton$
triton$ which gas
/opt/bw/bin/gas
triton$ gas --version
GNU assembler (GENUNIX Mon Mar 10 16:45:34 UTC 2025) 2.44
Copyright (C) 2025 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or later.
This program has absolutely no warranty.
This assembler was configured for a target of `x86_64-pc-linux-gnu'.
triton$
triton$ which g++
/opt/bw/gcc14/bin/g++
triton$ g++ --version
g++ (GENUNIX Mon Mar 10 18:16:45 UTC 2025) 14.2.0
Copyright (C) 2024 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* * * looks to be a good compiler * * *
see https://gcc.gnu.org/pipermail/gcc-testresults/2025-March/840512.html
triton$ echo $CXXFLAGS
-std=c++11 -m64 -g -O0 -march=k8 -mtune=k8 -fno-builtin -fno-fast-math
-mpreferred-stack-boundary=8 -Wl,-rpath=/opt/bw/lib,--enable-new-dtags
triton$
triton$ echo $CPPFLAGS
-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
triton$
triton$ cat nothing.cpp
#include <iostream>
/* This test rejects OSF 5.1 Compaq C++ in its default pre-standard iostream
mode, since that mode puts cout in the global namespace, not "std". */
void someoutput (void) { std::cout << 123; }
int main (void) { return 0; }
triton$
triton$ /opt/bw/gcc14/bin/g++ $CXXFLAGS $CPPFLAGS -c -o nothing.o
nothing.cpp
nothing.cpp:2:10: fatal error: iostream: No such file or directory
2 | #include <iostream>
| ^~~~~~~~~~
compilation terminated.
triton$
I pulled those few lines of code out of the libgmp config tests.
Meanwhile I went through the same process as I usually do with
an IBM POWER9 server and everything "just works". See here :
dax$
dax$ uname -a
Linux dax 6.1.127-mrw1 #1 SMP Fri Jan 31 14:38:26 PST 2025 ppc64le GNU/Linux
dax$
dax$ which gas
/opt/bw/bin/gas
dax$ gas --version
GNU assembler (GNU Binutils) 2.44
Copyright (C) 2025 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or later.
This program has absolutely no warranty.
This assembler was configured for a target of
`powerpc64le-unknown-linux-gnu'.
dax$
dax$ which g++
/opt/bw/gcc14/bin/g++
dax$ g++ --version
g++ (GENUNIX Sat Mar 8 19:10:41 UTC 2025) 14.2.0
Copyright (C) 2024 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* * * also a good looking compiler * * *
https://gcc.gnu.org/pipermail/gcc-testresults/2025-March/840371.html
dax$
dax$ echo $CXXFLAGS
-std=c++11 -g -O0 -mcpu=power9 -fno-builtin -m64
-fno-unsafe-math-optimizations -Wl,-rpath=/opt/bw/lib,--enable-new-dtags
dax$
dax$ echo $CPPFLAGS
-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
dax$
dax$ cat nothing.cpp
#include <iostream>
/* This test rejects OSF 5.1 Compaq C++ in its default pre-standard iostream
mode, since that mode puts cout in the global namespace, not "std". */
void someoutput (void) { std::cout << 123; }
int main (void) { return 0; }
dax$
dax$ /opt/bw/gcc14/bin/g++ $CXXFLAGS $CPPFLAGS -c -o nothing.o nothing.cpp
dax$
I tossed in the -H flag and sure enough the first line of output looks
just fine to me :
dax$
dax$ /opt/bw/gcc14/bin/g++ $CXXFLAGS -H $CPPFLAGS -c -o nothing.o
nothing.cpp
. /opt/bw/gcc14/include/c++/14.2.0/iostream
.. /opt/bw/gcc14/include/c++/14.2.0/bits/requires_hosted.h
.
.
. etc etc
However the x86_64 result seems to not find that file at all and yes it
does exist :
triton$ ls -l /opt/bw/gcc14/include/c++/14.2.0/iostream
-rw-r--r-- 1 root root 3074 Mar 10 19:58
/opt/bw/gcc14/include/c++/14.2.0/iostream
triton$
Not sure what I did wrong here. Any clues ?
--
--
Dennis Clarke
RISC-V/SPARC/PPC/ARM/CISC
UNIX and Linux spoken