1. 14 May, 2011 1 commit
  2. 13 May, 2011 1 commit
    • Duncan Coutts's avatar
      Make the GHCi linker handle partially stripped object files (#5004) · cfbf0eb1
      Duncan Coutts authored
      When you use 'strip --strip-unneeded' on a ELF format .o or .a file, if
      the object file has no global/exported symbols then 'strip' ends up
      removing the symbol table entirely. Previously the GHCi linker assumed
      there would always be exactly one symbol table and exactly one string
      table. In fact, in ELF object files there is no such limitation, instead
      each section points to the other sections it needs, in particular
      relocation sections have a link to the symbol table section they use and
      symbol table sections have a link to the corresponding string table.
      So instead of assuming there will always be a global symbol and string
      table, all we have to do is validate and follow these links. Then, when
      we encounter an empty object file that has no symbols then we handle it
      correctly, because since it's empty we never process any relocations and
      so never have to follow any links to non-existant symbol tables.
      
      Also, in the case where an object is fully stripped, we can now detect
      this more reliably and emit a more helpful error message, e.g:
      
      libHSghc-7.1.20110509.a(DsMeta.o): relocation section #2 has no symbol table
      This object file has probably been fully striped. Such files cannot be linked.
      cfbf0eb1
  3. 20 Apr, 2011 2 commits
  4. 12 Apr, 2011 1 commit
  5. 11 Apr, 2011 1 commit
  6. 09 Apr, 2011 1 commit
  7. 08 Apr, 2011 1 commit
  8. 03 Apr, 2011 1 commit
    • Ian Lynagh's avatar
      Take strlen of archive filenames. · be895313
      Ian Lynagh authored
      On OS X at least, the filename size is the size of the filename
      field. The actual filename may be shorter.
      
      Also a number of code style improvements and debug prints.
      
      This is part of the patch from #5062, from Greg Wright.
      be895313
  9. 29 Mar, 2011 1 commit
  10. 14 Feb, 2011 1 commit
    • gwright@antiope.com's avatar
      Fix #4867 (updated; corrects address calculation) · 796a3b36
      gwright@antiope.com authored
      This is a corrected fix for ticket #4867, "ghci displays negative floats
      incorrectly".  The previous patch sometimes gave incorrect offset to values
      in the __const section of the __TEXT segment.  The new patch arranges a zero
      fixup for non-external, not-global offset table signed relocations.  This
      is apparently what is required, though documentation on this point is scarce.
      
      With this change Doubles are negated properly, because the sign bit mask
      is loaded from the correct offset.  This was tested both on HEAD and the 7.0
      branch.
      796a3b36
  11. 09 Feb, 2011 1 commit
    • gwright@antiope.com's avatar
      Fix #4867, ghci displays negative floats incorrectly · a914a224
      gwright@antiope.com authored
      This patch fixes the erroneous relocations that caused
      the bug in ticket #4867.  External addresses and global
      offset table entries were relocated correctly, but all other
      relocations were incorrectly calculated.  This caused, for
      example, bad references to constants stored in the __const
      section of the __TEXT segment.
      
      This bug only affected OS X on 64-bit platforms.
      a914a224
  12. 24 Jan, 2011 1 commit
  13. 18 Jan, 2011 1 commit
  14. 21 Dec, 2010 1 commit
    • Simon Marlow's avatar
      Count allocations more accurately · db0c13a4
      Simon Marlow authored
      The allocation stats (+RTS -s etc.) used to count the slop at the end
      of each nursery block (except the last) as allocated space, now we
      count the allocated words accurately.  This should make allocation
      figures more predictable, too.
      
      This has the side effect of reducing the apparent allocations by a
      small amount (~1%), so remember to take this into account when looking
      at nofib results.
      db0c13a4
  15. 17 Dec, 2010 2 commits
  16. 10 Dec, 2010 1 commit
  17. 08 Dec, 2010 1 commit
  18. 30 Nov, 2010 4 commits
  19. 27 Nov, 2010 4 commits
  20. 29 Oct, 2010 2 commits
  21. 28 Oct, 2010 1 commit
  22. 26 Oct, 2010 1 commit
    • gwright@antiope.com's avatar
      Fix for #4318 (Linker failure on OS X 10.6) · 73dd6e84
      gwright@antiope.com authored
      This patch fixes two bugs in the Mach-O linker and adds debugging statements
      to the same. The bugs:
      
      1. The test for symbol->n_value == 0 is removed and replaced by a test of the
      flag field.  Checking the n_value field was just wrong; the value of a
      symbol should only be examined when allocating space for a common block,
      in which case the n_value field gives the size of the block.  This bug
      led to an infrequently occuring linker crash.
      
      I believe the behavior of the linker now agrees with the intent of the
      sketchy Apple documentation.
      
      2. Jump islands were being filled with garbage instead of the the location
      of the referenced symbol. This caused relocations of type X86_64_RELOC_GOT and
      X86_64_RELOC_GOT_LOAD to eventually lead to crashes.  The fix is simply to
      look up the symbol.
      
      Enough debug statements have been added to follow the operation of the Mach-O
      linker while it loads modules.  They are not yet as informative and well
      organized as for ELF.  Improving the debug statements will require some
      reorganization of the code -- the Mach-O linker seems basically sound, but
      is crying out for some refactoring and commenting.
          
      73dd6e84
  23. 27 Sep, 2010 1 commit
  24. 24 Sep, 2010 1 commit
  25. 21 Sep, 2010 4 commits
  26. 20 Sep, 2010 1 commit
  27. 14 Sep, 2010 1 commit
  28. 13 Sep, 2010 1 commit