Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
|
|
Make sure that directories are created before they are used.
I tried to use order-only prerequisites to create the directories,
but run into two problems: First, order-only prerequisites are
only implemented in Make 3.80 and later. Second, on a computer
running Solaris/Intel 2.8 (with Make 3.80), order-only prerequisites
seemed to work like ordinary prerequisites, causing targets to
be re-built if the timestamp for the directory changed.
Therefore, using a shell command to run mkdir seems to be the
more portable solution.
|
|
Create directories first, not within implicit rules. If two
'install' instances runs at the same time attempting to create
a directory, one of them may fail with an "File exists" error.
I tried to use order-only prerequisites to create the directories,
but run into two problems: First, order-only prerequisites are
only implemented in Make 3.80 and later. Second, on a computer
running Solaris/Intel 2.8 (with Make 3.80), order-only prerequisites
seemed to work like ordinary prerequisites, causing targets to
be re-built if the timestamp for the directory changed.
Therefore, using a shell command to run mkdir seems to be the
more portable solution.
|
|
|
|
|
|
Add dependecies to force the ct_line parse transform module to be
built before all other modules.
|
|
|
|
Apparantly, an invocation like "make generate depend" will run the
'generate' and 'depend' targets in parallel, even if the Makefile
contains a .NOTPARALLEL target. In this case, it will result in
incorrect dependencies since not all files have been generated when
the dependencies are computed.
Split up the single 'make' invocation to two invocations, to force the
targets to be run sequentially.
|
|
|
|
|
|
|
|
|
|
There once was a reason to have a "Makefile.otp" makefile, but
it doesn't apply any longer. Rename it to "Makefile" so that
the standard otp_subdir.mk file can be used for recursion into
sub directories.
|
|
|
|
|
|
|
|
* dev:
Fix binary construction with huge literal sizes
beam_load.c: Add overflow check of tag values
beam_makeops: Add some sanity checks
Fix construction of <<0:((1 bsl 32)-1)>>
|
|
* bjorn/erts/loader-related-bs-bugs/OTP-9284:
Fix binary construction with huge literal sizes
beam_load.c: Add overflow check of tag values
beam_makeops: Add some sanity checks
Fix construction of <<0:((1 bsl 32)-1)>>
|
|
* lukas/asn1/remove_unused_record_warnings/OTP-9448:
Remove some superflous includes which caused inlined modules to have lots of compile warnings
|
|
Constructing binaries using the bit syntax with literals sizes
that would not fit in an Uint will either cause an emulator crash
or the loading to be aborted.
Use the new TAG_o tag introduced in the previous commit to make sure
that the attempt to create huge binary literals will generate a
system_limit exception at run-time.
|
|
The handling of large values for other tags than TAG_i (integer) is
buggy. Any tag value equal to or greater than 2^40 (5 bytes) will
abort loading. Tag values fitting in 5 bytes will be truncated to 4
bytes values.
Those bugs cause real problems because the bs_init2/6 and
bs_init_bits/6 instructions unfortunately use TAG_u to encode literal
sizes (using TAG_i would have been a better choice, but it is too late
to change that now). Any binary size that cannot fit in an Uint
should cause a system_limit exception at run-time, but instead the
buggy handling will either cause an emulator crash (for values in the
range 2^32 to 2^40-1) or abort loading.
In this commit, implement overflow checking of tag values as a
preparation for fixing the binary construction instructions. If any
tag value cannot fit in an Uint (except for TAG_i), change the
tag to the special TAG_o overflow tag.
|
|
We want to make sure that a tag/type name is not defined more than
once and that we don't define too many primitive tags. Primitive
tags must be named with lowercase letters (or they will be confused
with variable names in transformations in the ops.tab file).
|
|
Attempting to construct <<0:((1 bsl 32)-1)>>, the largest bitstring
allowed in a 32 bit emulator, would cause an emulator crash because
of integer overflow.
Fix the problem by using an Uint64 to avoid integer overflow.
Do not attempt to handle construction of <<0:((1 bsl 64)-1>> in
a 64-bit emulator, because that will certainly cause the emulator
to terminate anyway because of insufficient memory.
|
|
compile warnings
|
|
* lukas/asn1/ber_encode_nif/OTP-9441:
Update to use enif_alloc instead of malloc
Make performance code more generic and migrate per/ber NBAP perormance suites to use the generic code
Update code genaration to call nif/erlang depending on what is configured
Remove export_all and only export is_nif_loadable
Add documentation for ber encode nif optmization
Fix bug in counting length of empty composite types
Fix bug where composite types with more then one element would be encoded in reverse
Add pubkey performance tests
Update ber encode nif to use a linked list memry buffer
Create a nif for ber encode
Extract generic is_nif_loadable function from decode
|
|
|
|
suites to use the generic code
|
|
|
|
|
|
|
|
|
|
reverse
|
|
Add performance tests for cert_pem and dsa_pem. These tests are not
automatically when testing asn1.
|
|
The encoded ber binary is now a linked list of memory buffers which
is written to from the back while allocating more segments as needed
|
|
|
|
|
|
* lukas/public_key/use_asn1_nif/OTP-9414:
Both encode and decode nifs are now available in the asn1rt
Start using asn1 nifs for OTP-PUB-KEY.asn1 asn1 will use an erlang fallback if the nifs are not found
|
|
* lukas/asn1/driver_to_nifs/OTP-9419: (26 commits)
Update decode_open_type to use nifs if configured to do so
Add -deprecated attributes
Update tag to be ints instead of longs
Update asn1 nif to handle calls with an empty binary
Add obsolete warning for driver option
Correct mistake in driver -> nif translation
Cannot be a binary as decode creates tuples
Remove DRIVER target from opt target
Update documentation with replacement of driver with nif
return 0 as error code when an unknown error happens
Remove all modules relating to drivers and make all functions obsolete.
Remove driver support for per encoding Handle the new error messages from the asn1 nifs Remove dead code for erlang optimized per decode
Remove driver support for ber decoding Handle the new error messages from the asn1 nifs Make ber nif decoding use the erlang fallback if the nif could not be loaded. This is useful for application which use inline (such as public_key) and want to work without the nifs, but should use them if they exist
Add load, upgrade and purge functions for asn1 nifs
Add better error messages to nifs
Exclude nif module from cover
Expand per and ber performance suites with parallel asn1 runs
Add documentation for nif interface
Fix bootstrap problem
Add nif vs driver vs erlang performance tests for per encode and ber decode. Results now suggest that nifs are 15% faster than driver for per and 5% faster for ber. Erlang is inbetween nif and driver for ber, but about 50% slower than driver for per.
...
|
|
|
|
|
|
This is in order to circumvent a bug in enif_make_ulong in R14B03 for halfword
|
|
|
|
|
|
|
|
|
|
|