[llvm] [TextAPI] print symbols in a stable order in v5 format (PR #148687)
Cyndy Ishida via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 14 10:42:54 PDT 2025
https://github.com/cyndyishida created https://github.com/llvm/llvm-project/pull/148687
resolves: rdar://151765704
>From b7aba109d03e43ffb6439c2b522020eedc375c22 Mon Sep 17 00:00:00 2001
From: Cyndy Ishida <cyndy_ishida at apple.com>
Date: Mon, 14 Jul 2025 10:38:48 -0700
Subject: [PATCH] [TextAPI] print symbols in a stable order in v5 format
resolves: rdar://151765704
---
llvm/lib/TextAPI/TextStubV5.cpp | 6 +++++
.../tools/llvm-readtapi/stubify-v4-to-v5.test | 23 +++++++++++++++++++
2 files changed, 29 insertions(+)
create mode 100644 llvm/test/tools/llvm-readtapi/stubify-v4-to-v5.test
diff --git a/llvm/lib/TextAPI/TextStubV5.cpp b/llvm/lib/TextAPI/TextStubV5.cpp
index 2e60b065f856c..f2687513bb854 100644
--- a/llvm/lib/TextAPI/TextStubV5.cpp
+++ b/llvm/lib/TextAPI/TextStubV5.cpp
@@ -940,6 +940,12 @@ Array serializeSymbols(InterfaceFile::const_filtered_symbol_range Symbols,
SymbolFields::SymbolTypes &SymField) {
if (SymField.empty())
return;
+ llvm::sort(SymField.Globals);
+ llvm::sort(SymField.TLV);
+ llvm::sort(SymField.Weaks);
+ llvm::sort(SymField.ObjCClasses);
+ llvm::sort(SymField.EHTypes);
+ llvm::sort(SymField.IVars);
Object Segment;
insertNonEmptyValues(Segment, TBDKey::Globals, std::move(SymField.Globals));
insertNonEmptyValues(Segment, TBDKey::ThreadLocal, std::move(SymField.TLV));
diff --git a/llvm/test/tools/llvm-readtapi/stubify-v4-to-v5.test b/llvm/test/tools/llvm-readtapi/stubify-v4-to-v5.test
new file mode 100644
index 0000000000000..484550a944084
--- /dev/null
+++ b/llvm/test/tools/llvm-readtapi/stubify-v4-to-v5.test
@@ -0,0 +1,23 @@
+; RUN: rm -rf %t
+; RUN: split-file %s %t
+
+; RUN: llvm-readtapi %t/input.tbd --filetype=tbd-v5 -o %t/output.tbd 2>&1 | FileCheck \
+; RUN: %s --allow-empty --implicit-check-not warning: --implicit-check-not error:
+
+; RUN: cat %t/output.tbd 2>&1 | FileCheck %s -check-prefix=SYMS
+
+; SYMS: "_asym",
+; SYMS-NEXT: "_bar",
+; SYMS-NEXT: "_foo",
+; SYMS-NEXT: "_zsym"
+
+;--- input.tbd
+--- !tapi-tbd
+tbd-version: 4
+targets: [ x86_64-macos ]
+flags: [ not_app_extension_safe ]
+install-name: '/System/Library/Frameworks/Foo.framework/Versions/A/Foo'
+exports:
+ - targets: [ x86_64-macos ]
+ symbols: [ _zsym, _asym, _foo, _bar]
+...
More information about the llvm-commits
mailing list