On 10/04/12 07:17, Paul Smedley wrote:
Hi Jonathan,
On 09/04/12 21:54, Jonathan Wakely wrote:
On 9 April 2012 10:59, Paul Smedley wrote:
Hi All,
As part of updating the OS/2 port of GCC from v4.4.x to v4.6.x I've
hit a
snag where the passing of options to the linker is no longer working.
Previous OS/2 builds of gcc have supported -Zlinker zzzz on the
command line
to pass the option zzzz to the linker.
With previous gcc versions this worked, however with 4.6 I get an error
about gcc not recognising the option.
I added:
-Zlinker
driver separate
Can you simply make it an alias of the existing -Xlinker option?
-Zlinker
Driver Separate Alias(-Xlinker)
I discovered the above shortly after posting last night. I tried it this
morning and it doesn't work :(
Looking at emx.h again - the previous code that worked with GCC <= 4.5
had as part of GCC_DRIVER_HOST_INITIALIZATION:
else if (!strcmp (argv [i], "-Zlinker")) \
{ \
if (i + 1 >= argc) \
fatal_error ("argument to `-Zlinker' is missing");\
arg [0] = "-Xlinker"; \
arg [1] = "-O"; \
arg [2] = "-Xlinker"; \
arg [3] = argv [++i]; \
arg_count = 4; \
} \
So it looks like it was rewriting a gcc option of (for example)
-Zlinker /PM:PM
to -Xlinker -O -Xlinker /PM:PM
whereas alias's Zlinker to -xlinker just results in -Xlinker /PM:PM
which fails :(
FWIW - having the following in LINK_SPEC appears to fix it:
"%{Zlinker*:-O %*}" \