Lines Matching refs:isec
328 auto *isec = make<ConcatInputSection>( in parseSections() local
330 subsections.push_back({off, isec}); in parseSections()
343 InputSection *isec; in parseSections() local
345 isec = make<CStringInputSection>(section, data, align); in parseSections()
347 cast<CStringInputSection>(isec)->splitIntoPieces(); in parseSections()
349 isec = make<WordLiteralInputSection>(section, data, align); in parseSections()
351 section.subsections.push_back({0, isec}); in parseSections()
373 auto *isec = make<ConcatInputSection>(section, data, align); in parseSections() local
374 if (isDebugSection(isec->getFlags()) && in parseSections()
375 isec->getSegName() == segment_names::dwarf) { in parseSections()
379 debugSections.push_back(isec); in parseSections()
381 section.subsections.push_back({0, isec}); in parseSections()
443 return it->isec; in findContainingSubsection()
447 static Defined *findSymbolAtOffset(const ConcatInputSection *isec, in findSymbolAtOffset() argument
449 auto it = llvm::lower_bound(isec->symbols, off, [](Defined *d, uint64_t off) { in findSymbolAtOffset()
453 if (it == isec->symbols.end() || (*it)->value != off) { in findSymbolAtOffset()
454 assert(isec->wasCoalesced); in findSymbolAtOffset()
559 subsectionEnd = subsectionBase + subsection->isec->getSize(); in parseOptimizationHints()
579 subsection->isec->optimizationHints = in parseOptimizationHints()
605 subsection->isec->optimizationHints = ArrayRef<OptimizationHint>( in parseOptimizationHints()
734 subsecIt->offset + subsecIt->isec->getSize() <= r.offset) { in parseRelocations()
740 subsec = subsecIt->isec; in parseRelocations()
770 InputSection *isec, uint64_t value, in createDefined() argument
830 name, isec->getFile(), isec, value, size, sym.n_desc & N_WEAK_DEF, in createDefined()
838 !name.startswith("l") && !name.startswith("L") && !isEhFrameSection(isec); in createDefined()
840 name, isec->getFile(), isec, value, size, sym.n_desc & N_WEAK_DEF, in createDefined()
945 InputSection *isec = in parseSymbols() local
953 createDefined(sym, name, isec, 0, isec->getSize(), forceHidden); in parseSymbols()
971 InputSection *isec = subsec.isec; in parseSymbols() local
978 : isec->data.size() - symbolOffset; in parseSymbols()
987 sym.n_desc & N_ALT_ENTRY || !isa<ConcatInputSection>(isec)) { in parseSymbols()
988 symbols[symIndex] = createDefined(sym, name, isec, symbolOffset, in parseSymbols()
992 auto *concatIsec = cast<ConcatInputSection>(isec); in parseSymbols()
996 if (isZeroFill(isec->getFlags())) { in parseSymbols()
998 nextIsec->data = {nullptr, isec->data.size() - symbolOffset}; in parseSymbols()
999 isec->data = {nullptr, symbolOffset}; in parseSymbols()
1001 nextIsec->data = isec->data.slice(symbolOffset); in parseSymbols()
1002 isec->data = isec->data.slice(0, symbolOffset); in parseSymbols()
1039 ConcatInputSection *isec = make<ConcatInputSection>(section, data); in OpaqueFile() local
1040 isec->live = true; in OpaqueFile()
1041 section.subsections.push_back({0, isec}); in OpaqueFile()
1201 ConcatInputSection *isec = cast<ConcatInputSection>(subsection.isec); in registerCompactUnwind() local
1222 isec->data = isec->data.slice(target->wordSize, 8 + target->wordSize); in registerCompactUnwind()
1223 uint32_t encoding = read32le(isec->data.data() + sizeof(uint32_t)); in registerCompactUnwind()
1231 for (auto it = isec->relocs.begin(); it != isec->relocs.end();) { in registerCompactUnwind()
1247 referentIsec = cast<ConcatInputSection>(sym->isec); in registerCompactUnwind()
1258 error(isec->getLocation(r.offset) + " references section " + in registerCompactUnwind()
1268 d->unwindEntry = isec; in registerCompactUnwind()
1286 it = isec->relocs.erase(it); in registerCompactUnwind()
1312 static CIE parseCIE(const InputSection *isec, const EhReader &reader, in parseCIE() argument
1366 llvm::find_if(isec->relocs, [=](const macho::Reloc &r) { in parseCIE()
1369 if (personalityRelocIt == isec->relocs.end()) in parseCIE()
1410 targetSymFromCanonicalSubtractor(const InputSection *isec, in targetSymFromCanonicalSubtractor() argument
1428 if (pcSym->isec == isec) { in targetSymFromCanonicalSubtractor()
1439 pcReloc.referent = isec->symbols[0]; in targetSymFromCanonicalSubtractor()
1440 assert(isec->symbols[0]->value == 0); in targetSymFromCanonicalSubtractor()
1449 auto *isec = cast<ConcatInputSection>(findContainingSubsection(*sec, &addr)); in findSymbolAtAddress() local
1450 return findSymbolAtOffset(isec, addr); in findSymbolAtAddress()
1470 auto *isec = cast<ConcatInputSection>(subsec.isec); in registerEhFrames() local
1476 if (isec->symbols.size() == 0) in registerEhFrames()
1477 isec->symbols.push_back(make<Defined>( in registerEhFrames()
1478 "EH_Frame", isec->getFile(), isec, /*value=*/0, /*size=*/0, in registerEhFrames()
1482 else if (isec->symbols[0]->value != 0) in registerEhFrames()
1485 EhReader reader(this, isec->data, subsec.offset); in registerEhFrames()
1492 EhRelocator ehRelocator(isec); in registerEhFrames()
1494 isec->relocs, [=](const Reloc &r) { return r.offset == cieOffOff; }); in registerEhFrames()
1496 if (cieOffRelocIt != isec->relocs.end()) { in registerEhFrames()
1499 targetSymFromCanonicalSubtractor</*Invert=*/true>(isec, cieOffRelocIt) in registerEhFrames()
1500 ->isec; in registerEhFrames()
1508 cieIsec = isec; in registerEhFrames()
1515 if (cieIsec != isec) in registerEhFrames()
1519 if (cieIsec == isec) { in registerEhFrames()
1520 cieMap[cieIsec] = parseCIE(isec, reader, dataOff); in registerEhFrames()
1543 auto funcAddrRelocIt = isec->relocs.end(); in registerEhFrames()
1544 auto lsdaAddrRelocIt = isec->relocs.end(); in registerEhFrames()
1545 for (auto it = isec->relocs.begin(); it != isec->relocs.end(); ++it) { in registerEhFrames()
1553 if (funcAddrRelocIt != isec->relocs.end()) { in registerEhFrames()
1554 funcSym = targetSymFromCanonicalSubtractor(isec, funcAddrRelocIt); in registerEhFrames()
1560 if (funcSym->isec) in registerEhFrames()
1561 funcSym = findSymbolAtOffset(cast<ConcatInputSection>(funcSym->isec), in registerEhFrames()
1571 isec->live = false; in registerEhFrames()
1576 if (lsdaAddrRelocIt != isec->relocs.end()) { in registerEhFrames()
1577 lsdaIsec = targetSymFromCanonicalSubtractor(isec, lsdaAddrRelocIt)->isec; in registerEhFrames()
1586 fdes[isec] = {funcLength, cie.personalitySymbol, lsdaIsec}; in registerEhFrames()
1587 funcSym->unwindEntry = isec; in registerEhFrames()