[clang][cmake] Fix support for dynamic libraries in CLANG_BOLT
Simpler detection of dynamic library operands as the readelf one seems
to be unreliable (works on my setup, not on buildbots).
This is a follow-up to #127020
diff --git a/clang/utils/perf-training/perf-helper.py b/clang/utils/perf-training/perf-helper.py
index 7a049e7..80c6356 100644
--- a/clang/utils/perf-training/perf-helper.py
+++ b/clang/utils/perf-training/perf-helper.py
@@ -628,15 +628,14 @@
sys.stdout.write(line)
process.check_returncode()
- output = subprocess.check_output(
- [opts.readelf, "--file-header", input], universal_newlines=True
- )
- if re.search(r"Type:\s*((Shared)|(DYN))", output):
- # force using the instrumented version
+ # Shared library must be preloaded to be covered.
+ if ".so" in input:
preloads.append(instrumented_output)
if preloads:
- print("Patching execution environment for dynamic library")
+ print(
+ f"Patching execution environment for dynamic libraries: {' '.join(preloads)}"
+ )
environ["LD_PRELOAD"] = os.pathsep.join(preloads)
args = [