darcs patch: Fix -split-obj on Mac OS via -fasm

Clemens Fruhwirth clemens at endorphin.org
Fri Jul 6 09:57:44 EDT 2007


Fri Jul  6 13:24:49 CEST 2007  Clemens Fruhwirth <clemens at endorphin.org>
  * Fix -split-obj on Mac OS via -fasm
  
  The problem of the splitter was that it re-emitted section directives
  for every dynamic label found. The following was torn apart
  
  .symbol_stubs
  .indirect <symbol>
  L_<symbol>$stub: 
  	jmp *...
  L_<symbol>$stub_binder:
  	..somebinding code..
  
  into
  
  .symbol_stubs
  .indirect_symbol <symbol>
  L_<symbol>$stub: 
  	jmp *...
  .symbol_stubs <--- NEW
  L_<symbol>$stub_binder:
  	..somebinding code..
  
  This is incorrect as the Mac OS assembler enforces that every new code
  section that goes into .symbol_stubs is associated with the linker
  directive .indirect_symbol. This sanity check is obviously violated
  when we reemit .symbol_stub in the splitter. The solution is to ignore
  everything that ends with $stub_binder as new label, and chuck it into
  a single label for $stub.
  
  Also the splitter has to recognize .section __DATA... for the lazy_ptr
  indirection symbol. Adds a reminder to PositionIndependentCode.hs to
  take care of the splitter when the code generation is changed.
  
  This should not affect -fvia-c as the code generated by the C compiler
  is entirely different.
  
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: text/x-darcs-patch
Size: 65525 bytes
Desc: A darcs patch for your repository!
Url : http://www.haskell.org/pipermail/cvs-ghc/attachments/20070706/97acc458/attachment-0001.bin


More information about the Cvs-ghc mailing list