"Andrew Wiley" <wiley.andre...@gmail.com> wrote in message news:mailman.1941.1311837499.14074.digitalmars-d-le...@puremagic.com... > On Wed, Jul 27, 2011 at 11:46 PM, Jacob Carlborg <d...@me.com> wrote: > >> On 2011-07-28 03:23, Andrew Wiley wrote: >> >>> On Wed, Jul 27, 2011 at 2:10 AM, Jacob Carlborg <d...@me.com >>> <mailto:d...@me.com>> wrote: >>> >>> Cannot be implemented in GDC. The driver/compiler/assembler/__** >>> linker >>> structure doesn't allow it. >>> >>> >>> Why is that? >>> >>> >>> Well, the short version is that GDC (the executable) is not a compiler. >>> GDC is a driver that runs cc1d to compile your code, runs as (at least I >>> think that's the name offhand) to assemble it, then runs ld to link it. >>> As far as I know, there's no way for cc1d to communicate the contents of >>> pragmas like this back to the driver, which it would have to do if you >>> wanted the driver to include the library in the arguments to the linker. >>> It's possible that I just don't know the infrastructure well enough, but >>> I think this is one of the reasons the GCC guys refused to implement >>> #pragma in C/C++ as well. >>> >> >> I don't really get this. GDC is a D front end for the GCC back end. So >> the >> the front end should handle all language specific things, like the >> pragma. >> Then I assume the front end can pass options to the linker. Is this not >> the >> case? > > > In traditional terms, cc1d is a compiler, including both the frontend and > the backend. It takes parameters and spits out assembly. That's it. > The GDC executable is the driver responsible for running cc1d to compile > the > source to assembly, as to assemble the object files, and ld to link it all > into a binary. cc1d cannot pass options to the linker because it does not > invoke the linker. >
cc1d can't just write a "hey_gdc_pass_these_options_to_the_linker.txt" file?