Skip to content

[llvm-gsymutil] Fix broken tests #121837

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
Jan 6, 2025
Merged

Conversation

alx32
Copy link
Contributor

@alx32 alx32 commented Jan 6, 2025

Recently #120991 broke a couple of tests.
Also macho-merged-funcs-dwarf.yaml was already flaky due to some non-determinism issues.

Fixing the previous code to not break tests and modifying macho-merged-funcs-dwarf.yaml to fix the non-determinism (which will be resolved later).

@alx32 alx32 marked this pull request as ready for review January 6, 2025 21:16
@llvmbot
Copy link
Member

llvmbot commented Jan 6, 2025

@llvm/pr-subscribers-debuginfo

Author: None (alx32)

Changes

Recently #120991 broke a couple of tests.
Also macho-merged-funcs-dwarf.yaml was already flaky due to some non-determinism issues.

Fixing the previous code to not break tests and modifying macho-merged-funcs-dwarf.yaml to fix the non-determinism (which will be resolved later).


Full diff: https://github.com/llvm/llvm-project/pull/121837.diff

2 Files Affected:

  • (modified) llvm/test/tools/llvm-gsymutil/ARM_AArch64/macho-merged-funcs-dwarf.yaml (+3-3)
  • (modified) llvm/tools/llvm-gsymutil/llvm-gsymutil.cpp (+14-16)
diff --git a/llvm/test/tools/llvm-gsymutil/ARM_AArch64/macho-merged-funcs-dwarf.yaml b/llvm/test/tools/llvm-gsymutil/ARM_AArch64/macho-merged-funcs-dwarf.yaml
index bcd3d7847da459..31dfdc8b8983be 100644
--- a/llvm/test/tools/llvm-gsymutil/ARM_AArch64/macho-merged-funcs-dwarf.yaml
+++ b/llvm/test/tools/llvm-gsymutil/ARM_AArch64/macho-merged-funcs-dwarf.yaml
@@ -69,9 +69,9 @@
 # RUN: llvm-gsymutil --verify %t.keep.gSYM --address 0x248 | FileCheck --check-prefix=CHECK-NORMAL-LOOKUP %s
  
 # CHECK-MERGED-LOOKUP: Found 3 functions at address 0x0000000000000248:
-# CHECK-MERGED-LOOKUP-NEXT:       0x0000000000000248: my_func_02 @ /tmp/test_gsym_yaml/out/file_02.cpp:5
-# CHECK-MERGED-LOOKUP-NEXT-NEXT:  0x0000000000000248: my_func_01 @ /tmp/test_gsym_yaml/out/file_01.cpp:5
-# CHECK-MERGED-LOOKUP-NEXT-NEXT:  0x0000000000000248: my_func_03 @ /tmp/test_gsym_yaml/out/file_03.cpp:5
+# CHECK-MERGED-LOOKUP-NEXT:       0x0000000000000248: my_func_0{{[1-3]}} @ /tmp/test_gsym_yaml/out/file_0{{[1-3]}}.cpp:5
+# CHECK-MERGED-LOOKUP-NEXT-NEXT:  0x0000000000000248: my_func_0{{[1-3]}} @ /tmp/test_gsym_yaml/out/file_0{{[1-3]}}.cpp:5
+# CHECK-MERGED-LOOKUP-NEXT-NEXT:  0x0000000000000248: my_func_0{{[1-3]}} @ /tmp/test_gsym_yaml/out/file_0{{[1-3]}}.cpp:5
  
 # CHECK-NORMAL-LOOKUP: 0x0000000000000248: my_func_01 @ /tmp/test_gsym_yaml/out/file_01.cpp:5
 
diff --git a/llvm/tools/llvm-gsymutil/llvm-gsymutil.cpp b/llvm/tools/llvm-gsymutil/llvm-gsymutil.cpp
index e6562b9ebf4049..654da68bb69600 100644
--- a/llvm/tools/llvm-gsymutil/llvm-gsymutil.cpp
+++ b/llvm/tools/llvm-gsymutil/llvm-gsymutil.cpp
@@ -508,11 +508,6 @@ static llvm::Error convertFileToGSYM(OutputAggregator &Out) {
 }
 
 static void doLookup(GsymReader &Gsym, uint64_t Addr, raw_ostream &OS) {
-  auto logError = [Addr, &OS](Error E) {
-    OS << HEX64(Addr) << ": ";
-    logAllUnhandledErrors(std::move(E), OS, "error: ");
-  };
-
   if (UseMergedFunctions) {
     if (auto Results = Gsym.lookupAll(Addr)) {
       OS << "Found " << Results->size() << " functions at address "
@@ -526,20 +521,23 @@ static void doLookup(GsymReader &Gsym, uint64_t Addr, raw_ostream &OS) {
     }
   } else { /* UseMergedFunctions == false */
     if (auto Result = Gsym.lookup(Addr)) {
+      // If verbose is enabled dump the full function info for the address.
+      if (Verbose) {
+        if (auto FI = Gsym.getFunctionInfo(Addr)) {
+          OS << "FunctionInfo for " << HEX64(Addr) << ":\n";
+          Gsym.dump(OS, *FI);
+          OS << "\nLookupResult for " << HEX64(Addr) << ":\n";
+        }
+      }
       OS << Result.get();
     } else {
-      logError(Result.takeError());
-      return;
-    }
-  }
-
-  if (Verbose) {
-    if (auto FI = Gsym.getFunctionInfo(Addr)) {
-      OS << "FunctionInfo for " << HEX64(Addr) << ":\n";
-      Gsym.dump(OS, *FI);
-      OS << "\nLookupResult for " << HEX64(Addr) << ":\n";
+      if (Verbose)
+        OS << "\nLookupResult for " << HEX64(Addr) << ":\n";
+      OS << HEX64(Addr) << ": ";
+      logAllUnhandledErrors(Result.takeError(), OS, "error: ");
     }
-    OS << "\n";
+    if (Verbose)
+      OS << "\n";
   }
 }
 

@alx32 alx32 force-pushed the 06_fix_gsymutil_test branch from 65a2504 to c2a9abf Compare January 6, 2025 21:18
@alx32 alx32 force-pushed the 06_fix_gsymutil_test branch from c2a9abf to ada470c Compare January 6, 2025 21:19
@alx32 alx32 merged commit 3f1a391 into llvm:main Jan 6, 2025
4 of 5 checks passed
Comment on lines +74 to +76
# CHECK-MERGED-LOOKUP-NEXT: 0x0000000000000248: my_func_0{{[1-3]}} @ /tmp/test_gsym_yaml/out/file_0{{[1-3]}}.cpp:5
# CHECK-MERGED-LOOKUP-NEXT-NEXT: 0x0000000000000248: my_func_0{{[1-3]}} @ /tmp/test_gsym_yaml/out/file_0{{[1-3]}}.cpp:5
# CHECK-MERGED-LOOKUP-NEXT-NEXT: 0x0000000000000248: my_func_0{{[1-3]}} @ /tmp/test_gsym_yaml/out/file_0{{[1-3]}}.cpp:5
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you use CHECK-MERGED-LOOKUP-DAG instead?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will keep in mind when addressing the non-determinism in the future (this PR is already merged).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants