@@ -28,12 +28,9 @@ using namespace llvm::object;
28
28
using namespace llvm ::MachO;
29
29
using namespace llvm ::MachO::DylibReader;
30
30
31
- auto TripleCmp = [](const Triple &LHS, const Triple &RHS) {
32
- return LHS.getTriple () < RHS.getTriple ();
33
- };
34
- using TripleSet = std::set<Triple, decltype (TripleCmp)>;
31
+ using TripleVec = std::vector<Triple>;
35
32
36
- static TripleSet constructTriples (MachOObjectFile *Obj,
33
+ static TripleVec constructTriples (MachOObjectFile *Obj,
37
34
const Architecture ArchT) {
38
35
auto getOSVersionStr = [](uint32_t V) {
39
36
PackedVersion OSVersion (V);
@@ -47,8 +44,7 @@ static TripleSet constructTriples(MachOObjectFile *Obj,
47
44
return getOSVersionStr (Vers.version );
48
45
};
49
46
50
- // FIXME: Can remove TripleCmp arg when building in c++20.
51
- TripleSet Triples (TripleCmp);
47
+ TripleVec Triples;
52
48
bool IsIntel = ArchitectureSet (ArchT).hasX86 ();
53
49
auto Arch = getArchitectureName (ArchT);
54
50
@@ -57,61 +53,61 @@ static TripleSet constructTriples(MachOObjectFile *Obj,
57
53
switch (cmd.C .cmd ) {
58
54
case MachO::LC_VERSION_MIN_MACOSX:
59
55
OSVersion = getOSVersion (cmd);
60
- Triples.emplace (Arch, " apple" , " macos" + OSVersion);
56
+ Triples.emplace_back (Arch, " apple" , " macos" + OSVersion);
61
57
break ;
62
58
case MachO::LC_VERSION_MIN_IPHONEOS:
63
59
OSVersion = getOSVersion (cmd);
64
60
if (IsIntel)
65
- Triples.emplace (Arch, " apple" , " ios" + OSVersion, " simulator" );
61
+ Triples.emplace_back (Arch, " apple" , " ios" + OSVersion, " simulator" );
66
62
else
67
- Triples.emplace (Arch, " apple" , " ios" + OSVersion);
63
+ Triples.emplace_back (Arch, " apple" , " ios" + OSVersion);
68
64
break ;
69
65
case MachO::LC_VERSION_MIN_TVOS:
70
66
OSVersion = getOSVersion (cmd);
71
67
if (IsIntel)
72
- Triples.emplace (Arch, " apple" , " tvos" + OSVersion, " simulator" );
68
+ Triples.emplace_back (Arch, " apple" , " tvos" + OSVersion, " simulator" );
73
69
else
74
- Triples.emplace (Arch, " apple" , " tvos" + OSVersion);
70
+ Triples.emplace_back (Arch, " apple" , " tvos" + OSVersion);
75
71
break ;
76
72
case MachO::LC_VERSION_MIN_WATCHOS:
77
73
OSVersion = getOSVersion (cmd);
78
74
if (IsIntel)
79
- Triples.emplace (Arch, " apple" , " watchos" + OSVersion, " simulator" );
75
+ Triples.emplace_back (Arch, " apple" , " watchos" + OSVersion, " simulator" );
80
76
else
81
- Triples.emplace (Arch, " apple" , " watchos" + OSVersion);
77
+ Triples.emplace_back (Arch, " apple" , " watchos" + OSVersion);
82
78
break ;
83
79
case MachO::LC_BUILD_VERSION: {
84
80
OSVersion = getOSVersionStr (Obj->getBuildVersionLoadCommand (cmd).minos );
85
81
switch (Obj->getBuildVersionLoadCommand (cmd).platform ) {
86
82
case MachO::PLATFORM_MACOS:
87
- Triples.emplace (Arch, " apple" , " macos" + OSVersion);
83
+ Triples.emplace_back (Arch, " apple" , " macos" + OSVersion);
88
84
break ;
89
85
case MachO::PLATFORM_IOS:
90
- Triples.emplace (Arch, " apple" , " ios" + OSVersion);
86
+ Triples.emplace_back (Arch, " apple" , " ios" + OSVersion);
91
87
break ;
92
88
case MachO::PLATFORM_TVOS:
93
- Triples.emplace (Arch, " apple" , " tvos" + OSVersion);
89
+ Triples.emplace_back (Arch, " apple" , " tvos" + OSVersion);
94
90
break ;
95
91
case MachO::PLATFORM_WATCHOS:
96
- Triples.emplace (Arch, " apple" , " watchos" + OSVersion);
92
+ Triples.emplace_back (Arch, " apple" , " watchos" + OSVersion);
97
93
break ;
98
94
case MachO::PLATFORM_BRIDGEOS:
99
- Triples.emplace (Arch, " apple" , " bridgeos" + OSVersion);
95
+ Triples.emplace_back (Arch, " apple" , " bridgeos" + OSVersion);
100
96
break ;
101
97
case MachO::PLATFORM_MACCATALYST:
102
- Triples.emplace (Arch, " apple" , " ios" + OSVersion, " macabi" );
98
+ Triples.emplace_back (Arch, " apple" , " ios" + OSVersion, " macabi" );
103
99
break ;
104
100
case MachO::PLATFORM_IOSSIMULATOR:
105
- Triples.emplace (Arch, " apple" , " ios" + OSVersion, " simulator" );
101
+ Triples.emplace_back (Arch, " apple" , " ios" + OSVersion, " simulator" );
106
102
break ;
107
103
case MachO::PLATFORM_TVOSSIMULATOR:
108
- Triples.emplace (Arch, " apple" , " tvos" + OSVersion, " simulator" );
104
+ Triples.emplace_back (Arch, " apple" , " tvos" + OSVersion, " simulator" );
109
105
break ;
110
106
case MachO::PLATFORM_WATCHOSSIMULATOR:
111
- Triples.emplace (Arch, " apple" , " watchos" + OSVersion, " simulator" );
107
+ Triples.emplace_back (Arch, " apple" , " watchos" + OSVersion, " simulator" );
112
108
break ;
113
109
case MachO::PLATFORM_DRIVERKIT:
114
- Triples.emplace (Arch, " apple" , " driverkit" + OSVersion);
110
+ Triples.emplace_back (Arch, " apple" , " driverkit" + OSVersion);
115
111
break ;
116
112
default :
117
113
break ; // Skip any others.
@@ -126,7 +122,7 @@ static TripleSet constructTriples(MachOObjectFile *Obj,
126
122
// Record unknown platform for older binaries that don't enforce platform
127
123
// load commands.
128
124
if (Triples.empty ())
129
- Triples.emplace (Arch, " apple" , " unknown" );
125
+ Triples.emplace_back (Arch, " apple" , " unknown" );
130
126
131
127
return Triples;
132
128
}
0 commit comments