[llvm] [llvm-bolt] Modify `getLibPath` to enable `--runtime-instrumentation-lib` option handle full path correctly.(llvm#99772) (PR #99806)
Zimo Ji via llvm-commits
llvm-commits at lists.llvm.org
Sun Jul 21 06:02:00 PDT 2024
https://github.com/lltsdyp updated https://github.com/llvm/llvm-project/pull/99806
>From ede137b646939fa78dd454fb961d55678bbea2a9 Mon Sep 17 00:00:00 2001
From: Jizimo <jizimo0430 at outlook.com>
Date: Sun, 21 Jul 2024 17:24:18 +0800
Subject: [PATCH 1/3] [llvm-bolt] Modify `getLibPath` to enable
`--runtime-instrumentation-lib` option handle full path correctly.
---
bolt/lib/RuntimeLibs/RuntimeLibrary.cpp | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/bolt/lib/RuntimeLibs/RuntimeLibrary.cpp b/bolt/lib/RuntimeLibs/RuntimeLibrary.cpp
index 276b034d71f96..0826847ee1189 100644
--- a/bolt/lib/RuntimeLibs/RuntimeLibrary.cpp
+++ b/bolt/lib/RuntimeLibs/RuntimeLibrary.cpp
@@ -28,6 +28,12 @@ void RuntimeLibrary::anchor() {}
std::string RuntimeLibrary::getLibPath(StringRef ToolPath,
StringRef LibFileName) {
+ // Handle full path.
+ // It is weird that append LibFileName to LibPath when user gives a full path.
+ if(LibFileName[0]=='/')
+ {
+ return LibFileName.str();
+ }
StringRef Dir = llvm::sys::path::parent_path(ToolPath);
SmallString<128> LibPath = llvm::sys::path::parent_path(Dir);
llvm::sys::path::append(LibPath, "lib" LLVM_LIBDIR_SUFFIX);
>From 0abdfd5d5ffc4d94bbf4418002b22f11d6e89af8 Mon Sep 17 00:00:00 2001
From: Jizimo <jizimo0430 at outlook.com>
Date: Sun, 21 Jul 2024 20:14:54 +0800
Subject: [PATCH 2/3] Add an error handler in my previous commit
In my previous commit, I forget to add an error ha
ndler when given full path.
---
bolt/lib/RuntimeLibs/RuntimeLibrary.cpp | 24 ++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/bolt/lib/RuntimeLibs/RuntimeLibrary.cpp b/bolt/lib/RuntimeLibs/RuntimeLibrary.cpp
index 0826847ee1189..f1a086867a299 100644
--- a/bolt/lib/RuntimeLibs/RuntimeLibrary.cpp
+++ b/bolt/lib/RuntimeLibs/RuntimeLibrary.cpp
@@ -30,20 +30,20 @@ std::string RuntimeLibrary::getLibPath(StringRef ToolPath,
StringRef LibFileName) {
// Handle full path.
// It is weird that append LibFileName to LibPath when user gives a full path.
- if(LibFileName[0]=='/')
- {
- return LibFileName.str();
- }
- StringRef Dir = llvm::sys::path::parent_path(ToolPath);
- SmallString<128> LibPath = llvm::sys::path::parent_path(Dir);
- llvm::sys::path::append(LibPath, "lib" LLVM_LIBDIR_SUFFIX);
- if (!llvm::sys::fs::exists(LibPath)) {
- // In some cases we install bolt binary into one level deeper in bin/,
- // we need to go back one more level to find lib directory.
- LibPath = llvm::sys::path::parent_path(llvm::sys::path::parent_path(Dir));
+ if (LibFileName[0] == '/') {
+ LibPath = LibFileName;
+ } else {
+ StringRef Dir = llvm::sys::path::parent_path(ToolPath);
+ SmallString<128> LibPath = llvm::sys::path::parent_path(Dir);
llvm::sys::path::append(LibPath, "lib" LLVM_LIBDIR_SUFFIX);
+ if (!llvm::sys::fs::exists(LibPath)) {
+ // In some cases we install bolt binary into one level deeper in bin/,
+ // we need to go back one more level to find lib directory.
+ LibPath = llvm::sys::path::parent_path(llvm::sys::path::parent_path(Dir));
+ llvm::sys::path::append(LibPath, "lib" LLVM_LIBDIR_SUFFIX);
+ }
+ llvm::sys::path::append(LibPath, LibFileName);
}
- llvm::sys::path::append(LibPath, LibFileName);
if (!llvm::sys::fs::exists(LibPath)) {
errs() << "BOLT-ERROR: library not found: " << LibPath << "\n";
exit(1);
>From 02de86acfb77589d3215d5758a834c49414db983 Mon Sep 17 00:00:00 2001
From: Jizimo <jizimo0430 at outlook.com>
Date: Sun, 21 Jul 2024 21:01:46 +0800
Subject: [PATCH 3/3] [llvm-bolt] Ensure that the program can successfully pass
`check-bolt`
---
bolt/lib/RuntimeLibs/RuntimeLibrary.cpp | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/bolt/lib/RuntimeLibs/RuntimeLibrary.cpp b/bolt/lib/RuntimeLibs/RuntimeLibrary.cpp
index f1a086867a299..bd3cc7424f82b 100644
--- a/bolt/lib/RuntimeLibs/RuntimeLibrary.cpp
+++ b/bolt/lib/RuntimeLibs/RuntimeLibrary.cpp
@@ -30,11 +30,12 @@ std::string RuntimeLibrary::getLibPath(StringRef ToolPath,
StringRef LibFileName) {
// Handle full path.
// It is weird that append LibFileName to LibPath when user gives a full path.
+
+ StringRef Dir = llvm::sys::path::parent_path(ToolPath);
+ SmallString<128> LibPath = llvm::sys::path::parent_path(Dir);
if (LibFileName[0] == '/') {
LibPath = LibFileName;
} else {
- StringRef Dir = llvm::sys::path::parent_path(ToolPath);
- SmallString<128> LibPath = llvm::sys::path::parent_path(Dir);
llvm::sys::path::append(LibPath, "lib" LLVM_LIBDIR_SUFFIX);
if (!llvm::sys::fs::exists(LibPath)) {
// In some cases we install bolt binary into one level deeper in bin/,
More information about the llvm-commits
mailing list