https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77576
Bug ID: 77576
Summary: gcc-ar doesn't work if all options are read from file
Product: gcc
Version: 6.2.0
Status: UNCONFIRMED
Severity: major
Priority: P3
Component: lto
Assignee: unassigned at gcc dot gnu.org
Reporter: likan_999.student at sina dot com
Target Milestone: ---
For some build tools, they use @file intensively, i.e. putting command line
arguments into a file, and run
gcc-ar @some-file
This will break, basically due to these code snippet in gcc/gcc-ar.c:
if (is_ar && av[1] && av[1][0] != '-')
av[1] = concat ("-", av[1], NULL);
This basically says, if the first argument doesn't start with '-', prepend one
to it. So the command passes to underlying at is
ar --plugin=... -@some-file
and obviously ar doesn't recognize -@ as an option.
A quick and dirty fix would be changing the condition to
if (is_ar && av[1] && av[1][0] != '-' && av[1][0] != '@')
however, a better change would inspect the file content and prepend '-' to the
first argument. But that involves some bigger change.
Can anyone fix this?
Thanks.