@@ -143,6 +143,12 @@ static list<std::string>
143143 " -name option can be used instead." ),
144144 value_desc(" name" ), cat(DwarfDumpCategory));
145145static alias FindAlias (" f" , desc(" Alias for -find" ), aliasopt(Find));
146+ static opt<bool >
147+ IgnoreCase (" ignore-case" ,
148+ desc (" Ignore case distinctions in when searching by name." ),
149+ value_desc(" i" ), cat(DwarfDumpCategory));
150+ static alias IgnoreCaseAlias (" i" , desc(" Alias for -ignore-case" ),
151+ aliasopt(IgnoreCase));
146152static list<std::string>
147153 Name (" name" ,
148154 desc (" Find and print all debug info entries whose name (DW_AT_name "
@@ -265,8 +271,11 @@ static void filterByName(const StringSet<> &Names,
265271 for (const auto &CU : CUs)
266272 for (const auto &Entry : CU->dies ()) {
267273 DWARFDie Die = {CU.get (), &Entry};
268- if (Names.count (Die.getName (DINameKind::ShortName)))
269- Die.dump (OS, 0 , getDumpOpts ());
274+ if (const char *NamePtr = Die.getName (DINameKind::ShortName)) {
275+ std::string Name = IgnoreCase ? StringRef (NamePtr).lower () : NamePtr;
276+ if (Names.count (Name))
277+ Die.dump (OS, 0 , getDumpOpts ());
278+ }
270279 }
271280}
272281
@@ -283,7 +292,7 @@ static bool dumpObjectFile(ObjectFile &Obj, DWARFContext &DICtx, Twine Filename,
283292 if (!Name.empty ()) {
284293 StringSet<> Names;
285294 for (auto name : Name)
286- Names.insert (name);
295+ Names.insert (IgnoreCase ? StringRef (name). lower () : name);
287296
288297 filterByName (Names, DICtx.compile_units (), OS);
289298 filterByName (Names, DICtx.dwo_compile_units (), OS);
0 commit comments