Skip to content

Commit 8e66c2e

Browse files
committed
llvm-dwarfdump: Replace -debug-dump=sect option with individual options.
As discussed on llvm-dev in http://lists.llvm.org/pipermail/llvm-dev/2017-September/117301.html this changes the command line interface of llvm-dwarfdump to match the one used by the dwarfdump utility shipping on macOS. In addition to being shorter to type this format also has the advantage of allowing more than one section to be specified at the same time. In a nutshell, with this change $ llvm-dwarfdump --debug-dump=info $ llvm-dwarfdump --debug-dump=apple-objc becomes $ dwarfdump --debug-info --apple-objc Differential Revision: https://reviews.llvm.org/D37714 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@312970 91177308-0d34-0410-b5e6-96231b3b80d8
1 parent d3822e4 commit 8e66c2e

File tree

229 files changed

+383
-367
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

229 files changed

+383
-367
lines changed

include/llvm/BinaryFormat/Dwarf.def

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
defined HANDLE_DW_LNE || defined HANDLE_DW_LNCT || \
2121
defined HANDLE_DW_MACRO || defined HANDLE_DW_RLE || \
2222
defined HANDLE_DW_CFA || defined HANDLE_DW_APPLE_PROPERTY || \
23-
defined HANDLE_DW_UT)
23+
defined HANDLE_DW_UT || defined HANDLE_DWARF_SECTION)
2424
#error "Missing macro definition of HANDLE_DW*"
2525
#endif
2626

@@ -92,6 +92,10 @@
9292
#define HANDLE_DW_UT(ID, NAME)
9393
#endif
9494

95+
#ifndef HANDLE_DWARF_SECTION
96+
#define HANDLE_DWARF_SECTION(ENUM_NAME, ELF_NAME, CMDLINE_NAME)
97+
#endif
98+
9599
HANDLE_DW_TAG(0x0000, null, 2, DWARF)
96100
HANDLE_DW_TAG(0x0001, array_type, 2, DWARF)
97101
HANDLE_DW_TAG(0x0002, class_type, 2, DWARF)
@@ -819,6 +823,42 @@ HANDLE_DW_UT(0x04, skeleton)
819823
HANDLE_DW_UT(0x05, split_compile)
820824
HANDLE_DW_UT(0x06, split_type)
821825

826+
// DWARF section types. (enum name, ELF name, cmdline name)
827+
// Note that these IDs don't mean anything.
828+
// TODO: Add Mach-O and COFF names.
829+
// Official DWARF sections.
830+
HANDLE_DWARF_SECTION(DebugAbbrev, ".debug_abbrev", "debug-abbrev")
831+
HANDLE_DWARF_SECTION(DebugAbbrevDwo, ".debug_abbrev.dwo", "debug-abbrev-dwo")
832+
HANDLE_DWARF_SECTION(DebugAranges, ".debug_aranges", "debug-aranges")
833+
HANDLE_DWARF_SECTION(DebugInfo, ".debug_info", "debug-info")
834+
HANDLE_DWARF_SECTION(DebugInfoDwo, ".debug_info.dwo", "debug-info-dwo")
835+
HANDLE_DWARF_SECTION(DebugTypes, ".debug_types", "debug-types")
836+
HANDLE_DWARF_SECTION(DebugTypesDwo, ".debug_types.dwo", "debug-types-dwo")
837+
HANDLE_DWARF_SECTION(DebugLine, ".debug_line", "debug-line")
838+
HANDLE_DWARF_SECTION(DebugLineDwo, ".debug_line.dwo", "debug-line-dwo")
839+
HANDLE_DWARF_SECTION(DebugLoc, ".debug_loc", "debug-loc")
840+
HANDLE_DWARF_SECTION(DebugLocDwo, ".debug_loc.dwo", "debug-loc-dwo")
841+
HANDLE_DWARF_SECTION(DebugFrames, ".debug_frames", "debug-frames")
842+
HANDLE_DWARF_SECTION(DebugMacro, ".debug_macro", "debug-macro")
843+
HANDLE_DWARF_SECTION(DebugRanges, ".debug_ranges", "debug-ranges")
844+
HANDLE_DWARF_SECTION(DebugPubnames, ".debug_pubnames", "debug-pubnames")
845+
HANDLE_DWARF_SECTION(DebugPubtypes, ".debug_pubtypes", "debug-pubtypes")
846+
HANDLE_DWARF_SECTION(DebugGnuPubnames, ".debug_gnu_pubnames", "debug-gnu-pubnames")
847+
HANDLE_DWARF_SECTION(DebugGnuPubtypes, ".debug_gnu_pubtypes", "debug-gnu-pubtypes")
848+
HANDLE_DWARF_SECTION(DebugStr, ".debug_str", "debug-str")
849+
HANDLE_DWARF_SECTION(DebugStrOffsets, ".debug_str_offsets", "debug-str-offsets")
850+
HANDLE_DWARF_SECTION(DebugStrDwo, ".debug_str.dwo", "debug-str-dwo")
851+
HANDLE_DWARF_SECTION(DebugStrOffsetsDwo, ".debug_str_offsets.dwo", "debug-str-offsets-dwo")
852+
HANDLE_DWARF_SECTION(DebugCUIndex, ".debug_cu_index", "debug-cu-index")
853+
HANDLE_DWARF_SECTION(DebugTUIndex, ".debug_tu_index", "debug-tu-index")
854+
// Vendor extensions.
855+
HANDLE_DWARF_SECTION(AppleNames, ".apple_names", "apple-names")
856+
HANDLE_DWARF_SECTION(AppleTypes, ".apple_types", "apple-types")
857+
HANDLE_DWARF_SECTION(AppleNamespaces, ".apple_namespaces", "apple-namespaces")
858+
HANDLE_DWARF_SECTION(AppleObjC, ".apple_objc", "apple-objc")
859+
HANDLE_DWARF_SECTION(GdbIndex, ".gdb_index", "gdb-index")
860+
861+
822862
#undef HANDLE_DW_TAG
823863
#undef HANDLE_DW_AT
824864
#undef HANDLE_DW_FORM
@@ -836,3 +876,4 @@ HANDLE_DW_UT(0x06, split_type)
836876
#undef HANDLE_DW_CFA
837877
#undef HANDLE_DW_APPLE_PROPERTY
838878
#undef HANDLE_DW_UT
879+
#undef HANDLE_DWARF_SECTION

include/llvm/DebugInfo/DIContext.h

Lines changed: 19 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -112,45 +112,31 @@ struct DILineInfoSpecifier {
112112
: FLIKind(FLIKind), FNKind(FNKind) {}
113113
};
114114

115+
namespace {
116+
/// This is just a helper to programmatically construct DIDumpType.
117+
enum DIDumpTypeCounter {
118+
DIDT_ID_Null = 0,
119+
#define HANDLE_DWARF_SECTION(ENUM_NAME, ELF_NAME, CMDLINE_NAME) \
120+
DIDT_ID##ENUM_NAME,
121+
#include "llvm/BinaryFormat/Dwarf.def"
122+
#undef HANDLE_DWARF_SECTION
123+
};
124+
}
125+
115126
/// Selects which debug sections get dumped.
116-
enum DIDumpType {
127+
enum DIDumpType : uint64_t {
117128
DIDT_Null,
118-
DIDT_All,
119-
DIDT_Abbrev,
120-
DIDT_AbbrevDwo,
121-
DIDT_Aranges,
122-
DIDT_Frames,
123-
DIDT_Info,
124-
DIDT_InfoDwo,
125-
DIDT_Types,
126-
DIDT_TypesDwo,
127-
DIDT_Line,
128-
DIDT_LineDwo,
129-
DIDT_Loc,
130-
DIDT_LocDwo,
131-
DIDT_Macro,
132-
DIDT_Ranges,
133-
DIDT_Pubnames,
134-
DIDT_Pubtypes,
135-
DIDT_GnuPubnames,
136-
DIDT_GnuPubtypes,
137-
DIDT_Str,
138-
DIDT_StrOffsets,
139-
DIDT_StrDwo,
140-
DIDT_StrOffsetsDwo,
141-
DIDT_AppleNames,
142-
DIDT_AppleTypes,
143-
DIDT_AppleNamespaces,
144-
DIDT_AppleObjC,
145-
DIDT_CUIndex,
146-
DIDT_GdbIndex,
147-
DIDT_TUIndex,
129+
DIDT_All = ~0ULL,
130+
#define HANDLE_DWARF_SECTION(ENUM_NAME, ELF_NAME, CMDLINE_NAME) \
131+
DIDT_##ENUM_NAME = 1 << DIDT_ID##ENUM_NAME,
132+
#include "llvm/BinaryFormat/Dwarf.def"
133+
#undef HANDLE_DWARF_SECTION
148134
};
149135

150136
/// Container for dump options that control which debug information will be
151137
/// dumped.
152138
struct DIDumpOptions {
153-
DIDumpType DumpType = DIDT_All;
139+
uint64_t DumpType = DIDT_All;
154140
bool DumpEH = false;
155141
bool SummarizeTypes = false;
156142
bool Brief = false;
@@ -170,7 +156,7 @@ class DIContext {
170156

171157
virtual void dump(raw_ostream &OS, DIDumpOptions DumpOpts) = 0;
172158

173-
virtual bool verify(raw_ostream &OS, DIDumpType DumpType = DIDT_All) {
159+
virtual bool verify(raw_ostream &OS, uint64_t DumpType = DIDT_All) {
174160
// No verifier? Just say things went well.
175161
return true;
176162
}

include/llvm/DebugInfo/DWARF/DWARFContext.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ class DWARFContext : public DIContext {
123123

124124
void dump(raw_ostream &OS, DIDumpOptions DumpOpts) override;
125125

126-
bool verify(raw_ostream &OS, DIDumpType DumpType = DIDT_All) override;
126+
bool verify(raw_ostream &OS, uint64_t DumpType = DIDT_All) override;
127127

128128
using cu_iterator_range = DWARFUnitSection<DWARFCompileUnit>::iterator_range;
129129
using tu_iterator_range = DWARFUnitSection<DWARFTypeUnit>::iterator_range;

lib/DebugInfo/DWARF/DWARFContext.cpp

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -200,60 +200,60 @@ static void dumpStringOffsetsSection(raw_ostream &OS, StringRef SectionName,
200200
}
201201

202202
void DWARFContext::dump(raw_ostream &OS, DIDumpOptions DumpOpts) {
203-
DIDumpType DumpType = DumpOpts.DumpType;
203+
uint64_t DumpType = DumpOpts.DumpType;
204204
bool DumpEH = DumpOpts.DumpEH;
205205
bool SummarizeTypes = DumpOpts.SummarizeTypes;
206206

207-
if (DumpType == DIDT_All || DumpType == DIDT_Abbrev) {
207+
if (DumpType & DIDT_DebugAbbrev) {
208208
OS << ".debug_abbrev contents:\n";
209209
getDebugAbbrev()->dump(OS);
210210
}
211211

212-
if (DumpType == DIDT_All || DumpType == DIDT_AbbrevDwo)
212+
if (DumpType & DIDT_DebugAbbrevDwo)
213213
if (const DWARFDebugAbbrev *D = getDebugAbbrevDWO()) {
214214
OS << "\n.debug_abbrev.dwo contents:\n";
215215
D->dump(OS);
216216
}
217217

218-
if (DumpType == DIDT_All || DumpType == DIDT_Info) {
218+
if (DumpType & DIDT_DebugInfo) {
219219
OS << "\n.debug_info contents:\n";
220220
for (const auto &CU : compile_units())
221221
CU->dump(OS, DumpOpts);
222222
}
223223

224-
if ((DumpType == DIDT_All || DumpType == DIDT_InfoDwo) &&
224+
if ((DumpType & DIDT_DebugInfoDwo) &&
225225
getNumDWOCompileUnits()) {
226226
OS << "\n.debug_info.dwo contents:\n";
227227
for (const auto &DWOCU : dwo_compile_units())
228228
DWOCU->dump(OS, DumpOpts);
229229
}
230230

231-
if ((DumpType == DIDT_All || DumpType == DIDT_Types) && getNumTypeUnits()) {
231+
if ((DumpType & DIDT_DebugTypes) && getNumTypeUnits()) {
232232
OS << "\n.debug_types contents:\n";
233233
for (const auto &TUS : type_unit_sections())
234234
for (const auto &TU : TUS)
235235
TU->dump(OS, SummarizeTypes);
236236
}
237237

238-
if ((DumpType == DIDT_All || DumpType == DIDT_TypesDwo) &&
238+
if ((DumpType & DIDT_DebugTypesDwo) &&
239239
getNumDWOTypeUnits()) {
240240
OS << "\n.debug_types.dwo contents:\n";
241241
for (const auto &DWOTUS : dwo_type_unit_sections())
242242
for (const auto &DWOTU : DWOTUS)
243243
DWOTU->dump(OS, SummarizeTypes);
244244
}
245245

246-
if (DumpType == DIDT_All || DumpType == DIDT_Loc) {
246+
if (DumpType & DIDT_DebugLoc) {
247247
OS << "\n.debug_loc contents:\n";
248248
getDebugLoc()->dump(OS, getRegisterInfo());
249249
}
250250

251-
if (DumpType == DIDT_All || DumpType == DIDT_LocDwo) {
251+
if (DumpType & DIDT_DebugLocDwo) {
252252
OS << "\n.debug_loc.dwo contents:\n";
253253
getDebugLocDWO()->dump(OS, getRegisterInfo());
254254
}
255255

256-
if (DumpType == DIDT_All || DumpType == DIDT_Frames) {
256+
if (DumpType & DIDT_DebugFrames) {
257257
OS << "\n.debug_frame contents:\n";
258258
getDebugFrame()->dump(OS);
259259
if (DumpEH) {
@@ -262,13 +262,13 @@ void DWARFContext::dump(raw_ostream &OS, DIDumpOptions DumpOpts) {
262262
}
263263
}
264264

265-
if (DumpType == DIDT_All || DumpType == DIDT_Macro) {
265+
if (DumpType & DIDT_DebugMacro) {
266266
OS << "\n.debug_macinfo contents:\n";
267267
getDebugMacro()->dump(OS);
268268
}
269269

270270
uint32_t offset = 0;
271-
if (DumpType == DIDT_All || DumpType == DIDT_Aranges) {
271+
if (DumpType & DIDT_DebugAranges) {
272272
OS << "\n.debug_aranges contents:\n";
273273
DataExtractor arangesData(DObj->getARangeSection(), isLittleEndian(), 0);
274274
DWARFDebugArangeSet set;
@@ -277,7 +277,7 @@ void DWARFContext::dump(raw_ostream &OS, DIDumpOptions DumpOpts) {
277277
}
278278

279279
uint8_t savedAddressByteSize = 0;
280-
if (DumpType == DIDT_All || DumpType == DIDT_Line) {
280+
if (DumpType & DIDT_DebugLine) {
281281
OS << "\n.debug_line contents:\n";
282282
for (const auto &CU : compile_units()) {
283283
savedAddressByteSize = CU->getAddressByteSize();
@@ -295,17 +295,17 @@ void DWARFContext::dump(raw_ostream &OS, DIDumpOptions DumpOpts) {
295295
}
296296
}
297297

298-
if (DumpType == DIDT_All || DumpType == DIDT_CUIndex) {
298+
if (DumpType & DIDT_DebugCUIndex) {
299299
OS << "\n.debug_cu_index contents:\n";
300300
getCUIndex().dump(OS);
301301
}
302302

303-
if (DumpType == DIDT_All || DumpType == DIDT_TUIndex) {
303+
if (DumpType & DIDT_DebugTUIndex) {
304304
OS << "\n.debug_tu_index contents:\n";
305305
getTUIndex().dump(OS);
306306
}
307307

308-
if (DumpType == DIDT_All || DumpType == DIDT_LineDwo) {
308+
if (DumpType & DIDT_DebugLineDwo) {
309309
OS << "\n.debug_line.dwo contents:\n";
310310
unsigned stmtOffset = 0;
311311
DWARFDataExtractor lineData(*DObj, DObj->getLineDWOSection(),
@@ -317,7 +317,7 @@ void DWARFContext::dump(raw_ostream &OS, DIDumpOptions DumpOpts) {
317317
}
318318
}
319319

320-
if (DumpType == DIDT_All || DumpType == DIDT_Str) {
320+
if (DumpType & DIDT_DebugStr) {
321321
OS << "\n.debug_str contents:\n";
322322
DataExtractor strData(DObj->getStringSection(), isLittleEndian(), 0);
323323
offset = 0;
@@ -328,7 +328,7 @@ void DWARFContext::dump(raw_ostream &OS, DIDumpOptions DumpOpts) {
328328
}
329329
}
330330

331-
if ((DumpType == DIDT_All || DumpType == DIDT_StrDwo) &&
331+
if ((DumpType & DIDT_DebugStrDwo) &&
332332
!DObj->getStringDWOSection().empty()) {
333333
OS << "\n.debug_str.dwo contents:\n";
334334
DataExtractor strDWOData(DObj->getStringDWOSection(), isLittleEndian(), 0);
@@ -340,7 +340,7 @@ void DWARFContext::dump(raw_ostream &OS, DIDumpOptions DumpOpts) {
340340
}
341341
}
342342

343-
if (DumpType == DIDT_All || DumpType == DIDT_Ranges) {
343+
if (DumpType & DIDT_DebugRanges) {
344344
OS << "\n.debug_ranges contents:\n";
345345
// In fact, different compile units may have different address byte
346346
// sizes, but for simplicity we just use the address byte size of the last
@@ -354,55 +354,55 @@ void DWARFContext::dump(raw_ostream &OS, DIDumpOptions DumpOpts) {
354354
rangeList.dump(OS);
355355
}
356356

357-
if (DumpType == DIDT_All || DumpType == DIDT_Pubnames)
357+
if (DumpType & DIDT_DebugPubnames)
358358
DWARFDebugPubTable(DObj->getPubNamesSection(), isLittleEndian(), false)
359359
.dump("debug_pubnames", OS);
360360

361-
if (DumpType == DIDT_All || DumpType == DIDT_Pubtypes)
361+
if (DumpType & DIDT_DebugPubtypes)
362362
DWARFDebugPubTable(DObj->getPubTypesSection(), isLittleEndian(), false)
363363
.dump("debug_pubtypes", OS);
364364

365-
if (DumpType == DIDT_All || DumpType == DIDT_GnuPubnames)
365+
if (DumpType & DIDT_DebugGnuPubnames)
366366
DWARFDebugPubTable(DObj->getGnuPubNamesSection(), isLittleEndian(),
367367
true /* GnuStyle */)
368368
.dump("debug_gnu_pubnames", OS);
369369

370-
if (DumpType == DIDT_All || DumpType == DIDT_GnuPubtypes)
370+
if (DumpType & DIDT_DebugGnuPubtypes)
371371
DWARFDebugPubTable(DObj->getGnuPubTypesSection(), isLittleEndian(),
372372
true /* GnuStyle */)
373373
.dump("debug_gnu_pubtypes", OS);
374374

375-
if (DumpType == DIDT_All || DumpType == DIDT_StrOffsets)
375+
if (DumpType & DIDT_DebugStrOffsets)
376376
dumpStringOffsetsSection(
377377
OS, "debug_str_offsets", *DObj, DObj->getStringOffsetSection(),
378378
DObj->getStringSection(), isLittleEndian(), getMaxVersion());
379379

380-
if (DumpType == DIDT_All || DumpType == DIDT_StrOffsetsDwo) {
380+
if (DumpType & DIDT_DebugStrOffsetsDwo) {
381381
dumpStringOffsetsSection(
382382
OS, "debug_str_offsets.dwo", *DObj, DObj->getStringOffsetDWOSection(),
383383
DObj->getStringDWOSection(), isLittleEndian(), getMaxVersion());
384384
}
385385

386-
if ((DumpType == DIDT_All || DumpType == DIDT_GdbIndex) &&
386+
if ((DumpType & DIDT_GdbIndex) &&
387387
!DObj->getGdbIndexSection().empty()) {
388388
OS << "\n.gnu_index contents:\n";
389389
getGdbIndex().dump(OS);
390390
}
391391

392-
if (DumpType == DIDT_All || DumpType == DIDT_AppleNames)
392+
if (DumpType & DIDT_AppleNames)
393393
dumpAccelSection(OS, "apple_names", *DObj, DObj->getAppleNamesSection(),
394394
DObj->getStringSection(), isLittleEndian());
395395

396-
if (DumpType == DIDT_All || DumpType == DIDT_AppleTypes)
396+
if (DumpType & DIDT_AppleTypes)
397397
dumpAccelSection(OS, "apple_types", *DObj, DObj->getAppleTypesSection(),
398398
DObj->getStringSection(), isLittleEndian());
399399

400-
if (DumpType == DIDT_All || DumpType == DIDT_AppleNamespaces)
400+
if (DumpType & DIDT_AppleNamespaces)
401401
dumpAccelSection(OS, "apple_namespaces", *DObj,
402402
DObj->getAppleNamespacesSection(),
403403
DObj->getStringSection(), isLittleEndian());
404404

405-
if (DumpType == DIDT_All || DumpType == DIDT_AppleObjC)
405+
if (DumpType & DIDT_AppleObjC)
406406
dumpAccelSection(OS, "apple_objc", *DObj, DObj->getAppleObjCSection(),
407407
DObj->getStringSection(), isLittleEndian());
408408
}
@@ -434,14 +434,14 @@ DWARFDie DWARFContext::getDIEForOffset(uint32_t Offset) {
434434
return DWARFDie();
435435
}
436436

437-
bool DWARFContext::verify(raw_ostream &OS, DIDumpType DumpType) {
437+
bool DWARFContext::verify(raw_ostream &OS, uint64_t DumpType) {
438438
bool Success = true;
439439
DWARFVerifier verifier(OS, *this);
440440

441441
Success &= verifier.handleDebugAbbrev();
442-
if (DumpType == DIDT_All || DumpType == DIDT_Info)
442+
if (DumpType & DIDT_DebugInfo)
443443
Success &= verifier.handleDebugInfo();
444-
if (DumpType == DIDT_All || DumpType == DIDT_Line)
444+
if (DumpType & DIDT_DebugLine)
445445
Success &= verifier.handleDebugLine();
446446
Success &= verifier.handleAccelTables();
447447
return Success;

test/CodeGen/ARM/2011-01-19-MergedGlobalDbg.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
; RUN: llc -arm-global-merge -global-merge-group-by-use=false -filetype=obj < %s | llvm-dwarfdump -debug-dump=info - | FileCheck %s
1+
; RUN: llc -arm-global-merge -global-merge-group-by-use=false -filetype=obj < %s | llvm-dwarfdump -debug-info - | FileCheck %s
22

33
source_filename = "test/CodeGen/ARM/2011-01-19-MergedGlobalDbg.ll"
44
target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:32:64-v128:32:128-a0:0:32-n32"

test/CodeGen/ARM/2011-08-02-MergedGlobalDbg.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
; RUN: llc -arm-global-merge -global-merge-group-by-use=false -filetype=obj < %s | llvm-dwarfdump -debug-dump=info - | FileCheck %s
1+
; RUN: llc -arm-global-merge -global-merge-group-by-use=false -filetype=obj < %s | llvm-dwarfdump -debug-info - | FileCheck %s
22

33
; CHECK: DW_TAG_variable
44
; CHECK-NOT: DW_TAG

test/CodeGen/ARM/debug-info-sreg2.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
; RUN: llc < %s - -filetype=obj | llvm-dwarfdump -debug-dump=loc - | FileCheck %s
1+
; RUN: llc < %s - -filetype=obj | llvm-dwarfdump -debug-loc - | FileCheck %s
22
; Radar 9376013
33
target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:32-f32:32:32-f64:32:32-v64:32:64-v128:32:128-a0:0:32-n32"
44
target triple = "thumbv7-apple-macosx10.6.7"

0 commit comments

Comments
 (0)