@@ -507,61 +507,40 @@ static llvm::Error convertFileToGSYM(OutputAggregator &Out) {
507507 return Error::success ();
508508}
509509
510- static void doLookupMergedFunctions (GsymReader &Gsym, uint64_t Addr,
511- raw_ostream &OS) {
512- if (auto Results = Gsym.lookupAll (Addr)) {
513- OS << " Found " << Results->size () << " functions at address " << HEX64 (Addr)
514- << " :\n " ;
515- for (size_t i = 0 ; i < Results->size (); ++i) {
516- if (Verbose) {
517- if (auto FI = FunctionInfo::decode (*Results->at (i).FunctionInfoData ,
518- Results->at (i).FuncRange .start ())) {
519- OS << " FunctionInfo for " << HEX64 (Addr) << " :\n " ;
520- Gsym.dump (OS, *FI);
521- OS << " \n LookupResults for " << HEX64 (Addr) << " :\n " ;
522- }
523- }
524-
525- // Print the primary function lookup result
526- OS << " " << Results->at (i);
527-
528- if (i != Results->size () - 1 )
529- OS << " \n " ;
530- }
531- } else {
532- if (Verbose)
533- OS << " \n LookupResult for " << HEX64 (Addr) << " :\n " ;
510+ static void doLookup (GsymReader &Gsym, uint64_t Addr, raw_ostream &OS) {
511+ auto logError = [Addr, &OS](Error E) {
534512 OS << HEX64 (Addr) << " : " ;
535- logAllUnhandledErrors (Results.takeError (), OS, " error: " );
536- }
537- if (Verbose)
538- OS << " \n " ;
539- }
513+ logAllUnhandledErrors (std::move (E), OS, " error: " );
514+ };
540515
541- static void doLookup (GsymReader &Gsym, uint64_t Addr, raw_ostream &OS) {
542516 if (UseMergedFunctions) {
543- doLookupMergedFunctions (Gsym, Addr, OS);
544- return ;
545- }
546-
547- if (auto Result = Gsym.lookup (Addr)) {
548- // If verbose is enabled, dump the full function info for the address.
549- if (Verbose) {
550- if (auto FI = Gsym.getFunctionInfo (Addr)) {
551- OS << " FunctionInfo for " << HEX64 (Addr) << " :\n " ;
552- Gsym.dump (OS, *FI);
553- OS << " \n LookupResult for " << HEX64 (Addr) << " :\n " ;
517+ if (auto Results = Gsym.lookupAll (Addr)) {
518+ OS << " Found " << Results->size () << " functions at address "
519+ << HEX64 (Addr) << " :\n " ;
520+ for (size_t i = 0 ; i < Results->size (); ++i) {
521+ OS << " " << Results->at (i);
522+
523+ if (i != Results->size () - 1 )
524+ OS << " \n " ;
554525 }
555526 }
556- OS << Result.get ();
557- } else {
558- if (Verbose)
559- OS << " \n LookupResult for " << HEX64 (Addr) << " :\n " ;
560- OS << HEX64 (Addr) << " : " ;
561- logAllUnhandledErrors (Result.takeError (), OS, " error: " );
527+ } else { /* UseMergedFunctions == false */
528+ if (auto Result = Gsym.lookup (Addr)) {
529+ OS << Result.get ();
530+ } else {
531+ logError (Result.takeError ());
532+ return ;
533+ }
562534 }
563- if (Verbose)
535+
536+ if (Verbose) {
537+ if (auto FI = Gsym.getFunctionInfo (Addr)) {
538+ OS << " FunctionInfo for " << HEX64 (Addr) << " :\n " ;
539+ Gsym.dump (OS, *FI);
540+ OS << " \n LookupResult for " << HEX64 (Addr) << " :\n " ;
541+ }
564542 OS << " \n " ;
543+ }
565544}
566545
567546int llvm_gsymutil_main (int argc, char **argv, const llvm::ToolContext &) {
0 commit comments