Lines Matching refs:BD
307 const BinaryData *BD = getBinaryDataContainingAddress(RelAddr); in validateHoles() local
308 if (!BD) { in validateHoles()
313 } else if (!BD->getAtomicRoot()) { in validateHoles()
356 BinaryData *BD = GAI->second->Parent ? GAI->second->Parent : GAI->second; in updateObjectNesting() local
360 BD->containsRange(Itr->second->getAddress(), Itr->second->getSize())) { in updateObjectNesting()
361 Itr->second->Parent = BD; in updateObjectNesting()
368 BinaryContext::getSubBinaryData(BinaryData *BD) { in getSubBinaryData() argument
369 auto Start = std::next(BinaryDataMap.find(BD->getAddress())); in getSubBinaryData()
371 while (End != BinaryDataMap.end() && BD->isAncestorOf(End->second)) in getSubBinaryData()
434 if (BinaryData *BD = getBinaryDataContainingAddress(Address)) in handleAddressRef() local
435 return std::make_pair(BD->getSymbol(), Address - BD->getAddress()); in handleAddressRef()
996 BinaryData *BD; in registerNameAtAddress() local
1001 BD = new BinaryData(*Symbol, Address, Size, Alignment ? Alignment : 1, in registerNameAtAddress()
1003 GAI = BinaryDataMap.emplace(Address, BD).first; in registerNameAtAddress()
1004 GlobalSymbols[Name] = BD; in registerNameAtAddress()
1007 BD = GAI->second; in registerNameAtAddress()
1008 if (!BD->hasName(Name)) { in registerNameAtAddress()
1009 GlobalSymbols[Name] = BD; in registerNameAtAddress()
1010 BD->Symbols.push_back(Symbol); in registerNameAtAddress()
1027 const BinaryData *BD = NI->second->getParent(); in getBinaryDataContainingAddressImpl() local
1028 while (BD) { in getBinaryDataContainingAddressImpl()
1029 if (BD->containsAddress(Address)) in getBinaryDataContainingAddressImpl()
1030 return BD; in getBinaryDataContainingAddressImpl()
1031 BD = BD->getParent(); in getBinaryDataContainingAddressImpl()
1060 auto isPadding = [](const BinaryData &BD) { in generateSymbolHashes() argument
1061 StringRef Contents = BD.getSection().getContents(); in generateSymbolHashes()
1062 StringRef SymData = Contents.substr(BD.getOffset(), BD.getSize()); in generateSymbolHashes()
1063 return (BD.getName().startswith("HOLEat") || in generateSymbolHashes()
1069 BinaryData &BD = *Entry.second; in generateSymbolHashes() local
1070 StringRef Name = BD.getName(); in generateSymbolHashes()
1076 if (BD.getSymbols().size() > 1) { in generateSymbolHashes()
1077 auto Itr = llvm::find_if(BD.getSymbols(), [&](const MCSymbol *Symbol) { in generateSymbolHashes()
1080 if (Itr != BD.getSymbols().end()) { in generateSymbolHashes()
1081 size_t Idx = std::distance(BD.getSymbols().begin(), Itr); in generateSymbolHashes()
1082 std::swap(BD.getSymbols()[0], BD.getSymbols()[Idx]); in generateSymbolHashes()
1088 if (BD.getSize() == 0) { in generateSymbolHashes()
1092 const uint64_t Hash = BD.getSection().hash(BD); in generateSymbolHashes()
1099 if (!isPadding(BD)) { in generateSymbolHashes()
1101 errs() << "BOLT-WARNING: collision detected when hashing " << BD in generateSymbolHashes()
1108 BD.Symbols.insert(BD.Symbols.begin(), Ctx->getOrCreateSymbol(NewName)); in generateSymbolHashes()
1109 GlobalSymbols[NewName] = &BD; in generateSymbolHashes()
1305 BinaryData *BD = Entry.second; in postProcessSymbolTable() local
1306 if ((BD->getName().startswith("SYMBOLat") || in postProcessSymbolTable()
1307 BD->getName().startswith("DATAat")) && in postProcessSymbolTable()
1308 !BD->getParent() && !BD->getSize() && !BD->isAbsolute() && in postProcessSymbolTable()
1309 BD->getSection()) { in postProcessSymbolTable()
1310 errs() << "BOLT-WARNING: zero-sized top level symbol: " << *BD << "\n"; in postProcessSymbolTable()
1387 BinaryData *BD = Itr->second; in fixBinaryDataHoles() local
1388 bool isHole = (!BD->getParent() && !BD->getSize() && BD->isObject() && in fixBinaryDataHoles()
1389 (BD->getName().startswith("SYMBOLat0x") || in fixBinaryDataHoles()
1390 BD->getName().startswith("DATAat0x") || in fixBinaryDataHoles()
1391 BD->getName().startswith("ANONYMOUS"))); in fixBinaryDataHoles()
1392 return !isHole && BD->getSection() == Section && !BD->getParent(); in fixBinaryDataHoles()
1417 BinaryData *BD = getBinaryDataAtAddress(Hole.first); in fixBinaryDataHoles() local
1418 if (BD) { in fixBinaryDataHoles()
1422 if (BD->getSection() == Section) in fixBinaryDataHoles()
1439 const BinaryData *BD = Entry.second; in printGlobalSymbols() local
1440 const BinarySection &Section = BD->getSection(); in printGlobalSymbols()
1448 Address = BD->getAddress(); in printGlobalSymbols()
1449 Size = BD->getSize(); in printGlobalSymbols()
1459 const BinaryData *P = BD->getParent(); in printGlobalSymbols()
1464 OS << *BD << "\n"; in printGlobalSymbols()
2091 void BinaryContext::markAmbiguousRelocations(BinaryData &BD, in markAmbiguousRelocations() argument
2093 auto setImmovable = [&](BinaryData &BD) { in markAmbiguousRelocations() argument
2094 BinaryData *Root = BD.getAtomicRoot(); in markAmbiguousRelocations()
2103 if (Address == BD.getAddress()) { in markAmbiguousRelocations()
2104 setImmovable(BD); in markAmbiguousRelocations()
2108 if (Prev && Prev->getEndAddress() == BD.getAddress()) in markAmbiguousRelocations()
2112 if (Address == BD.getEndAddress()) { in markAmbiguousRelocations()
2113 setImmovable(BD); in markAmbiguousRelocations()
2116 BinaryData *Next = getBinaryDataContainingAddress(BD.getEndAddress()); in markAmbiguousRelocations()
2117 if (Next && Next->getAddress() == BD.getEndAddress()) in markAmbiguousRelocations()
2305 if (const BinaryData *BD = getBinaryDataAtAddress(Address)) { in getBinaryFunctionAtAddress() local
2307 BinaryFunction *BF = getFunctionForSymbol(BD->getSymbol(), &EntryID); in getBinaryFunctionAtAddress()