mirror of
https://github.com/rui314/mold.git
synced 2024-09-20 09:27:45 +03:00
temporary
This commit is contained in:
parent
6ef839b8d1
commit
f92b6eaa87
3
Makefile
3
Makefile
@ -10,7 +10,8 @@ TBB_LIBDIR=$(wildcard $(CURRENT_DIR)/oneTBB/build/linux_intel64_*_release/)
|
||||
CPPFLAGS=-g $(shell $(LLVM_CONFIG) --cxxflags) -IoneTBB/include -pthread -O2
|
||||
LDFLAGS=$(shell $(LLVM_CONFIG) --ldflags) -L$(TBB_LIBDIR) -Wl,-rpath=$(TBB_LIBDIR)
|
||||
LIBS=-pthread -ltbb -lcurses -Wl,--start-group $(LLVM_LIBS) -Wl,--end-group
|
||||
OBJS=main.o writer.o input_files.o input_sections.o output_sections.o symtab.o
|
||||
OBJS=main.o writer.o input_files.o input_sections.o output_sections.o symtab.o \
|
||||
output_file.o
|
||||
|
||||
chibild: $(OBJS)
|
||||
$(CXX) $(CFLAGS) $(OBJS) -o $@ $(LDFLAGS) $(LIBS)
|
||||
|
14
chibild.h
14
chibild.h
@ -190,6 +190,20 @@ private:
|
||||
|
||||
void write();
|
||||
|
||||
//
|
||||
// output_file.cc
|
||||
//
|
||||
|
||||
class OutputFile {
|
||||
public:
|
||||
OutputFile(uint64_t size);
|
||||
void commit();
|
||||
|
||||
private:
|
||||
std::unique_ptr<llvm::FileOutputBuffer> output_buffer;
|
||||
uint8_t *buf;
|
||||
};
|
||||
|
||||
//
|
||||
// main.cc
|
||||
//
|
||||
|
21
output_file.cc
Normal file
21
output_file.cc
Normal file
@ -0,0 +1,21 @@
|
||||
#include "chibild.h"
|
||||
|
||||
using namespace llvm;
|
||||
using namespace llvm::ELF;
|
||||
using llvm::object::ELF64LE;
|
||||
|
||||
OutputFile::OutputFile(uint64_t size) {
|
||||
Expected<std::unique_ptr<FileOutputBuffer>> bufOrErr =
|
||||
FileOutputBuffer::create(config.output, size, 0);
|
||||
|
||||
if (!bufOrErr)
|
||||
error("failed to open " + config.output + ": " +
|
||||
llvm::toString(bufOrErr.takeError()));
|
||||
output_buffer = std::move(*bufOrErr);
|
||||
buf = output_buffer->getBufferStart();
|
||||
}
|
||||
|
||||
void OutputFile::commit() {
|
||||
if (auto e = output_buffer->commit())
|
||||
error("failed to write to the output file: " + toString(std::move(e)));
|
||||
}
|
Loading…
Reference in New Issue
Block a user