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.

Reply via email to