First stab at making ./validate less verbose

Summary:
When we run `./validate`, we are typically given an incredibly large
heap of information, a large majority of which isn't really
necessary. In particular, we don't really care about what `make` is
doing, nor `ghc` itself most of the time.

This reduces some of the output by making `./validate` quietier. By
running:

  $ ./validate --quiet

you'll enable `V=0` in the build, suppressing compiler messages, and
you will suppress `make` commands by running `make` in 'silent
mode'. It also runs the testsuite with `VERBOSE=2` to avoid extra
lines. This alone makes quite a difference for build log sizes.

Furthermore, by making the build logs less verbose, life is easier for
systems like Harbormaster and Travis-CI, which dislike dealing with
logs that are 10k lines or more.

Signed-off-by: Austin Seipp <austin@well-typed.com>

Test Plan: iiam

Reviewers: hvr, nomeata, ezyang

Reviewed By: ezyang

Subscribers: simonmar, ezyang, carter, thomie

Projects: #ghc

Differential Revision: https://phabricator.haskell.org/D298
update cabal submodule to fix build failure on Solaris
rts/includes: Fix up .dir-locals.el

After 23bb90460, these were slightly busted for `c-mode`.

Signed-off-by: Austin Seipp <austin@well-typed.com>
[ci skip] compiler: Kill last remaining tabs in CallArity

Signed-off-by: Austin Seipp <austin@well-typed.com>
[ci skip] Kill tabs in md5.h

Signed-off-by: Austin Seipp <austin@well-typed.com>
[ci skip] Kill unused count_bytes script

Signed-off-by: Austin Seipp <austin@well-typed.com>
Use dropWhileEndLE p instead of reverse . dropWhile p . reverse

Summary: Using `dropWhileEndLE` tends to be faster and easier to read
than the `reverse . dropWhile p . reverse` idiom. This also cleans up
some other, nearby, messes. Fix #9616 (incorrect number formatting
potentially leading to incorrect numbers in output).

Test Plan: Run validate

Reviewers: thomie, rwbarton, nomeata, austin

Reviewed By: nomeata, austin

Subscribers: simonmar, ezyang, carter, thomie

Projects: #ghc

Differential Revision: https://phabricator.haskell.org/D259

GHC Trac Issues: #9623, #9616

Conflicts:
	compiler/basicTypes/OccName.lhs
Basic Python 3 support for testsuite driver (Trac #9184)

Summary:
Most of the changes is adaptation of old Python 2 only code.
My priority was not breaking Python 2, and so I avoided bigger
changes to the driver. In particular, under Python 3 the output
is a str and buffering cannot be disabled.

To test, define PYTHON=python3 in testsuite/mk/boilerplate.mk.

Thanks to aspidites <emarshall85@gmail.com> who provided the initial patch.

Test Plan: validate under 2 and 3

Reviewers: hvr, simonmar, thomie, austin

Reviewed By: thomie, austin

Subscribers: aspidites, thomie, simonmar, ezyang, carter

Differential Revision: https://phabricator.haskell.org/D233

GHC Trac Issues: #9184
Use LinkerInternals.h for exitLinker.

Part of remove HEAP_ALLOCED patch set (#8199)

Summary: Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>

Test Plan: validate

Reviewers: simonmar, austin

Subscribers: simonmar, ezyang, carter, thomie

Differential Revision: https://phabricator.haskell.org/D262

GHC Trac Issues: #8199
Place static closures in their own section.

Summary:
The primary reason for doing this is assisting debuggability:
if static closures are all in the same section, they are
guaranteed to be adjacent to one another.  This will help
later when we add some code that takes section start/end and
uses this to sanity-check the sections.

Part of remove HEAP_ALLOCED patch set (#8199)

Signed-off-by: Edward Z. Yang <ezyang@mit.edu>

Test Plan: validate

Reviewers: simonmar, austin

Subscribers: simonmar, ezyang, carter, thomie

Differential Revision: https://phabricator.haskell.org/D263

GHC Trac Issues: #8199
BC-breaking changes to C-- CLOSURE syntax.

Summary:
Previously, there were two variants of CLOSURE in C--:

    - Top-level CLOSURE(foo_closure, foo, lits...), which defines a new
      static closure and gives it a name, and

    - Array CLOSURE(foo, lits...), which was used for the static char
      and integer arrays.

They used the same name, were confusing, and didn't even generate
the correct internal label representation!  So now, we have two
new forms:

    - Top-level CLOSURE(foo, lits...) which automatically generates
      foo_closure (along with foo_info, which we were doing already)

    - Array ANONYMOUS_CLOSURE(foo, lits...) which doesn't generate
      a foo_closure identifier.

Part of remove HEAP_ALLOCED patch set (#8199)

Signed-off-by: Edward Z. Yang <ezyang@mit.edu>

Test Plan: validate

Reviewers: simonmar, austin

Subscribers: simonmar, ezyang, carter, thomie

Differential Revision: https://phabricator.haskell.org/D264

GHC Trac Issues: #8199
Properly generate info tables for static closures in C--.

Summary:
Previously, we assumed all objects declared in C-- were not-static, even
ones which were CONSTR_NOCAF_STATIC.  This used to be harmless, but now
we need this information to be correct.

Part of remove HEAP_ALLOCED patch set (#8199)

Depends on D264

Signed-off-by: Edward Z. Yang <ezyang@mit.edu>

Test Plan: validate

Reviewers: simonmar, austin

Subscribers: simonmar, ezyang, carter, thomie

Differential Revision: https://phabricator.haskell.org/D265

GHC Trac Issues: #8199
Rename _closure to _static_closure, apply naming consistently.

Summary:
In preparation for indirecting all references to closures,
we rename _closure to _static_closure to ensure any old code
will get an undefined symbol error.  In order to reference
a closure foobar_closure (which is now undefined), you should instead
use STATIC_CLOSURE(foobar).  For convenience, a number of these
old identifiers are macro'd.

Across C-- and C (Windows and otherwise), there were differing
conventions on whether or not foobar_closure or &foobar_closure
was the address of the closure.  Now, all foobar_closure references
are addresses, and no & is necessary.

CHARLIKE/INTLIKE were not changed, simply alpha-renamed.

Part of remove HEAP_ALLOCED patch set (#8199)

Depends on D265

Signed-off-by: Edward Z. Yang <ezyang@mit.edu>

Test Plan: validate

Reviewers: simonmar, austin

Subscribers: simonmar, ezyang, carter, thomie

Differential Revision: https://phabricator.haskell.org/D267

GHC Trac Issues: #8199
Revert "Use dropWhileEndLE p instead of reverse . dropWhile p . reverse"

This reverts commit 2a8856884de7d476e26b4ffa829ccb3a14d6f63e.
Use dropWhileEndLE p instead of reverse . dropWhile p . reverse

Summary: Using `dropWhileEndLE` tends to be faster and easier to read
than the `reverse . dropWhile p . reverse` idiom. This also cleans up
some other, nearby, messes. Fix #9616 (incorrect number formatting
potentially leading to incorrect numbers in output).

Test Plan: Run validate

Reviewers: thomie, rwbarton, nomeata, austin

Reviewed By: nomeata, austin

Subscribers: simonmar, ezyang, carter, thomie

Projects: #ghc

Differential Revision: https://phabricator.haskell.org/D259

GHC Trac Issues: #9623, #9616

Conflicts:
	compiler/basicTypes/OccName.lhs
rts/PrimOps.cmm: follow '_static_closure' update

Caught by UNREG build failure:

      rts_dist_HC rts/dist/build/PrimOps.o
    /tmp/ghc8613_0/ghc8613_2.hc: In function 'cf8_entry':

    /tmp/ghc8613_0/ghc8613_2.hc:1942:13:
         error: 'base_ControlziExceptionziBase_nestedAtomically_static_closure' undeclared (first use in this function)
         R1.w = (W_)&base_ControlziExceptionziBase_nestedAtomically_static_closure;
                     ^

Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
Really fix dropWhileEndLE commit

which I fixed before, but failed to pass -a to "git commit --amend"
arclint: Don't complain about tabs unless it's inside the diff.

Summary: Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>

Test Plan: none

Reviewers: austin

Subscribers: simonmar, ezyang, carter, thomie

Differential Revision: https://phabricator.haskell.org/D303
Comments only (instances for Proxy are lazy)
Revert "Basic Python 3 support for testsuite driver (Trac #9184)"

This reverts commit 084d241b316bfa12e41fc34cae993ca276bf0730.

This is a possible culprit of Windows breakage reported at ghc-devs.