amd64_only.patch (4268B)
1 diff --git a/CMakeLists.txt b/CMakeLists.txt 2 index bb88c8d..4f0e084 100644 3 --- a/CMakeLists.txt 4 +++ b/CMakeLists.txt 5 @@ -314,16 +314,9 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR}) 6 # compiler instances. This is hacky but greatly reduces compile time 7 # on a multicore machine. 8 list(APPEND MOLD_ELF_TARGETS 9 - X86_64 I386 ARM64LE ARM64BE ARM32LE ARM32BE RV32LE RV32BE RV64LE 10 - RV64BE PPC32 PPC64V1 PPC64V2 S390X SPARC64 M68K SH4LE SH4BE 11 - LOONGARCH32 LOONGARCH64) 12 + X86_64) 13 14 list(APPEND MOLD_ELF_TEMPLATE_FILES 15 - src/arch-arm32.cc 16 - src/arch-arm64.cc 17 - src/arch-loongarch.cc 18 - src/arch-riscv.cc 19 - src/arch-sh4.cc 20 src/cmdline.cc 21 src/filetype.cc 22 src/gc-sections.cc 23 @@ -390,13 +383,6 @@ target_sources(mold PRIVATE 24 lib/perf.cc 25 lib/random.cc 26 lib/tar.cc 27 - src/arch-i386.cc 28 - src/arch-m68k.cc 29 - src/arch-ppc32.cc 30 - src/arch-ppc64v1.cc 31 - src/arch-ppc64v2.cc 32 - src/arch-s390x.cc 33 - src/arch-sparc64.cc 34 src/arch-x86-64.cc 35 src/elf.cc 36 src/entry.cc 37 diff --git a/src/main.cc b/src/main.cc 38 index c2faf27..0ea5d4c 100644 39 --- a/src/main.cc 40 +++ b/src/main.cc 41 @@ -279,11 +279,6 @@ int mold_main(int argc, char **argv) { 42 if (ctx.arg.emulation.empty()) 43 ctx.arg.emulation = detect_machine_type(ctx, file_args); 44 45 - // Redo if -m is not x86-64. 46 - if constexpr (is_x86_64<E>) 47 - if (ctx.arg.emulation != X86_64::name) 48 - return redo_main(ctx, argc, argv); 49 - 50 Timer t_all(ctx, "all"); 51 52 install_signal_handler(); 53 diff --git a/src/mold.h b/src/mold.h 54 index 237af93..8bf58bd 100644 55 --- a/src/mold.h 56 +++ b/src/mold.h 57 @@ -1665,7 +1665,6 @@ std::vector<std::string> parse_nonpositional_args(Context<E> &ctx); 58 // passes.cc 59 // 60 61 -template <typename E> int redo_main(Context<E> &, int argc, char **argv); 62 template <typename E> void create_internal_file(Context<E> &); 63 template <typename E> void apply_exclude_libs(Context<E> &); 64 template <typename E> void create_synthetic_sections(Context<E> &); 65 diff --git a/src/passes.cc b/src/passes.cc 66 index 4e8ba24..3ebc333 100644 67 --- a/src/passes.cc 68 +++ b/src/passes.cc 69 @@ -13,54 +13,6 @@ 70 71 namespace mold { 72 73 -// Since mold_main is a template, we can't run it without a type parameter. 74 -// We speculatively run mold_main with X86_64, and if the speculation was 75 -// wrong, re-run it with an actual machine type. 76 -template <typename E> 77 -int redo_main(Context<E> &ctx, int argc, char **argv) { 78 - std::string_view target = ctx.arg.emulation; 79 - 80 - if (target == I386::name) 81 - return mold_main<I386>(argc, argv); 82 - if (target == ARM64LE::name) 83 - return mold_main<ARM64LE>(argc, argv); 84 - if (target == ARM64BE::name) 85 - return mold_main<ARM64BE>(argc, argv); 86 - if (target == ARM32LE::name) 87 - return mold_main<ARM32LE>(argc, argv); 88 - if (target == ARM32BE::name) 89 - return mold_main<ARM32BE>(argc, argv); 90 - if (target == RV64LE::name) 91 - return mold_main<RV64LE>(argc, argv); 92 - if (target == RV64BE::name) 93 - return mold_main<RV64BE>(argc, argv); 94 - if (target == RV32LE::name) 95 - return mold_main<RV32LE>(argc, argv); 96 - if (target == RV32BE::name) 97 - return mold_main<RV32BE>(argc, argv); 98 - if (target == PPC32::name) 99 - return mold_main<PPC32>(argc, argv); 100 - if (target == PPC64V1::name) 101 - return mold_main<PPC64V1>(argc, argv); 102 - if (target == PPC64V2::name) 103 - return mold_main<PPC64V2>(argc, argv); 104 - if (target == S390X::name) 105 - return mold_main<S390X>(argc, argv); 106 - if (target == SPARC64::name) 107 - return mold_main<SPARC64>(argc, argv); 108 - if (target == M68K::name) 109 - return mold_main<M68K>(argc, argv); 110 - if (target == SH4LE::name) 111 - return mold_main<SH4LE>(argc, argv); 112 - if (target == SH4BE::name) 113 - return mold_main<SH4BE>(argc, argv); 114 - if (target == LOONGARCH32::name) 115 - return mold_main<LOONGARCH32>(argc, argv); 116 - if (target == LOONGARCH64::name) 117 - return mold_main<LOONGARCH64>(argc, argv); 118 - abort(); 119 -} 120 - 121 template <typename E> 122 void apply_exclude_libs(Context<E> &ctx) { 123 Timer t(ctx, "apply_exclude_libs"); 124 @@ -3513,7 +3465,6 @@ void show_stats(Context<E> &ctx) { 125 126 using E = MOLD_TARGET; 127 128 -template int redo_main(Context<E> &, int, char **); 129 template void create_internal_file(Context<E> &); 130 template void apply_exclude_libs(Context<E> &); 131 template void create_synthetic_sections(Context<E> &);