Skip to content

[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

Merged
merged 1 commit into from
Nov 27, 2024

Conversation

cuviper
Copy link
Member

@cuviper cuviper commented Nov 26, 2024

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.

This is a follow-up to #114907 to fix buildbot errors.

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.
@llvmbot
Copy link
Member

llvmbot commented Nov 26, 2024

@llvm/pr-subscribers-pgo

Author: Josh Stone (cuviper)

Changes

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.

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:

  • (modified) compiler-rt/test/profile/Linux/binary-id-offset.c (+14-9)
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]]
 

@amy-kwan
Copy link
Contributor

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?

@amy-kwan amy-kwan self-requested a review November 26, 2024 17:00
@amy-kwan
Copy link
Contributor

@cuviper
I saw on your other PR that you may not have permissions to merge PRs. Do you also need assistance merging this PR?

@cuviper
Copy link
Member Author

cuviper commented Nov 27, 2024

Yeah, that's right -- if you're happy, please do merge it, thanks!

(I wish GitHub made that more apparent...)

@amy-kwan amy-kwan merged commit bc1e0c5 into llvm:main Nov 27, 2024
10 checks passed
@uweigand
Copy link
Member

Hi @uweigand, do you foresee any issues for this test on the s390x side of things?

The build bots are green again s390x, so this looks good. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
compiler-rt PGO Profile Guided Optimizations
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants