On Thu, Oct 03, 2019 at 02:08:16PM -0300, Tulio Magno Quites Machado Filho wrote: > Remove the extra -L directory so that user directories specified at > build time have higher preference over the advance toolchain libraries. > > 2019-10-03 Tulio Magno Quites Machado Filho <tul...@linux.ibm.com> > > * config.gcc: Remove an extra -L from --with-advance-toolchain. > --- > gcc/config.gcc | 6 ++---- > 1 file changed, 2 insertions(+), 4 deletions(-) > > diff --git a/gcc/config.gcc b/gcc/config.gcc > index 481bc9586a7..d52b5cd2d41 100644 > --- a/gcc/config.gcc > +++ b/gcc/config.gcc > @@ -4782,14 +4782,12 @@ case "${target}" in > echo "#undef LINK_OS_EXTRA_SPEC32" > echo "#define LINK_OS_EXTRA_SPEC32" \ > "\"%(link_os_new_dtags)" \ > - "-rpath $prefix/lib -rpath $at/lib" \ > - "-L $prefix/lib -L $at/lib\"" > + "-rpath $prefix/lib -rpath $at/lib\"" > echo > echo "#undef LINK_OS_EXTRA_SPEC64" > echo "#define LINK_OS_EXTRA_SPEC64" \ > "\"%(link_os_new_dtags)" \ > - "-rpath $prefix/lib64 -rpath $at/lib64" \ > - "-L $prefix/lib64 -L $at/lib64\"" > + "-rpath $prefix/lib64 -rpath $at/lib64\"" > echo > echo "#undef LINK_OS_NEW_DTAGS_SPEC" > echo "#define LINK_OS_NEW_DTAGS_SPEC" \ > -- > 2.14.5 >
I did a spec build with a compiler created with the following configure options: --enable-languages=c,c++,fortran --enable-checking \ --enable-stage1-checking --enable-gnu-indirect-function \ --enable-plugin --enable-decimal-float --with-long-double-128 \ --enable-secureplt --enable-threads=posix --enable-__cxa_atexit \ --with-cpu=power8 \ --with-as=/home/meissner/fsf-install-ppc64le/pu-binutils/bin/as \ --with-ld=/home/meissner/fsf-install-ppc64le/pu-binutils/bin/ld \ --with-gnu-as=/home/meissner/fsf-install-ppc64le/pu-binutils/bin/as \ --with-gnu-ld=/home/meissner/fsf-install-ppc64le/pu-binutils/bin/ld \ --with-advance-toolchain=at12.0 \ --with-native-system-header-dir=/opt/at12.0/include \ --without-ppl --without-cloog --without-isl And then I built Spec 2006 and 2017 with my normal options on a power8 system running Ubuntu and an older set of host libraries. If I have this patch installed, it breaks linking some/all of the C++ and Fortran benchmarks, because it finds the host C++/Fortran libraries before the AT 12.0 libraries. Now, if I need to add more -I, -L, -Wl,-rpath,... options I can do it, but I suspect it will break anybody else that uses --with-advance-toolchain=<xxx> to completely avoid using the host libraries. Here is the information from the Spec 2017 cactuBSSN_r benchmark, which is a C++ benchmark: /home/meissner/fsf-install-ppc64le/pu-binutils/bin/ld: Cactus/piraha/Call.o: in function `cctki_piraha::meval(cctki_piraha::smart_ptr<cctki_piraha::Group>)': /home/meissner/spec-build/spec-2017-base-dev100-powerle9-vsx-mrmrpath-nomass-hugetlbfs-stdmalloc-shared-at12.0-64bit/benchspec/CPU/507.cactuBSSN_r/build/build_base_base_64.0000/Cactus/piraha/Call.cc:420: undefined reference to `std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::basic_ostringstream()' /home/meissner/fsf-install-ppc64le/pu-binutils/bin/ld: /home/meissner/spec-build/spec-2017-base-dev100-powerle9-vsx-mrmrpath-nomass-hugetlbfs-stdmalloc-shared-at12.0-64bit/benchspec/CPU/507.cactuBSSN_r/build/build_base_base_64.0000/Cactus/piraha/Call.cc:448: undefined reference to `std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::basic_ostringstream()' /home/meissner/fsf-install-ppc64le/pu-binutils/bin/ld: /home/meissner/spec-build/spec-2017-base-dev100-powerle9-vsx-mrmrpath-nomass-hugetlbfs-stdmalloc-shared-at12.0-64bit/benchspec/CPU/507.cactuBSSN_r/build/build_base_base_64.0000/Cactus/piraha/Call.cc:462: undefined reference to `std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::basic_ostringstream()' /home/meissner/fsf-install-ppc64le/pu-binutils/bin/ld: /home/meissner/spec-build/spec-2017-base-dev100-powerle9-vsx-mrmrpath-nomass-hugetlbfs-stdmalloc-shared-at12.0-64bit/benchspec/CPU/507.cactuBSSN_r/build/build_base_base_64.0000/Cactus/piraha/Call.cc:451: undefined reference to `std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::basic_stringstream()' /home/meissner/fsf-install-ppc64le/pu-binutils/bin/ld: /home/meissner/spec-build/spec-2017-base-dev100-powerle9-vsx-mrmrpath-nomass-hugetlbfs-stdmalloc-shared-at12.0-64bit/benchspec/CPU/507.cactuBSSN_r/build/build_base_base_64.0000/Cactus/piraha/Call.cc:478: undefined reference to `std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::basic_ostringstream()' /home/meissner/fsf-install-ppc64le/pu-binutils/bin/ld: /home/meissner/spec-build/spec-2017-base-dev100-powerle9-vsx-mrmrpath-nomass-hugetlbfs-stdmalloc-shared-at12.0-64bit/benchspec/CPU/507.cactuBSSN_r/build/build_base_base_64.0000/Cactus/piraha/Call.cc:493: undefined reference to `std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::basic_ostringstream()' /home/meissner/fsf-install-ppc64le/pu-binutils/bin/ld: /home/meissner/spec-build/spec-2017-base-dev100-powerle9-vsx-mrmrpath-nomass-hugetlbfs-stdmalloc-shared-at12.0-64bit/benchspec/CPU/507.cactuBSSN_r/build/build_base_base_64.0000/Cactus/piraha/Call.cc:487: undefined reference to `std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::basic_ostringstream()' /home/meissner/fsf-install-ppc64le/pu-binutils/bin/ld: /home/meissner/spec-build/spec-2017-base-dev100-powerle9-vsx-mrmrpath-nomass-hugetlbfs-stdmalloc-shared-at12.0-64bit/benchspec/CPU/507.cactuBSSN_r/build/build_base_base_64.0000/Cactus/piraha/Call.cc:544: undefined reference to `std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::basic_ostringstream()' /home/meissner/fsf-install-ppc64le/pu-binutils/bin/ld: /home/meissner/spec-build/spec-2017-base-dev100-powerle9-vsx-mrmrpath-nomass-hugetlbfs-stdmalloc-shared-at12.0-64bit/benchspec/CPU/507.cactuBSSN_r/build/build_base_base_64.0000/Cactus/piraha/Call.cc:602: undefined reference to `std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::basic_ostringstream()' /home/meissner/fsf-install-ppc64le/pu-binutils/bin/ld: Cactus/piraha/Call.o:/home/meissner/spec-build/spec-2017-base-dev100-powerle9-vsx-mrmrpath-nomass-hugetlbfs-stdmalloc-shared-at12.0-64bit/benchspec/CPU/507.cactuBSSN_r/build/build_base_base_64.0000/Cactus/piraha/Call.cc:622: more undefined references to `std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::basic_ostringstream()' follow The C++ lines I used to build the benchmark .o files for C++ was: <...>/g++ -c -o Cactus/main/flesh.o -DSPEC -DSPEC_CPU -DNDEBUG \ -Iinclude -DCCODE -DSPEC_SUPPRESS_OPENMP \ -DCCTK_DISABLE_RESTRICT=1 -g -mlittle -save-temps=obj \ -ffast-math -Ofast -mcpu=power9 -mrecip -funroll-loops \ -mno-pointers-to-nested-functions -msave-toc-indirect -m64 \ -I/opt/at12.0/include \ -I/opt/at12.0/lib/gcc/powerpc64le-linux-gnu/8.3.1/include \ -DSPEC_LP64 Cactus/main/flesh.cc Similarly for Fortran, here is the Spec 2017 wrf_r benchmark, which is a Fortran benchmark: /home/meissner/fsf-install-ppc64le/pu-binutils/bin/ld: diffwrf.fppized.o: in function `MAIN__': /home/meissner/spec-build/spec-2017-base-dev100-powerle9-vsx-mrmrpath-nomass-hugetlbfs-stdmalloc-shared-at12.0-64bit/benchspec/CPU/521.wrf_r/build/build_base_base_64.0000/diffwrf.fppized.f90:1626: undefined reference to `_gfortran_os_error_at' /home/meissner/fsf-install-ppc64le/pu-binutils/bin/ld: /home/meissner/spec-build/spec-2017-base-dev100-powerle9-vsx-mrmrpath-nomass-hugetlbfs-stdmalloc-shared-at12.0-64bit/benchspec/CPU/521.wrf_r/build/build_base_base_64.0000/diffwrf.fppized.f90:1729: undefined reference to `_gfortran_os_error_at' /home/meissner/fsf-install-ppc64le/pu-binutils/bin/ld: /home/meissner/spec-build/spec-2017-base-dev100-powerle9-vsx-mrmrpath-nomass-hugetlbfs-stdmalloc-shared-at12.0-64bit/benchspec/CPU/521.wrf_r/build/build_base_base_64.0000/diffwrf.fppized.f90:1730: undefined reference to `_gfortran_os_error_at' /home/meissner/fsf-install-ppc64le/pu-binutils/bin/ld: ESMF_AlarmClock.fppized.o: in function `__esmf_alarmclockmod_MOD_esmf_alarmcreate': /home/meissner/spec-build/spec-2017-base-dev100-powerle9-vsx-mrmrpath-nomass-hugetlbfs-stdmalloc-shared-at12.0-64bit/benchspec/CPU/521.wrf_r/build/build_base_base_64.0000/ESMF_AlarmClock.fppized.f90:118: undefined reference to `_gfortran_os_error_at' /home/meissner/fsf-install-ppc64le/pu-binutils/bin/ld: ESMF_Clock.fppized.o: in function `__esmf_clockmod_MOD_esmf_clockcreate': /home/meissner/spec-build/spec-2017-base-dev100-powerle9-vsx-mrmrpath-nomass-hugetlbfs-stdmalloc-shared-at12.0-64bit/benchspec/CPU/521.wrf_r/build/build_base_base_64.0000/ESMF_Clock.fppized.f90:303: undefined reference to `_gfortran_os_error_at' /home/meissner/fsf-install-ppc64le/pu-binutils/bin/ld: ESMF_Clock.fppized.o:/home/meissner/spec-build/spec-2017-base-dev100-powerle9-vsx-mrmrpath-nomass-hugetlbfs-stdmalloc-shared-at12.0-64bit/benchspec/CPU/521.wrf_r/build/build_base_base_64.0000/ESMF_Clock.fppized.f90:223: more undefined references to `_gfortran_os_error_at' follow collect2: error: ld returned 1 exit status specmake: *** [diffwrf_521] Error 1 Here are the options used for compiling one benchark file: <...>/gfortran -c -o ESMF_Fraction.fppized.o -I. -I./netcdf/include \ -I./inc -g -mlittle -save-temps=obj -ffast-math -Ofast \ -mcpu=power9 -mrecip -funroll-loops \ -mno-pointers-to-nested-functions -msave-toc-indirect -m64 \ -I/opt/at12.0/include \ -I/opt/at12.0/lib/gcc/powerpc64le-linux-gnu/8.3.1/include \ -fstack-arrays -std=legacy -fconvert=big-endian \ -fno-range-check -fcray-pointer ESMF_Fraction.fppized.f90 -- Michael Meissner, IBM IBM, M/S 2506R, 550 King Street, Littleton, MA 01460-6245, USA email: meiss...@linux.ibm.com, phone: +1 (978) 899-4797