1. 06 Mar, 2019 1 commit
    • Ben Gamari's avatar
      Rip out object splitting · 37f257af
      Ben Gamari authored
      The splitter is an evil Perl script that processes assembler code.
      Its job can be done better by the linker's --gc-sections flag. GHC
      passes this flag to the linker whenever -split-sections is passed on
      the command line.
      
      This is based on @DemiMarie's D2768.
      
      Fixes Trac #11315
      Fixes Trac #9832
      Fixes Trac #8964
      Fixes Trac #8685
      Fixes Trac #8629
      37f257af
  2. 13 Feb, 2019 1 commit
  3. 23 Nov, 2018 1 commit
  4. 03 Oct, 2018 1 commit
  5. 19 Mar, 2018 1 commit
  6. 15 Jan, 2018 1 commit
    • John Ericson's avatar
      configure: Various cleanups · 8de89305
      John Ericson authored
      Substitute RanlibCmd for consistency, and other configure cleanups that
      should have no effect
      
      The other commands are so substituted. Maybe we don't need ranlib at
      all, and the configure snippet can be removed all together, but that
      can always be done later.
      
      Reviewers: bgamari, hvr, angerman
      
      Reviewed By: bgamari, angerman
      
      Subscribers: rwbarton, thomie, erikd, carter
      
      Differential Revision: https://phabricator.haskell.org/D4286
      8de89305
  7. 26 Sep, 2017 1 commit
    • Ben Gamari's avatar
      configure: Don't hard-code strip tool · 65f7d87a
      Ben Gamari authored
      For reasons that I don't entirely understand we didn't previously detect
      `strip` using autoconf. This naturally broke during cross-compilation.
      How did this ever work? I have no idea.
      
      Test Plan: Try cross-compiling
      
      Reviewers: austin, hvr, angerman
      
      Subscribers: rwbarton, thomie, erikd
      
      Differential Revision: https://phabricator.haskell.org/D4008
      65f7d87a
  8. 05 Sep, 2017 1 commit
  9. 23 Jul, 2017 2 commits
    • Ben Gamari's avatar
      Preserve HaskellHaveRTSLinker in bindist · 0ae0f466
      Ben Gamari authored
      Otherwise you end up with ("target has RTS linker","@HaskellHaveRTSLinker@") in
      the installed settings file.
      0ae0f466
    • Ben Gamari's avatar
      distrib/configure: Carry FFI include/lib paths from source distribution · 98ab12ad
      Ben Gamari authored
      `FFILibDir` and `FFIIncludeDir` both show up in the `rts` library's
      package registration file.  We therefore must define them or else we'll
      end up with spurious `@FFILibDir@` strings in the package registration.
      
      In principle I think we could also take these as arguments to the
      bindist configure but this seems simpler and I don't want to verify this
      at the moment.
      
      Test Plan: Build bindist while passing `--with-ffi-libraries=...` to
      source distribution configure then try to install and use bindist.
      
      Reviewers: austin, hvr
      
      Subscribers: rwbarton, thomie, erikd
      
      Differential Revision: https://phabricator.haskell.org/D3774
      98ab12ad
  10. 20 Jul, 2017 1 commit
    • Ben Gamari's avatar
      distrib/configure: Canonicalize triples · 1480080b
      Ben Gamari authored
      Previously we failed to do this, which meant that the bindist's
      configure would fail when passed --target (as you may need to do when
      installing an armv7 bindist on an aarch64 machine, for instance).
      
      Reviewers: hvr, erikd, austin
      
      Reviewed By: hvr
      
      Subscribers: rwbarton, thomie
      
      GHC Trac Issues: #13934
      
      Differential Revision: https://phabricator.haskell.org/D3761
      1480080b
  11. 12 Jul, 2017 1 commit
    • Ben Gamari's avatar
      distrib/configure: Fail if we can't detect machine's word size · 60ec8f74
      Ben Gamari authored
      This is a sure sign that something is terribly wrong.
      
      We also now verify that the word size that the binary distribution
      expects matches the word size produced by the local target toolchain.
      
      Finally we rename WordSize to TargetWordSize, since non-host/target
      qualified quantities are terribly confusing.
      
      Reviewers: austin, hvr, Phyx
      
      Reviewed By: Phyx
      
      Subscribers: Phyx, rwbarton, thomie, erikd
      
      Differential Revision: https://phabricator.haskell.org/D3711
      60ec8f74
  12. 05 Jul, 2017 1 commit
  13. 03 Jul, 2017 1 commit
    • Ben Gamari's avatar
      Add -fuse-ld flag to CFLAGS during configure · 960918bd
      Ben Gamari authored
      The decisions made by configure later in the script may depend upon the
      linker used. Consequently, it is important that configure uses the same
      linker as GHC will eventually use.
      
      For instance, on Nix I found that a program requiring `libpthread` would
      link fine with only `-lrt` when linked with BFD ld. However, with gold
      we needed to explicitly provide the `-lpthread` dependency. Presumably
      the former would happily loaded any `NEEDED` libraries whereas the
      latter wants them explicitly given. Regardless, since `configure`'s
      `NEED_PTHREAD_LIB` check didn't use the `-fuse-ld` flag that GHC would
      eventually use, we inferred the wrong value, resulting in link errors
      later in the build.
      
      Test Plan: Validate
      
      Reviewers: austin, hvr
      
      Subscribers: rwbarton, thomie, erikd
      
      GHC Trac Issues: #13541
      
      Differential Revision: https://phabricator.haskell.org/D3694
      960918bd
  14. 29 Jun, 2017 1 commit
    • Ben Gamari's avatar
      configure: Coerce gcc to use $LD instead of system default · 625143f4
      Ben Gamari authored
      The configure script will now try to coerce gcc to use the linker
      pointed to by $LD instead of the system default (typically bfd ld).
      Moreover, we now check for `ld.gold` and `ld.lld` before trying `ld`.
      
      The previous behavior can be reverted to by using the new
      --disable-ld-override flag.
      
      On my machine gold seems to trigger an apparent infelicity in
      constructor behavior, causing T5435_asm to fail. I've opened #13883 to
      record this issue and have accepted the questionable constructor
      ordering for the time being.
      
      Test Plan: Validate with `config_args='--enable-ld-override'`
      
      Reviewers: austin, hvr, simonmar
      
      Subscribers: duog, nh2, rwbarton, thomie, erikd, snowleopard
      
      GHC Trac Issues: #13541, #13810, #13883
      
      Differential Revision: https://phabricator.haskell.org/D3449
      625143f4
  15. 11 May, 2017 1 commit
    • Moritz Angermann's avatar
      Do not hardcode the specific linker to use · 5ddb307e
      Moritz Angermann authored
      This should be handled appropriately by a wrapper script around the compiler,
      if one wants to insist on the specific linker to be used.  Otherwise this
      breaks if the used compiler fails to understand this directive.
      
      I believe that using a specific linker should be part of the compilers
      toolchain, we delegate to and not hardcoded here in ghc.
      
      Reviewers: dfeuer, erikd, hvr, austin, rwbarton, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: snowleopard, davean, dfeuer, thomie, erikd
      
      Differential Revision: https://phabricator.haskell.org/D3351
      5ddb307e
  16. 25 Apr, 2017 1 commit
    • Ben Gamari's avatar
      configure: Kill off FP_ARG_WITH_* · 9373994a
      Ben Gamari authored
      This replaces the --with-* configure flags with the usual autoconf
      environment variables, as suggested by #13583.
      
      Test Plan: Configure on various platforms
      
      Reviewers: hvr, trofi, thomie, austin
      
      Reviewed By: trofi
      
      Subscribers: rwbarton, erikd
      
      GHC Trac Issues: #13583
      
      Differential Revision: https://phabricator.haskell.org/D3499
      9373994a
  17. 11 Nov, 2016 2 commits
    • Ben Gamari's avatar
      Pass -no-pie to GCC · d421a7e2
      Ben Gamari authored
      Certain distributions (e.g. Debian and Ubuntu) have enabled PIE be
      default in their GCC packaging. This breaks our abuse of GCC as a linker
      which requires that we pass -Wl,-r, which is incompatible with
      PIE (since the former implies that we are generating a relocatable
      object file and the latter an executable).
      
      This is a second attempt at D2691. This attempt constrasts with D2691 in that
      it preserves the "does gcc support -no-pie" flag in settings, allowing this to
      be reconfigured by `configure` during installation of a binary distribution.
      Thanks for @rwbarton for drawing attention to this issue.
      
      Test Plan: Validate
      
      Reviewers: austin, hvr, erikd
      
      Reviewed By: erikd
      
      Subscribers: thomie, rwbarton, erikd
      
      Differential Revision: https://phabricator.haskell.org/D2693
      
      GHC Trac Issues: #12759
      d421a7e2
    • Ben Gamari's avatar
      Revert "Pass -no-pie to GCC" · 60bb9d1c
      Ben Gamari authored
      This reverts commit bae4a55b.
      
      This will be superceded by D2693.
      60bb9d1c
  18. 10 Nov, 2016 1 commit
    • Ben Gamari's avatar
      Pass -no-pie to GCC · bae4a55b
      Ben Gamari authored
      Certain distributions (e.g. Debian and Ubuntu) have enabled PIE be
      default in their GCC packaging. This breaks our abuse of GCC as a linker
      which requires that we pass -Wl,-r, which is incompatible with
      PIE (since the former implies that we are generating a relocatable
      object file and the latter an executable).
      
      Test Plan: Validate
      
      Reviewers: hvr, austin
      
      Subscribers: rwbarton, thomie, erikd
      
      Differential Revision: https://phabricator.haskell.org/D2691
      
      GHC Trac Issues: #12759
      bae4a55b
  19. 05 Sep, 2016 1 commit
    • Ben Gamari's avatar
      distrib: Fix libdw bindist check · 05b497ec
      Ben Gamari authored
      As reported in #12555 this code was terribly broken. Sadly, Autoconf was
      none-the-wiser. Thanks to @rwbarton for pointing this out.
      
      Test Plan: Test with libdw version newer and older and 0.158
      
      Reviewers: hvr, austin, rwbarton
      
      Reviewed By: rwbarton
      
      Subscribers: thomie, rwbarton, erikd
      
      Differential Revision: https://phabricator.haskell.org/D2510
      
      GHC Trac Issues: #12555
      05b497ec
  20. 14 Jun, 2016 1 commit
  21. 31 May, 2016 1 commit
  22. 16 Apr, 2016 1 commit
    • Herbert Valerio Riedel's avatar
      Rework CC/CC_STAGE0 handling in `configure.ac` · 865602e0
      Herbert Valerio Riedel authored
      Rather than using the non-standard/idiomatic `--with-{gcc,clang}=...`
      scheme use the `CC=...` style scheme.
      
      The basic idea is to have Autoconf's CC/CFLAG/CPPFLAG apply to
      stage{1,2,3}, while having a separate _STAGE0 set of env-vars
      denote the bootstrap-toolchain flags/programs.
      
      This should be simpler, less confusing, and somewhat more in line with
      Autoconf's idioms (allowing us to reuse more of Autoconf rather than
      (re)inventing our own confusing non-standard m4 macros to do stuff that
      Autoconf could almost do already for us)
      
      Morever, expose CC_STAGE0 as a so-called "precious" variable.
      
      So now we can better control which bootstrapping gcc is used
      (by default the one used by the stage0 ghc, unless CC_STAGE0 is
      overriden)
      
      ```
      Some influential environment variables:
        CC_STAGE0   C compiler command (bootstrap)
        CC          C compiler command
        CFLAGS      C compiler flags
        ...
      
      Use these variables to override the choices made by `configure' or to
      help it to find libraries and programs with nonstandard names/locations.
      ```
      
      Test Plan: I've tested that cross-compiling with
      `--target=powerpc-linux-gnu` still works, and tried a few variants of
      settting `CC=` and `CC_STAGE0=`; `./validate` passed as well
      
      Reviewers: erikd, austin, bgamari, simonmar
      
      Reviewed By: simonmar
      
      Subscribers: Phyx, thomie
      
      Differential Revision: https://phabricator.haskell.org/D2078
      865602e0
  23. 15 Apr, 2016 1 commit
  24. 28 Mar, 2016 1 commit
    • Herbert Valerio Riedel's avatar
      Autoconf: detect and set CFLAGS/CPPFLAGS needed for C99 mode · afc48f89
      Herbert Valerio Riedel authored
      This is the first phase of addressing #11757 which aims to make C99
      support a base-line requirement for GHC and clean up the code-base to
      use C99 facilities when sensible.
      
      This patch exploits the logic/heuristic used by `AC_PROG_CC_C99` to
      determine the flags needed in case the C compiler isn't able to compile
      C99 code in its current mode. We can't use `AC_PROG_CC_C99` directly
      though because GHC's build-system expects CC to contain a filename
      without any flags, while `AC_PROG_CC_C99` would e.g. result in
      `CC="gcc -std=gnu99"`. Morever, we support different `CC`s for
      stage0/1/2, so we need a version of `AC_PROG_CC_C99` for which we can
      specify the `CC`/`CFLAGS` variables to operate on. This is what
      `FP_SET_CFLAGS_C99` does.
      
      Note that Clang has been defaulting to C99+ for a long time, while GCC 5
      defaults to C99+ as well. So this has mostly an affect on older GCCs
      versions prior to 5.0 and possibly compilers other than GCC/Clang (which
      are not officially supported for building GHC anyway).
      
      Reviewers: kgardas, erikd, bgamari, austin
      
      Reviewed By: erikd
      
      Differential Revision: https://phabricator.haskell.org/D2045
      afc48f89
  25. 07 Feb, 2016 2 commits
  26. 08 Jan, 2016 1 commit
    • thomie's avatar
      Build system: fix `pwd` issues on Windows · f7b45c31
      thomie authored
      Some parts of the build system require that paths are what msys2 calls
      "mixed style":
        * forwards slashes
        * absolute paths starting with a drive letter followed by a colon
          (e.g. "C:")
      
      The removal of ghc-pwd in 4c56ad36 changed $(TOP) from mixed style to
      unix style, resulting in a broken Windows build for some.
      
      Differential Revision: https://phabricator.haskell.org/D1752
      f7b45c31
  27. 04 Jan, 2016 1 commit
    • thomie's avatar
      Build system: delete ghc-pwd · 4c56ad36
      thomie authored
      On Windows, with msys2, `pwd` works (as can be seen by the use of `pwd`
      that slipped into the validate script), so there is really no need for
      `ghc-pwd` anymore.
      
      Test Plan: try it
      
      Reviewers: austin, bgamari, Phyx
      
      Reviewed By: Phyx
      
      Subscribers: Phyx, erikd
      
      Differential Revision: https://phabricator.haskell.org/D1731
      4c56ad36
  28. 17 Oct, 2015 1 commit
    • Ben Gamari's avatar
      Libdw: Add libdw-based stack unwinding · a6a3dabc
      Ben Gamari authored
      This adds basic support to the RTS for DWARF-assisted unwinding of the
      Haskell and C stack via libdw. This only adds the infrastructure;
      consumers of this functionality will be introduced in future diffs.
      
      Currently we are carrying the initial register collection code in
      Libdw.c but this will eventually make its way upstream to libdw.
      
      Test Plan: See future patches
      
      Reviewers: Tarrasch, scpmw, austin, simonmar
      
      Reviewed By: austin, simonmar
      
      Subscribers: simonmar, thomie, erikd
      
      Differential Revision: https://phabricator.haskell.org/D1196
      
      GHC Trac Issues: #10656
      a6a3dabc
  29. 21 Aug, 2015 1 commit
  30. 10 Apr, 2015 1 commit
  31. 17 Feb, 2015 1 commit
  32. 23 Sep, 2014 1 commit
  33. 17 Aug, 2014 1 commit
    • kgardas's avatar
      workaround Solaris 11 GNU C CPP issue by using GNU C 3.4 as CPP · 2d42564a
      kgardas authored
      Summary:
      Solaris 11 distributed GNU C 4.5.x is configured in a way that its
      CPP is not working well while invoked from GHC. GHC runs it with
      -x assembler-with-cpp and in this particular configuration GNU C CPP
      does not provide any line-markers so GHC's output of errors or warnings
      is confusing since it points to preprocessed file in /tmp and not
      to the original Haskell file. Fortunately old GNU C 3.4.x is still
      provided by the OS and when installed it'll be used automatically
      as GHC CPP which is whole logic of this patch. So although we use modern
      GCC as a C compiler and assembler we use old GCC as a C preprocessor.
      
      Test Plan: validate
      
      Reviewers: austin
      
      Reviewed By: austin
      
      Subscribers: phaskell, simonmar, relrod, ezyang, carter
      
      Differential Revision: https://phabricator.haskell.org/D151
      2d42564a
  34. 02 Jul, 2014 1 commit
  35. 14 May, 2014 1 commit
  36. 30 Apr, 2014 1 commit
  37. 23 Mar, 2014 1 commit