[llvm] 0c2560b - [TextAPI] print symbols in a stable order in v5 format (#148687)

via llvm-commits llvm-commits at lists.llvm.org
Mon Jul 14 12:13:47 PDT 2025


Author: Cyndy Ishida
Date: 2025-07-14T12:13:43-07:00
New Revision: 0c2560b29b3d15eca766eea306d8525b1c71d4ae

URL: https://github.com/llvm/llvm-project/commit/0c2560b29b3d15eca766eea306d8525b1c71d4ae
DIFF: https://github.com/llvm/llvm-project/commit/0c2560b29b3d15eca766eea306d8525b1c71d4ae.diff

LOG: [TextAPI] print symbols in a stable order in v5 format (#148687)

resolves: rdar://151765704

Added: 
    llvm/test/tools/llvm-readtapi/stubify-v4-to-v5.test

Modified: 
    llvm/lib/TextAPI/TextStubV5.cpp

Removed: 
    


################################################################################
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