-
Notifications
You must be signed in to change notification settings - Fork 14.3k
[flang][Driver] When linking with the Fortran runtime, the addArchSpecificRPath()
should be called too
#114837
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
Conversation
…cificRPath() should be called too When linking with other runtimes (OpenMP, sanitizers), the addArchSpecificRPath() is being called. The same thing should happen when linking with the Fortran runtime, this will improve user experience massively.
@llvm/pr-subscribers-flang-driver @llvm/pr-subscribers-clang-driver Author: Paul Osmialowski (pawosm-arm) ChangesWhen linking with other runtimes (OpenMP, sanitizers), the addArchSpecificRPath() is being called. The same thing should happen when linking with the Fortran runtime, this will improve user experience massively. Full diff: https://github.com/llvm/llvm-project/pull/114837.diff 2 Files Affected:
diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp
index 1c3c8c816594e5..ca06fb115dfa11 100644
--- a/clang/lib/Driver/ToolChains/CommonArgs.cpp
+++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp
@@ -1293,6 +1293,7 @@ void tools::addFortranRuntimeLibs(const ToolChain &TC, const ArgList &Args,
}
CmdArgs.push_back("-lFortranRuntime");
CmdArgs.push_back("-lFortranDecimal");
+ addArchSpecificRPath(TC, Args, CmdArgs);
}
// libomp needs libatomic for atomic operations if using libgcc
diff --git a/flang/test/Driver/arch-specific-libdir-rpath.f95 b/flang/test/Driver/arch-specific-libdir-rpath.f95
index cc09938f7d1e28..23fb52abfbd574 100644
--- a/flang/test/Driver/arch-specific-libdir-rpath.f95
+++ b/flang/test/Driver/arch-specific-libdir-rpath.f95
@@ -16,6 +16,13 @@
!
! Test that -rpath is added
!
+! Add LIBPATH, RPATH
+!
+! RUN: %flang %s -### --target=x86_64-linux \
+! RUN: -resource-dir=%S/../../../clang/test/Driver/Inputs/resource_dir_with_arch_subdir \
+! RUN: -frtlib-add-rpath 2>&1 \
+! RUN: | FileCheck --check-prefixes=RESDIR,LIBPATH-X86_64,RPATH-X86_64 %s
+!
! Add LIBPATH, RPATH for OpenMP
!
! RUN: %flang %s -### --target=x86_64-linux -fopenmp \
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
addSanitizerRuntime
and addOpenMPRuntime
are already calling addArchSpecificRPath
. It it a problem if rpath is added multiple times?
Compiler-rt libs (libclang_rt.*.a
) are added as absolute paths, shouldn't the Fortran-runtime do the same?
I've been testing it with and without -fopenmp and didn't observe any problem
This makes sense for static libraries, Fortran-runtime can be built static or shared, and in case of shared lib, the rpath issue starts to kick in. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
For a reference, in case of Clang and C code utilizing OpenMP, -rpath is given at least twice: |
If there are no objections by others, I'll merge it some time tomorrow. |
When linking with other runtimes (OpenMP, sanitizers), the addArchSpecificRPath() is being called. The same thing should happen when linking with the Fortran runtime, this will improve user experience massively.