1. 07 Nov, 2015 3 commits
    • johnleo's avatar
      fix #10734 by adding braces to pretty-printing of let inside do · be885857
      johnleo authored and eir@cis.upenn.edu's avatar eir@cis.upenn.edu committed
      Test Plan: validate
      Reviewers: bgamari, austin, goldfire
      Reviewed By: goldfire
      Subscribers: thomie
      Differential Revision: https://phabricator.haskell.org/D1448
      GHC Trac Issues: #10734
    • Tamar Christina's avatar
      Allow the GHCi Linker to resolve related dependencies when loading DLLs · 6e6438e1
      Tamar Christina authored
      GHCi does not correctly tell the Windows Loader how to handle dependencies to DLL's
      that are not on the standard Windows load path:
      1. The directory from which the application loaded.
      2. The current directory.
      3. The system directory. Use the GetSystemDirectory function to get the path of this directory.
      4. The 16-bit system directory. There is no function that obtains the path of this directory,
         but it is searched.
      5. The Windows directory. Use the GetWindowsDirectory function to get the path of this directory.
      6. The directories that are listed in the PATH environment variable.
         Note that this does not include the per-application path specified by the
         AppPaths registry key. The App Paths key is not used when computing the DLL search path.
      So what this means is given two DLLs `A` and `B` and `B` depending on `A`.
      If we put both DLLs into a new folder bin and then call GHC with:
      `ghc -L$(PWD)/bin -lB`
      the loading will fail as the Windows loader will try to load the dependency of `B` and fail
      since it cannot find `A`.
      *IMPORTANT* this patch drops XP Support.
      The  APIs being used were natively added to Windows 8+ and backported to Windows 7 and Vista
      via a mandatory security patch (in 2011). This means that there is a chance that KB2533623 has
      not been installed on certain machines. For those machines I display a warning and
      temporarily expand the `PATH` to allow it to load.
      This patch will make sure that paths provided by the user with `-L` *and* the folder in which a
      DLL is found are added to the search path. It does so using one of two methods depending upon how
      new of a Windows version we are running on:
      - If the APIs are available it will use `addDllDirectory` and `removeDllDirectory`.
         The order of which these directories are searched is nondeterministic.
      - If the APIs are not available it means that we're running on a pretty old unpatched machine.
        But if it's being used in an environment with no internet access it may be the case.
        So if the APIs are not available we temporarily extend the `PATH` with the directories.
        A warning is also displayed to the user informing them that the linking may fail,
        and if it does, install the needed patch. The `PATH` variable has limitations.
      Test Plan:
      Added two new test T10955 and T10955dyn
      Reviewers: erikd, bgamari, thomie, hvr, austin
      Reviewed By: erikd, thomie
      Subscribers: #ghc_windows_task_force
      Differential Revision: https://phabricator.haskell.org/D1340
      GHC Trac Issues: #10955
    • Simon Marlow's avatar
      Make GHCi & TH work when the compiler is built with -prof · ce1f1607
      Simon Marlow authored
      Amazingly, there were zero changes to the byte code generator and very
      few changes to the interpreter - mainly because we've used good
      abstractions that hide the differences between profiling and
      non-profiling.  So that bit was pleasantly straightforward, but there
      were a pile of other wibbles to get the whole test suite through.
      Note that a compiler built with -prof is now like one built with
      -dynamic, in that to use TH you have to build the code the same way.
      For dynamic, we automatically enable -dynamic-too when TH is required,
      but we don't have anything equivalent for profiling, so you have to
      explicitly use -prof when building code that uses TH with a profiled
      compiler.  For this reason Cabal won't work with TH.  We don't expect
      to ship a profiled compiler, so I think that's OK.
      Test Plan: validate with GhcProfiled=YES in validate.mk
      Reviewers: goldfire, bgamari, rwbarton, austin, hvr, erikd, ezyang
      Reviewed By: ezyang
      Subscribers: thomie
      Differential Revision: https://phabricator.haskell.org/D1407
      GHC Trac Issues: #4837, #545
  2. 06 Nov, 2015 1 commit
    • Joachim Breitner's avatar
      Call Arity: In "e x", the result of "x" is not shared · a58eeb7f
      Joachim Breitner authored
      in contrast to "e (f x)", where CorePrep will turn it into "let y = f x
      in e x". So in
        let f = ...
        in e (f x)
      we know that f is called at most once, but in
        let f = ...
        in e f
      we do not know that.
      Previously Call Arity would assume that in "e x", "x" is evaluated at
      most once. This rarely would make a difference (the argument "x" is
      analized with an incoming arity of 0, so no eta-expansion would be done
      anyways), but of course this should still be fixed.
      This fixes #11064.
      Note the corresponding code dmdTransformThunkDmd in DmdAnal.
  3. 04 Nov, 2015 2 commits
  4. 03 Nov, 2015 6 commits
  5. 02 Nov, 2015 6 commits
  6. 01 Nov, 2015 22 commits
    • Ben Gamari's avatar
      rts: Produce stack trace on fatal error · 9fe5497e
      Ben Gamari authored and Ben Gamari's avatar Ben Gamari committed
      Test Plan: Validate
      Reviewers: austin, simonmar
      Reviewed By: simonmar
      Subscribers: simonmar, thomie, scpmw
      Differential Revision: https://phabricator.haskell.org/D1418
    • Ben Gamari's avatar
      EventLog: Loop fwrite if necessary during flush · f46f32b9
      Ben Gamari authored and Ben Gamari's avatar Ben Gamari committed
      Previously the eventlog flush code would fail if `fwrite` wrote less
      than the requested amount. Like all Unix stream I/O operations, however,
      `fwrite` isn't guaranteed to write the entire buffer. Here we loop as
      long as `fwrite` succeeds in writing anything.
      Fixes #11041.
      Test Plan: Validate with eventlog
      Reviewers: austin, simonmar
      Reviewed By: simonmar
      Subscribers: thomie
      Differential Revision: https://phabricator.haskell.org/D1415
      GHC Trac Issues: #11041
    • Tamar Christina's avatar
      Change sphinx for documentation building on windows to the python3 version · 65f3c4c0
      Tamar Christina authored
      Python 3 seems to have fixed the long standing codepage issue with
      python on Windows. To be able to reliably build the documentation
      we should use the Python 3 version of Sphinx.
      See `https://docs.python.org/dev/whatsnew/3.3.html#codecs` and
      `https://bugs.python.org/issue13216`. Sphinx also supports Python 3.
      Oddly enough `python3-sphinx` is registered as `sphinx-build.exe`
      instead of `sphinx-build3.exe`, so the changes in `configure.ac` can
      be reverted.
      install with `pacman -S mingw-w64-$(uname -m)-python3-sphinx`
      Test Plan: ./validate
      Reviewers: austin, thomie, bgamari
      Reviewed By: bgamari
      Subscribers: erikd
      Differential Revision: https://phabricator.haskell.org/D1417
      GHC Trac Issues: #11021
    • Ömer Sinan Ağacan's avatar
      Minor simplification in unariser pass: · e9bfb3fd
      Ömer Sinan Ağacan authored and Ben Gamari's avatar Ben Gamari committed
      We don't need to update StgCase's AltType, because it's already set
      correctly in `CoreToStg.mkStgAltType`, so we can just remove extra
      argument passing and return values.
      (I think this is a useful refactoring because it makes it clear that we
      don't need to update AltTypes)
      Reviewers: austin, bgamari, simonpj
      Reviewed By: bgamari, simonpj
      Subscribers: simonpj, thomie
      Differential Revision: https://phabricator.haskell.org/D1403
    • Ben Gamari's avatar
      Libdw: Fix symbol naming · 52c6e3d6
      Ben Gamari authored
      RTS convention is to use camel-case.
    • Ben Gamari's avatar
      Dwarf.Constants: Introduce Haddock sections · b8df8583
      Ben Gamari authored
    • Ben Gamari's avatar
      Libdw: Remove special treatment for stg_stop_thread · bb446b26
      Ben Gamari authored
      This is no longer necessary since this symbol can be unwound through
      with its DWARF information.
    • Ben Gamari's avatar
      StgStartup: Setup unwinding for stg_stop_thread · d9f88628
      Ben Gamari authored
      This is a bit ugly as we need to assume the structure of the C stack as
      left by StgRun. Nevertheless, it allows us to unwind all the way back to
      `_start` on my machine.
      Stack trace:
          set_initial_registers (rts/Libdw.c:272.0)
          libdw_get_backtrace (rts/Libdw.c:243.0)
          base_GHCziBase_bindIO1_info (libraries/base/GHC/Base.hs:1085.1)
          base_GHCziBase_thenIO1_info (libraries/base/GHC/Base.hs:1088.1)
          base_GHCziBase_thenIO1_info (libraries/base/GHC/Base.hs:1088.1)
          base_GHCziBase_thenIO1_info (libraries/base/GHC/Base.hs:1088.1)
          base_GHCziBase_thenIO1_info (libraries/base/GHC/Base.hs:1088.1)
          base_GHCziBase_thenIO1_info (libraries/base/GHC/Base.hs:1088.1)
          stg_catch_frame_info (rts/Exception.cmm:370.1)
          stg_stop_thread_info (rts/StgStartup.cmm:42.1)
          scheduleWaitThread (rts/Schedule.c:465.0)
          hs_main (rts/RtsMain.c:65.0)
          __libc_start_main (/tmp/buildd/glibc-2.19/csu/libc-start.c:321.0)
    • Ben Gamari's avatar
      cmm: Expose machine's stack and return address register · 159a1a2b
      Ben Gamari authored
      We will need to use these to setup proper unwinding information for the
      stg_stop_thread closure. This pokes a hole in the STG abstraction,
      exposing the machine's stack pointer register so that we can accomplish
      this. We also expose a dummy return address register, which corresponds
      to the register used to hold the DWARF return address.
      Differential Revision: https://phabricator.haskell.org/D1225
    • Ben Gamari's avatar
      Dwarf.Types: Fix comment style · 76611d75
      Ben Gamari authored
    • Ben Gamari's avatar
      Dwarf: Preserve stack pointer register · 6fb0ba65
      Ben Gamari authored and Ben Gamari's avatar Ben Gamari committed
      Here we add a `same_value $sp` instruction to our default unwinding
      rules to ensure that the implicit `$sp = CFA` rule (which `libdw`
      appears to exhibit on x86_64) doesn't overwrite it (necessary since we
      don't use $sp to track our call stack).
      See Phab Diff D1189 for details on how we arrived at this resolution.
      Reviewers: scpmw, austin, simonmar
      Reviewed By: austin, simonmar
      Subscribers: thomie, simonmar
      Differential Revision: https://phabricator.haskell.org/D1224
    • Herbert Valerio Riedel's avatar
      Update Cabal submodule · 3431ad6f
      Herbert Valerio Riedel authored
      This allows us to remove 4 newly added language pragmas from the T4437
      test-case as they were recently added to Cabal 1.23
    • Ben Gamari's avatar
      DynFlags: -freverse-errors should be defFlag · 677d7687
      Ben Gamari authored
      This flag works under both GHC and GHCi, as pointed out on D1367. Thanks
      to @thomie for pointing this out.
    • Simon Marlow's avatar
      keepCAFsForGHCi was broken · 5a481803
      Simon Marlow authored and Ben Gamari's avatar Ben Gamari committed
      Buggy Makefile code meant it was always included, instead of being
      included only for the dyn ways.
      Test Plan: validate
      Reviewers: hvr, austin, bgamari
      Reviewed By: bgamari
      Subscribers: thomie
      Differential Revision: https://phabricator.haskell.org/D1400
    • Alan Zimmerman's avatar
      ApiAnnotations: BooleanFormula is not properly Located · f16827f8
      Alan Zimmerman authored and Ben Gamari's avatar Ben Gamari committed
      At the moment BooleanFormula is defined as
        data BooleanFormula a = Var a | And [BooleanFormula a]
                              | Or [BooleanFormula a]
             deriving (Eq, Data, Typeable, Functor, Foldable, Traversable)
      An API Annotation can only be attached to an item of the form Located a.
      Replace this with a properly Located version, and attach the appropriate
      API Annotations to it
      Updates haddock submodule.
      Test Plan: ./validate
      Reviewers: austin, bgamari
      Reviewed By: bgamari
      Subscribers: thomie, mpickering
      Differential Revision: https://phabricator.haskell.org/D1384
      GHC Trac Issues: #11017
    • Herbert Valerio Riedel's avatar
      Bump ghc-prim version to (closes #11043) · 84bf1eba
      Herbert Valerio Riedel authored
      This also needs to update the primitive/vector submodules in order to
      relax upper bounds on ghc-prim.
      Like in f8ba4b55, a mass-rewrite in testsuite/ via
        sed -i s,ghc-prim-,ghc-prim-,g $(git grep -Fl 'ghc-prim-')
      was performed.
    • Herbert Valerio Riedel's avatar
      ghc-prim: add API delta as changelog (re #11043) · 4b8b9347
      Herbert Valerio Riedel authored
      [skip ci]
    • Herbert Valerio Riedel's avatar
      Bump `base` version to (closes #11026) · f8ba4b55
      Herbert Valerio Riedel authored
      This also relaxes a few upper bounds on base in the ghc.git repo;
      This required a mass-rewrite in testsuite/
        sed -i s,base-,base-,g $(git grep -Fl 'base-')
      because it turns out the testsuite is still sensitive to package version
    • Herbert Valerio Riedel's avatar
      Update hoopl submodule · 32f92a33
      Herbert Valerio Riedel authored
      This is needed to prepare for #11026 as this update
      relaxes the upper bounds on `base` to allow for `base-`
    • Herbert Valerio Riedel's avatar
      Update unix submodule · 3238ef7f
      Herbert Valerio Riedel authored
      This is needed to prepare for #11026 as this update
      relaxes the upper bounds on `base` to allow for `base-`
    • Herbert Valerio Riedel's avatar
      Update process submodule · de8443c1
      Herbert Valerio Riedel authored
      This is needed to prepare for #11026 as this update
      relaxes the upper bounds on `base` to allow for `base-`
      This also needs to relax a few upper bounds on process in some cabal files
      (there will be another process submodule update soon, as a major
      version bump of process' version is still pending)
    • Herbert Valerio Riedel's avatar
      Update filepath submodule · 12abc773
      Herbert Valerio Riedel authored
      This is needed to prepare for #11026 as this update
      relaxes the upper bounds on `base` to allow for `base-`