Fix some things in the LLVM backend #318

Closed
wants to merge 1,897 commits into
from

Projects

None yet
@yiannist

This pull request fixes a few things in the LLVM backend.

In detail:

  • it handles the case when 'to_llvm' is used but a required LLVM version (3.4 or greater) doesn't appear in $PATH,
  • it fixes an error in the handling of closure names: in case of closures the actual arity is A (as of MFA) + 1, and
  • it fixes a nasty error in the computation of the frame size when setting up stack descriptors.

While at it, we re-worded some comments and did a minor cleanup.

sirihansen and others added some commits Feb 27, 2014
@sirihansen sirihansen Remove "coding: utf-8" from test files
UTF-8 is now the default encoding and should no longer be
specified. These have probably been merged from maint earlier and the
coding statement was missed.

   lib/dialyzer/test/opaque_SUITE_data/src/modules/opaque_erl_scan.erl
   lib/diameter/test/diameter_codec_test.erl
   lib/ssh/test/ssh_unicode_SUITE.erl
9affa30
@uabboli uabboli Clarify the reference manual regarding source file encoding 6be3e65
@psyeugenic psyeugenic compiler: Change Maps Core Format
Ex.

Instead of:

    M~{~<K,V>}~

The format is now:

    ~{~<K,V>|M}~

This also removes a shift/reduce warning.

The changes in core_pp now requires compiler-5.0 to compile
because of is_map/1 guard, i.e. a need for a compiler with Maps know-how.
70c9684
@psyeugenic psyeugenic compiler: Constant fold Maps that are safe
For updates of Map literals which may cause an error will be
determined in runtime, i.e. instructions are emitted for those
updates.

The changes in cerl now requires compiler-5.0 to compile because of
is_map/1 guard.
5d75a3b
@psyeugenic psyeugenic erts: Handle literals in is_map/1 54a53c3
@psyeugenic psyeugenic compiler: Guard BIF is_map/1 is pure 2890335
@psyeugenic psyeugenic compiler: Support literal maps in cerl_clauses:match/2 c43dd2a
@psyeugenic psyeugenic compiler: Validate Map src
Reject all expressions that are known to fail.
Emit 'badarg' for those expressions.

Ex.

    []#{ a => 1}

Is not a valid map update expression.
90a948d
@psyeugenic psyeugenic compiler: Change #c_map{var} to #c_map{arg}
Not only variables are allowed as arguments, the name should reflect that.

Change cerl Map argument interface
 * cerl:map_arg/1 is more suitable then cerl:map_val/1 in this case.
fb3ffad
@psyeugenic psyeugenic stdlib: Properly lint map key expressions
Only values are valid key expressions.
c57ac1a
@psyeugenic psyeugenic stdlib: Move map type to proper definition 6603932
@psyeugenic psyeugenic stdlib: Accept Maps as Map keys 4043888
@psyeugenic psyeugenic stdlib: Test Map key linting
This will change in future release.
fdda3a1
@psyeugenic psyeugenic stdlib: Accept records as Map keys a65e0c1
@psyeugenic psyeugenic hipe: Properly identify map() type form terms d334837
@psyeugenic psyeugenic dialyzer: Do not native compile modules with Maps code
hipe:c/1 ignores '-compile(no_native).'
d92b9dc
@psyeugenic psyeugenic compiler: Transform M#{} to is_map(M)
Core should not understand M#{}

Instead transform M#{} to

    case _cor0 of
      <_cor1>
          when call 'erlang':'is_map'
                (_cor0) ->
          _cor1
      ( <_cor2> when 'true' ->
            primop 'match_fail'
                ('badarg')
        -| ['compiler_generated'] )
    end
5638ca1
@garazdawi garazdawi Merge branch 'lukas/erts/make_deps_fixes/OTP-11784'
* lukas/erts/make_deps_fixes/OTP-11784:
  erts: Fix resolve of generated files for depend
  erts: Move compiler flags generation
57367a2
@bmk bmk [snmp/manager] Verify success for app start and stop in test cases
When starting and stopping apps verify success. If failure
to start or stop app force failure of test case or init/fin
of test case. Also, be more verbose regarding stop results
during test case finish.
be9af84
@IngelaAndin IngelaAndin Merge branch 'ia/ssl/ECC-error-handling/OTP-11780'
* ia/ssl/ECC-error-handling/OTP-11780:
  ssl: Server now ignores client ECC curves that it does not support instead of crashing.
  Add test for unknown elliptic curve supported by client
fb0a5a6
@psyeugenic psyeugenic Merge branch 'nox/maps-eval-empty-update'
* nox/maps-eval-empty-update:
  Fix evaluation of empty map patterns in erl_lint
  Fix evaluation of empty map updates in the debugger
  Fix evaluation of empty map updates in erl_eval
8d66a28
@psyeugenic psyeugenic Merge branch 'egil/maps-literals'
* egil/maps-literals:
  compiler: Transform M#{} to is_map(M)
  dialyzer: Do not native compile modules with Maps code
  hipe: Properly identify map() type form terms
  stdlib: Test Map key linting
  stdlib: Accept records as Map keys
  stdlib: Accept Maps as Map keys
  stdlib: Move map type to proper definition
  stdlib: Properly lint map key expressions
  compiler: Change #c_map{var} to #c_map{arg}
  compiler: Constant fold Maps that are safe
  compiler: Validate Map src
  compiler: Support literal maps in cerl_clauses:match/2
  compiler: Guard BIF is_map/1 is pure
  erts: Handle literals in is_map/1
  compiler: Change Maps Core Format
  compiler: Create literal Maps in creation if possible
a4d314a
@psyeugenic psyeugenic Update primary bootstrap aab1afa
@IngelaAndin IngelaAndin inets: Reverted commmit f97cd69
The reverted commit took a too optimistic approch to pipeling. When added
we thought it would be an improvment, but it proved to be a
misconception.
ec8e9a9
@IngelaAndin IngelaAndin inets: Make test suites independent of each other 2562f9e
@IngelaAndin IngelaAndin inets: Enable https tests e05fad4
@nox nox Properly collect variables in map expressions in v3_core
Reported-by: José Valim
ca39d2c
@bmk bmk [snmp/agent] CLeanup - unused vars and use of deprecated funcs 29b3afb
@bjorng bjorng epp: Make it possible to specify a default encoding
In the next commit, we will need a way to tell epp which the
default encoding should be for files that have no encoding comment.

We could add new open() and parse_file() functions with one
extra argument for the encoding, but there are already too many
variants.

To avoid having to add an additional argument to epp:open() and
epp:parse_file() each time new options are needed, introduce
epp:open/1 and epp:parse_file/2 that takes a property list with
options. Also support the new 'default_encoding' option for specifying
the default encoding for source files.

Thanks to Richard Carlsson for the idea and the implementation
of the new functionality in epp.erl.
f3cee0e
@bjorng bjorng Don't fail compilation for modules that contain invalid UTF-8
The default encoding for Erlang modules is now UTF-8, and the
compilation would fail if a module contained byte sequences that
are not valid UTF-8 sequences.

In a large project with say many hundreds of Erlang modules
with names of developers such as "Björn" or "Håkan" encoded in
latin-1, that could mean that many hundreds of files would need
to be modified just to get started testing OTP 17.

As a temporary measure to ease the transition, automatically
fall back to the latin-1 encoding with a warning for any module
that contains invalid byte sequences and for which no encoding
has been specified.

The intention is to remove this workaround in OTP 18 or 19.
bfe7e45
@proxyles proxyles Merge branch 'kostis/hipe-rc2-patch'
* kostis/hipe-rc2-patch:
  Cleanup and make sure warnings are treated as errors
  Add specs for exported functions (to shut off a warning) and types in some record fields
  Introduce and use a hipe_icode:icode() type
  Substitude uses of lists:reverse(L1) ++ L2 with lists:reverse(L1, L2)
d623f60
@proxyles proxyles Merge branch 'vinoski/emacs-keyword-boundaries'
* vinoski/emacs-keyword-boundaries:
  match erlang keywords more carefully

OTP-11786
14d1232
@proxyles proxyles Merge branch 'josevalim/set_cwd-typespec'
* josevalim/set_cwd-typespec:
  Correct file:set_cwd/1 typespec

OTP-11787
d9323a2
@proxyles proxyles Merge remote-tracking branch 'erlang/pr/289'
* erlang/pr/289:
  remove reference to dbg_wx_edit* modules that don't exist
539614a
@kostis kostis Clean up the types of cerl
The introduction of c_map and c_map_pair was not done properly. In
particular, the definition of ctype() and an important Edoc comment
were not up-to-date.

While at it,
 - some more types were cleaned up and exported so as to be used
   in core_parse.hrl and
 - some obviously dead code was removed (the type/1 function does
   not return 'nil', which in turn simplified a clause in the code
   of meta_1/2).
8b23a05
@kostis kostis Restore the alphabetical order of Core Erlang records
The introduction of c_map{} and c_map_pair{} unnecessarily broke the
alphabetical order of Core Erlang records. They were probably placed
at the end of the file so as to use other records as types. There is
really no need for this since 'cerl' contains appropriate definitions
of types that can be used for this purpose.

While at it, a type declaration to the c_binary{} definition was added.
8432d74
@bjorng bjorng Merge branch 'bjorn/compiler/utf8-warning/OTP-11791'
* bjorn/compiler/utf8-warning/OTP-11791:
  Don't fail compilation for modules that contain invalid UTF-8
  epp: Make it possible to specify a default encoding
17944ea
@bjorng bjorng Update primary bootstrap dee53dd
@proxyles proxyles Merge branch 'technomancy/emacs-autoload'
* technomancy/emacs-autoload:
  Activate Emacs erlang-mode for .app files inside ebin directory.
  Add more file types to Emacs auto-mode-alist.
  Add Emacs autoloads for .erl and .app.src.

OTP-11788
1ba34e2
@proxyles proxyles Merge branch 'nightfly19/pr/293'
* nightfly19/pr/293:
  Update compile instructions when compiling from git

OTP-11792
c8d4739
@proxyles proxyles Merge branch 'cobusc/correct_comment'
* cobusc/correct_comment:
  Fix comment that differs from code

OTP-11793
0a2979c
@proxyles proxyles Merge branch 'scrapinghub/update_session_error_logging_fix'
* scrapinghub/update_session_error_logging_fix:
  inets: Fix incorrect argument order

OTP-11794
c2c04e2
@uabboli uabboli Merge branch 'hb/clarify_encoding'
* hb/clarify_encoding:
  Clarify the reference manual regarding source file encoding
392a745
@kostis kostis Remove RTL code that handled the (is_)constant guard
The (is_)constant/1 guard is removed from Erlang long ago and thus
there is no need to handle it in RTL.

While editing these files, also performed some minor cleanup.
889bafd
@pekadan pekadan Merge remote branch 'origin/peppe/common_test/telnet_logging_final'
* origin/peppe/common_test/telnet_logging_final:
  Add test cases and fix some problems with logging and with the telnet client
  Get ct_telnet_client to print all data from server to log
  Change telnet logging behaviour

OTP-11690
57a9bc4
@pekadan pekadan Shorten default timetrap timeout for ct_master test suite b5969a0
@psyeugenic psyeugenic Merge branch 'nox/maps-v3_core-lit_vars'
* nox/maps-v3_core-lit_vars:
  Properly collect variables in map expressions in v3_core
41fe9a3
@IngelaAndin IngelaAndin inets: Continue CTify test suite 57f446a
@dgud dgud wx: Fix configure for win64 with wxWidgets-3.0 5b5ae43
@sirihansen sirihansen Merge branch 'siri/master-cuddle-with-tests'
* siri/master-cuddle-with-tests:
  Remove "coding: utf-8" from test files
  Change encoding for XML files to utf-8
ccd7ac5
@bjorng bjorng Teach the call_time trace to notice when the trace dies (non-SMP system)
The call_time trace is a special kind of tracing that requires
a tracer process just like ordinary call trace, but it never
actually sends anything to the tracer. It merely use the existence
of a trace process (and call trace flags) as an indication that
call_time tracing is active for the process.

If the tracer dies in a non-SMP run-time system, processes with
call_time tracing would not notice that the tracer had
died. Furthermore, if the set_on_spawn flag was active, the dead
tracer could be propagaged to newly spawned processes.

Before accumulating trace information in a non-SMP system, always
validate the tracer process. (In an SMP system, a reference to a
dead tracer will be cleared away each time a process is scheduled.)

While we could put all of the new code beam_bp.c, we have chosen to
make a function call from beam_bp.c to a function in erl_trace.c for
clarity's sake and to ease further maintenance. In the future, we
might want to handle tracing in more similar ways in the SMP and
non-SMP system.
9327904
@bjorng bjorng Merge branch 'bjorn/cuddle-with-tests'
* bjorn/cuddle-with-tests:
  cover_SUITE:reconnect/1: Let the other side initiate the disconnect
  Attempt to provide more information if a test case fails
  prim_file_SUITE: Remove the short 5 seconds timetrap timeout
  shell_SUITE: Give bs_match_bin_SUITE/1 more time
b6ee065
@bjorng bjorng Merge branch 'bjorn/asn1/cleanup/OTP-11727'
* bjorn/asn1/cleanup/OTP-11727:
  Clean up reporting of errors in IMPORTS
  asn1ct_check: Clean up error checking for INSTANCE OF
  asn1ct_check: Rewrite error checking for INTEGER and BIT STRING
  asn1ct_check: Remove unreachable clauses handling {identifier,_,_}
  asn1ct_check: Let asn1_error/3 throw its result
a265552
@bjorng bjorng Merge branch 'bjorn/erts/fix-lingering-tracer'
* bjorn/erts/fix-lingering-tracer:
  Teach the call_time trace to notice when the trace dies (non-SMP system)
4e982a6
@psyeugenic psyeugenic Merge branch 'ks/cerl-type-fixes'
* ks/cerl-type-fixes:
  Restore the alphabetical order of Core Erlang records
  Clean up the types of cerl
73af231
@dgud dgud wx: Fix listCtrl sort callback 8bf9ec0
@uabboli uabboli Fix some Dialyzer warnings
Dialyzer recognizes a certain pattern that makes it possible to get
rid of 'The created fun has no local return' warnings.
ce20094
@uabboli uabboli Correct the contract of io:getopts() 69acde6
@uabboli uabboli test_server: Fix a Dialyzer warning e2733e0
@uabboli uabboli Merge branch 'hb/spec_related_fixes'
* hb/spec_related_fixes:
  test_server: Fix a Dialyzer warning
  Correct the contract of io:getopts()
  Fix some Dialyzer warnings
eb44d0b
@uabboli uabboli Return warnings for unknown types and functions in Erlang Mode
The warnings about unknown types and functions are now returned
when calling Dialyzer from Erlang, in particular from an escript.

When calling Dialyzer from the command line the warnings about unknown
types and functions are output last as before; and when using the GUI
the warnings are displayed in a pop-up window, as before.
3d70fc0
@uabboli uabboli Introduce a new warning option, 'no_unknown'
Not (yet) documented.
ad8bf9b
@rickard-green rickard-green Merge branch 'vinoski/ds-enif-send'
* vinoski/ds-enif-send:
  enable enif_send to work from a dirty scheduler
164b0bb
@uabboli uabboli Merge branch 'hb/dialyzer/unknown_warnings'
* hb/dialyzer/unknown_warnings:
  Introduce a new warning option, 'no_unknown'
  Return warnings for unknown types and functions in Erlang Mode
a50d7e8
@rickard-green rickard-green Bump versions and ensure that all are "normal" versions
Ensure all are "normal" versions according to the new version scheme
introduced in OTP 17.0
7bc0397
@rickard-green rickard-green Introduce runtime_dependencies in .app files
Most dependencies introduced are exactly the dependencies to other
applications found by xref. That is, there might be real dependencies
missing. There might also be pure debug dependencies listed that
probably should be removed. Each application has to be manually
inspected in order to ensure that all real dependencies are listed.

All dependencies introduced are to application versions used in
OTP 17.0. This since the previously used version scheme wasn't
designed for this, and in order to minimize the work of introducing
the dependencies.
22ff87a
@rickard-green rickard-green Add test-case verifying runtime dependencies found by xref 0453d4e
@rickard-green rickard-green Verify runtime_dependencies when running 'otp_build patch_app' e310677
@rickard-green rickard-green Introduce system_information:sanity_check() e005280
@rickard-green rickard-green Merge branch 'rickard/runtime-dep/OTP-11773'
* rickard/runtime-dep/OTP-11773:
  Introduce system_information:sanity_check()
  Verify runtime_dependencies when running 'otp_build patch_app'
  Add test-case verifying runtime dependencies found by xref
  Introduce runtime_dependencies in .app files
  Bump versions and ensure that all are "normal" versions
3c06b5b
@bjorng bjorng Protect generated .hrl files from multiple inclusions dfd97aa
Dmitry Kolesnikov Raspberry PI / Android a minimal cross-compile configuration
Enable a cross compile Erlang/OTP platform to Android or Raspberry PI
using Android NDK. Port emulator and core application to support target
HW platform. Exclude any add-on services required for OTP platform deployment
into target hardware due to device fragmentation and jail-break requirements.

 * fix erts/emulator/beam/sys.h
   Disable redefinition of __noreturn macro

 * port erts/emulator/sys/unix/erl_child_setup.c
   Use techniques proposed by https://code.google.com/p/erlang4android to
   access system properties

 * fix erts/emulator/sys/unix/erl_unix_sys_ddll.c
   The static linking of emulator cannot find dlerror(), dlopen() symbols

 * port erts/emulator/sys/unix/sys.c
   make path to shell configurable at build time

 * port erts/etc/common/Makefile.in
   disable librt for *-linux-androideabi

 * port erts/lib_src/pthread/ethread.c
   Use techniques proposed by https://code.google.com/p/erlang4android to
   disable emulator crash if kernel threads are on. Replace unreliable
   pthread_sigmask() by sigprocmask()

 * port lib/erl_interface/src/connect/ei_connect.c
   Disable call to undefined gethostid()

 * port lib/erl_interface/src/connect/ei_resolve.c
   Use gethostbyname_r() on Android platform
f43a1dc
@rickard-green rickard-green Introduce minimum allowed major driver and nif versions on load bf3222f
@rickard-green rickard-green Merge branch 'rickard/load-min-major/OTP-11799'
* rickard/load-min-major/OTP-11799:
  Introduce minimum allowed major driver and nif versions on load
4d614d8
@uabboli uabboli dialyzer: generalize guard constraints in a new way
Guard constraints used to be limited to a certain depth, which handled
mutually depending constraints safely, but also sometimes introduced
unnecessary generalizations.

This patch puts no explicit limit upon guard constraints (other than
those that already exist in erl_types), but breaks cycles by replacing
variables with the any() type.

In some cases the old method resulted in more warnings, but since the
limit was quite arbitrary and mutually depending guard constraints are
(very) rare, the new method should been seen as an improvement since
it handles cases that used to make Dialyzer loop or miss warnings.
c777e40
@uabboli uabboli Merge branch 'hb/dialyzer/guard_constr/OTP-11798'
* hb/dialyzer/guard_constr/OTP-11798:
  dialyzer: generalize guard constraints in a new way
b9138aa
@bjorng bjorng zlib: Fix adler32_combine/4 and crc32_combine/4
Since our config.h is included in each source file in the zlib
directory, we must make sure that config.h is also included
every time zlib functions are called to ensure that definitions
of types are consistent.

zlib_drv.c did not include config.h, which caused problems on
a MacOS X Leopard system. What happened was that HAVE_UNISTD_H
was not defined when zlib.h was included. When unistd.h is not
known to exist, the type z_off_t will be set to a long (32 bits
on this platform). But when the zlib source files were compiled,
HAVE_UNISTD_H was defined, unistd.h would be included, and
z_off_t would be set to off_t (64 bits; defined in unistd.h).

As a result of the mismatch, calls to the adler32_combine() and
crc32_combine() would pass only 32 bits in the len2 argument when
64 bits were expected.
6e31894
@rickard-green rickard-green Documentation fix 4548d75
@rickard-green rickard-green Merge branch 'rickard/runtime-dep/OTP-11773'
* rickard/runtime-dep/OTP-11773:
  Documentation fix
78ad536
@bmk bmk [snmp/manager] Add some more error handling when starting
Add some more error handling (a try catch block) when starting
both manager and agent.
d083434
@HansN HansN eldap: Fix asn.1 decode into binaries 5182dd0
@vinoski vinoski fix sys:get_state/1,2 and sys:replace_state/2,3 when sys suspended
Add two new system callbacks Module:system_get_state/1 and
Module:system_replace_state/2 to allow sys:get_state/1,2 and
sys:replace_state/2,3 to operate correctly even if a process is sys
suspended. Modify gen_server, gen_fsm, and gen_event to support the new
callbacks.

If a callback module does not export these functions, then by default the
Misc value (the same as that passed as the final argument to
sys:handle_system_msg/6, and returned as part of the return value of
sys:get_status/1,2) is treated as the callback module's state.

The previous behaviour of intercepting the system message and passing a
tuple of size 2 as the last argument to sys:handle_system_msg/6 is no
longer supported.

Add tests to verify the correctness of sys:get_state/1,2 and
sys:replace_state/2,3 when processes are sys suspended. Add two tests for
modules that implement special processes, one that exports
system_get_state/1 and system_replace_state/2 and one that doesn't.

Much of the credit for this patch goes to James Fish, who reported the
initial problem and implemented much of the fix.
6c298a7
@vinoski vinoski remove tuple funs from special process documentation
Support for tuple funs was removed in R16B but the documentation for
special processes, sys, and proc_lib in the OTP Design Principles still
showed examples using them, and those examples no longer worked. Fix the
examples to use regular functions instead and fix the documentation to
reflect the changes.
cbcac6f
@IngelaAndin IngelaAndin Merge branch 'master' of git-server:otp 425a75a
@IngelaAndin IngelaAndin Merge branch 'ia/inets/revert/OTP-11756'
* ia/inets/revert/OTP-11756:
  inets: Continue CTify test suite
  inets: Enable https tests
  inets: Make test suites independent of each other
  inets: Reverted commmit f97cd69
bbe92ec
@sirihansen sirihansen Fix some dialyzer warnings in ct_netconfc 925d961
@IngelaAndin IngelaAndin inets: Remove potential windows problem 5fe297b
@sirihansen sirihansen Change release name from "OTP APN 181 01" to "Erlang/OTP" d4b97ae
@proxyles proxyles Merge branch 'yiannist/hipe-llvm-backend'
* yiannist/hipe-llvm-backend:
  Support the LLVM backend in HiPE
  Implement the LLVM backend
  Extend RTL API to support the LLVM backend
  Add support for llvm unique symbols in hipe_gensym
  Add a BIF that only returns the atom ok
  Move some common code in hipe_pack_constants
  Add better specs in hipe_pack_constants and cleanup

OTP-11801
9d46875
@proxyles proxyles Merge branch 'nox/httpc-transfer-encoding-identity'
* nox/httpc-transfer-encoding-identity:
  Support identity transfer-encoding in httpc

OTP-11802
ae7a69f
@sirihansen sirihansen Update primary bootstrap
   bootstrap/bin/start.boot
   bootstrap/bin/start_clean.boot
dfcea35
@sverker sverker erts: Fix heap overflow in maps:remove/2 when key is not found
One key-value pair too many was copied.
78b118b
@proxyles proxyles Merge branch 'scrapinghub/empty_set_cookie'
* scrapinghub/empty_set_cookie:
  Added a condition to ignore empty Set-Cookie header and tests for it

OTP-11803
c9da6c2
@proxyles proxyles Merge branch 'fogfish/embedded-arm-android'
* fogfish/embedded-arm-android:
  Raspberry PI / Android a minimal cross-compile configuration

OTP-11805
a4030a8
@proxyles proxyles Merge branch 'glacjay/epmd-argv'
* glacjay/epmd-argv:
  ensure argv large enough for all possible args

OTP-11808
0aa6936
@proxyles proxyles Merge branch 'nox/reedr-closefrom'
* nox/reedr-closefrom:
  Use closefrom(2) when available in child_setup

Conflicts:
	erts/emulator/sys/unix/erl_child_setup.c

OTP-11809
c2b4eab
@pekadan pekadan Introduce total timeout value in ct_telnet:expect/3 options
OTP-11689
72f9cd7
@pekadan pekadan Add test cases 1acc2ed
@pekadan pekadan Remove dead code b46352e
Adrian Mangeac ose: Restore the owner of the signal
As any scheduler process can consume any message we have
to make sure that the message is owned by the scheduler
before returning it in erl_drv_ose_get_signal.
483161d
garazdawi and others added some commits Mar 25, 2014
@garazdawi garazdawi Merge branch 'paulgray/dtrace_snprintf_fix/OTP-11816'
* paulgray/dtrace_snprintf_fix/OTP-11816:
  Fix DTrace/SystemTap-related formatting
62430f5
@HansN HansN Merge branch 'hans/eldap/asn1_bin_lists/OTP-11768'
* hans/eldap/asn1_bin_lists/OTP-11768:
  eldap: Fix asn.1 decode into binaries
e6e095d
@dgud dgud wx: Added misc functions
Nice to have functionality
4486d61
@sverker sverker erts: Fix compile warning in io.c for windows 64ffc50
@HansN HansN ssh: Fix dialyzer warning for arg Data in ssh_connection_handler:send/4 36f21cf
@psyeugenic psyeugenic Merge branch 'ks/hipe-rtl-remove-constant/OTP-11822'
* ks/hipe-rtl-remove-constant/OTP-11822:
  Remove RTL code that handled the (is_)constant guard
66014ea
@HansN HansN Merge branch 'hans/ssh/dialyzer_warning/OTP-11821' ec398c4
@IngelaAndin IngelaAndin ssl: Refactor and start implementing dtls_connection.erl c635f15
@psyeugenic psyeugenic compiler: map_pair cannot be a type clause in v3_life
Map pairs are encapsulated in a map.
df6c03d
@IngelaAndin IngelaAndin ssl: Improve type specs
Conflicts:

	lib/ssl/src/dtls_record.erl
8af48b0
@IngelaAndin IngelaAndin ssl: Avoid dialyzer warnings in dtls code
Even if DTLS is not finished, e.i. not runnable yet we
want to phase in the code together with refactoring of TLS code,
but without introducing warnings in the release.
c2aab88
@sverker sverker Merge branch 'sverk/win-warning-io'
* sverk/win-warning-io:
  erts: Fix compile warning in io.c for windows
6d863e5
@sverker sverker Merge branch 'sverk/maps_remove_bug'
* sverk/maps_remove_bug:
  erts: Fix heap overflow in maps:remove/2 when key is not found
d54ef28
@psyeugenic psyeugenic compiler: Strengthen Maps warnings tests
Increases coverage.
333f039
@HansN HansN pubkey: Fixed unicode conversion b1e4eba
@psyeugenic psyeugenic compiler: Variable keys are not allowed in Maps
No need to check for variables in Map keys.
9e01993
@psyeugenic psyeugenic compiler: Throw 'nomatch' on matching with bad binary keys
Even if a binary key is written as a literal the compiler may
choose to make an expression. Emit a warning in those cases
and saying the case will not match.

This is a limitation in current implementation.
71df02b
@psyeugenic psyeugenic compiler: Do not evaluate map expressions with bad keys
Map keys with large (non literal) binary keys must fail.
2d95280
@uabboli uabboli Merge branch 'aronisstav/hipe/opaque_fix'
* aronisstav/hipe/opaque_fix:
  Don't 'opaque-decorate' a success typing using an incompatible spec
4057cf6
@IngelaAndin IngelaAndin Merge branch 'ia/ssl/sni-alert/OTP-11815'
* ia/ssl/sni-alert/OTP-11815:
  ssl: Handle SNI alert unrecognized_name and gracefully deal with unexpected alerts.
e33a2eb
@IngelaAndin IngelaAndin Merge branch 'ia/ssl/continue-dtls-and-specs'
* ia/ssl/continue-dtls-and-specs:
  ssl: Avoid dialyzer warnings in dtls code
  ssl: Improve type specs
  ssl: Refactor and start implementing dtls_connection.erl
fe4bb35
@IngelaAndin IngelaAndin Merge branch 'ia/inets/cuddle-tests'
* ia/inets/cuddle-tests:
  inets: Remove potential windows problem
1728d63
@HansN HansN Merge branch 'hans/pubkey/utf8/OTP-11823'
* hans/pubkey/utf8/OTP-11823:
  pubkey: Fixed unicode conversion
dbb4cda
@sirihansen sirihansen Merge branch 'dumbbell/function_clause-in-systools_make-format_error'
* dumbbell/function_clause-in-systools_make-format_error:
  sasl: Fix crash in systools_make:format_error/1

OTP-11819
3dd90c7
@Vagabond Vagabond Various improvements to CRL handling
* Handle v1 CRLs, with no extensions.
* Compare the IDP on a CRL correctly, if present
* Don't try to double-decode altnames

Tests are also included, and the make_certs testing tool in the SSL
application has been greatly extended.
8991663
@Vagabond Vagabond Rework IDP validation according to the RFC, fix public_key tests 9756dcd
@HansN HansN ssl, pubkey: Code and test adjustments 8c8999a
@HansN HansN Merge branch 'hans/ssl/add_pull_req_crl_fixes/OTP-11761'
* hans/ssl/add_pull_req_crl_fixes/OTP-11761:
  ssl, pubkey: Code and test adjustments
  Rework IDP validation according to the RFC, fix public_key tests
  Various improvements to CRL handling
f253f7f
@bmk bmk Merge branch 'bmk/snmp/agent/fix-tests' c1c6ed0
@bmk bmk Merge branch 'bmk/snmp/manager/fix-tests' 97039a7
@uabboli uabboli refman: Clarify the '-callback' attribute 9dfc985
@uabboli uabboli Merge branch 'hb/refman/callback_attribute/OTP-11657'
* hb/refman/callback_attribute/OTP-11657:
  refman: Clarify the '-callback' attribute
1876500
@dgud dgud wx: Add wxLocale class 3a51f43
@sirihansen sirihansen Improve crashdump_viewer_SUITE:start_stop test case
Instead of setting a timer and expecting all processes to be
terminated, set a monitor and wait for them to terminate.
f51d3ce
@bjorng bjorng Merge branch 'bjorn/stdlib/otp_internal'
* bjorn/stdlib/otp_internal:
  otp_internal: No longer warn for funtions removed in R13B
  otp_internal: Postpone removals from R17 to OTP 18
93e120f
@bjorng bjorng Merge branch 'nox/compiler/non-matching-patterns-with-literals'
* nox/compiler/non-matching-patterns-with-literals:
  Correctly handle non-matching patterns against literal values
0b6af76
@bjorng bjorng Update primary bootstrap dbd4295
@psyeugenic psyeugenic Merge branch 'egil/maps-compiler-coverage'
* egil/maps-compiler-coverage:
  compiler: Do not evaluate map expressions with bad keys
  compiler: Throw 'nomatch' on matching with bad binary keys
  compiler: Variable keys are not allowed in Maps
  compiler: Strengthen Maps warnings tests
  compiler: map_pair cannot be a type clause in v3_life
  compiler: Remove redudant code in v3_codegen
  compiler: Test deep map structure
  compiler: Remove redundant clause in v3_codegen
  compiler: Cover #{ [] => Var } in testcase
c5e3c77
@garazdawi garazdawi ose: Break lmconf into one per load module f6570cf
@garazdawi garazdawi ose: Initiate stdin/stdout/stderr
Needed to get std io to work in some OSE systems where stdio
is not opened when the program starts.
675e046
@garazdawi garazdawi ose: Prinout errno when to_erl read fails c4e7924
@garazdawi garazdawi ose: erlang display goes to ramlog printf ff3ac97
@garazdawi garazdawi ose: Print faults in aio sys driver calls f452257
Robert Paal ose: Yielding has to be done differently for background processes. d5df89a
Jonas Karlsson ose: fix for packet_bytes in fd/spawn driver. d28049c
@garazdawi garazdawi ose: Add ifdefs for HAVE_UDP 68c1740
@garazdawi garazdawi ose: Implement tcp inet driver for OSE
The inet driver for OSE has to handle signals instead of selects
and thus the wrappers for ready_input/output are a little bit
different. However the majority of the inet code remains the same.
38db84b
@garazdawi garazdawi ose: Fix bug when hunting for signal proxy
Sometimes the wrong signal, i.e. a read reply, would be
received from this non-selective receive.
09c1cbf
@garazdawi garazdawi ose: Prepare slave for running on OSE
This change relies on the assumption that all arguments before the last --
to the parent beam should be left as they are.
8af4bae
@garazdawi garazdawi ose: Fix erts assert failed printouts d2a5dc0
@dgud dgud wx: Send destroy message direct
Messages was routed via the wxe_server process, which caused process
to never get the message.
c15c7c6
@dgud dgud Merge branch 'dgud/test_server/throw_skip'
* dgud/test_server/throw_skip:
  test_server: Allow init_per_ function to throw skip
978f3cb
@HansN HansN ssh: Added option negotiation_timeout for ssh:daemon
This option is for closing a connection where the client connects, but then do nothing except keeping server resources.
2da14af
@HansN HansN ssh: added daemon option 'parallel_login', default false fb908b7
@kostis kostis Change the subtag used for maps from 0xB to 0xF
The subtag chosen for maps breaks crucial assumptions in other parts of
the system, in particular the native code generation scheme used in the
HiPE compiler. Therefore it is better to use 'the other' unused subtag.

The main change here is the use of 0xF subtag for maps instead of 0xB.
The rest of the differences are changes to and additions of comments.

One more comment from my part.
I noticed that the file contains the following two lines:

The comment of the second line is most certainly a copy and paste error
and should be appropriately fixed by the OTP developers. More importantly,
it would be great if that subtag (0x7) turned out to be unused and could
be used for maps instead of the 0xF one. This might turn out very handy
in the future. I can elaborate on this, if needed.
32eae45
@garazdawi garazdawi Merge branch 'lukas/ose/master-17.0/OTP-11334'
* lukas/ose/master-17.0/OTP-11334:
  ose: Fix erts assert failed printouts
  ose: fix for packet_bytes in fd/spawn driver.
  ose: Prepare slave for running on OSE
  ose: Fix bug when hunting for signal proxy
  ose: Implement tcp inet driver for OSE
  ose: Add ifdefs for HAVE_UDP
  ose: Yielding has to be done differently for background processes.
  ose: Print faults in aio sys driver calls
  ose: Prinout errno when to_erl read fails
  ose: erlang display goes to ramlog printf
  ose: Initiate stdin/stdout/stderr
  ose: Break lmconf into one per load module
  ose: Reset busy port when pdq empty
  ose: Restore the owner of the signal
ed483c4
@fenollp fenollp Document an escript:create/2 hidden feature
escript:create/2 accepts a 3-elements tuple containing files and
zip:create/3 options to build a zip file.

Also had to update zip typespecs to allow referral from escript docs.
be34551
@garazdawi garazdawi Merge branch 'pf/document-escript-feature-only-present-in-examples/OT…
…P-11827'

* pf/document-escript-feature-only-present-in-examples/OTP-11827:
  Document an escript:create/2 hidden feature
70d60cb
@garazdawi garazdawi Merge branch 'matwey/systemd/OTP-11829'
* matwey/systemd/OTP-11829:
  Add systemd socket activation for epmd.

Conflicts:
	erts/epmd/src/epmd_int.h

Extra ticket: OTP-11828
be5ad8b
@HansN HansN Merge branch 'hans/ssh/login_hangs/OTP-11823' d6b30f4
@sirihansen sirihansen Merge branch 'siri/cdv-bugs/OTP-11650'
* siri/cdv-bugs/OTP-11650:
  Improve crashdump_viewer_SUITE:start_stop test case
  Fix crash in crashdump_viewer when node has multiple creations
  Change spawn/1 + monitor/2 to spawn_monitor/1 to avoid deadlock
5b9ffc7
@pekadan pekadan Fix problem with bad match error after close faeddc5
@pekadan pekadan Relax time limits for parallel groups tests 24f148e
@sverker sverker erts: Adjust is_external_header() for new map tag
to not mistake a map for an external term (pid, port or ref).
d1fde60
@psyeugenic psyeugenic stdlib: Fix map type listing 13d1e79
@dgud dgud wx: loosen testcase 4f22b3e
@dgud dgud stdlib: loosen testcases
Stabilize tests for all kind of machines

Old sparc (and newer smaller) machines timeouts in 'random_ref_comp'
decrease load and increase timeouts.

Supervisor:
Turn up accepted time, since if non-linear it should be much worse,
now the test failes on slow multicore machines

Remove memory tests, they fail sometimes and those tests are not
needed to be tested. Hard to predict GC's and other processes behaviours.
c57f0f9
@dgud dgud mnesia: Dialyzer fixes faae15d
@dgud dgud mnesia: test harder sync 51becf1
@garazdawi garazdawi erts: Move debug printout to eliminate gcc warning 547aa83
@dgud dgud kernel: tweak tests
heart tests decrease atom table size so node crashes faster

Fix timetrap and sync
e5d3241
@dgud dgud os_mon: test tweaks
child not started on windows so test fails
4f63cca
@dgud dgud Merge branch 'dgud/testcasecuddling'
* dgud/testcasecuddling:
  os_mon: test tweaks
  kernel: tweak tests
  mnesia: test harder sync
  mnesia: Dialyzer fixes
  stdlib: loosen testcases
  wx: loosen testcase
95ffe7e
@dgud dgud observer: Add simple test and add debug hooks in app
Add hooks in observer so that we can do some basic testing on it
a7d0e35
@dgud dgud Merge branch 'dgud/observer/test'
* dgud/observer/test:
  observer: Add simple test and add debug hooks in app
e3f9bf8
@dgud dgud Merge branch 'dgud/wx/fix-wx3-windows64'
* dgud/wx/fix-wx3-windows64:
  wx: Send destroy message direct
  wx: Add wxLocale class
  wx: Added misc functions
  wx: Fix memory garbage collector
  wx: Fix possibility to fetch early open msgs on mac
  wx: Fix listCtrl sort callback
  wx: Fix configure for win64 with wxWidgets-3.0
7811310
Lars Thorsen [ic] Fix latin-1 characters in generated erl file 6b1fb34
Lars Thorsen [ic] Fix unicode in erlang install path ec9b79e
Lars Thorsen [ic] Fix unicode option to io:format in java test ae64b80
Lars Thorsen Remove orber/cos*/ic files from encoding test
These applications contains generated code with the latin1 directivce.
e10e918
Lars Thorsen Merge branch 'lars/ic/unicode/OTP-11783'
* lars/ic/unicode/OTP-11783:
  Remove orber/cos*/ic files from encoding test
  [ic] Fix unicode option to io:format in java test
  [ic] Fix unicode in erlang install path
  [ic] Fix latin-1 characters in generated erl file
f558e4a
@HansN HansN ssh: Fix bug in failfun (was not always called) 0f3f3ee
@HansN HansN ssl: fix crl test suite error with unexpected web server response 0f77d57
@garazdawi garazdawi Merge branch 'lukas/ose/master-17.0/OTP-11334'
* lukas/ose/master-17.0/OTP-11334:
  erts: Move debug printout to eliminate gcc warning
8d3959c
@HansN HansN Merge branch 'hans/ssh/failfun_idlog/OTP-11680'
* hans/ssh/failfun_idlog/OTP-11680:
  ssh: Fix bug in failfun (was not always called)
5205b63
@HansN HansN Merge branch 'hans/ssl/ssl_crl_SUITE_bob'
* hans/ssl/ssl_crl_SUITE_bob:
  ssl: fix crl test suite error with unexpected web server response
7b132ff
@aronisstav aronisstav Dialyzer now plays nicely with funs that come as "external" arguments
Two steps are needed to make this work:

1) Avoid generating the additional "apply_constraint" in dialyzer_typesig by
   reporting every function argument as a potential external function (patch on
   dialyzer_dep).

   This will produce correct success typings for all functions in the test case,
   but dataflow would miss the key warnings that help identify the bugs.

2) Patch dialyzer_dataflow so that it uses the "handle just external" path as a
   fallback whenever there are any external calls. As a result, if we have info
   about some paths, then:

   a) use the old "handle known apply" code to mark these functions as used and
   b) ignore the generalized result and use the one found by typesig for the
      return value of the apply itself.
1a23202
@uabboli uabboli Merge branch 'aronisstav/dialyzer/external_funs/OTP-11826'
* aronisstav/dialyzer/external_funs/OTP-11826:
  Dialyzer now plays nicely with funs that come as "external" arguments
ce32396
@pekadan pekadan Merge branch 'peppe/common_test/ct_telnet_close_error'
* peppe/common_test/ct_telnet_close_error:
  Fix problem with bad match error after close
481b957
@pekadan pekadan Merge branch 'peppe/test_server/parallel_tests_timing'
* peppe/test_server/parallel_tests_timing:
  Relax time limits for parallel groups tests
b51ddfb
@sverker sverker Merge branch 'sverk/change-map-subtag'
* sverk/change-map-subtag:
  erts: Adjust is_external_header() for new map tag
  Change the subtag used for maps from 0xB to 0xF
1ce93cb
@psyeugenic psyeugenic Merge branch 'egil/maps-fix-src-listing'
* egil/maps-fix-src-listing:
  stdlib: Fix map type listing
8964e0f
@psyeugenic psyeugenic Merge branch 'nox/remove-superfluous-echo'
* nox/remove-superfluous-echo:
  Remove a superfluous echo in the emulator Makefile
4503158
@yiannist yiannist Check for required LLVM version or issue error
This checks that a required LLVM version (i.e. 3.4 or greater) appears in $PATH
when 'to_llvm' flag is used; in case of failure, abort compilation with an
error.
87a01aa
@yiannist yiannist Fix frame size adjustment of stack descriptors
In case of function calls with arguments that are passed to the stack,
the frame size of corresponding stack descriptors needs to be reduced by
the number of stack arguments. This commit fixes a bug in this
adjustment which was caused by an incorrect check.
f03a239
@cstavr cstavr Fix counting of arguments of closures
Do not rely on MFA name for the arity of functions, since closures have
an extra argument. Instead, just use the length of the arguments list.
4350be1
@yiannist

Sorry for that! I accidentally send the pull request on maint! Closing and resending on master...

@yiannist yiannist closed this Mar 30, 2014
@yiannist yiannist deleted the yiannist:erllvm-fixes branch Apr 1, 2014
@eriksoe

This merge seems to have room for improvement:
The special-handling for Android and the special-handling for HAVE_CLOSEFROM need to be combined so that they don't both say "else close fds one by one".
That loop is presently executed twice, which isn't optimal.

Member

Yes, we've already seen it and we have fixed it (will be on maint next week I guess). I agree, the merge has room for improvement. =)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment