Lines Matching refs:Layout

196 bool MCAssembler::evaluateFixup(const MCAsmLayout &Layout,  in evaluateFixup()  argument
212 if (!Expr->evaluateAsRelocatable(Target, &Layout, &Fixup)) { in evaluateFixup()
229 return getBackend().evaluateTargetFixup(*this, Layout, Fixup, DF, Target, in evaluateFixup()
262 Value += Layout.getSymbolOffset(Sym); in evaluateFixup()
267 Value -= Layout.getSymbolOffset(Sym); in evaluateFixup()
276 uint32_t Offset = Layout.getFragmentOffset(DF) + Fixup.getOffset(); in evaluateFixup()
293 uint64_t MCAssembler::computeFragmentSize(const MCAsmLayout &Layout, in computeFragmentSize() argument
306 if (!FF.getNumValues().evaluateAsAbsolute(NumValues, Layout)) { in computeFragmentSize()
333 unsigned Offset = Layout.getFragmentOffset(&AF); in computeFragmentSize()
356 if (!OF.getOffset().evaluateAsValue(Value, Layout)) { in computeFragmentSize()
362 uint64_t FragmentOffset = Layout.getFragmentOffset(&OF); in computeFragmentSize()
366 if (!Layout.getSymbolOffset(A->getSymbol(), Val)) { in computeFragmentSize()
514 const MCAsmLayout &Layout, const MCFragment &F) { in writeFragment() argument
516 uint64_t FragmentSize = Asm.computeFragmentSize(Layout, F); in writeFragment()
732 const MCAsmLayout &Layout) const { in writeSectionData()
737 assert(Layout.getSectionFileSize(Sec) == 0 && "Invalid size for section!"); in writeSectionData()
785 writeFragment(OS, *this, Layout, F); in writeSectionData()
788 OS.tell() - Start == Layout.getSectionAddressSize(Sec)); in writeSectionData()
792 MCAssembler::handleFixup(const MCAsmLayout &Layout, MCFragment &F, in handleFixup() argument
798 bool IsResolved = evaluateFixup(Layout, Fixup, &F, Target, FixedValue, in handleFixup()
804 getWriter().recordRelocation(*this, Layout, &F, Fixup, Target, FixedValue); in handleFixup()
809 void MCAssembler::layout(MCAsmLayout &Layout) { in layout() argument
827 for (unsigned i = 0, e = Layout.getSectionOrder().size(); i != e; ++i) { in layout()
828 MCSection *Sec = Layout.getSectionOrder()[i]; in layout()
837 while (layoutOnce(Layout)) { in layout()
844 Layout.invalidateFragmentsFrom(&*Sec.begin()); in layout()
852 finishLayout(Layout); in layout()
860 getWriter().executePostLayoutBinding(*this, Layout); in layout()
878 getBackend().shouldInsertFixupForCodeAlign(*this, Layout, AF); in layout()
927 handleFixup(Layout, Frag, Fixup); in layout()
937 MCAsmLayout Layout(*this); in Finish() local
938 layout(Layout); in Finish()
941 stats::ObjectBytes += getWriter().writeObject(*this, Layout); in Finish()
946 const MCAsmLayout &Layout) const { in fixupNeedsRelaxation()
951 bool Resolved = evaluateFixup(Layout, Fixup, DF, Target, Value, WasForced); in fixupNeedsRelaxation()
957 Layout, WasForced); in fixupNeedsRelaxation()
961 const MCAsmLayout &Layout) const { in fragmentNeedsRelaxation()
970 if (fixupNeedsRelaxation(Fixup, F, Layout)) in fragmentNeedsRelaxation()
976 bool MCAssembler::relaxInstruction(MCAsmLayout &Layout, in relaxInstruction() argument
980 if (!fragmentNeedsRelaxation(&F, Layout)) in relaxInstruction()
1010 bool MCAssembler::relaxLEB(MCAsmLayout &Layout, MCLEBFragment &LF) { in relaxLEB() argument
1013 bool Abs = LF.getValue().evaluateKnownAbsolute(Value, Layout); in relaxLEB()
1067 bool MCAssembler::relaxBoundaryAlign(MCAsmLayout &Layout, in relaxBoundaryAlign() argument
1074 uint64_t AlignedOffset = Layout.getFragmentOffset(&BF); in relaxBoundaryAlign()
1078 AlignedSize += computeFragmentSize(Layout, *F); in relaxBoundaryAlign()
1087 Layout.invalidateFragmentsFrom(&BF); in relaxBoundaryAlign()
1091 bool MCAssembler::relaxDwarfLineAddr(MCAsmLayout &Layout, in relaxDwarfLineAddr() argument
1095 if (getBackend().relaxDwarfLineAddr(DF, Layout, WasRelaxed)) in relaxDwarfLineAddr()
1098 MCContext &Context = Layout.getAssembler().getContext(); in relaxDwarfLineAddr()
1101 bool Abs = DF.getAddrDelta().evaluateKnownAbsolute(AddrDelta, Layout); in relaxDwarfLineAddr()
1116 bool MCAssembler::relaxDwarfCallFrameFragment(MCAsmLayout &Layout, in relaxDwarfCallFrameFragment() argument
1119 if (getBackend().relaxDwarfCFA(DF, Layout, WasRelaxed)) in relaxDwarfCallFrameFragment()
1122 MCContext &Context = Layout.getAssembler().getContext(); in relaxDwarfCallFrameFragment()
1125 bool Abs = DF.getAddrDelta().evaluateKnownAbsolute(AddrDelta, Layout); in relaxDwarfCallFrameFragment()
1137 bool MCAssembler::relaxCVInlineLineTable(MCAsmLayout &Layout, in relaxCVInlineLineTable() argument
1140 getContext().getCVContext().encodeInlineLineTable(Layout, F); in relaxCVInlineLineTable()
1144 bool MCAssembler::relaxCVDefRange(MCAsmLayout &Layout, in relaxCVDefRange() argument
1147 getContext().getCVContext().encodeDefRange(Layout, F); in relaxCVDefRange()
1151 bool MCAssembler::relaxPseudoProbeAddr(MCAsmLayout &Layout, in relaxPseudoProbeAddr() argument
1155 bool Abs = PF.getAddrDelta().evaluateKnownAbsolute(AddrDelta, Layout); in relaxPseudoProbeAddr()
1168 bool MCAssembler::relaxFragment(MCAsmLayout &Layout, MCFragment &F) { in relaxFragment() argument
1175 return relaxInstruction(Layout, cast<MCRelaxableFragment>(F)); in relaxFragment()
1177 return relaxDwarfLineAddr(Layout, cast<MCDwarfLineAddrFragment>(F)); in relaxFragment()
1179 return relaxDwarfCallFrameFragment(Layout, in relaxFragment()
1182 return relaxLEB(Layout, cast<MCLEBFragment>(F)); in relaxFragment()
1184 return relaxBoundaryAlign(Layout, cast<MCBoundaryAlignFragment>(F)); in relaxFragment()
1186 return relaxCVInlineLineTable(Layout, cast<MCCVInlineLineTableFragment>(F)); in relaxFragment()
1188 return relaxCVDefRange(Layout, cast<MCCVDefRangeFragment>(F)); in relaxFragment()
1190 return relaxPseudoProbeAddr(Layout, cast<MCPseudoProbeAddrFragment>(F)); in relaxFragment()
1194 bool MCAssembler::layoutSectionOnce(MCAsmLayout &Layout, MCSection &Sec) { in layoutSectionOnce() argument
1204 bool RelaxedFrag = relaxFragment(Layout, Frag); in layoutSectionOnce()
1209 Layout.invalidateFragmentsFrom(FirstRelaxedFragment); in layoutSectionOnce()
1215 bool MCAssembler::layoutOnce(MCAsmLayout &Layout) { in layoutOnce() argument
1220 while (layoutSectionOnce(Layout, Sec)) in layoutOnce()
1227 void MCAssembler::finishLayout(MCAsmLayout &Layout) { in finishLayout() argument
1230 for (unsigned int i = 0, n = Layout.getSectionOrder().size(); i != n; ++i) { in finishLayout()
1231 MCSection &Section = *Layout.getSectionOrder()[i]; in finishLayout()
1232 Layout.getFragmentOffset(&*Section.getFragmentList().rbegin()); in finishLayout()
1233 computeFragmentSize(Layout, *Section.getFragmentList().rbegin()); in finishLayout()
1235 getBackend().finishLayout(*this, Layout); in finishLayout()