
Simon Marlow
writes: One concern that I have is that the RTS's header file structure (where everything is #include'd via Rts.h) doesn't work very well for this particular use, where we have a group of headers specific to a particular subsystem (e.g. linker/*.h). Consequently, these header files currently lack enclosing `extern "C"` blocks (as well as Begin/EndPrivate blocks). It would be easy to add these, but I was curious to hear if others had any better ideas.
Not sure I understand the problem. Rts.h is for *public* APIs, those that are accessible outside the RTS, but these APIs are mostly *internal*. The public-facing linker API is in includes/rts/Linker.h.
We don't need extern "C" in the internal header files because we're never going to include these from C++ (we do in the external ones though). But we should have BeginPrivate.h/EndPrivate.h in the internal headers.
Ahh, right; silly me. I'll just add the necessary BeginPrivates and hopefully we get this merged after Karel reports back with the results of his testing. Thanks Simon!
Great work! I'm itching to take an Axe to the PE stuff. lots of constants can just go.
Cheers,
- Ben