On Wed, Feb 2, 2022 at 3:31 PM Martin Liška <mli...@suse.cz> wrote: > > When one uses something like: -Wl,-plugin-opt=debug, > we end up with lto1 WPA invocation that has 'debug' > on command line. We interpret that as input filename. > > The patch moves resolution checking later so that we end up with > a reasonable error message: > > lto1: error: open debug failed: No such file or directory
I think almost all of these errors should be fatal_error, not error () since we cannot really recover. That would make .. > lto1: fatal error: errors during merging of translation units > > Patch can bootstrap on x86_64-linux-gnu and survives regression tests. > > Ready to be installed? > Thanks, > Martin > > PR lto/104333 > > gcc/lto/ChangeLog: > > * lto-common.cc (read_cgraph_and_symbols): Move resolution > checking for number of files later and report a reasonable > error message. > --- > gcc/lto/lto-common.cc | 14 ++++++++------ > 1 file changed, 8 insertions(+), 6 deletions(-) > > diff --git a/gcc/lto/lto-common.cc b/gcc/lto/lto-common.cc > index 4d6686b0b99..fbcd4742ee4 100644 > --- a/gcc/lto/lto-common.cc > +++ b/gcc/lto/lto-common.cc > @@ -2704,6 +2704,7 @@ read_cgraph_and_symbols (unsigned nfiles, const char > **fnames) > { > unsigned int i, last_file_ix; > FILE *resolution; > + unsigned resolution_objects = 0; > int count = 0; > struct lto_file_decl_data **decl_data; > symtab_node *snode; > @@ -2726,18 +2727,14 @@ read_cgraph_and_symbols (unsigned nfiles, const char > **fnames) > if (resolution_file_name) > { > int t; > - unsigned num_objects; > > resolution = fopen (resolution_file_name, "r"); > if (resolution == NULL) > fatal_error (input_location, > "could not open symbol resolution file: %m"); > > - t = fscanf (resolution, "%u", &num_objects); > + t = fscanf (resolution, "%u", &resolution_objects); > gcc_assert (t == 1); > - > - /* True, since the plugin splits the archives. */ > - gcc_assert (num_objects == nfiles); > } > symtab->state = LTO_STREAMING; > > @@ -2806,7 +2803,12 @@ read_cgraph_and_symbols (unsigned nfiles, const char > **fnames) > lto_register_canonical_types_for_odr_types (); > > if (resolution_file_name) > - fclose (resolution); > + { > + /* True, since the plugin splits the archives. */ > + if (!seen_error ()) ... checking for seen_error () unnecessary. > + gcc_assert (resolution_objects == nfiles); > + fclose (resolution); > + } > > /* Show the LTO report before launching LTRANS. */ > if (flag_lto_report || (flag_wpa && flag_lto_report_wpa)) > -- > 2.34.1 >