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

temporary

This commit is contained in:
Rui Ueyama 2020-11-08 10:31:49 +09:00
parent 08e54cf339
commit d1aa42b927

29
main.cc
View File

@ -380,6 +380,21 @@ static void write_got(u8 *buf, ArrayRef<ObjectFile *> files) {
});
}
static void write_merged_strings(u8 *buf, ArrayRef<ObjectFile *> files) {
tbb::parallel_for_each(files, [&](ObjectFile *file) {
for (InputSection *isec : file->mergeable_sections) {
MergedSection *osec = isec->merged_section;
u8 *base = buf + osec->shdr.sh_offset + isec->merged_offset;
for (StringPieceRef &ref : isec->pieces) {
StringPiece &piece = *ref.piece;
if (piece.isec == isec)
memcpy(base + piece.output_offset, piece.data.data(), piece.data.size());
}
}
});
}
// We want to sort output sections in the following order.
//
// alloc readonly data
@ -963,19 +978,7 @@ int main(int argc, char **argv) {
// Fill mergeable string sections
{
MyTimer t("write_merged_strings", copy);
tbb::parallel_for_each(files, [&](ObjectFile *file) {
for (InputSection *isec : file->mergeable_sections) {
MergedSection *osec = isec->merged_section;
u8 *base = buf + osec->shdr.sh_offset + isec->merged_offset;
for (StringPieceRef &ref : isec->pieces) {
StringPiece &piece = *ref.piece;
if (piece.isec == isec)
memcpy(base + piece.output_offset, piece.data.data(), piece.data.size());
}
}
});
write_merged_strings(buf, files);
}
{