1. 16 Jan, 2005 1 commit
  2. 05 Jan, 2005 1 commit
  3. 08 Dec, 2004 2 commits
  4. 29 Nov, 2004 2 commits
  5. 26 Nov, 2004 1 commit
    • simonmar's avatar
      [project @ 2004-11-26 16:19:45 by simonmar] · ef5b4b14
      simonmar authored
      Further integration with the new package story.  GHC now supports
      pretty much everything in the package proposal.
      
        - GHC now works in terms of PackageIds (<pkg>-<version>) rather than
          just package names.  You can still specify package names without
          versions on the command line, as long as the name is unambiguous.
      
        - GHC understands hidden/exposed modules in a package, and will refuse
          to import a hidden module.  Also, the hidden/eposed status of packages
          is taken into account.
      
        - I had to remove the old package syntax from ghc-pkg, backwards
          compatibility isn't really practical.
      
        - All the package.conf.in files have been rewritten in the new syntax,
          and contain a complete list of modules in the package.  I've set all
          the versions to 1.0 for now - please check your package(s) and fix the
          version number & other info appropriately.
      
        - New options:
      
      	-hide-package P    sets the expose flag on package P to False
      	-ignore-package P  unregisters P for this compilation
      
      	For comparison, -package P sets the expose flag on package P
              to True, and also causes P to be linked in eagerly.
      
              -package-name is no longer officially supported.  Unofficially, it's
      	a synonym for -ignore-package, which has more or less the same effect
      	as -package-name used to.
      
      	Note that a package may be hidden and yet still be linked into
      	the program, by virtue of being a dependency of some other package.
      	To completely remove a package from the compiler's internal database,
              use -ignore-package.
      
      	The compiler will complain if any two packages in the
              transitive closure of exposed packages contain the same
              module.
      
      	You *must* use -ignore-package P when compiling modules for
              package P, if package P (or an older version of P) is already
              registered.  The compiler will helpfully complain if you don't.
      	The fptools build system does this.
      
         - Note: the Cabal library won't work yet.  It still thinks GHC uses
           the old package config syntax.
      
      Internal changes/cleanups:
      
         - The ModuleName type has gone away.  Modules are now just (a
           newtype of) FastStrings, and don't contain any package information.
           All the package-related knowledge is in DynFlags, which is passed
           down to where it is needed.
      
         - DynFlags manipulation has been cleaned up somewhat: there are no
           global variables holding DynFlags any more, instead the DynFlags
           are passed around properly.
      
         - There are a few less global variables in GHC.  Lots more are
           scheduled for removal.
      
         - -i is now a dynamic flag, as are all the package-related flags (but
           using them in {-# OPTIONS #-} is Officially Not Recommended).
      
         - make -j now appears to work under fptools/libraries/.  Probably
           wouldn't take much to get it working for a whole build.
      ef5b4b14
  6. 10 Nov, 2004 1 commit
  7. 26 Oct, 2004 1 commit
  8. 20 Oct, 2004 1 commit
  9. 18 Oct, 2004 2 commits
  10. 07 Oct, 2004 1 commit
    • wolfgang's avatar
      [project @ 2004-10-07 15:54:03 by wolfgang] · b4d045ae
      wolfgang authored
      Position Independent Code and Dynamic Linking Support, Part 1
      
      This commit allows generation of position independent code (PIC) that fully supports dynamic linking on Mac OS X and PowerPC Linux.
      Other platforms are not yet supported, and there is no support for actually linking or using dynamic libraries - so if you use the -fPIC or -dynamic code generation flags, you have to type your (platform-specific) linker command lines yourself.
      
      
      nativeGen/PositionIndependentCode.hs:
      New file. Look here for some more comments on how this works.
      
      cmm/CLabel.hs:
      Add support for DynamicLinkerLabels and PIC base labels - for use inside the NCG.
      needsCDecl: Case alternative labels now need C decls, see the codeGen/CgInfoTbls.hs below for details
      
      cmm/Cmm.hs:
      Add CmmPicBaseReg (used in NCG),
      and CmmLabelDiffOff (used in NCG and for offsets in info tables)
      
      cmm/CmmParse.y:
      support offsets in info tables
      
      cmm/PprC.hs:
      support CmmLabelDiffOff
      Case alternative labels now need C decls (see the codeGen/CgInfoTbls.hs for details), so we need to pprDataExterns for info tables.
      
      cmm/PprCmm.hs:
      support CmmLabelDiffOff
      
      codeGen/CgInfoTbls.hs:
      no longer store absolute addresses in info tables, instead, we store offsets.
      Also, for vectored return points, emit the alternatives _after_ the vector table. This is to work around a limitation in Apple's as, which refuses to handle label differences where one label is at the end of a section. Emitting alternatives after vector info tables makes sure this never happens in GHC generated code. Case alternatives now require prototypes in hc code, though (see changes in PprC.hs, CLabel.hs).
      
      main/CmdLineOpts.lhs:
      Add a new option, -fPIC.
      
      main/DriverFlags.hs:
      Pass the correct options for PIC to gcc, depending on the platform. Only for powerpc for now.
      
      nativeGen/AsmCodeGen.hs:
      Many changes...
      Mac OS X-specific management of import stubs is no longer, it's now part of a general mechanism to handle such things for all platforms that need it (Darwin [both ppc and x86], Linux on ppc, and some platforms we don't support).
      Move cmmToCmm into its own monad which can accumulate a list of imported symbols. Make it call cmmMakeDynamicReference at the right places.
      
      nativeGen/MachCodeGen.hs:
      nativeGen/MachInstrs.hs:
      nativeGen/MachRegs.lhs:
      nativeGen/PprMach.hs:
      nativeGen/RegAllocInfo.hs:
      Too many changes to enumerate here, PowerPC specific.
      
      nativeGen/NCGMonad.hs:
      NatM still tracks imported symbols, as more labels can be created during code generation (float literals, jump tables; on some platforms all data access has to go through the dynamic linking mechanism).
      
      driver/mangler/ghc-asm.lprl:
      Mangle absolute addresses in info tables to offsets.
      Correctly pass through GCC-generated PIC for Mac OS X and powerpc linux.
      
      includes/Cmm.h:
      includes/InfoTables.h:
      includes/Storage.h:
      includes/mkDerivedConstants.c:
      rts/GC.c:
      rts/GCCompact.c:
      rts/HeapStackCheck.cmm:
      rts/Printer.c:
      rts/RetainerProfile.c:
      rts/Sanity.c:
      Adapt to the fact that info tables now contain offsets.
      
      rts/Linker.c:
      Mac-specific: change machoInitSymbolsWithoutUnderscore to support PIC.
      b4d045ae
  11. 28 Sep, 2004 1 commit
  12. 15 Sep, 2004 1 commit
    • wolfgang's avatar
      [project @ 2004-09-15 02:47:03 by wolfgang] · f19e3063
      wolfgang authored
      Accept '#pragma' lines in the cmm parser.
      This is necessary because Apple's version of GNU cpp 3.3 leaves #pragma
      lines in it's output, which cause the build to fail on Mac OS X with
      GCC >= 3.3
      f19e3063
  13. 10 Sep, 2004 3 commits
    • panne's avatar
      [project @ 2004-09-10 18:54:21 by panne] · b2746a8e
      panne authored
      Unbreak previous commit. Is QA on holiday? :-)
      b2746a8e
    • simonmar's avatar
      [project @ 2004-09-10 14:54:48 by simonmar] · 2cbd1fee
      simonmar authored
      RtsShouldNeverHappenCode never happens, now.
      2cbd1fee
    • simonmar's avatar
      [project @ 2004-09-10 14:53:44 by simonmar] · 6458c2c5
      simonmar authored
      Fix problem that shows up when building stage2 on Windows: slots of a
      vector table that can never happen are normally filled with the
      RtsShouldNeverHappen label, which currently prints as "0".  On systems
      with leading underscores on labels, such as Windows, this turns into
      "_0" which is reported as an undefined symbol.
      
      Having a label print as "0" is a real hack, so the solution is to do
      it properly.  This commit does just that.
      6458c2c5
  14. 26 Aug, 2004 1 commit
  15. 25 Aug, 2004 1 commit
  16. 23 Aug, 2004 1 commit
  17. 20 Aug, 2004 2 commits
    • simonmar's avatar
      [project @ 2004-08-20 12:21:03 by simonmar] · 557d889d
      simonmar authored
      Simplify the "impossible branch" handling, and fix a bug in the
      process.  CmmSwitch encodes the possibility of having impossible
      branches (the destinations are Maybe BlockId rather than just BlockId)
      so we don't need to encode impossible branches as dummy blocks
      containing a jump to an impossible location (currently 0).
      
      However, PprC and PprCmm weren't set up to cope with Nothings in a
      CmmSwitch, so this commit fixes that too.
      557d889d
    • simonmar's avatar
      [project @ 2004-08-20 11:20:16 by simonmar] · fa93dff5
      simonmar authored
      Give literal string labels a _str suffix, to make it less likely that
      they'll clash with a symbol in scope in a C file.
      fa93dff5
  18. 18 Aug, 2004 1 commit
  19. 16 Aug, 2004 1 commit
  20. 13 Aug, 2004 1 commit