Lines Matching defs:BD

361       const BinaryData *BD = getBinaryDataContainingAddress(RelAddr);
362 if (!BD) {
368 } else if (!BD->getAtomicRoot()) {
412 BinaryData *BD = GAI->second->Parent ? GAI->second->Parent : GAI->second;
416 BD->containsRange(Itr->second->getAddress(), Itr->second->getSize())) {
417 Itr->second->Parent = BD;
424 BinaryContext::getSubBinaryData(BinaryData *BD) {
425 auto Start = std::next(BinaryDataMap.find(BD->getAddress()));
427 while (End != BinaryDataMap.end() && BD->isAncestorOf(End->second))
505 if (BinaryData *BD = getBinaryDataContainingAddress(Address))
506 return std::make_pair(BD->getSymbol(), Address - BD->getAddress());
1065 BinaryData *BD;
1070 BD = new BinaryData(*Symbol, Address, Size, Alignment ? Alignment : 1,
1072 GAI = BinaryDataMap.emplace(Address, BD).first;
1073 GlobalSymbols[Name] = BD;
1076 BD = GAI->second;
1077 if (!BD->hasName(Name)) {
1078 GlobalSymbols[Name] = BD;
1079 BD->updateSize(Size);
1080 BD->Symbols.push_back(Symbol);
1097 const BinaryData *BD = NI->second->getParent();
1098 while (BD) {
1099 if (BD->containsAddress(Address))
1100 return BD;
1101 BD = BD->getParent();
1122 while (const BinaryData *BD =
1126 if (BD->getAddress() != GOTSymBD->getAddress())
1155 auto isPadding = [](const BinaryData &BD) {
1156 StringRef Contents = BD.getSection().getContents();
1157 StringRef SymData = Contents.substr(BD.getOffset(), BD.getSize());
1158 return (BD.getName().starts_with("HOLEat") ||
1164 BinaryData &BD = *Entry.second;
1165 StringRef Name = BD.getName();
1171 if (BD.getSymbols().size() > 1) {
1172 auto Itr = llvm::find_if(BD.getSymbols(), [&](const MCSymbol *Symbol) {
1175 if (Itr != BD.getSymbols().end()) {
1176 size_t Idx = std::distance(BD.getSymbols().begin(), Itr);
1177 std::swap(BD.getSymbols()[0], BD.getSymbols()[Idx]);
1183 if (BD.getSize() == 0) {
1187 const uint64_t Hash = BD.getSection().hash(BD);
1194 if (!isPadding(BD)) {
1196 this->errs() << "BOLT-WARNING: collision detected when hashing " << BD
1203 BD.Symbols.insert(BD.Symbols.begin(), Ctx->getOrCreateSymbol(NewName));
1204 GlobalSymbols[NewName] = &BD;
1403 BinaryData *BD = Entry.second;
1404 if ((BD->getName().starts_with("SYMBOLat") ||
1405 BD->getName().starts_with("DATAat")) &&
1406 !BD->getParent() && !BD->getSize() && !BD->isAbsolute() &&
1407 BD->getSection()) {
1408 this->errs() << "BOLT-WARNING: zero-sized top level symbol: " << *BD
1487 BinaryData *BD = Itr->second;
1488 bool isHole = (!BD->getParent() && !BD->getSize() && BD->isObject() &&
1489 (BD->getName().starts_with("SYMBOLat0x") ||
1490 BD->getName().starts_with("DATAat0x") ||
1491 BD->getName().starts_with("ANONYMOUS")));
1492 return !isHole && BD->getSection() == Section && !BD->getParent();
1517 BinaryData *BD = getBinaryDataAtAddress(Hole.first);
1518 if (BD) {
1519 // BD->getSection() can be != Section if there are sections that
1522 if (BD->getSection() == Section)
1539 const BinaryData *BD = Entry.second;
1540 const BinarySection &Section = BD->getSection();
1548 Address = BD->getAddress();
1549 Size = BD->getSize();
1559 const BinaryData *P = BD->getParent();
1564 OS << *BD << "\n";
2285 void BinaryContext::markAmbiguousRelocations(BinaryData &BD,
2287 auto setImmovable = [&](BinaryData &BD) {
2288 BinaryData *Root = BD.getAtomicRoot();
2297 if (Address == BD.getAddress()) {
2298 setImmovable(BD);
2302 if (Prev && Prev->getEndAddress() == BD.getAddress())
2306 if (Address == BD.getEndAddress()) {
2307 setImmovable(BD);
2310 BinaryData *Next = getBinaryDataContainingAddress(BD.getEndAddress());
2311 if (Next && Next->getAddress() == BD.getEndAddress())
2524 if (const BinaryData *BD = getBinaryDataAtAddress(Address)) {
2526 BinaryFunction *BF = getFunctionForSymbol(BD->getSymbol(), &EntryID);