X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=gold%2Fgold.cc;h=f02d2aadaf7367efcefd9be67a3e61880dda6185;hb=1424c35d071e7d49a4a219c7dee8c88ffd60ddca;hp=18b06b921db5dd719016445567b0c18b8361de04;hpb=9c7fe3c5c2c9e4c3571c253cf77341e3f6adf94c;p=binutils-gdb.git diff --git a/gold/gold.cc b/gold/gold.cc index 18b06b921db..f02d2aadaf7 100644 --- a/gold/gold.cc +++ b/gold/gold.cc @@ -1,6 +1,6 @@ // gold.cc -- main linker functions -// Copyright (C) 2006-2015 Free Software Foundation, Inc. +// Copyright (C) 2006-2020 Free Software Foundation, Inc. // Written by Ian Lance Taylor . // This file is part of gold. @@ -175,7 +175,7 @@ queue_initial_tasks(const General_options& options, Workqueue* workqueue, Input_objects* input_objects, Symbol_table* symtab, Layout* layout, Mapfile* mapfile) { - if (cmdline.begin() == cmdline.end()) + if (cmdline.number_of_input_files() == 0) { bool is_ok = false; if (options.printed_version()) @@ -492,6 +492,14 @@ queue_middle_tasks(const General_options& options, if (timer != NULL) timer->stamp(0); + // We have to support the case of not seeing any input objects, and + // generate an empty file. Existing builds depend on being able to + // pass an empty archive to the linker and get an empty object file + // out. In order to do this we need to use a default target. + if (input_objects->number_of_input_objects() == 0 + && layout->incremental_base() == NULL) + parameters_force_valid_target(); + // Add any symbols named with -u options to the symbol table. symtab->add_undefined_symbols_from_command_line(layout); @@ -589,14 +597,6 @@ queue_middle_tasks(const General_options& options, } } - // We have to support the case of not seeing any input objects, and - // generate an empty file. Existing builds depend on being able to - // pass an empty archive to the linker and get an empty object file - // out. In order to do this we need to use a default target. - if (input_objects->number_of_input_objects() == 0 - && layout->incremental_base() == NULL) - parameters_force_valid_target(); - int thread_count = options.thread_count_middle(); if (thread_count == 0) thread_count = std::max(2, input_objects->number_of_input_objects()); @@ -631,10 +631,16 @@ queue_middle_tasks(const General_options& options, for (++p; p != input_objects->relobj_end(); ++p) { if ((*p)->uses_split_stack() != uses_split_stack) - gold_fatal(_("cannot mix split-stack '%s' and " - "non-split-stack '%s' when using -r"), - (*input_objects->relobj_begin())->name().c_str(), - (*p)->name().c_str()); + { + const char *name1 + = (*input_objects->relobj_begin())->name().c_str(); + const char *name2 = (*p)->name().c_str(); + const char *name_split = uses_split_stack ? name1 : name2; + const char *name_nosplit = uses_split_stack ? name2 : name1; + gold_fatal(_("cannot mix split-stack '%s' and " + "non-split-stack '%s' when using -r"), + name_split, name_nosplit); + } } } }