Skip to content

Commit 1ddb6bc

Browse files
Fix getFragmentContents to match what we see in MCAssembler.cpp writeFragment
1 parent cd5ee21 commit 1ddb6bc

File tree

1 file changed

+19
-7
lines changed

1 file changed

+19
-7
lines changed

llvm/lib/MCCAS/MCCASObjectV1.cpp

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2862,27 +2862,38 @@ Error MCCASBuilder::createAppleObjCSection() {
28622862
return finalizeSection<AppleObjCSectionRef>();
28632863
}
28642864

2865-
static ArrayRef<char> getFragmentContents(const MCFragment &Fragment) {
2865+
static void getFragmentContents(const MCFragment &Fragment,
2866+
SmallVectorImpl<char> &FragContents) {
28662867
switch (Fragment.getKind()) {
28672868
#define MCFRAGMENT_NODE_REF(MCFragmentName, MCEnumName, MCEnumIdentifier) \
28682869
case MCFragment::MCEnumName: { \
2869-
return Fragment.getContents(); \
2870+
FragContents.append(Fragment.getContents().begin(), \
2871+
Fragment.getContents().end()); \
2872+
\
2873+
return; \
28702874
}
28712875
#define MCFRAGMENT_ENCODED_FRAGMENT_ONLY
28722876
#include "llvm/MCCAS/MCCASObjectV1.def"
28732877
case MCFragment::FT_CVInlineLines: {
28742878
const MCCVInlineLineTableFragment &SF =
28752879
cast<MCCVInlineLineTableFragment>(Fragment);
2876-
return SF.getContents();
2880+
FragContents.append(SF.getContents().begin(), SF.getContents().end());
2881+
return;
28772882
}
28782883
case MCFragment::FT_LEB: {
2879-
return Fragment.getContents();
2884+
auto FixedContent = Fragment.getContents();
2885+
auto VarContent = Fragment.getVarContents();
2886+
FragContents.append(FixedContent.begin(), FixedContent.end());
2887+
FragContents.append(VarContent.begin(), VarContent.end());
2888+
return;
28802889
}
28812890
case MCFragment::FT_Align: {
2882-
return Fragment.getContents();
2891+
FragContents.append(Fragment.getContents().begin(),
2892+
Fragment.getContents().end());
2893+
return;
28832894
}
28842895
default:
2885-
return ArrayRef<char>();
2896+
return;
28862897
}
28872898
}
28882899

@@ -2914,7 +2925,8 @@ partitionFragment(MCAssembler &Asm, SmallVector<char, 0> &Addends,
29142925
ArrayRef<MachO::any_relocation_info> RelocationBuffer,
29152926
const MCFragment &Fragment, uint64_t &RelocationBufferIndex,
29162927
bool IsLittleEndian) {
2917-
auto FragmentContents = getFragmentContents(Fragment);
2928+
SmallVector<char, 0> FragmentContents;
2929+
getFragmentContents(Fragment, FragmentContents);
29182930
/// FragmentIndex: It denotes the index into the FragmentContents that is used
29192931
/// to copy the data that deduplicates in the \p FinalFragmentContents.
29202932
uint64_t FragmentIndex = 0;

0 commit comments

Comments
 (0)