Skip to content

Commit 0c2560b

Browse files
authored
[TextAPI] print symbols in a stable order in v5 format (#148687)
resolves: rdar://151765704
1 parent 6ac286c commit 0c2560b

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

llvm/lib/TextAPI/TextStubV5.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -940,6 +940,12 @@ Array serializeSymbols(InterfaceFile::const_filtered_symbol_range Symbols,
940940
SymbolFields::SymbolTypes &SymField) {
941941
if (SymField.empty())
942942
return;
943+
llvm::sort(SymField.Globals);
944+
llvm::sort(SymField.TLV);
945+
llvm::sort(SymField.Weaks);
946+
llvm::sort(SymField.ObjCClasses);
947+
llvm::sort(SymField.EHTypes);
948+
llvm::sort(SymField.IVars);
943949
Object Segment;
944950
insertNonEmptyValues(Segment, TBDKey::Globals, std::move(SymField.Globals));
945951
insertNonEmptyValues(Segment, TBDKey::ThreadLocal, std::move(SymField.TLV));
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
; RUN: rm -rf %t
2+
; RUN: split-file %s %t
3+
4+
; RUN: llvm-readtapi %t/input.tbd --filetype=tbd-v5 -o %t/output.tbd 2>&1 | FileCheck \
5+
; RUN: %s --allow-empty --implicit-check-not warning: --implicit-check-not error:
6+
7+
; RUN: cat %t/output.tbd 2>&1 | FileCheck %s -check-prefix=SYMS
8+
9+
; SYMS: "_asym",
10+
; SYMS-NEXT: "_bar",
11+
; SYMS-NEXT: "_foo",
12+
; SYMS-NEXT: "_zsym"
13+
14+
;--- input.tbd
15+
--- !tapi-tbd
16+
tbd-version: 4
17+
targets: [ x86_64-macos ]
18+
flags: [ not_app_extension_safe ]
19+
install-name: '/System/Library/Frameworks/Foo.framework/Versions/A/Foo'
20+
exports:
21+
- targets: [ x86_64-macos ]
22+
symbols: [ _zsym, _asym, _foo, _bar]
23+
...

0 commit comments

Comments
 (0)