From ccc7f83cde954048424fa488464be41f210e60d1 Mon Sep 17 00:00:00 2001 From: Rui Ueyama Date: Sun, 1 Nov 2020 13:05:51 +0900 Subject: [PATCH] temporary --- main.cc | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/main.cc b/main.cc index 84c779e4..6b064b8c 100644 --- a/main.cc +++ b/main.cc @@ -625,6 +625,27 @@ int main(int argc, char **argv) { filesize = set_osec_offsets(output_chunks); } + // Attach linker-synthesized symbols to sections. + { + // __bss_start + for (OutputChunk *chunk : output_chunks) { + if (chunk->name == ".bss" && !chunk->sections.empty()) { + out::__bss_start->input_section = chunk->sections[0]; + break; + } + } + + // __ehdr_start + for (OutputChunk *chunk : output_chunks) { + if (chunk->shndx == 1) { + out::__ehdr_start->input_section = chunk->sections[0]; + out::__ehdr_start->addr = out::ehdr->shdr.sh_addr - chunk->shdr.sh_addr; + break; + } + } + } + + // Fix symbol addresses. { MyTimer t("sym_addr"); for_each(files, [](ObjectFile *file) { file->fix_sym_addrs(); });