@@ -215,9 +215,6 @@ struct ELFWriter {
215
215
};
216
216
217
217
class ELFObjectWriter : public MCObjectWriter {
218
- raw_pwrite_stream &OS;
219
- bool IsLittleEndian;
220
-
221
218
// / The target specific ELF writer instance.
222
219
std::unique_ptr<MCELFObjectTargetWriter> TargetObjectWriter;
223
220
@@ -233,10 +230,8 @@ class ELFObjectWriter : public MCObjectWriter {
233
230
unsigned Type) const ;
234
231
235
232
public:
236
- ELFObjectWriter (std::unique_ptr<MCELFObjectTargetWriter> MOTW,
237
- raw_pwrite_stream &OS, bool IsLittleEndian)
238
- : OS(OS), IsLittleEndian(IsLittleEndian),
239
- TargetObjectWriter (std::move(MOTW)) {}
233
+ ELFObjectWriter (std::unique_ptr<MCELFObjectTargetWriter> MOTW)
234
+ : TargetObjectWriter(std::move(MOTW)) {}
240
235
241
236
void reset () override {
242
237
Relocations.clear ();
@@ -253,16 +248,27 @@ class ELFObjectWriter : public MCObjectWriter {
253
248
const MCFragment *Fragment, const MCFixup &Fixup,
254
249
MCValue Target, uint64_t &FixedValue) override ;
255
250
256
- uint64_t writeObject (MCAssembler &Asm, const MCAsmLayout &Layout) override {
257
- return ELFWriter (*this , OS, IsLittleEndian).writeObject (Asm, Layout);
258
- }
259
-
260
251
void executePostLayoutBinding (MCAssembler &Asm,
261
252
const MCAsmLayout &Layout) override ;
262
253
263
254
friend struct ELFWriter ;
264
255
};
265
256
257
+ class ELFSingleObjectWriter : public ELFObjectWriter {
258
+ raw_pwrite_stream &OS;
259
+ bool IsLittleEndian;
260
+
261
+ public:
262
+ ELFSingleObjectWriter (std::unique_ptr<MCELFObjectTargetWriter> MOTW,
263
+ raw_pwrite_stream &OS, bool IsLittleEndian)
264
+ : ELFObjectWriter(std::move(MOTW)), OS(OS),
265
+ IsLittleEndian (IsLittleEndian) {}
266
+
267
+ uint64_t writeObject (MCAssembler &Asm, const MCAsmLayout &Layout) override {
268
+ return ELFWriter (*this , OS, IsLittleEndian).writeObject (Asm, Layout);
269
+ }
270
+ };
271
+
266
272
} // end anonymous namespace
267
273
268
274
void ELFWriter::align (unsigned Alignment) {
@@ -1374,6 +1380,6 @@ bool ELFObjectWriter::isSymbolRefDifferenceFullyResolvedImpl(
1374
1380
std::unique_ptr<MCObjectWriter>
1375
1381
llvm::createELFObjectWriter (std::unique_ptr<MCELFObjectTargetWriter> MOTW,
1376
1382
raw_pwrite_stream &OS, bool IsLittleEndian) {
1377
- return llvm::make_unique<ELFObjectWriter >(std::move (MOTW), OS,
1378
- IsLittleEndian);
1383
+ return llvm::make_unique<ELFSingleObjectWriter >(std::move (MOTW), OS,
1384
+ IsLittleEndian);
1379
1385
}
0 commit comments