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