Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Suppressing /usr/bin/ld warning message "missing .note.GNU-stack section implies executable stack" #102

Open
cponder opened this issue Apr 4, 2023 · 3 comments

Comments

@cponder
Copy link
Contributor

cponder commented Apr 4, 2023

Building PNetCDF 1.12.3 on the NERSC/perlmutter cluster (HPE/Cray with SLES 15.4) I get messages like this building the library and the regression-tests using the NVHPC 22.7 compilers:

/usr/bin/ld: warning: /tmp/pgcudafatlp1hHndhHOzT.o: missing .note.GNU-stack section implies executable stack
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker

I'm posting this in case anyone else is trying to deal with the messages; they may well go away with a newer version of ld in future SLES releases or adjustments to the compiled-file formats in future NVHPC releases.

@cponder
Copy link
Contributor Author

cponder commented Apr 4, 2023

The workaround I used was to set these:

export MPIF77="mpif77 -Wl,-Xlinker,-z -Wl,-Xlinker,noexecstack"
export CXXFLAGS="-Wl,-Xlinker,-z -Wl,-Xlinker,noexecstack"
export  FCFLAGS="-Wl,-Xlinker,-z -Wl,-Xlinker,noexecstack"

I couldn't just set any of these

export LDFLAGS="-z noexecstack"
export LDFLAGS="--Wl,z,noexecstack"
export LDFLAGS="-Wl,--Wl,z,noexecstack"

The first would break all the compiles because the mpi compilers are being used for linkage and the -z has to be passed directly to ld.
The second would break most of the regression-test builds because the -Wl is already being stripped when the MPI compiler is invoked for linkage, so the -z`` is detected at that level. The third would break the configurephase because the C-compiler peels-off the first-Wlbutlddoesn't know what to do with the second-Wl```.

@cponder
Copy link
Contributor Author

cponder commented Apr 4, 2023

A more specific set of settings would be

export F77FLAGS="-Wl,-Xlinker,-z -Wl,-Xlinker,noexecstack"
export CXXFLAGS="-Wl,-Xlinker,-z -Wl,-Xlinker,noexecstack"
export  FCFLAGS="-Wl,-Xlinker,-z -Wl,-Xlinker,noexecstack"

but the Makefile doesn't appear to implement a F77FLAGS variable, so we have to attach the flags to the compiler variable instead. Is this an oversight?

@wkliao
Copy link
Member

wkliao commented Apr 7, 2023

FYI. I did not encounter the ld problem when using the following commands on Perlmutter.

% module swap PrgEnv-gnu PrgEnv-nvidia
Lmod is automatically replacing "gcc/11.2.0" with "nvidia/22.7".
Due to MODULEPATH changes, the following have been reloaded:
  1) cray-mpich/8.1.24

% which mpicc
/opt/cray/pe/mpich/8.1.24/ofi/nvidia/20.7/bin/mpicc

% mpicc -show
nvc -I/opt/cray/pe/mpich/8.1.24/ofi/nvidia/20.7/include -L/opt/cray/pe/mpich/8.1.24/ofi/nvidia/20.7/lib -lmpi_nvidia

% nvc --version
nvc 22.7-0 64-bit target on x86-64 Linux -tp zen3 
NVIDIA Compilers and Tools
Copyright (c) 2022, NVIDIA CORPORATION & AFFILIATES.  All rights reserved.

% ../pnetcdf-1.12.3/configure \
    MPICC=mpicc MPICXX=mpicxx MPIF77=mpif77 MPIF90=mpif90 \
    CFLAGS=-O2 CXXFLAGS=-O2 FFLAGS=-O2 FCFLAGS=-O2

And here is the modules loaded in my env.

% module list

Currently Loaded Modules:
  1) craype-x86-milan                       10) cudatoolkit/11.7
  2) libfabric/1.15.2.0                     11) craype-accel-nvidia80
  3) craype-network-ofi                     12) gpu/1.0
  4) xpmem/2.5.2-2.4_3.30__gd0f7936.shasta  13) nvidia/22.7
  5) perftools-base/23.02.0                 14) craype/2.7.19
  6) cpe/23.02                              15) cray-dsmml/0.2.2
  7) xalt/2.10.2                            16) cray-mpich/8.1.24
  8) Nsight-Compute/2022.1.1                17) cray-libsci/23.02.1.1
  9) Nsight-Systems/2022.2.1                18) PrgEnv-nvidia/8.3.3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants