specs question.

IainS developer@sandoe-acoustics.co.uk
Tue Apr 13 08:55:00 GMT 2010


On 13 Apr 2010, at 00:22, Ian Lance Taylor wrote:
>> if you put "-lm" on the c/l dsymutil doesn't get called.
>
> Note that in the specs language the %{.XXX: ...} is matched against
> the filename passed to the gcc driver.  It doesn't know the source
> language of a .o file.  So if you are linking, and passing .o files,
> then this approach won't work.

(I saw your post about java .. I wasn't grepping the right things .. )

Since we're tagged onto the LINK_COMMAND_SPEC - this will get  
evaluated whenever that does.
... (not 100% sure when that is - when the driver is invoked or when  
the collect phase is invoked.. ).
.. also in_files and out_files can exhibit gotchas (e.g. anything  
beginning -l isn't eligible for treatments like %<lxx  I found recently)

---

It clearly depends on something no-obvious.

gcc hello.c  -g -o hc  => dsymutils gets run  (not expected from the  
syntax, assuming that sources are irrelevant)

gcc hello.o -g -o hc  => no dsymutils (expected from the absence of  
'.o' in the list)

gcc hello.c -g -o hc -lm => no dsymutils... (not at all expected ... )

adding .for to the list does not result in dsymutils getting run ..   
(expected by similarity, but not by logic)

removing the whole of the bracketed list -  results in all of those  
cases working.

I think the right local solution is to remove the expression (I'll run  
that by Mike Stump)...

I'm pursuing this in case there's a latent bug that should be reported.
cheers,
Iain




More information about the Gcc mailing list