driver: error for nonexistent linker inputs [PR 98943]
We used to check all unknown input files, even when passing them to a compiler. But that caused problems. However, not erroring out on non-existent would-be-linker inputs confuses configure machinery that probes the compiler to see if it accepts various inputs. This restores the access check for things that are thought to be linker input files, when we're not linking. (If we are linking, we presume the linker will error out on its own accord.) PR driver/98943 gcc/ * gcc.c (driver::maybe_run_linker): Check for input file accessibility if not linking. gcc/testsuite/ * c-c++-common/pr98943.c: New.
This commit is contained in:
parent
63538886d1
commit
6606b852bf
11
gcc/gcc.c
11
gcc/gcc.c
@ -9020,8 +9020,15 @@ driver::maybe_run_linker (const char *argv0) const
|
||||
for (i = 0; (int) i < n_infiles; i++)
|
||||
if (explicit_link_files[i]
|
||||
&& !(infiles[i].language && infiles[i].language[0] == '*'))
|
||||
warning (0, "%s: linker input file unused because linking not done",
|
||||
outfiles[i]);
|
||||
{
|
||||
warning (0, "%s: linker input file unused because linking not done",
|
||||
outfiles[i]);
|
||||
if (access (outfiles[i], F_OK) < 0)
|
||||
/* This is can be an indication the user specifed an errorneous
|
||||
separated option value, (or used the wrong prefix for an
|
||||
option). */
|
||||
error ("%s: linker input file not found: %m", outfiles[i]);
|
||||
}
|
||||
}
|
||||
|
||||
/* The end of "main". */
|
||||
|
10
gcc/testsuite/c-c++-common/pr98943.c
Normal file
10
gcc/testsuite/c-c++-common/pr98943.c
Normal file
@ -0,0 +1,10 @@
|
||||
// { dg-do compile }
|
||||
// PR 98943, compiler feature tests can get confused by not linking
|
||||
// { dg-options "NOTAFILE" }
|
||||
|
||||
int main ()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
// { dg-regexp {[^\n:]*: warning: NOTAFILE: linker input file unused because linking not done\n[^\n:]*: error: NOTAFILE: linker input file not found: [^\n]*\n} }
|
Loading…
Reference in New Issue
Block a user