erts: Extend erl_driver interface with lock names

Lock and thread names are already a feature in the driver interface.
This extension will let developers read these names. Eases debugging.
erts: Speed up valgrind with asynch threads

by only letting it run on one core. Valgrind only let one thread
at a time execute anyway.
Fix variable usage tracking in erl_lint

When analyzing complex expressions (i.e. comprehensions, cases, tries,
ifs and receives), erl_lint does not forget about old unused variables
when returning the updated variable table. This causes a bug where old
unused variables are not recorded as such:

t(X, Y) ->
  #r{a=[ K || K <- Y ],b=[ K || K <- Y ]}.

As erl_lint uses vtmerge_pat/2 to merge the results of the analysis of
the two list comprehensions, X is marked as used and the warning is not
emitted.

The function vtmerge_pat/2 is used instead of the similar vtmerge/2
which does not mark multiple occurrences of a variable as usage to
handle cases like the following one:

t(X, Y) ->
  #r{a=A=X,b=A=Y}.

Other simpler expressions like conses, tuples and external fun
references do not correctly follow this behaviour, e.g. A is not marked
as used in the following code:

t(X, Y) ->
  {A=X,A=Y}.

This commit fixes both issues and makes erl_lint not return old unused
variables in updated tables and makes all compound expressions use
vtmerge_pat/2.

Reported-by: Anders Ramsell
Fix unsafe variable tracking in try expressions

Variables used in the body of a try expression were marked as unsafe
*and* used, which makes no sense as an unsafe variable can't be used.

Function vtsubtract/2 is used to forget usage of such unsafe variables.

Reported-by: Paul Davis
Fix variable usage tracking in some record errors

When reporting a field redefinition in a record, erl_lint can forget
about some old unused variables.

f() -> X = 1, #r{a=foo,a=bar,a=qux}.
Updated primary bootstrap
Cross compilation is now a supported feature
Fix EV_* macros and functions signedness flaws
Remove object files when cleaning

Otherwise something like this will fail:
./otp_build setup --enable-m32-build
make clean
./otp_build setup --enable-m64-build
Fix some compiler warnings
Fix broken cpu_sup:nprocs and others on Solaris 64-bit

The correct kstat datatype for nproc & avenrun_* is ui32, not
ulong. Under 64-bit OTP builds garbage was returned because the wrong
datatype was used.

This patch correcs the datatype. It also adds an additional check
in the test case for a slightly less insane return value.
erts: Document erl_driver interface lock names
Ignore odbc cores
Fix sh compatability issue
erts: Fix faulty assert in "unlimited select" for mac
Merge branch 'egil/erl_driver-thread-info/OTP-11303' into maint

* egil/erl_driver-thread-info/OTP-11303:
  erts: Document erl_driver interface lock names
  erts: Extend erl_driver interface with lock names
Merge branch 'raimo/fix-signedness-flaws-in-efile_drv' into maint

* raimo/fix-signedness-flaws-in-efile_drv:
  Fix EV_* macros and functions signedness flaws
Merge branch 'sverk/valgrind-single-core' into maint

* sverk/valgrind-single-core:
  erts: Speed up valgrind with asynch threads
Merge branch 'sverk/mac-select-assert-bug' into maint

* sverk/mac-select-assert-bug:
  erts: Fix faulty assert in "unlimited select" for mac
Add missing whitespace in string