Age | Commit message (Collapse) | Author |
|
|
|
|
|
An on_load function is supposed to return 'true' to indicate
that the module should be loaded, and 'false' if it should be
unloaded. But returning any other term, as well as causing an
exception, will also unload the module.
Since we don't like boolean values mixed with other values,
change the expected return value as follows:
* If 'ok' is returned, the module will remain loaded and become
callable.
* If any other value is returned (or an exception is generated),
the module will be unloaded. Also, if the returned value is
not an atom, send a warning message to the error_logger
(using error_logger:warning_msg/2).
The new interpretation of the return value means that an on_load
function can now directly return the return value from
erlang:load_nif/2.
|
|
The following code (by Simon Cornish)
bad(XDo1, XDo2, Do3) ->
Do1 = (XDo1 =/= []),
Do2 = (XDo2 =/= []),
CH1 = if Do1 == true;
Do1 == false,Do2==false,Do3 == blah ->
ch1;
true ->
no
end,
CH2 = if Do1 == true;
Do1 == false,Do2==false,Do3 == xx ->
ch2;
true ->
no
end,
{CH1,CH2}.
is optimized by beam_bool even though the optimization is not
safe. The trouble is that an assignment to {y,0} no longer
occurs on all paths leading to its use.
The bug is in dst_regs/2 which is supposed to return a set
of all registers assigned in a code block, but it ignores
registers assigned in 'move' instructions.
Fix the bug by taking 'move' instructions into account. This change
is safe since it can only cause more registers to be added
to the MustBeKilled and MustBeUnused sets in ensure_opt_safe/6,
which means that it can only cause the optimization to be turned
off for code that used to be optimized.
|
|
new mandatory configuration variable that replaces all other
previously mandatory configuration variables, and better
documentation. Note that old cross compilation configurations
cannot be used without modifications.
For more information see the $ERL_TOP/xcomp/README file.
|
|
* po/blowfish_ecb_cbc_ofb-rebased:
Add Blowfish tests
Add Blowfish ECB, CBC and OFB modes
OTP-8331 The crypto module now supports Blowfish in ECB, CBC and OFB
modes. (Thanks to Paul Oliver.)
|
|
|
|
My previous patch added CFB mode. This patch adds all remaining
Blowfish modes. According to the man page
http://www.fifi.org/cgi-bin/man2html/usr/share/man/man3/blowfish.3ssl.gz
these are available in all versions of OpenSSL.
[ Squashed in elimination of signed/unsigned compiler warnings. /bg ]
|
|
|
|
* bg/slimmer-history:
beam_makepos: Do not put any dates in generated files
compiler: Teach 'slim' to omit compilation info
|
|
The following code crashes beam_bool:
bad(XDo1, XDo2, Do3) ->
Do1 = (XDo1 =/= []),
Do2 = (XDo2 =/= []),
if Do1 =:= true;
Do1 =:= false, Do2 =:= false, Do3 =:= delete ->
no
end.
(Reported by Simon Cornish; minimized by Kostis Sagonas.)
For the moment fix the bug in the simplest and safest way possible
(basically, instead of crashing just don't do the optimization).
In a future major release (e.g. R14), the following improvements
could be considered:
* In beam_bool, it should be possible to move the Do1 and Do2
expressions to the pre-block and still optimize the expression
in the 'if' statement.
* In sys_core_fold, it should be possible to eliminate the
try/catch around the guard expression in the 'if', because
none of the guard tests can actually fail.
|
|
|
|
We don't want to have dates in files that are checked-in as
part of the bootstrap compiler (such as beam_opcodes.{erl,hrl})
as a new version will be created every time.
|
|
The original intention for the undocumented 'slim' option was
to omit non-essential parts of *.beam files to reduce the
size of the primary bootstrap. Therefore, debug information and
local function information (only used by xref, not by the loader)
are omitted, but information about the compilation time and
compiler version are still included.
Including compilation information is troublesome, however, when
committing the bootstrap into a revision control system, because
every beam file is guaranteed to be changed every time the bootstrap
is updated.
Therefore, change the 'slim' option to also omit compilation
information.
|
|
|
|
NIF function prototypes in order to allow more than 3 function
arguments. Also an incompatible change in the return value of
erlang:load_nif/2. Added support for references, floats and term
comparison in NIFs. Read more in the documentation of erl_nif and
erlang:load_nif/2.
|
|
Debug trace output for connection activity could be enabled
setting the trace level as an integer to the EI_TRACELEVEL
environment variable. This option could also be read and set from
a running program using ei_get_tracelevel(void) and
ei_set_tracelevel(int).
|
|
NIF function prototypes in order to allow more than 3 function
arguments. Also an incompatible change in the return value of
erlang:load_nif/2. Added support for references, floats and term
comparison in NIFs. Read more in the documentation of erl_nif and
erlang:load_nif/2.
|
|
The .gitignore files ignores everything in the bootstrap/bin
directory, includ checked-in *.boot and *.script files.
That makes it impossible to check in updates to those files
without using the -f (force option) with "git add".
Fix this by adding a negated pattern for script and boot files.
|
|
* ay/split_binary_docfix:
documentation: Fix erlang:split_binary/2 Pos argument
|
|
Debug trace output for connection activity could be enabled
setting the trace level as an integer to the EI_TRACELEVEL
environment variable. This option could also be read and set from
a running program using ei_get_tracelevel(void) and
ei_set_tracelevel(int).
|
|
The correct value for the second argument to erlang:split_binary/2
(Pos) is 0, not 1.
|
|
|
|
|
|
* dgud/wx_filedialog_bug:
The generated updates, of the previous fix.
Fixed generation of wxFileDialog:getPaths/1.
OTP-8330 Corrected incorrectly generated wxFileDialog:getPaths/1. Reported
by Jason/hornja.
|
|
|
|
|
|
* mh/to_erl-error-messages:
to_erl: Include strerror(errno) in error messages
OTP-8325 to_erl will now include the system error string in error messages
to make it easier to understand what the real problem is. (Thanks
to Magnus Henoch.)
|
|
|
|
* sv/sys_get_status:
Teach sys:get_status/1,2 to call Mod:format_status/2
gen_fsm: Fix format_status/2 to handle Pids
OTP-8324 The ability for the gen_server and gen_fsm callback modules to
format their own state for display under the sys:get_status/1,2
calls has been restored and documented. (Thanks to Steve
Vinoski.)
|
|
|
|
|
|
|
|
|
|
erl_eterm.xml.
|
|
|
|
|
|
In the transition from SGML to XML (several releases ago),
bugs were introduced in the documentation, for instance
"\n" replaced by newlines. Correct those bugs.
Also correct double backslashes. They seem to have been introduced very
early in the development of OTP. According to Lars they "solved" a bug
in the generation of HTML &c. Now that standard tools are used instead
of docbuilder, the bug has become visible.
|
|
Restore the ability for gen_server and gen_fsm callback
modules to format their own state for display under the
sys:get_status/1,2 calls.
This ability is extremely useful for new behavior modules
based on gen_server or gen_fsm, so that they can display
their status in a more meaningful way than just dumping
the state record. It is also generally useful for applications
wanting to display their gen_server or gen_fsm callback module
state in something other than the default manner.
Also document the previously undocumented the
gen_server:format_status/2 and gen_fsm:format_status/2 optional
callback functions that, if exported by the callback module, are
invoked when sys:get_status/1,2 are called.
Add unit tests to ensure that format_status/2 functions exported
from a gen_fsm callback module and a gen_server callback module
are called when sys:get_status/1,2 are called.
|
|
The MIB compiler in the snmp applications formats its warnings slightly
differently, so we'll need to update the regexp that should match the
expected output.
|
|
short-circuit expressions in guards.
|
|
* ks/dialyzer-wx-fix:
dialyzer: make -wx always start the SMP emulator
|
|
* bg/make_stub_module-fix:
Fix glitches when native code modules are used
|
|
* bg/on_load-types:
Add type information for on_load
|
|
* egil/readme-debug-emulator:
README: Add build instructions for a debug-enabled emulator
|
|
* ng/readme:
Clean up formatting issues in the README
|
|
Note that although the copyright markers may seem ugly,
they must be there to facilitate automatic updating of
the copyright text.
|
|
|
|
The erlang:make_stub_module/3 BIF (which is only used for
loading native code) does not zero the word that points out
an on_load routine (if any). As that word most proably will
contain a non-zero value, the erlang:module_loaded/1 BIF will
think that the module has an on_load routine which has not
returned and will always return 'false'. That in turns causes
various problems for the native code test cases.
|
|
gen_fsm:format_status/2 currently crashes if Name in the process
state is a Pid.
Handle Name in the same way as in gen_server:format_status/2
to eliminate the crash.
|