-
Notifications
You must be signed in to change notification settings - Fork 13.6k
[profile] Make the binary-id-offset.c test more robust #117647
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
Using a `--section-start` address in the test was causing link errors on some targets. Now it uses a linker script to move the note after `.bss`, which should still have the kind of memory offset we're looking for.
@llvm/pr-subscribers-pgo Author: Josh Stone (cuviper) ChangesUsing a This is a follow-up to #114907 to fix buildbot errors. Full diff: https://github.com/llvm/llvm-project/pull/117647.diff 1 Files Affected:
diff --git a/compiler-rt/test/profile/Linux/binary-id-offset.c b/compiler-rt/test/profile/Linux/binary-id-offset.c
index c66fe82d714ce9..dd4ce7dc4d03d2 100644
--- a/compiler-rt/test/profile/Linux/binary-id-offset.c
+++ b/compiler-rt/test/profile/Linux/binary-id-offset.c
@@ -1,15 +1,15 @@
-// REQUIRES: linux
+// REQUIRES: linux, lld-available
//
// Make sure the build-id can be found in both EXEC and DYN (PIE) files,
-// even when the note's section-start is forced to a weird address.
+// even when the note has been loaded at an offset address in memory.
// (The DYN case would also apply to libraries, not explicitly tested here.)
// DEFINE: %{cflags} =
-// DEFINE: %{check} = ( \
-// DEFINE: %clang_profgen -Wl,--build-id -o %t %s %{cflags} && \
-// DEFINE: env LLVM_PROFILE_FILE=%t.profraw %run %t && \
-// DEFINE: llvm-readelf --notes %t && \
-// DEFINE: llvm-profdata show --binary-ids %t.profraw \
+// DEFINE: %{check} = ( \
+// DEFINE: %clang_profgen -fuse-ld=lld -Wl,--build-id -o %t %s %{cflags} && \
+// DEFINE: env LLVM_PROFILE_FILE=%t.profraw %run %t && \
+// DEFINE: llvm-readelf --notes %t && \
+// DEFINE: llvm-profdata show --binary-ids %t.profraw \
// DEFINE: ) | FileCheck %s
// REDEFINE: %{cflags} = -no-pie
@@ -18,15 +18,20 @@
// REDEFINE: %{cflags} = -pie -fPIE
// RUN: %{check}
-// REDEFINE: %{cflags} = -no-pie -Wl,--section-start=.note.gnu.build-id=0x1000000
+// Moving the note after .bss also gives it extra LOAD segment padding,
+// making its memory offset different than its file offset.
+// RUN: echo "SECTIONS { .note.gnu.build-id : {} } INSERT AFTER .bss;" >%t.script
+
+// REDEFINE: %{cflags} = -no-pie -Wl,--script=%t.script
// RUN: %{check}
-// REDEFINE: %{cflags} = -pie -fPIE -Wl,--section-start=.note.gnu.build-id=0x1000000
+// REDEFINE: %{cflags} = -pie -fPIE -Wl,--script=%t.script
// RUN: %{check}
// CHECK-LABEL{LITERAL}: .note.gnu.build-id
// CHECK: Build ID: [[ID:[0-9a-f]+]]
+// CHECK-LABEL{LITERAL}: Instrumentation level: Front-end
// CHECK-LABEL{LITERAL}: Binary IDs:
// CHECK-NEXT: [[ID]]
|
I have tested this patch locally on PPC and can confirm that the test passes. Hi @uweigand, do you foresee any issues for this test on the s390x side of things? |
@cuviper |
Yeah, that's right -- if you're happy, please do merge it, thanks! (I wish GitHub made that more apparent...) |
The build bots are green again s390x, so this looks good. Thanks! |
Using a
--section-start
address in the test was causing link errors onsome targets. Now it uses a linker script to move the note after
.bss
,which should still have the kind of memory offset we're looking for.
This is a follow-up to #114907 to fix buildbot errors.