On Dec 12, 2006, at 4:15 AM, Simon Marlow wrote:

Peter Tanski wrote:
The good news is the problem is apparently easy to fix and the result
should be compatible with MS tools.

You haven't allayed my fears. If a Yasm-generated object file has a special .reloc/.stab section to handle complex relocations, and the GNU linker understands this special section, won't the MS linker choke on it? Or are complex relocations done in the same way by the MS tools too?

The MS linker shouldn't have a problem as long as the format of the Yasm-generated file holds to the MS PE-COFF Spec. That is, the MS linker can handle .stab and .stabstr sections fine; complex relocation (.reloc) sections are removed from executable "image" files and retained for other object files. Yasm does follow the Spec., except gas seems to put the .comment section from the input (assembler) file, which Yasm keeps, into an ".rdata$zzz" section so it will be (1) used by the linker and (2) not put into the executable. The bad executable produced by the Yasm-object file (with the .comment section) becomes a good executable as soon as I "strip --remove-section=.comment" on bad file after linking. If I strip the .comment section before linking 'ld' will encounter symbol errors, so it is necessary for linking--although I still haven't tested this with MS 'link' because I have been too lazy to sort through all the dependencies for a GHC-compiled file. I should write a simple asm program with complex relocations so I don't have to work through all that...

Cheers,
Pete

_______________________________________________
Cvs-ghc mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to