- // Try to locate the debug binary using .gnu_debuglink section.
- if (!DbgObj) {
- std::string DebuglinkName;
- uint32_t CRCHash;
- std::string DebugBinaryPath;
- if (getGNUDebuglinkContents(Obj, DebuglinkName, CRCHash) &&
- findDebugBinary(Path, DebuglinkName, CRCHash, DebugBinaryPath)) {
- ErrorOr<OwningBinary<Binary>> DebugBinaryOrErr =
- createBinary(DebugBinaryPath);
- if (DebugBinaryOrErr) {
- OwningBinary<Binary> &DB = DebugBinaryOrErr.get();
- auto DbgObjOrErr = getObjectFileFromBinary(DB.getBinary(), ArchName);
- if (DbgObjOrErr) {
- DbgObj = DbgObjOrErr.get();
- assert(DbgObj != nullptr);
- addOwningBinary(std::move(DB));
- }
- }
- }
- }
-