From 39d8cf9bce52f1c803d2d0c31ccbfb070f0ccff7 Mon Sep 17 00:00:00 2001 From: Owen Rafferty Date: Wed, 18 Oct 2023 17:59:13 -0500 Subject: [PATCH] mold: 2.3.0 --- extra/mold/checksums | 4 +- extra/mold/patches/amd64_only.patch | 93 ++++++++++++++++++++++++++--- extra/mold/sources | 2 +- extra/mold/version | 2 +- 4 files changed, 90 insertions(+), 11 deletions(-) diff --git a/extra/mold/checksums b/extra/mold/checksums index a6114000..93705b5f 100644 --- a/extra/mold/checksums +++ b/extra/mold/checksums @@ -1,2 +1,2 @@ -3dda6e60c2d463efa586fffa52a6dfdf34e5e983140888ad372677bf882699cd38 -ffcb3fce3fe805b11c955feb4067d5b650934267d47df7239b45e8f8e7830cbe85 +21aeabae07c84a32c51db6d8facd7285db5010d3c22f357d8df8db11344911bbed +dcfa56a5344ac8422ed461443410e4380181a7ced329cc01537d05019461233b6c diff --git a/extra/mold/patches/amd64_only.patch b/extra/mold/patches/amd64_only.patch index f06a3435..769e1c86 100644 --- a/extra/mold/patches/amd64_only.patch +++ b/extra/mold/patches/amd64_only.patch @@ -1,8 +1,8 @@ diff --git a/CMakeLists.txt b/CMakeLists.txt -index 0cff71f..e9dad4e 100644 +index bce7166..e43dc77 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -294,8 +294,7 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR}) +@@ -297,12 +297,9 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR}) # compiler instances. This is hacky but greatly reduces compile time # on a multicore machine. list(APPEND MOLD_ELF_TARGETS @@ -11,8 +11,12 @@ index 0cff71f..e9dad4e 100644 + X86_64) list(APPEND MOLD_ELF_TEMPLATE_FILES - elf/arch-loongarch.cc -@@ -370,17 +369,6 @@ target_sources(mold PRIVATE +- elf/arch-loongarch.cc +- elf/arch-riscv.cc + elf/cmdline.cc + elf/gc-sections.cc + elf/gdb-index.cc +@@ -373,17 +370,6 @@ target_sources(mold PRIVATE common/perf.cc common/tar.cc common/uuid.cc @@ -31,18 +35,93 @@ index 0cff71f..e9dad4e 100644 elf/elf.cc git-hash.cc diff --git a/elf/main.cc b/elf/main.cc -index 8827a8c..64388cd 100644 +index 7847d14..660a442 100644 --- a/elf/main.cc +++ b/elf/main.cc -@@ -399,11 +399,6 @@ int elf_main(int argc, char **argv) { +@@ -359,11 +359,6 @@ int elf_main(int argc, char **argv) { if (ctx.arg.emulation.empty()) ctx.arg.emulation = deduce_machine_type(ctx, file_args); - // Redo if -m is not x86-64. - if constexpr (is_x86_64) - if (ctx.arg.emulation != X86_64::target_name) -- return redo_main(argc, argv, ctx.arg.emulation); +- return redo_main(ctx, argc, argv); - Timer t_all(ctx, "all"); install_signal_handler(); +diff --git a/elf/mold.h b/elf/mold.h +index 3028e73..9a0c5dd 100644 +--- a/elf/mold.h ++++ b/elf/mold.h +@@ -1346,7 +1346,6 @@ std::vector parse_nonpositional_args(Context &ctx); + // passes.cc + // + +-template int redo_main(Context &, int argc, char **argv); + template void create_internal_file(Context &); + template void apply_exclude_libs(Context &); + template void create_synthetic_sections(Context &); +diff --git a/elf/passes.cc b/elf/passes.cc +index 3664538..112aa79 100644 +--- a/elf/passes.cc ++++ b/elf/passes.cc +@@ -13,50 +13,6 @@ + + namespace mold::elf { + +-// Since elf_main is a template, we can't run it without a type parameter. +-// We speculatively run elf_main with X86_64, and if the speculation was +-// wrong, re-run it with an actual machine type. +-template +-int redo_main(Context &ctx, int argc, char **argv) { +- std::string_view target = ctx.arg.emulation; +- +- if (target == I386::target_name) +- return elf_main(argc, argv); +- if (target == ARM64::target_name) +- return elf_main(argc, argv); +- if (target == ARM32::target_name) +- return elf_main(argc, argv); +- if (target == RV64LE::target_name) +- return elf_main(argc, argv); +- if (target == RV64BE::target_name) +- return elf_main(argc, argv); +- if (target == RV32LE::target_name) +- return elf_main(argc, argv); +- if (target == RV32BE::target_name) +- return elf_main(argc, argv); +- if (target == PPC32::target_name) +- return elf_main(argc, argv); +- if (target == PPC64V1::target_name) +- return elf_main(argc, argv); +- if (target == PPC64V2::target_name) +- return elf_main(argc, argv); +- if (target == S390X::target_name) +- return elf_main(argc, argv); +- if (target == SPARC64::target_name) +- return elf_main(argc, argv); +- if (target == M68K::target_name) +- return elf_main(argc, argv); +- if (target == SH4::target_name) +- return elf_main(argc, argv); +- if (target == ALPHA::target_name) +- return elf_main(argc, argv); +- if (target == LOONGARCH32::target_name) +- return elf_main(argc, argv); +- if (target == LOONGARCH64::target_name) +- return elf_main(argc, argv); +- unreachable(); +-} +- + template + void apply_exclude_libs(Context &ctx) { + Timer t(ctx, "apply_exclude_libs"); +@@ -2725,7 +2681,6 @@ void show_stats(Context &ctx) { + + using E = MOLD_TARGET; + +-template int redo_main(Context &, int, char **); + template void create_internal_file(Context &); + template void apply_exclude_libs(Context &); + template void create_synthetic_sections(Context &); diff --git a/extra/mold/sources b/extra/mold/sources index 48914ef9..a5a6ce58 100644 --- a/extra/mold/sources +++ b/extra/mold/sources @@ -1,2 +1,2 @@ -https://github.com/rui314/mold/archive/v2.2.0.tar.gz +https://github.com/rui314/mold/archive/v2.3.0.tar.gz patches/amd64_only.patch diff --git a/extra/mold/version b/extra/mold/version index d3291fa3..fbf76438 100644 --- a/extra/mold/version +++ b/extra/mold/version @@ -1 +1 @@ -2.2.0 1 +2.3.0 1