[Bug target/105599] g++ by itself is not producing "fatal error: no input files" for darwin target
cvs-commit at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Jun 15 19:07:36 GMT 2022
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105599
--- Comment #5 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-12 branch has been updated by Iain D Sandoe
<iains@gcc.gnu.org>:
https://gcc.gnu.org/g:58c0bc2b62cdbbe9d9677b448fe52a8c54044276
commit r12-8484-g58c0bc2b62cdbbe9d9677b448fe52a8c54044276
Author: Iain Sandoe <iain@sandoe.co.uk>
Date: Sun May 29 16:14:32 2022 +0100
Darwin: Fix empty g++ command lines [PR105599].
An empty g++ command line should produce a diagnostic that there are no
inputs. The PR is that currently Darwin produces a dignostic about missing
link items instead - this is because (errnoeously), for this driver, we are
creating a link job for empty command lines.
The problem occurs in four stages:
The g++ driver appends -shared-libgcc to the command line.
The Darwin driver_init code in the backend does not see this (it sees an
empty command line).
When the back end driver code driver sees an empty command line, it does
not
add any supplementary flags (e.g. asm-macosx-version-min) - precisely to
avoid anything being claimed as an input_file and therefore triggering a
link
line.
Since we do not have a value for asm-macosx-version-min when processing
the
driver specs, we unconditionally inject 'multiply_defined suppress' which
is
used with shared libgcc (but only intended on very old Darwin). This then
causes the generation of a link job.
The solution, for the present, is to move version-specific link params to
the
LINK_SPEC so that they are only processed when a link job has already been
decided.
Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>
PR target/105599
gcc/ChangeLog:
* config/darwin.h: Move versions-specific handling of
multiply_defined
from SUBTARGET_DRIVER_SELF_SPECS to LINK_SPEC.
(cherry picked from commit 794737976b9a6418eab817f143bb4eb2d0c834d2)
More information about the Gcc-bugs
mailing list