@@ -801,6 +801,7 @@ MipsTargetELFStreamer::MipsTargetELFStreamer(MCStreamer &S,
801
801
const MCSubtargetInfo &STI)
802
802
: MipsTargetStreamer(S), MicroMipsEnabled(false ), STI(STI) {
803
803
MCAssembler &MCA = getStreamer ().getAssembler ();
804
+ ELFObjectWriter &W = getStreamer ().getWriter ();
804
805
805
806
// It's possible that MCObjectFileInfo isn't fully initialized at this point
806
807
// due to an initialization order problem where LLVMTargetMachine creates the
@@ -824,7 +825,7 @@ MipsTargetELFStreamer::MipsTargetELFStreamer(MCStreamer &S,
824
825
// We can fix this by making the target streamer construct
825
826
// the ABI, but this is fraught with wide ranging dependency
826
827
// issues as well.
827
- unsigned EFlags = MCA .getELFHeaderEFlags ();
828
+ unsigned EFlags = W .getELFHeaderEFlags ();
828
829
829
830
// FIXME: Fix a dependency issue by instantiating the ABI object to some
830
831
// default based off the triple. The triple doesn't describe the target
@@ -873,7 +874,7 @@ MipsTargetELFStreamer::MipsTargetELFStreamer(MCStreamer &S,
873
874
if (Features[Mips::FeatureNaN2008])
874
875
EFlags |= ELF::EF_MIPS_NAN2008;
875
876
876
- MCA .setELFHeaderEFlags (EFlags);
877
+ W .setELFHeaderEFlags (EFlags);
877
878
}
878
879
879
880
void MipsTargetELFStreamer::emitLabel (MCSymbol *S) {
@@ -889,6 +890,7 @@ void MipsTargetELFStreamer::emitLabel(MCSymbol *S) {
889
890
890
891
void MipsTargetELFStreamer::finish () {
891
892
MCAssembler &MCA = getStreamer ().getAssembler ();
893
+ ELFObjectWriter &W = getStreamer ().getWriter ();
892
894
const MCObjectFileInfo &OFI = *MCA.getContext ().getObjectFileInfo ();
893
895
MCELFStreamer &S = getStreamer ();
894
896
@@ -925,7 +927,7 @@ void MipsTargetELFStreamer::finish() {
925
927
926
928
// Update e_header flags. See the FIXME and comment above in
927
929
// the constructor for a full rundown on this.
928
- unsigned EFlags = MCA .getELFHeaderEFlags ();
930
+ unsigned EFlags = W .getELFHeaderEFlags ();
929
931
930
932
// ABI
931
933
// N64 does not require any ABI bits.
@@ -948,7 +950,7 @@ void MipsTargetELFStreamer::finish() {
948
950
if (Pic)
949
951
EFlags |= ELF::EF_MIPS_PIC | ELF::EF_MIPS_CPIC;
950
952
951
- MCA .setELFHeaderEFlags (EFlags);
953
+ W .setELFHeaderEFlags (EFlags);
952
954
953
955
// Emit all the option records.
954
956
// At the moment we are only emitting .Mips.options (ODK_REGINFO) and
@@ -988,25 +990,25 @@ void MipsTargetELFStreamer::emitDirectiveSetNoMicroMips() {
988
990
}
989
991
990
992
void MipsTargetELFStreamer::setUsesMicroMips () {
991
- MCAssembler &MCA = getStreamer ().getAssembler ();
992
- unsigned Flags = MCA .getELFHeaderEFlags ();
993
+ ELFObjectWriter &W = getStreamer ().getWriter ();
994
+ unsigned Flags = W .getELFHeaderEFlags ();
993
995
Flags |= ELF::EF_MIPS_MICROMIPS;
994
- MCA .setELFHeaderEFlags (Flags);
996
+ W .setELFHeaderEFlags (Flags);
995
997
}
996
998
997
999
void MipsTargetELFStreamer::emitDirectiveSetMips16 () {
998
- MCAssembler &MCA = getStreamer ().getAssembler ();
999
- unsigned Flags = MCA .getELFHeaderEFlags ();
1000
+ ELFObjectWriter &W = getStreamer ().getWriter ();
1001
+ unsigned Flags = W .getELFHeaderEFlags ();
1000
1002
Flags |= ELF::EF_MIPS_ARCH_ASE_M16;
1001
- MCA .setELFHeaderEFlags (Flags);
1003
+ W .setELFHeaderEFlags (Flags);
1002
1004
forbidModuleDirective ();
1003
1005
}
1004
1006
1005
1007
void MipsTargetELFStreamer::emitDirectiveSetNoReorder () {
1006
- MCAssembler &MCA = getStreamer ().getAssembler ();
1007
- unsigned Flags = MCA .getELFHeaderEFlags ();
1008
+ ELFObjectWriter &W = getStreamer ().getWriter ();
1009
+ unsigned Flags = W .getELFHeaderEFlags ();
1008
1010
Flags |= ELF::EF_MIPS_NOREORDER;
1009
- MCA .setELFHeaderEFlags (Flags);
1011
+ W .setELFHeaderEFlags (Flags);
1010
1012
forbidModuleDirective ();
1011
1013
}
1012
1014
@@ -1063,45 +1065,45 @@ void MipsTargetELFStreamer::emitDirectiveEnt(const MCSymbol &Symbol) {
1063
1065
}
1064
1066
1065
1067
void MipsTargetELFStreamer::emitDirectiveAbiCalls () {
1066
- MCAssembler &MCA = getStreamer ().getAssembler ();
1067
- unsigned Flags = MCA .getELFHeaderEFlags ();
1068
+ ELFObjectWriter &W = getStreamer ().getWriter ();
1069
+ unsigned Flags = W .getELFHeaderEFlags ();
1068
1070
Flags |= ELF::EF_MIPS_CPIC | ELF::EF_MIPS_PIC;
1069
- MCA .setELFHeaderEFlags (Flags);
1071
+ W .setELFHeaderEFlags (Flags);
1070
1072
}
1071
1073
1072
1074
void MipsTargetELFStreamer::emitDirectiveNaN2008 () {
1073
- MCAssembler &MCA = getStreamer ().getAssembler ();
1074
- unsigned Flags = MCA .getELFHeaderEFlags ();
1075
+ ELFObjectWriter &W = getStreamer ().getWriter ();
1076
+ unsigned Flags = W .getELFHeaderEFlags ();
1075
1077
Flags |= ELF::EF_MIPS_NAN2008;
1076
- MCA .setELFHeaderEFlags (Flags);
1078
+ W .setELFHeaderEFlags (Flags);
1077
1079
}
1078
1080
1079
1081
void MipsTargetELFStreamer::emitDirectiveNaNLegacy () {
1080
- MCAssembler &MCA = getStreamer ().getAssembler ();
1081
- unsigned Flags = MCA .getELFHeaderEFlags ();
1082
+ ELFObjectWriter &W = getStreamer ().getWriter ();
1083
+ unsigned Flags = W .getELFHeaderEFlags ();
1082
1084
Flags &= ~ELF::EF_MIPS_NAN2008;
1083
- MCA .setELFHeaderEFlags (Flags);
1085
+ W .setELFHeaderEFlags (Flags);
1084
1086
}
1085
1087
1086
1088
void MipsTargetELFStreamer::emitDirectiveOptionPic0 () {
1087
- MCAssembler &MCA = getStreamer ().getAssembler ();
1088
- unsigned Flags = MCA .getELFHeaderEFlags ();
1089
+ ELFObjectWriter &W = getStreamer ().getWriter ();
1090
+ unsigned Flags = W .getELFHeaderEFlags ();
1089
1091
// This option overrides other PIC options like -KPIC.
1090
1092
Pic = false ;
1091
1093
Flags &= ~ELF::EF_MIPS_PIC;
1092
- MCA .setELFHeaderEFlags (Flags);
1094
+ W .setELFHeaderEFlags (Flags);
1093
1095
}
1094
1096
1095
1097
void MipsTargetELFStreamer::emitDirectiveOptionPic2 () {
1096
- MCAssembler &MCA = getStreamer ().getAssembler ();
1097
- unsigned Flags = MCA .getELFHeaderEFlags ();
1098
+ ELFObjectWriter &W = getStreamer ().getWriter ();
1099
+ unsigned Flags = W .getELFHeaderEFlags ();
1098
1100
Pic = true ;
1099
1101
// NOTE: We are following the GAS behaviour here which means the directive
1100
1102
// 'pic2' also sets the CPIC bit in the ELF header. This is different from
1101
1103
// what is stated in the SYSV ABI which consider the bits EF_MIPS_PIC and
1102
1104
// EF_MIPS_CPIC to be mutually exclusive.
1103
1105
Flags |= ELF::EF_MIPS_PIC | ELF::EF_MIPS_CPIC;
1104
- MCA .setELFHeaderEFlags (Flags);
1106
+ W .setELFHeaderEFlags (Flags);
1105
1107
}
1106
1108
1107
1109
void MipsTargetELFStreamer::emitDirectiveInsn () {
0 commit comments