1
1
mirror of https://github.com/rui314/mold.git synced 2024-09-20 09:27:45 +03:00

temporary

This commit is contained in:
Rui Ueyama 2020-10-14 19:43:12 +09:00
parent 6ef839b8d1
commit f92b6eaa87
3 changed files with 37 additions and 1 deletions

View File

@ -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)

View File

@ -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
View 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)));
}