aboutsummaryrefslogtreecommitdiffstats
path: root/lib
AgeCommit message (Collapse)Author
2014-03-04Merge branch 'nox/maps-support-cover/OTP-11764'Björn-Egil Dahlberg
* nox/maps-support-cover/OTP-11764: Support maps in cover Conflicts: lib/tools/src/cover.erl
2014-03-04Merge branch 'ia/ssl/option-check'Ingela Anderton Andin
* ia/ssl/option-check: ssl: Add exception for inet and inet6 to proplist check
2014-03-04ssl: Add exception for inet and inet6 to proplist checkIngela Anderton Andin
2014-03-04Merge branch 'nox/maps-fix-beam_bool-put_map'Björn-Egil Dahlberg
* nox/maps-fix-beam_bool-put_map: Properly collect labels in put_map instructions in beam_bool
2014-03-04Merge branch 'nox/maps-expand-update'Björn-Egil Dahlberg
* nox/maps-expand-update: Fix expansion of map update arguments
2014-03-04Merge branch 'nox/compiler/v3_core-mismatched-apply'Björn Gustavsson
* nox/compiler/v3_core-mismatched-apply: Do not emit blatantly illformed Core Erlang apply expressions
2014-03-04Merge branch 'nox/compiler/sys_core_fold-erlang-is_record-3'Björn Gustavsson
* nox/compiler/sys_core_fold-erlang-is_record-3: Do not mark all calls to erlang:is_record/3 as safe
2014-03-04Merge branch 'bjorn/hipe/fix-race-condition'Björn Gustavsson
* bjorn/hipe/fix-race-condition: Delay patching of closures to eliminate a race condition hipe: Break apart hipe_bif:make_fe/3 into two BIFs
2014-03-04Merge branch 'hb/stdlib/qlc_fix/OTP-11758'Hans Bolinder
* hb/stdlib/qlc_fix/OTP-11758: Fix a qlc bug where filters were erroneously optimized away
2014-03-04Introduce compiler option 'nowarn_deprecated_type'Hans Bolinder
The deprecation of the built-in types dict/0 and so on had as side-effect that it was impossible to switch to dict:dict/2 and so on without getting warnings either in the the previous release (R16B) or the current one (17.0). By including the attribute -compile(nowarn_deprecated_type). in an Erlang source file warnings about deprecated types can be avoided in 17.0. The option can also be given as a compiler flag: erlc +nowarn_deprecated_type file.erl
2014-03-04Improve message about deprecated built-in typesHans Bolinder
2014-03-04Merge branch 'ia/ssl/proplist-input-check/OTP-11760'Ingela Anderton Andin
* ia/ssl/proplist-input-check/OTP-11760: ssl: Add input sanity check
2014-03-04ssl: Add input sanity checkIngela Anderton Andin
Avoid puzzling behavior due to options being disregarded if they are not key value tuples.
2014-03-04Handle nil as a wait_timeout argument in beam_utils:live_opt/4Anthony Ramine
Reported-by: Ulf Norell
2014-03-04Properly detect nonboolean protected expressions in beam_boolAnthony Ramine
Silly code such as the following could make the compiler crash: f() when erlang:float(self()); true -> ok. Reported-by: Ulf Norell
2014-03-04Improve linting of map expressionsAnthony Ramine
Map fields are put in their own function instead of being clauses of expr/3. Also, invalid map construction expressions now emit one error per ':=' field, at the location of said field instead of one for the whole expression, furthermore, such warnings do not stop linting of their key and value expressions anymore. Ill-formed maps constructions are now also properly detected in guard expressions.
2014-03-03Properly collect labels in put_map instructions in beam_boolAnthony Ramine
Reported-by: Ulf Norell
2014-03-03ssl: Improved documentation of the cacertfile optionIngela Anderton Andin
2014-03-03Fix a qlc bug where filters were erroneously optimized awayHans Bolinder
Thanks to Sam Bobroff for reporting the bug.
2014-03-03Do not mark all calls to erlang:is_function/2 as safeAnthony Ramine
Calls to erlang:is_function/2 where the second is not a literal nonnegative integer can crash at runtime and thus can't be marked as safe.
2014-03-02Do not mark all calls to erlang:is_record/3 as safeAnthony Ramine
Calls to erlang:is_record/3 where the second and third arguments are not respectively a literal atom and a literal integer can't be transformed to guards and thus are not safe. Reported-by: Ulf Norell
2014-03-01Do not emit blatantly illformed Core Erlang apply expressionsAnthony Ramine
(fun f/1)() should be compiled to let X = 'f'/1 in apply X () to let the compiler properly generate code that will fail with badarity at runtime. Reported-by: Ulf Norell
2014-03-01Properly lint shortcircuiting operatorsAnthony Ramine
Shortcircuiting operators are not real functions and can't be used as such with erlang:'andalso'(...) and erlang:'orelse'(...). Reported-by: Ulf Norell
2014-03-01Fix expansion of map update argumentsAnthony Ramine
Reported-by: José Valim
2014-02-28compiler: Fix error message printout on compile errorBjörn-Egil Dahlberg
Use correct stack in printout.
2014-02-28Delay patching of closures to eliminate a race conditionBjörn Gustavsson
The loader of native code tries to avoid race condition by bringing down the system to a single scheduler. Unfortunately, that will not completely avoid race conditions beacuse other processes may still run while the code is being loaded. Therefore, we must still make sure that native code has been fully fixed up before it can be executed. Under unlucky circumstances, it was possible for the global name register process to call a fun in native code before the native code for the fun had been fully fixed up. The run-time system would crash when running the not-fully-fixed-up code. Here is a way to make the bug 100% reproducible. First add this function to the 'global' module: silly_looper(List) -> lists:foreach(fun(E) -> put(any_atom, E) end, List), silly_looper(List). Then insert the following code at the beginning of the init/1 function in the 'global' module: spawn_link(fun() -> silly_looper(lists:seq(1, 100)) end), The run-time system will crash during start up when the native code for the 'global' module is being loaded. What will happen is that lists:foreach/2 (which runs in native code) will call the native code for the fun in silly_looper/1 before the reference to 'any_atom' has been changed from a 0 to the proper tagged atom value. The put/2 BIF will exit when attempting to calculate the hash value for the illegal value 0 (it is not properly tagged). To eliminate this race condition, we must delay patching the native code addresses for a fun into the fun entry until the native code has been fully fixed up. We will use the new BIFs introduced in the previous commit. While we are at it, we will also make sure that we erase any temporary variables in the process dictionary used by the hipe_unified_loader module.
2014-02-28hipe: Break apart hipe_bif:make_fe/3 into two BIFsBjörn Gustavsson
This commit is a preparation for eliminating a race condition loading the native code for modules whose BEAM code has already been loaded. Here we introduce two new BIFs so that looking up a fun entry is separate from setting the native address in the fun entry.
2014-02-26ssh: Add appup file correctionsHans Nilsson
2014-02-25Merge branch 'ia/ssl/fix-warnings'Ingela Anderton Andin
* ia/ssl/fix-warnings: ssl: Fix compiler warnings ssl: Fix appup regexps and instructions
2014-02-25ssl: Fix compiler warningsIngela Anderton Andin
2014-02-25ssl: Fix appup regexps and instructionsIngela Anderton Andin
2014-02-25eldap: Prepare for releaseHans Nilsson
2014-02-25ssh: Prepare for releaseHans Nilsson
2014-02-25inets: Prepare for releaseHans Nilsson
2014-02-25eldap: Prepare for releaseHans Nilsson
2014-02-25Merge branch 'ia/ssl/prepare-for-release'Ingela Anderton Andin
* ia/ssl/prepare-for-release: ssl: Prepare for release
2014-02-25ssl: Prepare for releaseIngela Anderton Andin
2014-02-25Merge branch 'kostis/hipe-tests-bs/OTP-11748'Henrik Nord
* kostis/hipe-tests-bs/OTP-11748: Up the time limit (globally) for some slow machines Add check so that tests are skipped if HiPE is not available Add a Makefile for the HiPE tests Add tests for the HiPE compiler (Part 1: binaries and bitstrings)
2014-02-25Correct a contract in the igor moduleHans Bolinder
Thanks Kostis.
2014-02-24Merge branch 'anders/diameter/grouped_decode/OTP-11675'Anders Svensson
* anders/diameter/grouped_decode/OTP-11675: Be lenient with the M-bit in Grouped AVPs
2014-02-24Be lenient with the M-bit in Grouped AVPsAnders Svensson
RFC 6733 says this, in 4.4: Receivers of a Grouped AVP that does not have the 'M' (mandatory) bit set and one or more of the encapsulated AVPs within the group has the 'M' (mandatory) bit set MAY simply be ignored if the Grouped AVP itself is unrecognized. The rule applies even if the encapsulated AVP with its 'M' (mandatory) bit set is further encapsulated within other sub-groups, i.e., other Grouped AVPs embedded within the Grouped AVP. The first sentence is mangled but take it to mean this: An unrecognized AVP of type Grouped that does not set the 'M' bit MAY be ignored even if one of its encapsulated AVPs sets the 'M' bit. This is a bit of a non-statement since if the AVP is unrecognized then its type is unknown. We therefore don't know that its data bytes contain encapsulated AVPs, so can't but ignore any of those that set the M-bit. Doing anything else when the type *is* known would be inconsistent. OTP-11087 (commit 066544fa) caused the M-bit on any unrecognized AVP to be regarded as an error, unrecognized being taken to mean "not explicitly defined as a member of its container". (That is, an AVP that can't be packed into a dedicated record field, which is slightly stronger than "not defined".) This fixed the original intention for top-level AVPs but broke the required leniency for Grouped AVPs whose type is known. This commit restores the leniency. Note that dictionary files need to be recompiled for the commit to have effect. Thanks to Rory McKeown for reporting the problem.
2014-02-24Up the time limit (globally) for some slow machinesKostis Sagonas
2014-02-24Add check so that tests are skipped if HiPE is not availableKostis Sagonas
2014-02-24Add a Makefile for the HiPE testsKostis Sagonas
2014-02-24Merge branch 'lukas/erts/float_encoding/OTP-11738'Lukas Larsson
* lukas/erts/float_encoding/OTP-11738: erts: Set default external enc to use new float scheme
2014-02-24Merge branch 'bjorn/gs/warnings'Björn Gustavsson
* bjorn/gs/warnings: gs: Turn compiler warnings into errors gs: Eliminate a compiler warning
2014-02-24Add tests for the HiPE compiler (Part 1: binaries and bitstrings)Kostis Sagonas
Create tests for the HiPE native code compiler. This is the first part of the effort and contains tests that check that the native code produced by the HiPE compiler for binaries and bitstrings is OK and behaves similarly to the code produced by the BEAM compiler.
2014-02-24gs: Turn compiler warnings into errorsBjörn Gustavsson
2014-02-24Merge branch 'lukas/ose/master/OTP-11334'Lukas Larsson
* lukas/ose/master/OTP-11334: (71 commits) erts: Fix unix efile assert ose: Use -O2 when building ose: Expand OSE docs ose: Add dummy ttsl driver ose: Cleanup cleanup of mutex selection defines ose: Polish mmap configure checks ose: Add ose specific x-compile flags ose: Updating fd_driver and spawn_driver for OSE ose: Updating event and signal API for OSE ose: Cleanup of mutex selection defines win32: Compile erl_log.exe ose: Remove uneccesary define ose: Fix ssl configure test for osx erts: Fix sys_msg_dispatcher assert ose: Fix broken doc links ose: Thread priorities configurable from lmconf ose: Yielding the cpu is done "the OSE" way ose: Start using ppdata for tse key ose: Do not use spinlocks on OSE ose: Fix support for crypto ... Conflicts: lib/crypto/c_src/crypto.c
2014-02-24gs: Eliminate a compiler warningBjörn Gustavsson
We don't want to introduce a potential incompatibility in a deprecated application, so we will fix the warning by removing the dead code that causes the warning.