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

Reply via email to