Age | Commit message (Collapse) | Author |
|
* bjorn/parallel-make/OTP-9451: (28 commits)
erl_interface: Support parallel make
dialyzer: Remove special-case build in the top Makefile
pcre: Rename Makefile.in to pcre.mk and include it
cos*/src/Makefile: Support parallel make
ic: Support parallel make
orber: Support parallel make
.gitignore: Ignore IDL-GENERATED
public_key: Support parallel make
ssh: Support parallel make
os_mon: Support parallel make
diameter: Support parallel make
snmp: Support parallel make
megaco: Support parallel make
megaco/src/flex/Makefile.in: Support parallel make
*/c_src/Makefile*: Support parallel make
eunit: Support parallel make
gs: Support parallel make
common_test Makefile: Support parallel make
erts/emulator/Makefile.in: Support parallel make
erts: Fix dependency generation
...
|
|
|
|
There used to be a requirement that Dialyzer was build at the
very end. Since this requirement has been dropped, remove the
special-case build targets for Dialyzer in the top-level
Makefile.
|
|
To avoid issues with parallel make and to slightly speed up the
build process, avoid a recursive make by replacing pcre/Makefile.in
with pcre/pcre.mk and including it from the main emulator Makefile.
|
|
|
|
|
|
|
|
One input file that generate multiple output file are tricky to
handle in make. One way is to use a stand-in to represent all the
other generated files.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
|