diff options
242 files changed, 1356 insertions, 2471 deletions
diff --git a/.gitignore b/.gitignore index 0207d07dfe..f0636f38ef 100644 --- a/.gitignore +++ b/.gitignore @@ -1,13 +1,24 @@ # Match at any level. *~ autom4te.cache +*.beam +*.asn1db + +!/bootstrap/lib/compiler/ebin/*.beam +!/bootstrap/lib/kernel/ebin/*.beam +!/bootstrap/lib/stdlib/ebin/*.beam +!/erts/preloaded/ebin/*.beam +!/lib/*/test/*_SUITE_data/*.beam # Anchored from $ERL_TOP /bin +/config.log +/config.status -/lib/*/ebin +/bootstrap/bin/* +!/bootstrap/bin/*.script +!/bootstrap/bin/*.boot -/bootstrap/bin /bootstrap/lib/asn1 /bootstrap/lib/hipe /bootstrap/lib/ic @@ -21,3 +32,136 @@ autom4te.cache /configure /release + +# General patterns for applications in lib. +# +# Assume that all test/Emakefiles are generated. +# +# Any application with a checked-in test/Emakefile should +# use a negative pattern in its own .gitignore. + +/lib/*/ebin/*.app +/lib/*/ebin/*.appup + +/lib/*/test/Emakefile + +/lib/configure +/lib/config.log +/lib/config.status + +# +# Files generated by configure. +# + +/lib/*/configure +/lib/*/config.log +/lib/*/config.status + +# common_test + +/lib/common_test/priv/install.sh + +# compiler +/lib/compiler/src/beam_opcodes.erl +/lib/compiler/src/beam_opcodes.hrl +/lib/compiler/src/core_parse.erl + +/lib/compiler/test/*_r11_SUITE.erl +/lib/compiler/test/*_no_opt_SUITE.erl +/lib/compiler/test/*_post_opt_SUITE.erl + +# edoc + +/lib/edoc/priv/edoc_generate + +# gs + +/lib/gs/src/gstk_generic.hrl +/lib/gs/contribs/ebin/*.gif +/lib/gs/contribs/ebin/*.tool + +# hipe + +/lib/hipe/main/hipe.hrl + +# ic + +/lib/ic/examples/pre_post_condition/m.hrl +/lib/ic/examples/pre_post_condition/m_i.erl +/lib/ic/examples/pre_post_condition/m_i.hrl +/lib/ic/examples/pre_post_condition/m_NotAnInteger.erl +/lib/ic/examples/pre_post_condition/oe_ex.erl +/lib/ic/examples/pre_post_condition/oe_ex.hrl +/lib/ic/priv/com/ +/lib/ic/priv/ic.jar +/lib/ic/src/icparse.erl + +# jinterface + +/lib/jinterface/priv/OtpErlang.jar +/lib/jinterface/priv/com/ + +# kernel + +/lib/kernel/src/inet_dns_record_adts.hrl + +# otp_mibs + +/lib/otp_mibs/include/[A-Z]*.hrl +/lib/otp_mibs/mibs/v1/OTP*.mib.v1 +/lib/otp_mibs/priv/mibs/OTP*.bin + +# os_mon + +/lib/os_mon/include/[A-Z]*.hrl +/lib/os_mon/mibs/v1/OTP*.mib.v1 +/lib/os_mon/priv/mibs/OTP*.bin + +# public_key + +/lib/public_key/asn1/*.asn1db +/lib/public_key/asn1/*.erl +/lib/public_key/asn1/*.hrl +/lib/public_key/include/OTP-PUB-KEY.hrl + +# ssh + +/lib/ssh/src/*.asn1db +/lib/ssh/src/DSS.erl +/lib/ssh/src/DSS.hrl +/lib/ssh/src/PKCS-1.erl +/lib/ssh/src/PKCS-1.hrl + +# ssl + +/lib/ssl/pkix/*.asn1db +/lib/ssl/examples/certs/done +/lib/ssl/examples/certs/ebin/make_certs.beam +/lib/ssl/examples/certs/etc/ +/lib/ssl/include/OTP-PKIX.hrl +/lib/ssl/pkix/OTP-PKIX.erl +/lib/ssl/pkix/OTP-PKIX.hrl +/lib/ssl/pkix/ssl_pkix_oid.erl + +# snmp + +/lib/snmp/bin/snmp-v2tov1 +/lib/snmp/examples/ex1/EX1-MIB.bin +/lib/snmp/mibs/Makefile +/lib/snmp/mibs/v1/OTP-SNMPEA-MIB.mib.v1 +/lib/snmp/src/compile/snmpc_mib_gram.erl +/lib/snmp/include/[A-Z]*.hrl +/lib/snmp/priv/mibs/[A-Z]*.bin + +# test_server +/lib/test_server/src/configure + +# wx +/lib/wx/c_src/Makefile +/lib/wx/config.mk + +# xmerl + +/lib/xmerl/src/xmerl_sax_parser_*.erl +/lib/xmerl/src/xmerl_b64Bin.erl +/lib/xmerl/src/xmerl_xpath_parse.erl diff --git a/bootstrap/bin/start.boot b/bootstrap/bin/start.boot Binary files differindex c64535c35f..4153fa1087 100644 --- a/bootstrap/bin/start.boot +++ b/bootstrap/bin/start.boot diff --git a/bootstrap/bin/start.script b/bootstrap/bin/start.script index a9a0de4d7f..2dc0773e3d 100644 --- a/bootstrap/bin/start.script +++ b/bootstrap/bin/start.script @@ -1,6 +1,6 @@ -%% script generated at {2009,11,16} {16,51,54} +%% script generated at {2009,12,11} {10,39,19} {script, - {"OTP APN 181 01","R13B03"}, + {"OTP APN 181 01","R13B04"}, [{preLoaded, [erl_prim_loader,erlang,init,otp_ring0,prim_file,prim_inet,prim_zip, zlib]}, @@ -43,7 +43,7 @@ {application_controller,start, [{application,kernel, [{description,"ERTS CXC 138 10"}, - {vsn,"2.13.4"}, + {vsn,"2.13.5"}, {id,[]}, {modules, [application,application_controller,application_master, @@ -80,7 +80,7 @@ {application,load, [{application,stdlib, [{description,"ERTS CXC 138 10"}, - {vsn,"1.16.4"}, + {vsn,"1.16.5"}, {id,[]}, {modules, [array,base64,beam_lib,c,calendar,dets,dets_server, diff --git a/bootstrap/bin/start_clean.boot b/bootstrap/bin/start_clean.boot Binary files differindex c64535c35f..4153fa1087 100644 --- a/bootstrap/bin/start_clean.boot +++ b/bootstrap/bin/start_clean.boot diff --git a/bootstrap/bin/start_clean.script b/bootstrap/bin/start_clean.script index a9a0de4d7f..2dc0773e3d 100644 --- a/bootstrap/bin/start_clean.script +++ b/bootstrap/bin/start_clean.script @@ -1,6 +1,6 @@ -%% script generated at {2009,11,16} {16,51,54} +%% script generated at {2009,12,11} {10,39,19} {script, - {"OTP APN 181 01","R13B03"}, + {"OTP APN 181 01","R13B04"}, [{preLoaded, [erl_prim_loader,erlang,init,otp_ring0,prim_file,prim_inet,prim_zip, zlib]}, @@ -43,7 +43,7 @@ {application_controller,start, [{application,kernel, [{description,"ERTS CXC 138 10"}, - {vsn,"2.13.4"}, + {vsn,"2.13.5"}, {id,[]}, {modules, [application,application_controller,application_master, @@ -80,7 +80,7 @@ {application,load, [{application,stdlib, [{description,"ERTS CXC 138 10"}, - {vsn,"1.16.4"}, + {vsn,"1.16.5"}, {id,[]}, {modules, [array,base64,beam_lib,c,calendar,dets,dets_server, diff --git a/bootstrap/lib/compiler/ebin/beam_asm.beam b/bootstrap/lib/compiler/ebin/beam_asm.beam Binary files differindex 4c344fb55b..1c2783cc14 100644 --- a/bootstrap/lib/compiler/ebin/beam_asm.beam +++ b/bootstrap/lib/compiler/ebin/beam_asm.beam diff --git a/bootstrap/lib/compiler/ebin/beam_block.beam b/bootstrap/lib/compiler/ebin/beam_block.beam Binary files differindex 4aec75add0..2b2b569026 100644 --- a/bootstrap/lib/compiler/ebin/beam_block.beam +++ b/bootstrap/lib/compiler/ebin/beam_block.beam diff --git a/bootstrap/lib/compiler/ebin/beam_bool.beam b/bootstrap/lib/compiler/ebin/beam_bool.beam Binary files differindex 36ea808338..685b19983d 100644 --- a/bootstrap/lib/compiler/ebin/beam_bool.beam +++ b/bootstrap/lib/compiler/ebin/beam_bool.beam diff --git a/bootstrap/lib/compiler/ebin/beam_bsm.beam b/bootstrap/lib/compiler/ebin/beam_bsm.beam Binary files differindex 5134dae164..73b165e574 100644 --- a/bootstrap/lib/compiler/ebin/beam_bsm.beam +++ b/bootstrap/lib/compiler/ebin/beam_bsm.beam diff --git a/bootstrap/lib/compiler/ebin/beam_clean.beam b/bootstrap/lib/compiler/ebin/beam_clean.beam Binary files differindex fd6502fd3f..d43e6210bf 100644 --- a/bootstrap/lib/compiler/ebin/beam_clean.beam +++ b/bootstrap/lib/compiler/ebin/beam_clean.beam diff --git a/bootstrap/lib/compiler/ebin/beam_dead.beam b/bootstrap/lib/compiler/ebin/beam_dead.beam Binary files differindex fc938961d2..bdba7d1bfd 100644 --- a/bootstrap/lib/compiler/ebin/beam_dead.beam +++ b/bootstrap/lib/compiler/ebin/beam_dead.beam diff --git a/bootstrap/lib/compiler/ebin/beam_dict.beam b/bootstrap/lib/compiler/ebin/beam_dict.beam Binary files differindex 88949a4d5f..61d74bb393 100644 --- a/bootstrap/lib/compiler/ebin/beam_dict.beam +++ b/bootstrap/lib/compiler/ebin/beam_dict.beam diff --git a/bootstrap/lib/compiler/ebin/beam_disasm.beam b/bootstrap/lib/compiler/ebin/beam_disasm.beam Binary files differindex 61f2255751..9b43e250c0 100644 --- a/bootstrap/lib/compiler/ebin/beam_disasm.beam +++ b/bootstrap/lib/compiler/ebin/beam_disasm.beam diff --git a/bootstrap/lib/compiler/ebin/beam_flatten.beam b/bootstrap/lib/compiler/ebin/beam_flatten.beam Binary files differindex 9a9bfbeba6..b8ed6402bf 100644 --- a/bootstrap/lib/compiler/ebin/beam_flatten.beam +++ b/bootstrap/lib/compiler/ebin/beam_flatten.beam diff --git a/bootstrap/lib/compiler/ebin/beam_jump.beam b/bootstrap/lib/compiler/ebin/beam_jump.beam Binary files differindex 3d7e8743b1..523c7bfefe 100644 --- a/bootstrap/lib/compiler/ebin/beam_jump.beam +++ b/bootstrap/lib/compiler/ebin/beam_jump.beam diff --git a/bootstrap/lib/compiler/ebin/beam_listing.beam b/bootstrap/lib/compiler/ebin/beam_listing.beam Binary files differindex daa551e458..a68dd78e6c 100644 --- a/bootstrap/lib/compiler/ebin/beam_listing.beam +++ b/bootstrap/lib/compiler/ebin/beam_listing.beam diff --git a/bootstrap/lib/compiler/ebin/beam_opcodes.beam b/bootstrap/lib/compiler/ebin/beam_opcodes.beam Binary files differindex d3d8d2f9bb..adbcacff53 100644 --- a/bootstrap/lib/compiler/ebin/beam_opcodes.beam +++ b/bootstrap/lib/compiler/ebin/beam_opcodes.beam diff --git a/bootstrap/lib/compiler/ebin/beam_peep.beam b/bootstrap/lib/compiler/ebin/beam_peep.beam Binary files differindex 3bbceac19f..9fcb2536c8 100644 --- a/bootstrap/lib/compiler/ebin/beam_peep.beam +++ b/bootstrap/lib/compiler/ebin/beam_peep.beam diff --git a/bootstrap/lib/compiler/ebin/beam_trim.beam b/bootstrap/lib/compiler/ebin/beam_trim.beam Binary files differindex f6cf5d15e1..74b0cec2f6 100644 --- a/bootstrap/lib/compiler/ebin/beam_trim.beam +++ b/bootstrap/lib/compiler/ebin/beam_trim.beam diff --git a/bootstrap/lib/compiler/ebin/beam_type.beam b/bootstrap/lib/compiler/ebin/beam_type.beam Binary files differindex 31a6c465bb..3f281d5d01 100644 --- a/bootstrap/lib/compiler/ebin/beam_type.beam +++ b/bootstrap/lib/compiler/ebin/beam_type.beam diff --git a/bootstrap/lib/compiler/ebin/beam_utils.beam b/bootstrap/lib/compiler/ebin/beam_utils.beam Binary files differindex b66406ca68..51975f77d4 100644 --- a/bootstrap/lib/compiler/ebin/beam_utils.beam +++ b/bootstrap/lib/compiler/ebin/beam_utils.beam diff --git a/bootstrap/lib/compiler/ebin/beam_validator.beam b/bootstrap/lib/compiler/ebin/beam_validator.beam Binary files differindex 4d6742225e..f4226ef519 100644 --- a/bootstrap/lib/compiler/ebin/beam_validator.beam +++ b/bootstrap/lib/compiler/ebin/beam_validator.beam diff --git a/bootstrap/lib/compiler/ebin/cerl.beam b/bootstrap/lib/compiler/ebin/cerl.beam Binary files differindex c1ecd06293..b210f4e49b 100644 --- a/bootstrap/lib/compiler/ebin/cerl.beam +++ b/bootstrap/lib/compiler/ebin/cerl.beam diff --git a/bootstrap/lib/compiler/ebin/cerl_clauses.beam b/bootstrap/lib/compiler/ebin/cerl_clauses.beam Binary files differindex 41ed5b6b54..662f42259f 100644 --- a/bootstrap/lib/compiler/ebin/cerl_clauses.beam +++ b/bootstrap/lib/compiler/ebin/cerl_clauses.beam diff --git a/bootstrap/lib/compiler/ebin/cerl_inline.beam b/bootstrap/lib/compiler/ebin/cerl_inline.beam Binary files differindex a20bccbed9..30926f66ca 100644 --- a/bootstrap/lib/compiler/ebin/cerl_inline.beam +++ b/bootstrap/lib/compiler/ebin/cerl_inline.beam diff --git a/bootstrap/lib/compiler/ebin/cerl_trees.beam b/bootstrap/lib/compiler/ebin/cerl_trees.beam Binary files differindex 66c5759506..49fb42c1c6 100644 --- a/bootstrap/lib/compiler/ebin/cerl_trees.beam +++ b/bootstrap/lib/compiler/ebin/cerl_trees.beam diff --git a/bootstrap/lib/compiler/ebin/compile.beam b/bootstrap/lib/compiler/ebin/compile.beam Binary files differindex d988dd86cf..1e711b2461 100644 --- a/bootstrap/lib/compiler/ebin/compile.beam +++ b/bootstrap/lib/compiler/ebin/compile.beam diff --git a/bootstrap/lib/compiler/ebin/compiler.app b/bootstrap/lib/compiler/ebin/compiler.app index 3d32ec6954..d5e7956176 100644 --- a/bootstrap/lib/compiler/ebin/compiler.app +++ b/bootstrap/lib/compiler/ebin/compiler.app @@ -18,7 +18,7 @@ {application, compiler, [{description, "ERTS CXC 138 10"}, - {vsn, "4.6.3"}, + {vsn, "4.6.4"}, {modules, [ beam_asm, beam_block, diff --git a/bootstrap/lib/compiler/ebin/compiler.appup b/bootstrap/lib/compiler/ebin/compiler.appup index aa81bde536..224c761cc2 100644 --- a/bootstrap/lib/compiler/ebin/compiler.appup +++ b/bootstrap/lib/compiler/ebin/compiler.appup @@ -1 +1 @@ -{"4.6.3",[],[]}. +{"4.6.4",[],[]}. diff --git a/bootstrap/lib/compiler/ebin/core_lib.beam b/bootstrap/lib/compiler/ebin/core_lib.beam Binary files differindex 8e0c11ab54..254d3375e0 100644 --- a/bootstrap/lib/compiler/ebin/core_lib.beam +++ b/bootstrap/lib/compiler/ebin/core_lib.beam diff --git a/bootstrap/lib/compiler/ebin/core_lint.beam b/bootstrap/lib/compiler/ebin/core_lint.beam Binary files differindex b944183f28..892268bc79 100644 --- a/bootstrap/lib/compiler/ebin/core_lint.beam +++ b/bootstrap/lib/compiler/ebin/core_lint.beam diff --git a/bootstrap/lib/compiler/ebin/core_parse.beam b/bootstrap/lib/compiler/ebin/core_parse.beam Binary files differindex c8a3945ad9..19202ce827 100644 --- a/bootstrap/lib/compiler/ebin/core_parse.beam +++ b/bootstrap/lib/compiler/ebin/core_parse.beam diff --git a/bootstrap/lib/compiler/ebin/core_pp.beam b/bootstrap/lib/compiler/ebin/core_pp.beam Binary files differindex dc0fcb477c..94baecf93c 100644 --- a/bootstrap/lib/compiler/ebin/core_pp.beam +++ b/bootstrap/lib/compiler/ebin/core_pp.beam diff --git a/bootstrap/lib/compiler/ebin/core_scan.beam b/bootstrap/lib/compiler/ebin/core_scan.beam Binary files differindex b920703e07..d9a088f4c6 100644 --- a/bootstrap/lib/compiler/ebin/core_scan.beam +++ b/bootstrap/lib/compiler/ebin/core_scan.beam diff --git a/bootstrap/lib/compiler/ebin/erl_bifs.beam b/bootstrap/lib/compiler/ebin/erl_bifs.beam Binary files differindex add028e992..8132234cb1 100644 --- a/bootstrap/lib/compiler/ebin/erl_bifs.beam +++ b/bootstrap/lib/compiler/ebin/erl_bifs.beam diff --git a/bootstrap/lib/compiler/ebin/rec_env.beam b/bootstrap/lib/compiler/ebin/rec_env.beam Binary files differindex 5eb4e658c4..9e3d93482e 100644 --- a/bootstrap/lib/compiler/ebin/rec_env.beam +++ b/bootstrap/lib/compiler/ebin/rec_env.beam diff --git a/bootstrap/lib/compiler/ebin/sys_core_dsetel.beam b/bootstrap/lib/compiler/ebin/sys_core_dsetel.beam Binary files differindex 8529721a53..28663aea47 100644 --- a/bootstrap/lib/compiler/ebin/sys_core_dsetel.beam +++ b/bootstrap/lib/compiler/ebin/sys_core_dsetel.beam diff --git a/bootstrap/lib/compiler/ebin/sys_core_fold.beam b/bootstrap/lib/compiler/ebin/sys_core_fold.beam Binary files differindex 72b6fe41dc..cff47f2997 100644 --- a/bootstrap/lib/compiler/ebin/sys_core_fold.beam +++ b/bootstrap/lib/compiler/ebin/sys_core_fold.beam diff --git a/bootstrap/lib/compiler/ebin/sys_core_inline.beam b/bootstrap/lib/compiler/ebin/sys_core_inline.beam Binary files differindex 98b5aa587d..610f6e25cc 100644 --- a/bootstrap/lib/compiler/ebin/sys_core_inline.beam +++ b/bootstrap/lib/compiler/ebin/sys_core_inline.beam diff --git a/bootstrap/lib/compiler/ebin/sys_expand_pmod.beam b/bootstrap/lib/compiler/ebin/sys_expand_pmod.beam Binary files differindex 9affce0919..e755328d2d 100644 --- a/bootstrap/lib/compiler/ebin/sys_expand_pmod.beam +++ b/bootstrap/lib/compiler/ebin/sys_expand_pmod.beam diff --git a/bootstrap/lib/compiler/ebin/sys_pre_attributes.beam b/bootstrap/lib/compiler/ebin/sys_pre_attributes.beam Binary files differindex 01e0b77e53..9708cff55e 100644 --- a/bootstrap/lib/compiler/ebin/sys_pre_attributes.beam +++ b/bootstrap/lib/compiler/ebin/sys_pre_attributes.beam diff --git a/bootstrap/lib/compiler/ebin/sys_pre_expand.beam b/bootstrap/lib/compiler/ebin/sys_pre_expand.beam Binary files differindex 77720809bc..a5a0a3d6ac 100644 --- a/bootstrap/lib/compiler/ebin/sys_pre_expand.beam +++ b/bootstrap/lib/compiler/ebin/sys_pre_expand.beam diff --git a/bootstrap/lib/compiler/ebin/v3_codegen.beam b/bootstrap/lib/compiler/ebin/v3_codegen.beam Binary files differindex 7eafc0f119..4417a91407 100644 --- a/bootstrap/lib/compiler/ebin/v3_codegen.beam +++ b/bootstrap/lib/compiler/ebin/v3_codegen.beam diff --git a/bootstrap/lib/compiler/ebin/v3_core.beam b/bootstrap/lib/compiler/ebin/v3_core.beam Binary files differindex 3c8a67ee88..111753213e 100644 --- a/bootstrap/lib/compiler/ebin/v3_core.beam +++ b/bootstrap/lib/compiler/ebin/v3_core.beam diff --git a/bootstrap/lib/compiler/ebin/v3_kernel.beam b/bootstrap/lib/compiler/ebin/v3_kernel.beam Binary files differindex 683d004187..ca4bb278e1 100644 --- a/bootstrap/lib/compiler/ebin/v3_kernel.beam +++ b/bootstrap/lib/compiler/ebin/v3_kernel.beam diff --git a/bootstrap/lib/compiler/ebin/v3_kernel_pp.beam b/bootstrap/lib/compiler/ebin/v3_kernel_pp.beam Binary files differindex e8fa77539b..c72919dc97 100644 --- a/bootstrap/lib/compiler/ebin/v3_kernel_pp.beam +++ b/bootstrap/lib/compiler/ebin/v3_kernel_pp.beam diff --git a/bootstrap/lib/compiler/ebin/v3_life.beam b/bootstrap/lib/compiler/ebin/v3_life.beam Binary files differindex b6b1885cfd..59a6797138 100644 --- a/bootstrap/lib/compiler/ebin/v3_life.beam +++ b/bootstrap/lib/compiler/ebin/v3_life.beam diff --git a/bootstrap/lib/compiler/egen/beam_opcodes.erl b/bootstrap/lib/compiler/egen/beam_opcodes.erl index ea74760bb3..6adbe4c7c7 100644 --- a/bootstrap/lib/compiler/egen/beam_opcodes.erl +++ b/bootstrap/lib/compiler/egen/beam_opcodes.erl @@ -1,6 +1,6 @@ -module(beam_opcodes). -%% Warning: Do not edit this file. It was automatically -%% generated by 'beam_makeops' on Mon Nov 16 12:53:08 2009. +%% Warning: Do not edit this file. +%% Auto-generated by 'beam_makeops'. -export([format_number/0]). -export([opcode/2,opname/1]). @@ -8,7 +8,7 @@ -spec format_number() -> 0. format_number() -> 0. --spec opcode(atom(), 0..8) -> 1..148. +-spec opcode(atom(), 0..8) -> 1..149. opcode(label, 1) -> 1; opcode(func_info, 3) -> 2; opcode(int_code_end, 0) -> 3; @@ -157,9 +157,10 @@ opcode(bs_put_utf8, 3) -> 145; opcode(bs_utf16_size, 3) -> 146; opcode(bs_put_utf16, 3) -> 147; opcode(bs_put_utf32, 3) -> 148; +opcode(on_load, 0) -> 149; opcode(Name, Arity) -> erlang:error(badarg, [Name,Arity]). --spec opname(1..148) -> {atom(),0..8}. +-spec opname(1..149) -> {atom(),0..8}. opname(1) -> {label,1}; opname(2) -> {func_info,3}; opname(3) -> {int_code_end,0}; @@ -308,4 +309,5 @@ opname(145) -> {bs_put_utf8,3}; opname(146) -> {bs_utf16_size,3}; opname(147) -> {bs_put_utf16,3}; opname(148) -> {bs_put_utf32,3}; +opname(149) -> {on_load,0}; opname(Number) -> erlang:error(badarg, [Number]). diff --git a/bootstrap/lib/compiler/egen/beam_opcodes.hrl b/bootstrap/lib/compiler/egen/beam_opcodes.hrl index 0bb6a426c1..6ad7d17118 100644 --- a/bootstrap/lib/compiler/egen/beam_opcodes.hrl +++ b/bootstrap/lib/compiler/egen/beam_opcodes.hrl @@ -1,5 +1,5 @@ -%% Warning: Do not edit this file. It was automatically -%% generated by 'beam_makeops' on Mon Nov 16 12:53:08 2009. +%% Warning: Do not edit this file. +%% Auto-generated by 'beam_makeops'. -define(tag_u, 0). -define(tag_i, 1). diff --git a/bootstrap/lib/compiler/egen/core_parse.erl b/bootstrap/lib/compiler/egen/core_parse.erl index 3ff8e05af3..f20cda3d04 100644 --- a/bootstrap/lib/compiler/egen/core_parse.erl +++ b/bootstrap/lib/compiler/egen/core_parse.erl @@ -13,7 +13,7 @@ tok_val(T) -> element(3, T). tok_line(T) -> element(2, T). --file("/usr/local/otp/releases/otp_beam_linux_sles10_i386_r13b02_patched/lib/parsetools-2.0/include/yeccpre.hrl", 0). +-file("/usr/local/otp/releases/sles10_32_R13B03_patched/lib/parsetools-2.0.1/include/yeccpre.hrl", 0). %% %% %CopyrightBegin% %% diff --git a/bootstrap/lib/kernel/ebin/application.beam b/bootstrap/lib/kernel/ebin/application.beam Binary files differindex 86dd678c43..3414e8bcc4 100644 --- a/bootstrap/lib/kernel/ebin/application.beam +++ b/bootstrap/lib/kernel/ebin/application.beam diff --git a/bootstrap/lib/kernel/ebin/application_controller.beam b/bootstrap/lib/kernel/ebin/application_controller.beam Binary files differindex 29177d44e1..4cb6bc6b7e 100644 --- a/bootstrap/lib/kernel/ebin/application_controller.beam +++ b/bootstrap/lib/kernel/ebin/application_controller.beam diff --git a/bootstrap/lib/kernel/ebin/application_master.beam b/bootstrap/lib/kernel/ebin/application_master.beam Binary files differindex aa902b6c02..1d82fcd682 100644 --- a/bootstrap/lib/kernel/ebin/application_master.beam +++ b/bootstrap/lib/kernel/ebin/application_master.beam diff --git a/bootstrap/lib/kernel/ebin/application_starter.beam b/bootstrap/lib/kernel/ebin/application_starter.beam Binary files differindex 580be006a4..542ef99f18 100644 --- a/bootstrap/lib/kernel/ebin/application_starter.beam +++ b/bootstrap/lib/kernel/ebin/application_starter.beam diff --git a/bootstrap/lib/kernel/ebin/auth.beam b/bootstrap/lib/kernel/ebin/auth.beam Binary files differindex c547e567cd..9fc133efe7 100644 --- a/bootstrap/lib/kernel/ebin/auth.beam +++ b/bootstrap/lib/kernel/ebin/auth.beam diff --git a/bootstrap/lib/kernel/ebin/code.beam b/bootstrap/lib/kernel/ebin/code.beam Binary files differindex 176c79bf31..105de39d21 100644 --- a/bootstrap/lib/kernel/ebin/code.beam +++ b/bootstrap/lib/kernel/ebin/code.beam diff --git a/bootstrap/lib/kernel/ebin/code_server.beam b/bootstrap/lib/kernel/ebin/code_server.beam Binary files differindex 3fb6b1f97f..94cb67bcf6 100644 --- a/bootstrap/lib/kernel/ebin/code_server.beam +++ b/bootstrap/lib/kernel/ebin/code_server.beam diff --git a/bootstrap/lib/kernel/ebin/disk_log.beam b/bootstrap/lib/kernel/ebin/disk_log.beam Binary files differindex 3d806e177d..86927f1125 100644 --- a/bootstrap/lib/kernel/ebin/disk_log.beam +++ b/bootstrap/lib/kernel/ebin/disk_log.beam diff --git a/bootstrap/lib/kernel/ebin/disk_log_1.beam b/bootstrap/lib/kernel/ebin/disk_log_1.beam Binary files differindex 239b1e7ee4..942e1188ac 100644 --- a/bootstrap/lib/kernel/ebin/disk_log_1.beam +++ b/bootstrap/lib/kernel/ebin/disk_log_1.beam diff --git a/bootstrap/lib/kernel/ebin/disk_log_server.beam b/bootstrap/lib/kernel/ebin/disk_log_server.beam Binary files differindex 021b1e68a2..46d7a9f546 100644 --- a/bootstrap/lib/kernel/ebin/disk_log_server.beam +++ b/bootstrap/lib/kernel/ebin/disk_log_server.beam diff --git a/bootstrap/lib/kernel/ebin/disk_log_sup.beam b/bootstrap/lib/kernel/ebin/disk_log_sup.beam Binary files differindex 3d426eb8c3..a98998064d 100644 --- a/bootstrap/lib/kernel/ebin/disk_log_sup.beam +++ b/bootstrap/lib/kernel/ebin/disk_log_sup.beam diff --git a/bootstrap/lib/kernel/ebin/dist_ac.beam b/bootstrap/lib/kernel/ebin/dist_ac.beam Binary files differindex 25345c80d9..61110f17f6 100644 --- a/bootstrap/lib/kernel/ebin/dist_ac.beam +++ b/bootstrap/lib/kernel/ebin/dist_ac.beam diff --git a/bootstrap/lib/kernel/ebin/dist_util.beam b/bootstrap/lib/kernel/ebin/dist_util.beam Binary files differindex 48497a8524..d823f8d5c6 100644 --- a/bootstrap/lib/kernel/ebin/dist_util.beam +++ b/bootstrap/lib/kernel/ebin/dist_util.beam diff --git a/bootstrap/lib/kernel/ebin/erl_boot_server.beam b/bootstrap/lib/kernel/ebin/erl_boot_server.beam Binary files differindex 6aed4ffb1d..52d638fb32 100644 --- a/bootstrap/lib/kernel/ebin/erl_boot_server.beam +++ b/bootstrap/lib/kernel/ebin/erl_boot_server.beam diff --git a/bootstrap/lib/kernel/ebin/erl_ddll.beam b/bootstrap/lib/kernel/ebin/erl_ddll.beam Binary files differindex 8728cc1027..81daa5376b 100644 --- a/bootstrap/lib/kernel/ebin/erl_ddll.beam +++ b/bootstrap/lib/kernel/ebin/erl_ddll.beam diff --git a/bootstrap/lib/kernel/ebin/erl_distribution.beam b/bootstrap/lib/kernel/ebin/erl_distribution.beam Binary files differindex 23e1b9ca19..d4e52d01a9 100644 --- a/bootstrap/lib/kernel/ebin/erl_distribution.beam +++ b/bootstrap/lib/kernel/ebin/erl_distribution.beam diff --git a/bootstrap/lib/kernel/ebin/erl_epmd.beam b/bootstrap/lib/kernel/ebin/erl_epmd.beam Binary files differindex 8d1b1ac016..9ba74e3303 100644 --- a/bootstrap/lib/kernel/ebin/erl_epmd.beam +++ b/bootstrap/lib/kernel/ebin/erl_epmd.beam diff --git a/bootstrap/lib/kernel/ebin/erl_reply.beam b/bootstrap/lib/kernel/ebin/erl_reply.beam Binary files differindex 23abde7ea3..97b027a67d 100644 --- a/bootstrap/lib/kernel/ebin/erl_reply.beam +++ b/bootstrap/lib/kernel/ebin/erl_reply.beam diff --git a/bootstrap/lib/kernel/ebin/error_handler.beam b/bootstrap/lib/kernel/ebin/error_handler.beam Binary files differindex 42316bebf5..e97e1d214f 100644 --- a/bootstrap/lib/kernel/ebin/error_handler.beam +++ b/bootstrap/lib/kernel/ebin/error_handler.beam diff --git a/bootstrap/lib/kernel/ebin/error_logger.beam b/bootstrap/lib/kernel/ebin/error_logger.beam Binary files differindex 2020fce100..c89e4d36c9 100644 --- a/bootstrap/lib/kernel/ebin/error_logger.beam +++ b/bootstrap/lib/kernel/ebin/error_logger.beam diff --git a/bootstrap/lib/kernel/ebin/erts_debug.beam b/bootstrap/lib/kernel/ebin/erts_debug.beam Binary files differindex 7f4c62ace8..26288e0633 100644 --- a/bootstrap/lib/kernel/ebin/erts_debug.beam +++ b/bootstrap/lib/kernel/ebin/erts_debug.beam diff --git a/bootstrap/lib/kernel/ebin/file.beam b/bootstrap/lib/kernel/ebin/file.beam Binary files differindex 035cb98e00..0f11da59e1 100644 --- a/bootstrap/lib/kernel/ebin/file.beam +++ b/bootstrap/lib/kernel/ebin/file.beam diff --git a/bootstrap/lib/kernel/ebin/file_io_server.beam b/bootstrap/lib/kernel/ebin/file_io_server.beam Binary files differindex e59b45caab..93e19d9463 100644 --- a/bootstrap/lib/kernel/ebin/file_io_server.beam +++ b/bootstrap/lib/kernel/ebin/file_io_server.beam diff --git a/bootstrap/lib/kernel/ebin/file_server.beam b/bootstrap/lib/kernel/ebin/file_server.beam Binary files differindex 50e2867373..7b9075b3ae 100644 --- a/bootstrap/lib/kernel/ebin/file_server.beam +++ b/bootstrap/lib/kernel/ebin/file_server.beam diff --git a/bootstrap/lib/kernel/ebin/gen_sctp.beam b/bootstrap/lib/kernel/ebin/gen_sctp.beam Binary files differindex 9f0c1725c4..18ecaff05f 100644 --- a/bootstrap/lib/kernel/ebin/gen_sctp.beam +++ b/bootstrap/lib/kernel/ebin/gen_sctp.beam diff --git a/bootstrap/lib/kernel/ebin/gen_tcp.beam b/bootstrap/lib/kernel/ebin/gen_tcp.beam Binary files differindex 54ccc02e9d..fa87a6726b 100644 --- a/bootstrap/lib/kernel/ebin/gen_tcp.beam +++ b/bootstrap/lib/kernel/ebin/gen_tcp.beam diff --git a/bootstrap/lib/kernel/ebin/gen_udp.beam b/bootstrap/lib/kernel/ebin/gen_udp.beam Binary files differindex 8115d9f2de..5af947d638 100644 --- a/bootstrap/lib/kernel/ebin/gen_udp.beam +++ b/bootstrap/lib/kernel/ebin/gen_udp.beam diff --git a/bootstrap/lib/kernel/ebin/global.beam b/bootstrap/lib/kernel/ebin/global.beam Binary files differindex a458113179..6f576b3cb2 100644 --- a/bootstrap/lib/kernel/ebin/global.beam +++ b/bootstrap/lib/kernel/ebin/global.beam diff --git a/bootstrap/lib/kernel/ebin/global_group.beam b/bootstrap/lib/kernel/ebin/global_group.beam Binary files differindex ac5d1c3318..6e9d6e8dfd 100644 --- a/bootstrap/lib/kernel/ebin/global_group.beam +++ b/bootstrap/lib/kernel/ebin/global_group.beam diff --git a/bootstrap/lib/kernel/ebin/global_search.beam b/bootstrap/lib/kernel/ebin/global_search.beam Binary files differindex 95a698ba11..8270772543 100644 --- a/bootstrap/lib/kernel/ebin/global_search.beam +++ b/bootstrap/lib/kernel/ebin/global_search.beam diff --git a/bootstrap/lib/kernel/ebin/group.beam b/bootstrap/lib/kernel/ebin/group.beam Binary files differindex fb28b5d83e..432eab170f 100644 --- a/bootstrap/lib/kernel/ebin/group.beam +++ b/bootstrap/lib/kernel/ebin/group.beam diff --git a/bootstrap/lib/kernel/ebin/heart.beam b/bootstrap/lib/kernel/ebin/heart.beam Binary files differindex 1ace850784..5d5017225d 100644 --- a/bootstrap/lib/kernel/ebin/heart.beam +++ b/bootstrap/lib/kernel/ebin/heart.beam diff --git a/bootstrap/lib/kernel/ebin/hipe_unified_loader.beam b/bootstrap/lib/kernel/ebin/hipe_unified_loader.beam Binary files differindex d3c41dd227..21d21208f3 100644 --- a/bootstrap/lib/kernel/ebin/hipe_unified_loader.beam +++ b/bootstrap/lib/kernel/ebin/hipe_unified_loader.beam diff --git a/bootstrap/lib/kernel/ebin/inet.beam b/bootstrap/lib/kernel/ebin/inet.beam Binary files differindex f4cef6d22a..d12f0a57a9 100644 --- a/bootstrap/lib/kernel/ebin/inet.beam +++ b/bootstrap/lib/kernel/ebin/inet.beam diff --git a/bootstrap/lib/kernel/ebin/inet6_sctp.beam b/bootstrap/lib/kernel/ebin/inet6_sctp.beam Binary files differindex ba82ab572a..0e71998ed9 100644 --- a/bootstrap/lib/kernel/ebin/inet6_sctp.beam +++ b/bootstrap/lib/kernel/ebin/inet6_sctp.beam diff --git a/bootstrap/lib/kernel/ebin/inet6_tcp.beam b/bootstrap/lib/kernel/ebin/inet6_tcp.beam Binary files differindex 37d381a23c..c573bc2821 100644 --- a/bootstrap/lib/kernel/ebin/inet6_tcp.beam +++ b/bootstrap/lib/kernel/ebin/inet6_tcp.beam diff --git a/bootstrap/lib/kernel/ebin/inet6_tcp_dist.beam b/bootstrap/lib/kernel/ebin/inet6_tcp_dist.beam Binary files differindex 3224a4364b..c83a3246eb 100644 --- a/bootstrap/lib/kernel/ebin/inet6_tcp_dist.beam +++ b/bootstrap/lib/kernel/ebin/inet6_tcp_dist.beam diff --git a/bootstrap/lib/kernel/ebin/inet6_udp.beam b/bootstrap/lib/kernel/ebin/inet6_udp.beam Binary files differindex 229a74076a..74cbff87c0 100644 --- a/bootstrap/lib/kernel/ebin/inet6_udp.beam +++ b/bootstrap/lib/kernel/ebin/inet6_udp.beam diff --git a/bootstrap/lib/kernel/ebin/inet_config.beam b/bootstrap/lib/kernel/ebin/inet_config.beam Binary files differindex 8092ed88ed..5b93d653f7 100644 --- a/bootstrap/lib/kernel/ebin/inet_config.beam +++ b/bootstrap/lib/kernel/ebin/inet_config.beam diff --git a/bootstrap/lib/kernel/ebin/inet_db.beam b/bootstrap/lib/kernel/ebin/inet_db.beam Binary files differindex fcd69f8b57..14e0e57729 100644 --- a/bootstrap/lib/kernel/ebin/inet_db.beam +++ b/bootstrap/lib/kernel/ebin/inet_db.beam diff --git a/bootstrap/lib/kernel/ebin/inet_dns.beam b/bootstrap/lib/kernel/ebin/inet_dns.beam Binary files differindex ebeb74e0f0..59e8936722 100644 --- a/bootstrap/lib/kernel/ebin/inet_dns.beam +++ b/bootstrap/lib/kernel/ebin/inet_dns.beam diff --git a/bootstrap/lib/kernel/ebin/inet_gethost_native.beam b/bootstrap/lib/kernel/ebin/inet_gethost_native.beam Binary files differindex 089ce665e1..aaaecc8577 100644 --- a/bootstrap/lib/kernel/ebin/inet_gethost_native.beam +++ b/bootstrap/lib/kernel/ebin/inet_gethost_native.beam diff --git a/bootstrap/lib/kernel/ebin/inet_hosts.beam b/bootstrap/lib/kernel/ebin/inet_hosts.beam Binary files differindex 04f3b8be5c..03a48175dd 100644 --- a/bootstrap/lib/kernel/ebin/inet_hosts.beam +++ b/bootstrap/lib/kernel/ebin/inet_hosts.beam diff --git a/bootstrap/lib/kernel/ebin/inet_parse.beam b/bootstrap/lib/kernel/ebin/inet_parse.beam Binary files differindex 2e37fba5b3..3315aab31f 100644 --- a/bootstrap/lib/kernel/ebin/inet_parse.beam +++ b/bootstrap/lib/kernel/ebin/inet_parse.beam diff --git a/bootstrap/lib/kernel/ebin/inet_res.beam b/bootstrap/lib/kernel/ebin/inet_res.beam Binary files differindex fbbca5afca..3b6f72aaa0 100644 --- a/bootstrap/lib/kernel/ebin/inet_res.beam +++ b/bootstrap/lib/kernel/ebin/inet_res.beam diff --git a/bootstrap/lib/kernel/ebin/inet_sctp.beam b/bootstrap/lib/kernel/ebin/inet_sctp.beam Binary files differindex 190badd423..0372452973 100644 --- a/bootstrap/lib/kernel/ebin/inet_sctp.beam +++ b/bootstrap/lib/kernel/ebin/inet_sctp.beam diff --git a/bootstrap/lib/kernel/ebin/inet_tcp.beam b/bootstrap/lib/kernel/ebin/inet_tcp.beam Binary files differindex f49abf5447..59abaedf6e 100644 --- a/bootstrap/lib/kernel/ebin/inet_tcp.beam +++ b/bootstrap/lib/kernel/ebin/inet_tcp.beam diff --git a/bootstrap/lib/kernel/ebin/inet_tcp_dist.beam b/bootstrap/lib/kernel/ebin/inet_tcp_dist.beam Binary files differindex 94c08abebe..07f6ad2521 100644 --- a/bootstrap/lib/kernel/ebin/inet_tcp_dist.beam +++ b/bootstrap/lib/kernel/ebin/inet_tcp_dist.beam diff --git a/bootstrap/lib/kernel/ebin/inet_udp.beam b/bootstrap/lib/kernel/ebin/inet_udp.beam Binary files differindex f05dfda304..2ac9537087 100644 --- a/bootstrap/lib/kernel/ebin/inet_udp.beam +++ b/bootstrap/lib/kernel/ebin/inet_udp.beam diff --git a/bootstrap/lib/kernel/ebin/kernel.app b/bootstrap/lib/kernel/ebin/kernel.app index fae87d3189..c6abc267b1 100644 --- a/bootstrap/lib/kernel/ebin/kernel.app +++ b/bootstrap/lib/kernel/ebin/kernel.app @@ -21,7 +21,7 @@ {application, kernel, [ {description, "ERTS CXC 138 10"}, - {vsn, "2.13.4"}, + {vsn, "2.13.5"}, {modules, [application, application_controller, application_master, diff --git a/bootstrap/lib/kernel/ebin/kernel.appup b/bootstrap/lib/kernel/ebin/kernel.appup index 2d1ae9302c..c5c34877ef 100644 --- a/bootstrap/lib/kernel/ebin/kernel.appup +++ b/bootstrap/lib/kernel/ebin/kernel.appup @@ -1 +1 @@ -{"2.13.4",[],[]}. +{"2.13.5",[],[]}. diff --git a/bootstrap/lib/kernel/ebin/kernel.beam b/bootstrap/lib/kernel/ebin/kernel.beam Binary files differindex b7fe9fa50a..3eea9dda68 100644 --- a/bootstrap/lib/kernel/ebin/kernel.beam +++ b/bootstrap/lib/kernel/ebin/kernel.beam diff --git a/bootstrap/lib/kernel/ebin/kernel_config.beam b/bootstrap/lib/kernel/ebin/kernel_config.beam Binary files differindex 58ed8d19e6..b291058d1a 100644 --- a/bootstrap/lib/kernel/ebin/kernel_config.beam +++ b/bootstrap/lib/kernel/ebin/kernel_config.beam diff --git a/bootstrap/lib/kernel/ebin/net.beam b/bootstrap/lib/kernel/ebin/net.beam Binary files differindex fbadd77eb4..21df570be5 100644 --- a/bootstrap/lib/kernel/ebin/net.beam +++ b/bootstrap/lib/kernel/ebin/net.beam diff --git a/bootstrap/lib/kernel/ebin/net_adm.beam b/bootstrap/lib/kernel/ebin/net_adm.beam Binary files differindex e5ad2e8665..02b6c8b486 100644 --- a/bootstrap/lib/kernel/ebin/net_adm.beam +++ b/bootstrap/lib/kernel/ebin/net_adm.beam diff --git a/bootstrap/lib/kernel/ebin/net_kernel.beam b/bootstrap/lib/kernel/ebin/net_kernel.beam Binary files differindex cacbf28d42..50b4c7ac4c 100644 --- a/bootstrap/lib/kernel/ebin/net_kernel.beam +++ b/bootstrap/lib/kernel/ebin/net_kernel.beam diff --git a/bootstrap/lib/kernel/ebin/os.beam b/bootstrap/lib/kernel/ebin/os.beam Binary files differindex 74e824234b..aed29ac5ab 100644 --- a/bootstrap/lib/kernel/ebin/os.beam +++ b/bootstrap/lib/kernel/ebin/os.beam diff --git a/bootstrap/lib/kernel/ebin/packages.beam b/bootstrap/lib/kernel/ebin/packages.beam Binary files differindex b2f2f3876f..710fc55908 100644 --- a/bootstrap/lib/kernel/ebin/packages.beam +++ b/bootstrap/lib/kernel/ebin/packages.beam diff --git a/bootstrap/lib/kernel/ebin/pg2.beam b/bootstrap/lib/kernel/ebin/pg2.beam Binary files differindex aab5132bab..efb224f375 100644 --- a/bootstrap/lib/kernel/ebin/pg2.beam +++ b/bootstrap/lib/kernel/ebin/pg2.beam diff --git a/bootstrap/lib/kernel/ebin/ram_file.beam b/bootstrap/lib/kernel/ebin/ram_file.beam Binary files differindex 7f89c819b4..f9488df846 100644 --- a/bootstrap/lib/kernel/ebin/ram_file.beam +++ b/bootstrap/lib/kernel/ebin/ram_file.beam diff --git a/bootstrap/lib/kernel/ebin/rpc.beam b/bootstrap/lib/kernel/ebin/rpc.beam Binary files differindex 714bbd974c..879f938be0 100644 --- a/bootstrap/lib/kernel/ebin/rpc.beam +++ b/bootstrap/lib/kernel/ebin/rpc.beam diff --git a/bootstrap/lib/kernel/ebin/seq_trace.beam b/bootstrap/lib/kernel/ebin/seq_trace.beam Binary files differindex 138dabd4bc..ce4f50c6f3 100644 --- a/bootstrap/lib/kernel/ebin/seq_trace.beam +++ b/bootstrap/lib/kernel/ebin/seq_trace.beam diff --git a/bootstrap/lib/kernel/ebin/standard_error.beam b/bootstrap/lib/kernel/ebin/standard_error.beam Binary files differindex bf0864d7ef..32554b1b73 100644 --- a/bootstrap/lib/kernel/ebin/standard_error.beam +++ b/bootstrap/lib/kernel/ebin/standard_error.beam diff --git a/bootstrap/lib/kernel/ebin/user.beam b/bootstrap/lib/kernel/ebin/user.beam Binary files differindex ed5f753bf2..b9cf728e93 100644 --- a/bootstrap/lib/kernel/ebin/user.beam +++ b/bootstrap/lib/kernel/ebin/user.beam diff --git a/bootstrap/lib/kernel/ebin/user_drv.beam b/bootstrap/lib/kernel/ebin/user_drv.beam Binary files differindex 9ee84fbe9f..3feffb9332 100644 --- a/bootstrap/lib/kernel/ebin/user_drv.beam +++ b/bootstrap/lib/kernel/ebin/user_drv.beam diff --git a/bootstrap/lib/kernel/ebin/user_sup.beam b/bootstrap/lib/kernel/ebin/user_sup.beam Binary files differindex dfd2cdc2b5..5632210843 100644 --- a/bootstrap/lib/kernel/ebin/user_sup.beam +++ b/bootstrap/lib/kernel/ebin/user_sup.beam diff --git a/bootstrap/lib/kernel/ebin/wrap_log_reader.beam b/bootstrap/lib/kernel/ebin/wrap_log_reader.beam Binary files differindex c6c230f689..cdb87c3fd5 100644 --- a/bootstrap/lib/kernel/ebin/wrap_log_reader.beam +++ b/bootstrap/lib/kernel/ebin/wrap_log_reader.beam diff --git a/bootstrap/lib/stdlib/ebin/array.beam b/bootstrap/lib/stdlib/ebin/array.beam Binary files differindex 1c42860910..a3049ae953 100644 --- a/bootstrap/lib/stdlib/ebin/array.beam +++ b/bootstrap/lib/stdlib/ebin/array.beam diff --git a/bootstrap/lib/stdlib/ebin/base64.beam b/bootstrap/lib/stdlib/ebin/base64.beam Binary files differindex 4f05f8923a..101ffc3904 100644 --- a/bootstrap/lib/stdlib/ebin/base64.beam +++ b/bootstrap/lib/stdlib/ebin/base64.beam diff --git a/bootstrap/lib/stdlib/ebin/beam_lib.beam b/bootstrap/lib/stdlib/ebin/beam_lib.beam Binary files differindex 8ad4dbb149..58123d66be 100644 --- a/bootstrap/lib/stdlib/ebin/beam_lib.beam +++ b/bootstrap/lib/stdlib/ebin/beam_lib.beam diff --git a/bootstrap/lib/stdlib/ebin/c.beam b/bootstrap/lib/stdlib/ebin/c.beam Binary files differindex bc43ffd9de..c04ba106a6 100644 --- a/bootstrap/lib/stdlib/ebin/c.beam +++ b/bootstrap/lib/stdlib/ebin/c.beam diff --git a/bootstrap/lib/stdlib/ebin/calendar.beam b/bootstrap/lib/stdlib/ebin/calendar.beam Binary files differindex 4e7558cda0..715eed8dd9 100644 --- a/bootstrap/lib/stdlib/ebin/calendar.beam +++ b/bootstrap/lib/stdlib/ebin/calendar.beam diff --git a/bootstrap/lib/stdlib/ebin/dets.beam b/bootstrap/lib/stdlib/ebin/dets.beam Binary files differindex d8dc4376b0..8b637ab064 100644 --- a/bootstrap/lib/stdlib/ebin/dets.beam +++ b/bootstrap/lib/stdlib/ebin/dets.beam diff --git a/bootstrap/lib/stdlib/ebin/dets_server.beam b/bootstrap/lib/stdlib/ebin/dets_server.beam Binary files differindex ef990f42e4..5978a933ed 100644 --- a/bootstrap/lib/stdlib/ebin/dets_server.beam +++ b/bootstrap/lib/stdlib/ebin/dets_server.beam diff --git a/bootstrap/lib/stdlib/ebin/dets_sup.beam b/bootstrap/lib/stdlib/ebin/dets_sup.beam Binary files differindex 9a2ee668fd..9bc79d6468 100644 --- a/bootstrap/lib/stdlib/ebin/dets_sup.beam +++ b/bootstrap/lib/stdlib/ebin/dets_sup.beam diff --git a/bootstrap/lib/stdlib/ebin/dets_utils.beam b/bootstrap/lib/stdlib/ebin/dets_utils.beam Binary files differindex 4dfbe15f08..36d38c4e9a 100644 --- a/bootstrap/lib/stdlib/ebin/dets_utils.beam +++ b/bootstrap/lib/stdlib/ebin/dets_utils.beam diff --git a/bootstrap/lib/stdlib/ebin/dets_v8.beam b/bootstrap/lib/stdlib/ebin/dets_v8.beam Binary files differindex 9eac024246..81d51ea402 100644 --- a/bootstrap/lib/stdlib/ebin/dets_v8.beam +++ b/bootstrap/lib/stdlib/ebin/dets_v8.beam diff --git a/bootstrap/lib/stdlib/ebin/dets_v9.beam b/bootstrap/lib/stdlib/ebin/dets_v9.beam Binary files differindex 1515b306b3..3a99f83d01 100644 --- a/bootstrap/lib/stdlib/ebin/dets_v9.beam +++ b/bootstrap/lib/stdlib/ebin/dets_v9.beam diff --git a/bootstrap/lib/stdlib/ebin/dict.beam b/bootstrap/lib/stdlib/ebin/dict.beam Binary files differindex 9739e189da..3d0b4194b6 100644 --- a/bootstrap/lib/stdlib/ebin/dict.beam +++ b/bootstrap/lib/stdlib/ebin/dict.beam diff --git a/bootstrap/lib/stdlib/ebin/digraph.beam b/bootstrap/lib/stdlib/ebin/digraph.beam Binary files differindex bc87cabcd6..41043bf729 100644 --- a/bootstrap/lib/stdlib/ebin/digraph.beam +++ b/bootstrap/lib/stdlib/ebin/digraph.beam diff --git a/bootstrap/lib/stdlib/ebin/digraph_utils.beam b/bootstrap/lib/stdlib/ebin/digraph_utils.beam Binary files differindex 7f51b3946f..e0c15a218a 100644 --- a/bootstrap/lib/stdlib/ebin/digraph_utils.beam +++ b/bootstrap/lib/stdlib/ebin/digraph_utils.beam diff --git a/bootstrap/lib/stdlib/ebin/edlin.beam b/bootstrap/lib/stdlib/ebin/edlin.beam Binary files differindex a165100727..7a2b065674 100644 --- a/bootstrap/lib/stdlib/ebin/edlin.beam +++ b/bootstrap/lib/stdlib/ebin/edlin.beam diff --git a/bootstrap/lib/stdlib/ebin/edlin_expand.beam b/bootstrap/lib/stdlib/ebin/edlin_expand.beam Binary files differindex bd0bfbec34..1719b3bb45 100644 --- a/bootstrap/lib/stdlib/ebin/edlin_expand.beam +++ b/bootstrap/lib/stdlib/ebin/edlin_expand.beam diff --git a/bootstrap/lib/stdlib/ebin/epp.beam b/bootstrap/lib/stdlib/ebin/epp.beam Binary files differindex 0433b937ea..4d072403ec 100644 --- a/bootstrap/lib/stdlib/ebin/epp.beam +++ b/bootstrap/lib/stdlib/ebin/epp.beam diff --git a/bootstrap/lib/stdlib/ebin/erl_bits.beam b/bootstrap/lib/stdlib/ebin/erl_bits.beam Binary files differindex 2270dbeae8..7b1f8bb764 100644 --- a/bootstrap/lib/stdlib/ebin/erl_bits.beam +++ b/bootstrap/lib/stdlib/ebin/erl_bits.beam diff --git a/bootstrap/lib/stdlib/ebin/erl_compile.beam b/bootstrap/lib/stdlib/ebin/erl_compile.beam Binary files differindex 761351eee6..cc4ef260d0 100644 --- a/bootstrap/lib/stdlib/ebin/erl_compile.beam +++ b/bootstrap/lib/stdlib/ebin/erl_compile.beam diff --git a/bootstrap/lib/stdlib/ebin/erl_eval.beam b/bootstrap/lib/stdlib/ebin/erl_eval.beam Binary files differindex f12c413f72..dfd10fb4bf 100644 --- a/bootstrap/lib/stdlib/ebin/erl_eval.beam +++ b/bootstrap/lib/stdlib/ebin/erl_eval.beam diff --git a/bootstrap/lib/stdlib/ebin/erl_expand_records.beam b/bootstrap/lib/stdlib/ebin/erl_expand_records.beam Binary files differindex b3486744eb..00eabdb116 100644 --- a/bootstrap/lib/stdlib/ebin/erl_expand_records.beam +++ b/bootstrap/lib/stdlib/ebin/erl_expand_records.beam diff --git a/bootstrap/lib/stdlib/ebin/erl_internal.beam b/bootstrap/lib/stdlib/ebin/erl_internal.beam Binary files differindex 3eb1cb913e..1609ae4997 100644 --- a/bootstrap/lib/stdlib/ebin/erl_internal.beam +++ b/bootstrap/lib/stdlib/ebin/erl_internal.beam diff --git a/bootstrap/lib/stdlib/ebin/erl_lint.beam b/bootstrap/lib/stdlib/ebin/erl_lint.beam Binary files differindex 138d03d2fe..08da4563a7 100644 --- a/bootstrap/lib/stdlib/ebin/erl_lint.beam +++ b/bootstrap/lib/stdlib/ebin/erl_lint.beam diff --git a/bootstrap/lib/stdlib/ebin/erl_parse.beam b/bootstrap/lib/stdlib/ebin/erl_parse.beam Binary files differindex a6ab35f0eb..2c0ce68987 100644 --- a/bootstrap/lib/stdlib/ebin/erl_parse.beam +++ b/bootstrap/lib/stdlib/ebin/erl_parse.beam diff --git a/bootstrap/lib/stdlib/ebin/erl_posix_msg.beam b/bootstrap/lib/stdlib/ebin/erl_posix_msg.beam Binary files differindex ae8abf77a2..696c854e8a 100644 --- a/bootstrap/lib/stdlib/ebin/erl_posix_msg.beam +++ b/bootstrap/lib/stdlib/ebin/erl_posix_msg.beam diff --git a/bootstrap/lib/stdlib/ebin/erl_pp.beam b/bootstrap/lib/stdlib/ebin/erl_pp.beam Binary files differindex b11a329c5c..009402ae6d 100644 --- a/bootstrap/lib/stdlib/ebin/erl_pp.beam +++ b/bootstrap/lib/stdlib/ebin/erl_pp.beam diff --git a/bootstrap/lib/stdlib/ebin/erl_scan.beam b/bootstrap/lib/stdlib/ebin/erl_scan.beam Binary files differindex 77c84d3667..73f9a4ac97 100644 --- a/bootstrap/lib/stdlib/ebin/erl_scan.beam +++ b/bootstrap/lib/stdlib/ebin/erl_scan.beam diff --git a/bootstrap/lib/stdlib/ebin/erl_tar.beam b/bootstrap/lib/stdlib/ebin/erl_tar.beam Binary files differindex 0a8f2bac4d..40d41d0202 100644 --- a/bootstrap/lib/stdlib/ebin/erl_tar.beam +++ b/bootstrap/lib/stdlib/ebin/erl_tar.beam diff --git a/bootstrap/lib/stdlib/ebin/error_logger_file_h.beam b/bootstrap/lib/stdlib/ebin/error_logger_file_h.beam Binary files differindex fc890a8408..ae5a7020ea 100644 --- a/bootstrap/lib/stdlib/ebin/error_logger_file_h.beam +++ b/bootstrap/lib/stdlib/ebin/error_logger_file_h.beam diff --git a/bootstrap/lib/stdlib/ebin/error_logger_tty_h.beam b/bootstrap/lib/stdlib/ebin/error_logger_tty_h.beam Binary files differindex a6046b084e..6065cfa8f1 100644 --- a/bootstrap/lib/stdlib/ebin/error_logger_tty_h.beam +++ b/bootstrap/lib/stdlib/ebin/error_logger_tty_h.beam diff --git a/bootstrap/lib/stdlib/ebin/escript.beam b/bootstrap/lib/stdlib/ebin/escript.beam Binary files differindex b904155ca8..20e6a25f1d 100644 --- a/bootstrap/lib/stdlib/ebin/escript.beam +++ b/bootstrap/lib/stdlib/ebin/escript.beam diff --git a/bootstrap/lib/stdlib/ebin/ets.beam b/bootstrap/lib/stdlib/ebin/ets.beam Binary files differindex b0c07bafdc..17ea23e03b 100644 --- a/bootstrap/lib/stdlib/ebin/ets.beam +++ b/bootstrap/lib/stdlib/ebin/ets.beam diff --git a/bootstrap/lib/stdlib/ebin/eval_bits.beam b/bootstrap/lib/stdlib/ebin/eval_bits.beam Binary files differindex 0feff1b3f4..de2d528f2e 100644 --- a/bootstrap/lib/stdlib/ebin/eval_bits.beam +++ b/bootstrap/lib/stdlib/ebin/eval_bits.beam diff --git a/bootstrap/lib/stdlib/ebin/file_sorter.beam b/bootstrap/lib/stdlib/ebin/file_sorter.beam Binary files differindex 20bf8a5921..c8655b18b5 100644 --- a/bootstrap/lib/stdlib/ebin/file_sorter.beam +++ b/bootstrap/lib/stdlib/ebin/file_sorter.beam diff --git a/bootstrap/lib/stdlib/ebin/filelib.beam b/bootstrap/lib/stdlib/ebin/filelib.beam Binary files differindex 158453948e..f3065882ae 100644 --- a/bootstrap/lib/stdlib/ebin/filelib.beam +++ b/bootstrap/lib/stdlib/ebin/filelib.beam diff --git a/bootstrap/lib/stdlib/ebin/filename.beam b/bootstrap/lib/stdlib/ebin/filename.beam Binary files differindex c20e4aedff..f419480f6e 100644 --- a/bootstrap/lib/stdlib/ebin/filename.beam +++ b/bootstrap/lib/stdlib/ebin/filename.beam diff --git a/bootstrap/lib/stdlib/ebin/gb_sets.beam b/bootstrap/lib/stdlib/ebin/gb_sets.beam Binary files differindex f013fcde9f..1ce3e0bd83 100644 --- a/bootstrap/lib/stdlib/ebin/gb_sets.beam +++ b/bootstrap/lib/stdlib/ebin/gb_sets.beam diff --git a/bootstrap/lib/stdlib/ebin/gb_trees.beam b/bootstrap/lib/stdlib/ebin/gb_trees.beam Binary files differindex 313dc31dee..c462bee0c1 100644 --- a/bootstrap/lib/stdlib/ebin/gb_trees.beam +++ b/bootstrap/lib/stdlib/ebin/gb_trees.beam diff --git a/bootstrap/lib/stdlib/ebin/gen.beam b/bootstrap/lib/stdlib/ebin/gen.beam Binary files differindex 18f9223677..bf09b84de6 100644 --- a/bootstrap/lib/stdlib/ebin/gen.beam +++ b/bootstrap/lib/stdlib/ebin/gen.beam diff --git a/bootstrap/lib/stdlib/ebin/gen_event.beam b/bootstrap/lib/stdlib/ebin/gen_event.beam Binary files differindex 44e9df9937..4190fae730 100644 --- a/bootstrap/lib/stdlib/ebin/gen_event.beam +++ b/bootstrap/lib/stdlib/ebin/gen_event.beam diff --git a/bootstrap/lib/stdlib/ebin/gen_fsm.beam b/bootstrap/lib/stdlib/ebin/gen_fsm.beam Binary files differindex 74557db735..d5d027ce1e 100644 --- a/bootstrap/lib/stdlib/ebin/gen_fsm.beam +++ b/bootstrap/lib/stdlib/ebin/gen_fsm.beam diff --git a/bootstrap/lib/stdlib/ebin/gen_server.beam b/bootstrap/lib/stdlib/ebin/gen_server.beam Binary files differindex cf51f0d7d4..5c2c569016 100644 --- a/bootstrap/lib/stdlib/ebin/gen_server.beam +++ b/bootstrap/lib/stdlib/ebin/gen_server.beam diff --git a/bootstrap/lib/stdlib/ebin/io.beam b/bootstrap/lib/stdlib/ebin/io.beam Binary files differindex 3ae720922d..a9f24817b3 100644 --- a/bootstrap/lib/stdlib/ebin/io.beam +++ b/bootstrap/lib/stdlib/ebin/io.beam diff --git a/bootstrap/lib/stdlib/ebin/io_lib.beam b/bootstrap/lib/stdlib/ebin/io_lib.beam Binary files differindex fa9645e487..ac3e307ecc 100644 --- a/bootstrap/lib/stdlib/ebin/io_lib.beam +++ b/bootstrap/lib/stdlib/ebin/io_lib.beam diff --git a/bootstrap/lib/stdlib/ebin/io_lib_format.beam b/bootstrap/lib/stdlib/ebin/io_lib_format.beam Binary files differindex 36afe01b19..16907bb3aa 100644 --- a/bootstrap/lib/stdlib/ebin/io_lib_format.beam +++ b/bootstrap/lib/stdlib/ebin/io_lib_format.beam diff --git a/bootstrap/lib/stdlib/ebin/io_lib_fread.beam b/bootstrap/lib/stdlib/ebin/io_lib_fread.beam Binary files differindex c35bb2456c..bebe0a6c75 100644 --- a/bootstrap/lib/stdlib/ebin/io_lib_fread.beam +++ b/bootstrap/lib/stdlib/ebin/io_lib_fread.beam diff --git a/bootstrap/lib/stdlib/ebin/io_lib_pretty.beam b/bootstrap/lib/stdlib/ebin/io_lib_pretty.beam Binary files differindex 8f301d8e9a..6b8b7a3267 100644 --- a/bootstrap/lib/stdlib/ebin/io_lib_pretty.beam +++ b/bootstrap/lib/stdlib/ebin/io_lib_pretty.beam diff --git a/bootstrap/lib/stdlib/ebin/lib.beam b/bootstrap/lib/stdlib/ebin/lib.beam Binary files differindex 58a789f963..d7e591ed35 100644 --- a/bootstrap/lib/stdlib/ebin/lib.beam +++ b/bootstrap/lib/stdlib/ebin/lib.beam diff --git a/bootstrap/lib/stdlib/ebin/lists.beam b/bootstrap/lib/stdlib/ebin/lists.beam Binary files differindex d07fe99605..ef6dcfb6ea 100644 --- a/bootstrap/lib/stdlib/ebin/lists.beam +++ b/bootstrap/lib/stdlib/ebin/lists.beam diff --git a/bootstrap/lib/stdlib/ebin/log_mf_h.beam b/bootstrap/lib/stdlib/ebin/log_mf_h.beam Binary files differindex 104665d8c4..70b887857c 100644 --- a/bootstrap/lib/stdlib/ebin/log_mf_h.beam +++ b/bootstrap/lib/stdlib/ebin/log_mf_h.beam diff --git a/bootstrap/lib/stdlib/ebin/math.beam b/bootstrap/lib/stdlib/ebin/math.beam Binary files differindex 2ccba3a266..0103016730 100644 --- a/bootstrap/lib/stdlib/ebin/math.beam +++ b/bootstrap/lib/stdlib/ebin/math.beam diff --git a/bootstrap/lib/stdlib/ebin/ms_transform.beam b/bootstrap/lib/stdlib/ebin/ms_transform.beam Binary files differindex f3717a2910..0dc991553b 100644 --- a/bootstrap/lib/stdlib/ebin/ms_transform.beam +++ b/bootstrap/lib/stdlib/ebin/ms_transform.beam diff --git a/bootstrap/lib/stdlib/ebin/orddict.beam b/bootstrap/lib/stdlib/ebin/orddict.beam Binary files differindex 50ae0da7c6..0f3850677f 100644 --- a/bootstrap/lib/stdlib/ebin/orddict.beam +++ b/bootstrap/lib/stdlib/ebin/orddict.beam diff --git a/bootstrap/lib/stdlib/ebin/ordsets.beam b/bootstrap/lib/stdlib/ebin/ordsets.beam Binary files differindex 0fa7538664..c3f2c3b7b1 100644 --- a/bootstrap/lib/stdlib/ebin/ordsets.beam +++ b/bootstrap/lib/stdlib/ebin/ordsets.beam diff --git a/bootstrap/lib/stdlib/ebin/otp_internal.beam b/bootstrap/lib/stdlib/ebin/otp_internal.beam Binary files differindex 15225ca165..f9256f3f4c 100644 --- a/bootstrap/lib/stdlib/ebin/otp_internal.beam +++ b/bootstrap/lib/stdlib/ebin/otp_internal.beam diff --git a/bootstrap/lib/stdlib/ebin/pg.beam b/bootstrap/lib/stdlib/ebin/pg.beam Binary files differindex 68dbb99b3a..aadf03ca28 100644 --- a/bootstrap/lib/stdlib/ebin/pg.beam +++ b/bootstrap/lib/stdlib/ebin/pg.beam diff --git a/bootstrap/lib/stdlib/ebin/pool.beam b/bootstrap/lib/stdlib/ebin/pool.beam Binary files differindex ad90bfb403..35c2da9051 100644 --- a/bootstrap/lib/stdlib/ebin/pool.beam +++ b/bootstrap/lib/stdlib/ebin/pool.beam diff --git a/bootstrap/lib/stdlib/ebin/proc_lib.beam b/bootstrap/lib/stdlib/ebin/proc_lib.beam Binary files differindex 121e1b3c99..c366aafadf 100644 --- a/bootstrap/lib/stdlib/ebin/proc_lib.beam +++ b/bootstrap/lib/stdlib/ebin/proc_lib.beam diff --git a/bootstrap/lib/stdlib/ebin/proplists.beam b/bootstrap/lib/stdlib/ebin/proplists.beam Binary files differindex 37f270e17d..378392c791 100644 --- a/bootstrap/lib/stdlib/ebin/proplists.beam +++ b/bootstrap/lib/stdlib/ebin/proplists.beam diff --git a/bootstrap/lib/stdlib/ebin/qlc.beam b/bootstrap/lib/stdlib/ebin/qlc.beam Binary files differindex 627cb5bafb..52490afe81 100644 --- a/bootstrap/lib/stdlib/ebin/qlc.beam +++ b/bootstrap/lib/stdlib/ebin/qlc.beam diff --git a/bootstrap/lib/stdlib/ebin/qlc_pt.beam b/bootstrap/lib/stdlib/ebin/qlc_pt.beam Binary files differindex 3595e6c4bf..7fb399a66b 100644 --- a/bootstrap/lib/stdlib/ebin/qlc_pt.beam +++ b/bootstrap/lib/stdlib/ebin/qlc_pt.beam diff --git a/bootstrap/lib/stdlib/ebin/queue.beam b/bootstrap/lib/stdlib/ebin/queue.beam Binary files differindex f9eaf4d071..19d24cfaa6 100644 --- a/bootstrap/lib/stdlib/ebin/queue.beam +++ b/bootstrap/lib/stdlib/ebin/queue.beam diff --git a/bootstrap/lib/stdlib/ebin/random.beam b/bootstrap/lib/stdlib/ebin/random.beam Binary files differindex 70418d4f35..9f2361d586 100644 --- a/bootstrap/lib/stdlib/ebin/random.beam +++ b/bootstrap/lib/stdlib/ebin/random.beam diff --git a/bootstrap/lib/stdlib/ebin/re.beam b/bootstrap/lib/stdlib/ebin/re.beam Binary files differindex b9b2c13e39..ae7bf3a734 100644 --- a/bootstrap/lib/stdlib/ebin/re.beam +++ b/bootstrap/lib/stdlib/ebin/re.beam diff --git a/bootstrap/lib/stdlib/ebin/regexp.beam b/bootstrap/lib/stdlib/ebin/regexp.beam Binary files differindex 41bb67e2b6..f45899702c 100644 --- a/bootstrap/lib/stdlib/ebin/regexp.beam +++ b/bootstrap/lib/stdlib/ebin/regexp.beam diff --git a/bootstrap/lib/stdlib/ebin/sets.beam b/bootstrap/lib/stdlib/ebin/sets.beam Binary files differindex f304c5f02d..b8ce3ebe89 100644 --- a/bootstrap/lib/stdlib/ebin/sets.beam +++ b/bootstrap/lib/stdlib/ebin/sets.beam diff --git a/bootstrap/lib/stdlib/ebin/shell.beam b/bootstrap/lib/stdlib/ebin/shell.beam Binary files differindex b05bf875e3..fc3552621d 100644 --- a/bootstrap/lib/stdlib/ebin/shell.beam +++ b/bootstrap/lib/stdlib/ebin/shell.beam diff --git a/bootstrap/lib/stdlib/ebin/shell_default.beam b/bootstrap/lib/stdlib/ebin/shell_default.beam Binary files differindex f41802634f..aa600600d0 100644 --- a/bootstrap/lib/stdlib/ebin/shell_default.beam +++ b/bootstrap/lib/stdlib/ebin/shell_default.beam diff --git a/bootstrap/lib/stdlib/ebin/slave.beam b/bootstrap/lib/stdlib/ebin/slave.beam Binary files differindex cf0268051a..cf030178ef 100644 --- a/bootstrap/lib/stdlib/ebin/slave.beam +++ b/bootstrap/lib/stdlib/ebin/slave.beam diff --git a/bootstrap/lib/stdlib/ebin/sofs.beam b/bootstrap/lib/stdlib/ebin/sofs.beam Binary files differindex e87eee5c3b..43082499bd 100644 --- a/bootstrap/lib/stdlib/ebin/sofs.beam +++ b/bootstrap/lib/stdlib/ebin/sofs.beam diff --git a/bootstrap/lib/stdlib/ebin/stdlib.app b/bootstrap/lib/stdlib/ebin/stdlib.app index 02286dada6..ff81f58bcc 100644 --- a/bootstrap/lib/stdlib/ebin/stdlib.app +++ b/bootstrap/lib/stdlib/ebin/stdlib.app @@ -19,7 +19,7 @@ %% {application, stdlib, [{description, "ERTS CXC 138 10"}, - {vsn, "1.16.4"}, + {vsn, "1.16.5"}, {modules, [array, base64, beam_lib, diff --git a/bootstrap/lib/stdlib/ebin/stdlib.appup b/bootstrap/lib/stdlib/ebin/stdlib.appup index 3e346f25a6..a52ce1a4f0 100644 --- a/bootstrap/lib/stdlib/ebin/stdlib.appup +++ b/bootstrap/lib/stdlib/ebin/stdlib.appup @@ -1 +1 @@ -{"1.16.4",[],[]}. +{"1.16.5",[],[]}. diff --git a/bootstrap/lib/stdlib/ebin/string.beam b/bootstrap/lib/stdlib/ebin/string.beam Binary files differindex 9e87b05313..3c3eaf6ed2 100644 --- a/bootstrap/lib/stdlib/ebin/string.beam +++ b/bootstrap/lib/stdlib/ebin/string.beam diff --git a/bootstrap/lib/stdlib/ebin/supervisor.beam b/bootstrap/lib/stdlib/ebin/supervisor.beam Binary files differindex 18b14a2b97..3f4952a42f 100644 --- a/bootstrap/lib/stdlib/ebin/supervisor.beam +++ b/bootstrap/lib/stdlib/ebin/supervisor.beam diff --git a/bootstrap/lib/stdlib/ebin/supervisor_bridge.beam b/bootstrap/lib/stdlib/ebin/supervisor_bridge.beam Binary files differindex ac9bffe1ba..3880293d47 100644 --- a/bootstrap/lib/stdlib/ebin/supervisor_bridge.beam +++ b/bootstrap/lib/stdlib/ebin/supervisor_bridge.beam diff --git a/bootstrap/lib/stdlib/ebin/sys.beam b/bootstrap/lib/stdlib/ebin/sys.beam Binary files differindex 14144c14e3..5a75152833 100644 --- a/bootstrap/lib/stdlib/ebin/sys.beam +++ b/bootstrap/lib/stdlib/ebin/sys.beam diff --git a/bootstrap/lib/stdlib/ebin/timer.beam b/bootstrap/lib/stdlib/ebin/timer.beam Binary files differindex d4aa4f928c..9d9d42f96d 100644 --- a/bootstrap/lib/stdlib/ebin/timer.beam +++ b/bootstrap/lib/stdlib/ebin/timer.beam diff --git a/bootstrap/lib/stdlib/ebin/unicode.beam b/bootstrap/lib/stdlib/ebin/unicode.beam Binary files differindex 78d140ee2b..66d6991283 100644 --- a/bootstrap/lib/stdlib/ebin/unicode.beam +++ b/bootstrap/lib/stdlib/ebin/unicode.beam diff --git a/bootstrap/lib/stdlib/ebin/win32reg.beam b/bootstrap/lib/stdlib/ebin/win32reg.beam Binary files differindex 30bdf10bd8..45b268ebac 100644 --- a/bootstrap/lib/stdlib/ebin/win32reg.beam +++ b/bootstrap/lib/stdlib/ebin/win32reg.beam diff --git a/bootstrap/lib/stdlib/ebin/zip.beam b/bootstrap/lib/stdlib/ebin/zip.beam Binary files differindex 33fa118852..63a03efaf0 100644 --- a/bootstrap/lib/stdlib/ebin/zip.beam +++ b/bootstrap/lib/stdlib/ebin/zip.beam diff --git a/bootstrap/lib/stdlib/egen/erl_parse.erl b/bootstrap/lib/stdlib/egen/erl_parse.erl index 754e943beb..684f65386f 100644 --- a/bootstrap/lib/stdlib/egen/erl_parse.erl +++ b/bootstrap/lib/stdlib/egen/erl_parse.erl @@ -529,7 +529,7 @@ get_attribute(L, Name) -> get_attributes(L) -> erl_scan:attributes_info(L). --file("/usr/local/otp/releases/otp_beam_linux_sles10_i386_r13b02_patched/lib/parsetools-2.0/include/yeccpre.hrl", 0). +-file("/usr/local/otp/releases/sles10_32_R13B03_patched/lib/parsetools-2.0.1/include/yeccpre.hrl", 0). %% %% %CopyrightBegin% %% diff --git a/erts/.gitignore b/erts/.gitignore new file mode 100644 index 0000000000..526d5da0b9 --- /dev/null +++ b/erts/.gitignore @@ -0,0 +1,22 @@ +/Makefile +/configure +/config.log +/config.status +/config.h.in + +/start_scripts/RELEASES.src +/start_scripts/*.rel +/start_scripts/*.boot +/start_scripts/*.script + +/etc/common/Install +/etc/common/erl.src + +/test/Emakefile +/test/*.beam + +/emulator/test/Emakefile +/emulator/test/*.beam +/emulator/test/*_no_opt_SUITE.erl + +/emulator/pcre/pcre_exec_loop_break_cases.inc diff --git a/erts/doc/src/erl_nif.xml b/erts/doc/src/erl_nif.xml index c636d65ef3..2033ba8a66 100644 --- a/erts/doc/src/erl_nif.xml +++ b/erts/doc/src/erl_nif.xml @@ -34,12 +34,14 @@ <lib>erl_nif</lib> <libsummary>API functions for an Erlang NIF library</libsummary> <description> - <warning><p>The NIF concept is introduced in R13B03 as an + <warning><p>The NIF concept was introduced in R13B03 as an EXPERIMENTAL feature. The interfaces may be changed in any way - in coming releases. The API introduced in this release is very - sparse and contains only the most basic functions to read and - write Erlang terms. - </p></warning> + in coming releases. The API is still sparse and contains only + the most basic functions to read and write Erlang terms. + </p><p><em>R13B04</em>: The function prototypes of the NIFs + have changed to expect <c>argc</c> and <c>argv</c> + arguments. The arity of a NIF is by that no longer limited to + 3.</p></warning> <p>A NIF library contains native implementation of some functions of an erlang module. The native implemented functions (NIFs) are @@ -56,7 +58,7 @@ /* niftest.c */ #include "erl_nif.h" -static ERL_NIF_TERM hello(ErlNifEnv* env) +static ERL_NIF_TERM hello(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) { return enif_make_string(env, "Hello world!"); } @@ -100,8 +102,9 @@ ok </code> <p>A better solution for a real module is to take advantage of - the new attribute <c>on_load</c> to automatically load the NIF - library when the module is loaded.</p> + the new directive <seealso + marker="doc/reference_manual:code_loading#on_load">on_load</seealso> to automatically + load the NIF library when the module is loaded.</p> <p>A loaded NIF library is tied to the Erlang module code version that loaded it. If the module is upgraded with a new version, the new code will have to load its own NIF library (or maybe choose not @@ -190,7 +193,7 @@ ok <title>DATA TYPES</title> <taglist> - <tag><marker id="ErlDrvEnv"/>ErlDrvEnv</tag> + <tag><marker id="ErlNifEnv"/>ErlNifEnv</tag> <item> <p><c>ErlNifEnv</c> contains information about the context in which a NIF call is made. This pointer should not be @@ -205,31 +208,28 @@ ok <p/> <code type="none"> typedef struct { - const char* name; - unsigned arity; - ERL_NIF_TERM (*fptr)(ErlNifEnv* env, ...); + const char* <em>name</em>; + unsigned <em>arity</em>; + ERL_NIF_TERM (*<em>fptr</em>)(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); } ErlNifFunc; </code> <p>Describes a NIF by its name, arity and implementation. <c>fptr</c> is a pointer to the function that implements the - NIF. The number of arguments must match the arity. A NIF of - arity 2 will thus look like:</p> - <p/> - <code type="none"> -ERL_NIF_TERM my_nif(ErlNifEnv* env, ERL_NIF_TERM arg1, ERL_NIF_TERM arg2) -{ - /* ... */ -} -</code> - <p>The maximum allowed arity for a NIF is 3 in current implementation.</p> + NIF. The argument <c>argv</c> of a NIF will contain the + function arguments passed to the NIF and <c>argc</c> is the + length of the array, i.e. the function arity. <c>argv[N-1]</c> + will thus denote the Nth argument to the NIF. Note that the + <c>argc</c> argument allows for the same C function to + implement several Erlang functions with different arity (but + same name probably).</p> </item> <tag><marker id="ErlNifBinary"/>ErlNifBinary</tag> <item> <p/> <code type="none"> typedef struct { - unsigned size; - unsigned char* data; + unsigned <em>size</em>; + unsigned char* <em>data</em>; } ErlNifBinary; </code> <p><c>ErlNifBinary</c> contains transient information about an @@ -249,37 +249,36 @@ typedef struct { </section> <funcs> - <func><name><ret>void*</ret><nametext>enif_get_data(ErlNifEnv* env)</nametext></name> - <fsummary>Get the private data of a NIF library</fsummary> - <desc><p>Returns the pointer to the private data that was set by <c>load</c>, <c>reload</c> or <c>upgrade</c>.</p></desc> - </func> <func><name><ret>void*</ret><nametext>enif_alloc(ErlNifEnv* env, size_t size)</nametext></name> <fsummary>Allocate dynamic memory.</fsummary> - <desc><p>Allocate memory of <c>size</c> bytes.</p></desc> - </func> - <func><name><ret>void</ret><nametext>enif_free(ErlNifEnv* env, void* ptr)</nametext></name> - <fsummary>Free dynamic memory</fsummary> - <desc><p>Free memory allocated by <c>enif_alloc</c>.</p></desc> - </func> - <func><name><ret>int</ret><nametext>enif_is_binary(ErlNifEnv* env, ERL_NIF_TERM term)</nametext></name> - <fsummary>Determine if a term is a binary</fsummary> - <desc><p>Return true if <c>term</c> is a binary</p></desc> - </func> - <func><name><ret>int</ret><nametext>enif_inspect_binary(ErlNifEnv* env, ERL_NIF_TERM bin_term, ErlNifBinary* bin)</nametext></name> - <fsummary>Inspect the content of a binary</fsummary> - <desc><p>Initialize the structure pointed to by <c>bin</c> with - transient information about the binary term - <c>bin_term</c>. Return false if <c>bin_term</c> is not a binary.</p></desc> + <desc><p>Allocate memory of <c>size</c> bytes. Return NULL if allocation failed.</p></desc> </func> <func><name><ret>int</ret><nametext>enif_alloc_binary(ErlNifEnv* env, unsigned size, ErlNifBinary* bin)</nametext></name> <fsummary>Create a new binary.</fsummary> <desc><p>Allocate a new binary of size of <c>size</c> bytes. Initialize the structure pointed to by <c>bin</c> to - refer to the allocated binary.</p></desc> + refer to the allocated binary. Return false if allocation failed.</p></desc> </func> - <func><name><ret>void</ret><nametext>enif_release_binary(ErlNifEnv* env, ErlNifBinary* bin)</nametext></name> - <fsummary>Release a binary.</fsummary> - <desc><p>Release a binary obtained from <c>enif_alloc_binary</c> or <c>enif_inspect_binary</c>.</p></desc> + <func><name><ret>int</ret><nametext>enif_compare(ErlNifEnv* env, ERL_NIF_TERM lhs, ERL_NIF_TERM rhs)</nametext></name> + <fsummary>Compare two terms</fsummary> + <desc><p>Return an integer less than, equal to, or greater than + zero if <c>lhs</c> is found, respectively, to be less than, + equal, or greater than <c>rhs</c>. Corresponds to the Erlang + operators <c>==</c>, <c>/=</c>, <c>=<</c>, <c><</c>, + <c>>=</c> and <c>></c> (but <em>not</em> <c>=:=</c> or <c>=/=</c>).</p></desc> + </func> + <func><name><ret>void</ret><nametext>enif_free(ErlNifEnv* env, void* ptr)</nametext></name> + <fsummary>Free dynamic memory</fsummary> + <desc><p>Free memory allocated by <c>enif_alloc</c>.</p></desc> + </func> + <func><name><ret>void*</ret><nametext>enif_get_data(ErlNifEnv* env)</nametext></name> + <fsummary>Get the private data of a NIF library</fsummary> + <desc><p>Return the pointer to the private data that was set by <c>load</c>, <c>reload</c> or <c>upgrade</c>.</p></desc> + </func> + <func><name><ret>int</ret><nametext>enif_get_double(ErlNifEnv* env, ERL_NIF_TERM term, double* dp)</nametext></name> + <fsummary>Read a floating-point number term.</fsummary> + <desc><p>Set <c>*dp</c> to the floating point value of + <c>term</c> or return false if <c>term</c> is not a float.</p></desc> </func> <func><name><ret>int</ret><nametext>enif_get_int(ErlNifEnv* env, ERL_NIF_TERM term, int* ip)</nametext></name> <fsummary>Read an integer term.</fsummary> @@ -287,45 +286,80 @@ typedef struct { <c>term</c> or return false if <c>term</c> is not an integer or is outside the bounds of type <c>int</c></p></desc> </func> - <func><name><ret>int</ret><nametext>enif_get_ulong(ErlNifEnv* env, ERL_NIF_TERM term, unsigned long* ip)</nametext></name> - <fsummary>Read an unsigned long integer</fsummary> - <desc><p>Set <c>*ip</c> to the unsigned long integer value of - <c>term</c> or return false if <c>term</c> is not an unsigned - integer or is outside the bounds of type <c>unsigned long</c></p></desc> - </func> <func><name><ret>int</ret><nametext>enif_get_list_cell(ErlNifEnv* env, ERL_NIF_TERM list, ERL_NIF_TERM* head, ERL_NIF_TERM* tail)</nametext></name> <fsummary>Get head and tail from a list</fsummary> <desc><p>Set <c>*head</c> and <c>*tail</c> from <c>list</c> or return false if <c>list</c> is not a non-empty list.</p></desc> </func> - <func><name><ret>ERL_NIF_TERM</ret><nametext>enif_make_binary(ErlNifEnv* env, ErlNifBinary* bin)</nametext></name> - <fsummary>Make a binary term.</fsummary> - <desc><p>Make a binary term from <c>bin</c>. Will also release - the binary.</p></desc> + <func><name><ret>int</ret><nametext>enif_get_tuple(ErlNifEnv* env, ERL_NIF_TERM term, int* arity, const ERL_NIF_TERM** array)</nametext></name> + <fsummary>Inspect the elements of a tuple.</fsummary> + <desc><p>If <c>term</c> is a tuple, set <c>*array</c> to point + to an array containing the elements of the tuple and set + <c>*arity</c> to the number of elements. Note that the array + is read-only an <c>(*array)[N-1]</c> will be the Nth element of + the tuple. <c>*array</c> is undefined if the arity of the tuple + is zero.</p><p>Return false if <c>term</c> is not a + tuple.</p></desc> </func> - <func><name><ret>ERL_NIF_TERM</ret><nametext>enif_make_badarg(ErlNifEnv* env)</nametext></name> - <fsummary>Make a badarg exception.</fsummary> - <desc><p>Make a badarg exception to be returned from a NIF.</p></desc> + <func><name><ret>int</ret><nametext>enif_get_ulong(ErlNifEnv* env, ERL_NIF_TERM term, unsigned long* ip)</nametext></name> + <fsummary>Read an unsigned integer term.</fsummary> + <desc><p>Set <c>*ip</c> to the unsigned long integer value of + <c>term</c> or return false if <c>term</c> is not an unsigned integer or is + outside the bounds of type <c>unsigned long</c></p></desc> </func> - <func><name><ret>ERL_NIF_TERM</ret><nametext>enif_make_int(ErlNifEnv* env, int i)</nametext></name> - <fsummary>Create an integer term</fsummary> - <desc><p>Create an integer term.</p></desc> + <func><name><ret>int</ret><nametext>enif_inspect_binary(ErlNifEnv* env, ERL_NIF_TERM bin_term, ErlNifBinary* bin)</nametext></name> + <fsummary>Inspect the content of a binary</fsummary> + <desc><p>Initialize the structure pointed to by <c>bin</c> with + transient information about the binary term + <c>bin_term</c>. Return false if <c>bin_term</c> is not a binary.</p></desc> </func> - <func><name><ret>ERL_NIF_TERM</ret><nametext>enif_make_ulong(ErlNifEnv* env, unsigned long i)</nametext></name> - <fsummary>Create an integer term from an unsigned long int</fsummary> - <desc><p>Create an integer term from an <c>unsigned long int</c>.</p></desc> + <func><name><ret>int</ret><nametext>enif_is_atom(ErlNifEnv* env, ERL_NIF_TERM term)</nametext></name> + <fsummary>Determine if a term is an atom</fsummary> + <desc><p>Return true if <c>term</c> is an atom.</p></desc> + </func> + <func><name><ret>int</ret><nametext>enif_is_binary(ErlNifEnv* env, ERL_NIF_TERM term)</nametext></name> + <fsummary>Determine if a term is a binary</fsummary> + <desc><p>Return true if <c>term</c> is a binary</p></desc> + </func> + <func><name><ret>int</ret><nametext>enif_is_identical(ErlNifEnv* env, ERL_NIF_TERM lhs, ERL_NIF_TERM rhs)</nametext></name> + <fsummary>Erlang operator =:=</fsummary> + <desc><p>Return true if and only if the two terms are + identical. Corresponds to the Erlang operators <c>=:=</c> and + <c>=/=</c>.</p></desc> + </func> + <func><name><ret>int</ret><nametext>enif_is_ref(ErlNifEnv* env, ERL_NIF_TERM term)</nametext></name> + <fsummary>Determine if a term is a reference</fsummary> + <desc><p>Return true if <c>term</c> is a reference.</p></desc> </func> <func><name><ret>ERL_NIF_TERM</ret><nametext>enif_make_atom(ErlNifEnv* env, const char* name)</nametext></name> <fsummary>Create an atom term</fsummary> <desc><p>Create an atom term from the C-string <c>name</c>. Atom terms may be saved and used between NIF calls.</p></desc> </func> - <func><name><ret>ERL_NIF_TERM</ret><nametext>enif_make_tuple(ErlNifEnv* env, unsigned cnt, ...)</nametext></name> - <fsummary>Create a tuple term.</fsummary> - <desc><p>Create a tuple term of arity <c>cnt</c>. Expects - <c>cnt</c> number of arguments (after <c>cnt</c>) of type ERL_NIF_TERM as the - elements of the tuple.</p></desc> + <func><name><ret>ERL_NIF_TERM</ret><nametext>enif_make_badarg(ErlNifEnv* env)</nametext></name> + <fsummary>Make a badarg exception.</fsummary> + <desc><p>Make a badarg exception to be returned from a NIF.</p></desc> + </func> + <func><name><ret>ERL_NIF_TERM</ret><nametext>enif_make_binary(ErlNifEnv* env, ErlNifBinary* bin)</nametext></name> + <fsummary>Make a binary term.</fsummary> + <desc><p>Make a binary term from <c>bin</c>. Will also release + the binary.</p></desc> + </func> + <func><name><ret>ERL_NIF_TERM</ret><nametext>enif_make_double(ErlNifEnv* env, double d)</nametext></name> + <fsummary>Create an floating-point term</fsummary> + <desc><p>Create an floating-point term from a <c>double</c>.</p></desc> + </func> + <func><name><ret>int</ret><nametext>enif_make_existing_atom(ErlNifEnv* env, const char* name, ERL_NIF_TERM* atom)</nametext></name> + <fsummary>Create an existing atom term</fsummary> + <desc><p>Try to create the term of an already existing atom from + the C-string <c>name</c>. If the atom already exist store the + term in <c>*atom</c> and return true, otherwise return + false.</p></desc> + </func> + <func><name><ret>ERL_NIF_TERM</ret><nametext>enif_make_int(ErlNifEnv* env, int i)</nametext></name> + <fsummary>Create an integer term</fsummary> + <desc><p>Create an integer term.</p></desc> </func> <func><name><ret>ERL_NIF_TERM</ret><nametext>enif_make_list(ErlNifEnv* env, unsigned cnt, ...)</nametext></name> <fsummary>Create a list term.</fsummary> @@ -337,11 +371,29 @@ typedef struct { <fsummary>Create a list cell.</fsummary> <desc><p>Create a list cell <c>[head | tail]</c>.</p></desc> </func> + <func><name><ret>ERL_NIF_TERM</ret><nametext>enif_make_ref(ErlNifEnv* env)</nametext></name> + <fsummary>Create a reference.</fsummary> + <desc><p>Create a reference like <seealso marker="erlang#make_ref-0">erlang:make_ref/0</seealso>.</p></desc> + </func> <func><name><ret>ERL_NIF_TERM</ret><nametext>enif_make_string(ErlNifEnv* env, const char* string)</nametext></name> <fsummary>Create a string.</fsummary> - <desc><p>Creates a list containing the characters of the + <desc><p>Create a list containing the characters of the C-string <c>string</c>.</p></desc> </func> + <func><name><ret>ERL_NIF_TERM</ret><nametext>enif_make_tuple(ErlNifEnv* env, unsigned cnt, ...)</nametext></name> + <fsummary>Create a tuple term.</fsummary> + <desc><p>Create a tuple term of arity <c>cnt</c>. Expects + <c>cnt</c> number of arguments (after <c>cnt</c>) of type ERL_NIF_TERM as the + elements of the tuple.</p></desc> + </func> + <func><name><ret>ERL_NIF_TERM</ret><nametext>enif_make_ulong(ErlNifEnv* env, unsigned long i)</nametext></name> + <fsummary>Create an integer term from an unsigned long int</fsummary> + <desc><p>Create an integer term from an <c>unsigned long int</c>.</p></desc> + </func> + <func><name><ret>void</ret><nametext>enif_release_binary(ErlNifEnv* env, ErlNifBinary* bin)</nametext></name> + <fsummary>Release a binary.</fsummary> + <desc><p>Release a binary obtained from <c>enif_alloc_binary</c> or <c>enif_inspect_binary</c>.</p></desc> + </func> </funcs> <section> <title>SEE ALSO</title> diff --git a/erts/doc/src/erlang.xml b/erts/doc/src/erlang.xml index fd4447009a..871fc0fd63 100644 --- a/erts/doc/src/erlang.xml +++ b/erts/doc/src/erlang.xml @@ -1929,7 +1929,7 @@ os_prompt%</pre> </desc> </func> <func> - <name>erlang:load_nif(Path, LoadInfo) -> ok | {error, Reason, Text}</name> + <name>erlang:load_nif(Path, LoadInfo) -> ok | {error, {Reason, Text}}</name> <fsummary>Load NIF library</fsummary> <type> <v>Path = string()</v> @@ -1940,9 +1940,10 @@ os_prompt%</pre> </type> <desc> <warning> - <p>This BIF is currently introduced as an experimental - feature. The interface may be changed in any way in future - releases.</p> + <p>This BIF is still an experimental feature. The interface + may be changed in any way in future releases.</p><p>In + R13B03 the return value on failure was + <c>{error,Reason,Text}</c>.</p> </warning> <p>Loads and links a dynamic library containing native implemented functions (NIFs) for a module. <c>Path</c> is a @@ -1957,10 +1958,10 @@ os_prompt%</pre> <p>The call to <c>load_nif/2</c> must be made <em>directly</em> from the Erlang code of the module that the NIF library belongs to.</p> - <p>It returns either <c>ok</c>, or <c>{error,Reason,Text}</c> + <p>It returns either <c>ok</c>, or <c>{error,{Reason,Text}}</c> if loading fails. <c>Reason</c> is one of the atoms below, while <c>Text</c> is a human readable string that may give - some more information about the failure:</p> + some more information about the failure.</p> <taglist> <tag><c>load_failed</c></tag> <item> @@ -4641,7 +4642,7 @@ true</pre> <fsummary>Split a binary into two</fsummary> <type> <v>Bin = Bin1 = Bin2 = binary()</v> - <v>Pos = 1..byte_size(Bin)</v> + <v>Pos = 0..byte_size(Bin)</v> </type> <desc> <p>Returns a tuple containing the binaries which are the result diff --git a/erts/emulator/beam/beam_emu.c b/erts/emulator/beam/beam_emu.c index dcaa43b51c..4ebb8853be 100644 --- a/erts/emulator/beam/beam_emu.c +++ b/erts/emulator/beam/beam_emu.c @@ -974,10 +974,6 @@ static int hibernate(Process* c_p, Eterm module, Eterm function, static Eterm* call_fun(Process* p, int arity, Eterm* reg, Eterm args); static Eterm* apply_fun(Process* p, Eterm fun, Eterm args, Eterm* reg); static Eterm new_fun(Process* p, Eterm* reg, ErlFunEntry* fe, int num_free); -static BIF_RETTYPE nif_dispatcher_0(Process* p, Uint* I); -static BIF_RETTYPE nif_dispatcher_1(Process* p, Eterm arg1, Uint* I); -static BIF_RETTYPE nif_dispatcher_2(Process* p, Eterm arg1, Eterm arg2, Uint* I); -static BIF_RETTYPE nif_dispatcher_3(Process* p, Eterm arg1, Eterm arg2, Eterm arg3, Uint* I); #if defined(_OSE_) || defined(VXWORKS) static int init_done; @@ -2949,11 +2945,38 @@ void process_main(void) OpCase(call_nif): { - static void* const dispatchers[4] = { - nif_dispatcher_0, nif_dispatcher_1, nif_dispatcher_2, nif_dispatcher_3 - }; - BifFunction vbf = dispatchers[I[-1]]; - goto apply_bif_or_nif; + /* + * call_nif is always first instruction in function: + * + * I[-3]: Module + * I[-2]: Function + * I[-1]: Arity + * I[0]: &&call_nif + * I[1]: Function pointer to NIF function + * I[2]: priv_data pointer + */ + BifFunction vbf; + + c_p->current = I-3; /* current and vbf set to please handle_error */ + SWAPOUT; + c_p->fcalls = FCALLS - 1; + PROCESS_MAIN_CHK_LOCKS(c_p); + tmp_arg2 = I[-1]; + ERTS_SMP_UNREQ_PROC_MAIN_LOCK(c_p); + + ASSERT(!ERTS_PROC_IS_EXITING(c_p)); + { + typedef Eterm NifF(struct enif_environment_t*, int argc, Eterm argv[]); + NifF* fp = vbf = (NifF*) I[1]; + struct enif_environment_t env; + erts_pre_nif(&env, c_p, (void*)I[2]); + reg[0] = r(0); + tmp_arg1 = (*fp)(&env, tmp_arg2, reg); + erts_post_nif(&env); + } + ASSERT(!ERTS_PROC_IS_EXITING(c_p) || is_non_value(tmp_arg1)); + PROCESS_MAIN_CHK_LOCKS(c_p); + goto apply_bif_or_nif_epilogue; OpCase(apply_bif): /* @@ -2966,17 +2989,15 @@ void process_main(void) * code[3]: &&apply_bif * code[4]: Function pointer to BIF function */ - vbf = (BifFunction) Arg(0); - apply_bif_or_nif: c_p->current = I-3; /* In case we apply process_info/1,2 or load_nif/1 */ c_p->i = I; /* In case we apply check_process_code/2. */ c_p->arity = 0; /* To allow garbage collection on ourselves * (check_process_code/2). */ - SWAPOUT; c_p->fcalls = FCALLS - 1; + vbf = (BifFunction) Arg(0); PROCESS_MAIN_CHK_LOCKS(c_p); tmp_arg2 = I[-1]; ASSERT(tmp_arg2 <= 3); @@ -3019,6 +3040,7 @@ void process_main(void) break; } } +apply_bif_or_nif_epilogue: ERTS_SMP_REQ_PROC_MAIN_LOCK(c_p); ERTS_HOLE_CHECK(c_p); if (c_p->mbuf) { @@ -5245,6 +5267,7 @@ save_stacktrace(Process* c_p, Eterm* pc, Eterm* reg, BifFunction bf, * The Bif does not really exist (no BIF entry). It is a * TRAP and traps are called through apply_bif, which also * sets c_p->current (luckily). + * OR it is a NIF called by call_nif where current is also set. */ ASSERT(c_p->current); s->current = c_p->current; @@ -6148,51 +6171,3 @@ erts_current_reductions(Process *current, Process *p) } } -static BIF_RETTYPE nif_dispatcher_0(Process* p, Uint* I) -{ - typedef Eterm NifF(struct enif_environment_t*); - NifF* fp = (NifF*) I[1]; - struct enif_environment_t env; - Eterm ret; - erts_pre_nif(&env, p, (void*)I[2]); - ret = (*fp)(&env); - erts_post_nif(&env); - return ret; -} - -static BIF_RETTYPE nif_dispatcher_1(Process* p, Eterm arg1, Uint* I) -{ - typedef Eterm NifF(struct enif_environment_t*, Eterm); - NifF* fp = (NifF*) I[1]; - struct enif_environment_t env; - Eterm ret; - erts_pre_nif(&env, p, (void*)I[2]); - ret = (*fp)(&env, arg1); - erts_post_nif(&env); - return ret; -} - -static BIF_RETTYPE nif_dispatcher_2(Process* p, Eterm arg1, Eterm arg2, Uint* I) -{ - typedef Eterm NifF(struct enif_environment_t*, Eterm, Eterm); - NifF* fp = (NifF*) I[1]; - struct enif_environment_t env; - Eterm ret; - erts_pre_nif(&env, p, (void*)I[2]); - ret = (*fp)(&env, arg1, arg2); - erts_post_nif(&env); - return ret; -} - -static BIF_RETTYPE nif_dispatcher_3(Process* p, Eterm arg1, Eterm arg2, Eterm arg3, Uint* I) -{ - typedef Eterm NifF(struct enif_environment_t*, Eterm, Eterm, Eterm); - NifF* fp = (NifF*) I[1]; - struct enif_environment_t env; - Eterm ret; - erts_pre_nif(&env, p, (void*)I[2]); - ret = (*fp)(&env, arg1, arg2, arg3); - erts_post_nif(&env); - return ret; -} - diff --git a/erts/emulator/beam/break.c b/erts/emulator/beam/break.c index 5ea47e16f5..cc69977b79 100644 --- a/erts/emulator/beam/break.c +++ b/erts/emulator/beam/break.c @@ -703,6 +703,8 @@ erl_crash_dump_v(char *file, int line, char* fmt, va_list args) erts_fdprintf(fd, "System version: "); erts_print_system_version(fd, NULL, NULL); erts_fdprintf(fd, "%s\n", "Compiled: " ERLANG_COMPILE_DATE); + erts_fdprintf(fd, "Taints: "); + erts_print_nif_taints(fd, NULL); erts_fdprintf(fd, "Atoms: %d\n", atom_table_size()); info(fd, NULL); /* General system info */ if (process_tab != NULL) /* XXX true at init */ diff --git a/erts/emulator/beam/erl_nif.c b/erts/emulator/beam/erl_nif.c index fa4454a3f3..2cb93112ae 100644 --- a/erts/emulator/beam/erl_nif.c +++ b/erts/emulator/beam/erl_nif.c @@ -35,13 +35,6 @@ #include <limits.h> -/* -static ERTS_INLINE Eterm* alloc_heap(ErlNifEnv* env, unsigned need) -{ - return HAlloc(env->proc, need); -} -*/ - #define MIN_HEAP_FRAG_SZ 200 static Eterm* alloc_heap_heavy(ErlNifEnv* env, unsigned need); @@ -116,12 +109,21 @@ void enif_free(ErlNifEnv* env, void* ptr) erts_free(ERTS_ALC_T_NIF, ptr); } +int enif_is_atom(ErlNifEnv* env, ERL_NIF_TERM term) +{ + return is_atom(term); +} int enif_is_binary(ErlNifEnv* env, ERL_NIF_TERM term) { return is_binary(term) && (binary_bitsize(term) % 8 == 0); } - + +int enif_is_ref(ErlNifEnv* env, ERL_NIF_TERM term) +{ + return is_ref(term); +} + int enif_inspect_binary(ErlNifEnv* env, Eterm bin_term, ErlNifBinary* bin) { @@ -157,6 +159,25 @@ int enif_alloc_binary(ErlNifEnv* env, unsigned size, ErlNifBinary* bin) return 1; } +int enif_realloc_binary(ErlNifEnv* env, ErlNifBinary* bin, unsigned size) +{ + Binary* oldbin; + Binary* newbin; + ASSERT(bin->ref_bin != NULL); + + oldbin = (Binary*) bin->ref_bin; + newbin = (Binary *) erts_bin_realloc_fnf(oldbin, size); + if (!newbin) { + return 0; + } + newbin->orig_size = size; + bin->ref_bin = newbin; + bin->data = (unsigned char*) newbin->orig_bytes; + bin->size = size; + return 1; +} + + void enif_release_binary(ErlNifEnv* env, ErlNifBinary* bin) { if (bin->ref_bin == NULL) { @@ -177,6 +198,28 @@ void enif_release_binary(ErlNifEnv* env, ErlNifBinary* bin) #endif } +int enif_is_identical(ErlNifEnv* env, Eterm lhs, Eterm rhs) +{ + return EQ(lhs,rhs); +} + +int enif_compare(ErlNifEnv* env, Eterm lhs, Eterm rhs) +{ + return cmp(lhs,rhs); +} + +int enif_get_tuple(ErlNifEnv* env, Eterm tpl, int* arity, Eterm** array) +{ + Eterm* ptr; + if (is_not_tuple(tpl)) { + return 0; + } + ptr = tuple_val(tpl); + *arity = arityval(*ptr); + *array = ptr+1; + return 1; +} + Eterm enif_make_binary(ErlNifEnv* env, ErlNifBinary* bin) { if (bin->ref_bin == NULL) { @@ -203,7 +246,7 @@ Eterm enif_make_binary(ErlNifEnv* env, ErlNifBinary* bin) } } -ERL_NIF_TERM enif_make_badarg(ErlNifEnv* env) +Eterm enif_make_badarg(ErlNifEnv* env) { BIF_ERROR(env->proc, BADARG); } @@ -212,7 +255,7 @@ ERL_NIF_TERM enif_make_badarg(ErlNifEnv* env) int enif_get_int(ErlNifEnv* env, Eterm term, int* ip) { #if SIZEOF_INT == SIZEOF_VOID_P - return term_to_Sint(term, ip); + return term_to_Sint(term, (Sint*)ip); #elif SIZEOF_LONG == SIZEOF_VOID_P Sint i; if (!term_to_Sint(term, &i) || i < INT_MIN || i > INT_MAX) { @@ -234,6 +277,17 @@ int enif_get_ulong(ErlNifEnv* env, Eterm term, unsigned long* ip) #endif } +int enif_get_double(ErlNifEnv* env, Eterm term, double* dp) +{ + FloatDef f; + if (is_not_float(term)) { + return 0; + } + GET_DOUBLE(term, f); + *dp = f.fd; + return 1; +} + int enif_get_list_cell(ErlNifEnv* env, Eterm term, Eterm* head, Eterm* tail) { Eterm* val; @@ -267,12 +321,24 @@ ERL_NIF_TERM enif_make_ulong(ErlNifEnv* env, unsigned long i) } +ERL_NIF_TERM enif_make_double(ErlNifEnv* env, double d) +{ + Eterm* hp = alloc_heap(env,FLOAT_SIZE_OBJECT); + FloatDef f; + f.fd = d; + PUT_DOUBLE(f, hp); + return make_float(hp); +} ERL_NIF_TERM enif_make_atom(ErlNifEnv* env, const char* name) { return am_atom_put(name, sys_strlen(name)); } +int enif_make_existing_atom(ErlNifEnv* env, const char* name, ERL_NIF_TERM* atom) +{ + return erts_atom_get(name, sys_strlen(name), atom); +} ERL_NIF_TERM enif_make_tuple(ErlNifEnv* env, unsigned cnt, ...) { @@ -320,13 +386,43 @@ ERL_NIF_TERM enif_make_list(ErlNifEnv* env, unsigned cnt, ...) ERL_NIF_TERM enif_make_string(ErlNifEnv* env, const char* string) { - Sint n = strlen(string); + Sint n = sys_strlen(string); Eterm* hp = alloc_heap(env,n*2); return erts_bld_string_n(&hp,NULL,string,n); } +ERL_NIF_TERM enif_make_ref(ErlNifEnv* env) +{ + Eterm* hp = alloc_heap(env, REF_THING_SIZE); + return erts_make_ref_in_buffer(hp); +} + +#if 0 /* To be continued... */ +typedef struct enif_handle_type_t +{ + struct enif_handle_type_t* next; + struct enif_handle_type_t* prev; + const char* name; + void (*dtor)(void* obj); + erts_smp_atomic_t ref_cnt; /* num of handles of this type */ +}ErlNifHandleType; + +ErlNifHandleType* +enif_create_handle_type(ErlNifEnv* env, const char* type_name, + void (*dtor)(void *)) +{ + +} + +ERL_NIF_TERM enif_make_handle(ErlNifEnv* env, ErlNifHandleType* htype, void* obj) +{ +} +int enif_get_handle(ErlNifEnv* env, ERL_NIF_TERM term, void** objp) +{ +} +#endif /*************************************************************************** ** load_nif/2 ** @@ -361,7 +457,7 @@ static void refresh_cached_nif_data(Eterm* mod_code, ErlNifFunc* func = &mod_nif->entry->funcs[i]; Uint* code_ptr; - erts_atom_get(func->name, strlen(func->name), &f_atom); + erts_atom_get(func->name, sys_strlen(func->name), &f_atom); code_ptr = *get_func_pp(mod_code, f_atom, func->arity); code_ptr[5+2] = (Uint) mod_nif->data; } @@ -411,6 +507,18 @@ Eterm erts_nif_taints(Process* p) return list; } +void erts_print_nif_taints(int to, void* to_arg) +{ + struct tainted_module_t* t; + const char* delim = ""; + for (t=first_tainted_module ; t!=NULL; t=t->next) { + const Atom* atom = atom_tab(atom_val(t->module_atom)); + erts_print(to,to_arg,"%s%.*s", delim, atom->len, atom->name); + delim = ","; + } + erts_print(to,to_arg,"\n"); +} + static Eterm load_nif_error(Process* p, const char* atom, const char* format, ...) { @@ -428,7 +536,8 @@ static Eterm load_nif_error(Process* p, const char* atom, const char* format, .. for (;;) { Eterm txt = erts_bld_string_n(hpp, &sz, dsbufp->str, dsbufp->str_len); - ret = erts_bld_tuple(hpp, szp, 3, am_error, mkatom(atom), txt); + ret = erts_bld_tuple(hpp, szp, 2, am_error, + erts_bld_tuple(hpp, szp, 2, mkatom(atom), txt)); if (hpp != NULL) { break; } @@ -489,8 +598,13 @@ BIF_RETTYPE load_nif_2(BIF_ALIST_2) "module '%T' not allowed", mod_atom); } else if ((err=erts_sys_ddll_open2(lib_name, &handle, &errdesc)) != ERL_DE_NO_ERROR) { - ret = load_nif_error(BIF_P, "load_failed", "Failed to load NIF library" - " %s: '%s'", lib_name, errdesc.str); + const char slogan[] = "Failed to load NIF library"; + if (strstr(errdesc.str, lib_name) != NULL) { + ret = load_nif_error(BIF_P, "load_failed", "%s: '%s'", slogan, errdesc.str); + } + else { + ret = load_nif_error(BIF_P, "load_failed", "%s %s: '%s'", slogan, lib_name, errdesc.str); + } } else if (erts_sys_ddll_load_nif_init(handle, &init_func, &errdesc) != ERL_DE_NO_ERROR) { ret = load_nif_error(BIF_P, bad_lib, "Failed to find library init" @@ -517,12 +631,8 @@ BIF_RETTYPE load_nif_2(BIF_ALIST_2) for (i=0; i < entry->num_of_funcs && ret==am_ok; i++) { Uint** code_pp; ErlNifFunc* f = &entry->funcs[i]; - if (f->arity > 3) { - ret = load_nif_error(BIF_P,bad_lib,"Function arity too high for NIF %s/%u", - f->name, f->arity); - } - else if (!erts_atom_get(f->name, strlen(f->name), &f_atom) - || (code_pp = get_func_pp(mod->code, f_atom, f->arity))==NULL) { + if (!erts_atom_get(f->name, sys_strlen(f->name), &f_atom) + || (code_pp = get_func_pp(mod->code, f_atom, f->arity))==NULL) { ret = load_nif_error(BIF_P,bad_lib,"Function not found %T:%s/%u", mod_atom, f->name, f->arity); } @@ -612,7 +722,7 @@ BIF_RETTYPE load_nif_2(BIF_ALIST_2) for (i=0; i < entry->num_of_funcs; i++) { Uint* code_ptr; - erts_atom_get(entry->funcs[i].name, strlen(entry->funcs[i].name), &f_atom); + erts_atom_get(entry->funcs[i].name, sys_strlen(entry->funcs[i].name), &f_atom); code_ptr = *get_func_pp(mod->code, f_atom, entry->funcs[i].arity); if (code_ptr[1] == 0) { diff --git a/erts/emulator/beam/erl_nif.h b/erts/emulator/beam/erl_nif.h index 8650b7ce47..e5e6d65c0e 100644 --- a/erts/emulator/beam/erl_nif.h +++ b/erts/emulator/beam/erl_nif.h @@ -20,23 +20,27 @@ /* Include file for writers of Native Implemented Functions. */ -#define ERL_NIF_MAJOR_VERSION 0 -#define ERL_NIF_MINOR_VERSION 1 +/* Version history: +** 0.1: R13B03 +** 1.0: R13B04 +*/ +#define ERL_NIF_MAJOR_VERSION 1 +#define ERL_NIF_MINOR_VERSION 0 #include <stdlib.h> typedef unsigned long ERL_NIF_TERM; +struct enif_environment_t; +typedef struct enif_environment_t ErlNifEnv; + typedef struct { const char* name; unsigned arity; - void* fptr; //ERL_NIF_TERM (*fptr)(void*, ...); + ERL_NIF_TERM (*fptr)(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]); }ErlNifFunc; -struct enif_environment_t; -typedef struct enif_environment_t ErlNifEnv; - typedef struct enif_entry_t { int major; diff --git a/erts/emulator/beam/erl_nif_api_funcs.h b/erts/emulator/beam/erl_nif_api_funcs.h index 400c1822cc..7556806ce4 100644 --- a/erts/emulator/beam/erl_nif_api_funcs.h +++ b/erts/emulator/beam/erl_nif_api_funcs.h @@ -25,44 +25,68 @@ ERL_NIF_API_FUNC_DECL(void*,enif_get_data,(ErlNifEnv*)); ERL_NIF_API_FUNC_DECL(void*,enif_alloc,(ErlNifEnv*, size_t size)); ERL_NIF_API_FUNC_DECL(void,enif_free,(ErlNifEnv*, void* ptr)); +ERL_NIF_API_FUNC_DECL(int,enif_is_atom,(ErlNifEnv*, ERL_NIF_TERM term)); ERL_NIF_API_FUNC_DECL(int,enif_is_binary,(ErlNifEnv*, ERL_NIF_TERM term)); +ERL_NIF_API_FUNC_DECL(int,enif_is_ref,(ErlNifEnv*, ERL_NIF_TERM term)); ERL_NIF_API_FUNC_DECL(int,enif_inspect_binary,(ErlNifEnv*, ERL_NIF_TERM bin_term, ErlNifBinary* bin)); ERL_NIF_API_FUNC_DECL(int,enif_alloc_binary,(ErlNifEnv*, unsigned size, ErlNifBinary* bin)); +ERL_NIF_API_FUNC_DECL(int,enif_realloc_binary,(ErlNifEnv*, ErlNifBinary* bin, unsigned size)); ERL_NIF_API_FUNC_DECL(void,enif_release_binary,(ErlNifEnv*, ErlNifBinary* bin)); ERL_NIF_API_FUNC_DECL(int,enif_get_int,(ErlNifEnv*, ERL_NIF_TERM term, int* ip)); ERL_NIF_API_FUNC_DECL(int,enif_get_ulong,(ErlNifEnv*, ERL_NIF_TERM term, unsigned long* ip)); +ERL_NIF_API_FUNC_DECL(int,enif_get_double,(ErlNifEnv*, ERL_NIF_TERM term, double* dp)); ERL_NIF_API_FUNC_DECL(int,enif_get_list_cell,(ErlNifEnv* env, ERL_NIF_TERM term, ERL_NIF_TERM* head, ERL_NIF_TERM* tail)); +ERL_NIF_API_FUNC_DECL(int,enif_get_tuple,(ErlNifEnv* env, ERL_NIF_TERM tpl, int* arity, ERL_NIF_TERM** array)); +ERL_NIF_API_FUNC_DECL(int,enif_is_identical,(ErlNifEnv* env, ERL_NIF_TERM lhs, ERL_NIF_TERM rhs)); +ERL_NIF_API_FUNC_DECL(int,enif_compare,(ErlNifEnv* env, ERL_NIF_TERM lhs, ERL_NIF_TERM rhs)); ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_binary,(ErlNifEnv* env, ErlNifBinary* bin)); ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_badarg,(ErlNifEnv* env)); ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_int,(ErlNifEnv* env, int i)); ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_ulong,(ErlNifEnv* env, unsigned long i)); +ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_double,(ErlNifEnv* env, double d)); ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_atom,(ErlNifEnv* env, const char* name)); +ERL_NIF_API_FUNC_DECL(int,enif_make_existing_atom,(ErlNifEnv* env, const char* name, ERL_NIF_TERM* atom)); ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_tuple,(ErlNifEnv* env, unsigned cnt, ...)); ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_list,(ErlNifEnv* env, unsigned cnt, ...)); ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_list_cell,(ErlNifEnv* env, ERL_NIF_TERM car, ERL_NIF_TERM cdr)); ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_string,(ErlNifEnv* env, const char* string)); +ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_ref,(ErlNifEnv* env)); +/* +** Add last to keep compatibility on Windows!!! +*/ #endif #ifdef ERL_NIF_API_FUNC_MACRO # define enif_get_data ERL_NIF_API_FUNC_MACRO(enif_get_data) # define enif_alloc ERL_NIF_API_FUNC_MACRO(enif_alloc) # define enif_free ERL_NIF_API_FUNC_MACRO(enif_free) +# define enif_is_atom ERL_NIF_API_FUNC_MACRO(enif_is_atom) # define enif_is_binary ERL_NIF_API_FUNC_MACRO(enif_is_binary) +# define enif_is_ref ERL_NIF_API_FUNC_MACRO(enif_is_ref) # define enif_inspect_binary ERL_NIF_API_FUNC_MACRO(enif_inspect_binary) # define enif_alloc_binary ERL_NIF_API_FUNC_MACRO(enif_alloc_binary) +# define enif_realloc_binary ERL_NIF_API_FUNC_MACRO(enif_realloc_binary) # define enif_release_binary ERL_NIF_API_FUNC_MACRO(enif_release_binary) # define enif_get_int ERL_NIF_API_FUNC_MACRO(enif_get_int) # define enif_get_ulong ERL_NIF_API_FUNC_MACRO(enif_get_ulong) +# define enif_get_double ERL_NIF_API_FUNC_MACRO(enif_get_double) +# define enif_get_tuple ERL_NIF_API_FUNC_MACRO(enif_get_tuple) # define enif_get_list_cell ERL_NIF_API_FUNC_MACRO(enif_get_list_cell) +# define enif_is_identical ERL_NIF_API_FUNC_MACRO(enif_is_identical) +# define enif_compare ERL_NIF_API_FUNC_MACRO(enif_compare) # define enif_make_binary ERL_NIF_API_FUNC_MACRO(enif_make_binary) # define enif_make_badarg ERL_NIF_API_FUNC_MACRO(enif_make_badarg) # define enif_make_int ERL_NIF_API_FUNC_MACRO(enif_make_int) # define enif_make_ulong ERL_NIF_API_FUNC_MACRO(enif_make_ulong) +# define enif_make_double ERL_NIF_API_FUNC_MACRO(enif_make_double) # define enif_make_atom ERL_NIF_API_FUNC_MACRO(enif_make_atom) +# define enif_make_existing_atom ERL_NIF_API_FUNC_MACRO(enif_make_existing_atom) # define enif_make_tuple ERL_NIF_API_FUNC_MACRO(enif_make_tuple) # define enif_make_list ERL_NIF_API_FUNC_MACRO(enif_make_list) # define enif_make_list_cell ERL_NIF_API_FUNC_MACRO(enif_make_list_cell) # define enif_make_string ERL_NIF_API_FUNC_MACRO(enif_make_string) +# define enif_make_ref ERL_NIF_API_FUNC_MACRO(enif_make_ref) + #endif diff --git a/erts/emulator/beam/global.h b/erts/emulator/beam/global.h index 1b64e23174..62a788cbff 100644 --- a/erts/emulator/beam/global.h +++ b/erts/emulator/beam/global.h @@ -86,7 +86,8 @@ struct enif_environment_t /* ErlNifEnv */ }; extern void erts_pre_nif(struct enif_environment_t*, Process*, void* nif_data); extern void erts_post_nif(struct enif_environment_t* env); -extern Eterm erts_nif_taints(Process* p); +extern Eterm erts_nif_taints(Process* p); +extern void erts_print_nif_taints(int to, void* to_arg); /* * Port Specific Data. diff --git a/erts/emulator/test/nif_SUITE.erl b/erts/emulator/test/nif_SUITE.erl index 213ff6637a..e47161fcbc 100644 --- a/erts/emulator/test/nif_SUITE.erl +++ b/erts/emulator/test/nif_SUITE.erl @@ -24,12 +24,13 @@ -include("test_server.hrl"). -export([all/1, fin_per_testcase/2, basic/1, reload/1, upgrade/1, heap_frag/1, - neg/1]). + types/1, many_args/1, neg/1]). +-export([many_args_100/100]). -define(nif_stub,nif_stub_error(?LINE)). all(suite) -> - [basic, reload, upgrade, heap_frag, neg]. + [basic, reload, upgrade, heap_frag, types, many_args, neg]. fin_per_testcase(_Func, _Config) -> P1 = code:purge(nif_mod), @@ -184,19 +185,68 @@ heap_frag_do(N, Max) -> L = list_seq(N), heap_frag_do(((N*5) div 4) + 1, Max). +types(doc) -> ["Type tests"]; +types(suite) -> []; +types(Config) when is_list(Config) -> + ensure_lib_loaded(Config), + ?line ok = type_test(), + lists:foreach(fun(Tpl) -> + Lst = erlang:tuple_to_list(Tpl), + Lst = tuple_2_list(Tpl) + end, + [{},{ok},{{}},{[],{}},{1,2,3,4,5}]), + Stuff = [[],{},0,0.0,(1 bsl 100),(fun()-> ok end),make_ref(),self()], + [eq_cmp(A,clone(B)) || A<-Stuff, B<-Stuff], + ok. + +clone(X) -> + binary_to_term(term_to_binary(X)). + +eq_cmp(A,B) -> + eq_cmp_do(A,B), + eq_cmp_do([A,B],[A,B]), + eq_cmp_do({A,B},{A,B}). + +eq_cmp_do(A,B) -> + %%?t:format("compare ~p and ~p\n",[A,B]), + Eq = (A =:= B), + ?line Eq = is_identical(A,B), + ?line Cmp = if + A < B -> -1; + A == B -> 0; + A > B -> 1 + end, + ?line Cmp = case compare(A,B) of + C when is_integer(C), C < 0 -> -1; + 0 -> 0; + C when is_integer(C) -> 1 + end, + ok. + + +many_args(doc) -> ["Test NIF with many arguments"]; +many_args(suite) -> []; +many_args(Config) when is_list(Config) -> + ?line ensure_lib_loaded(Config ,1), + ?line ok = apply(?MODULE,many_args_100,lists:seq(1,100)), + ?line ok = many_args_100(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100), + ok. + + + neg(doc) -> ["Negative testing of load_nif"]; neg(suite) -> []; neg(Config) when is_list(Config) -> ?line {'EXIT',{badarg,_}} = (catch erlang:load_nif(badarg, 0)), - ?line {error,load_failed,_} = erlang:load_nif("pink_unicorn", 0), + ?line {error,{load_failed,_}} = erlang:load_nif("pink_unicorn", 0), ?line Data = ?config(data_dir, Config), ?line File = filename:join(Data, "nif_mod"), ?line {ok,nif_mod,Bin} = compile:file(File, [binary,return_errors]), ?line {module,nif_mod} = erlang:load_module(nif_mod,Bin), - ?line {error,bad_lib,_} = nif_mod:load_nif_lib(Config, no_init), + ?line {error,{bad_lib,_}} = nif_mod:load_nif_lib(Config, no_init), ?line ok. @@ -230,6 +280,11 @@ call_history() -> ?nif_stub. hold_nif_mod_priv_data(_Ptr) -> ?nif_stub. nif_mod_call_history() -> ?nif_stub. list_seq(_To) -> ?nif_stub. +type_test() -> ?nif_stub. +tuple_2_list(_) -> ?nif_stub. +is_identical(_,_) -> ?nif_stub. +compare(_,_) -> ?nif_stub. +many_args_100(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_) -> ?nif_stub. nif_stub_error(Line) -> exit({nif_not_loaded,module,?MODULE,line,Line}). diff --git a/erts/emulator/test/nif_SUITE_data/nif_SUITE.c b/erts/emulator/test/nif_SUITE_data/nif_SUITE.c index 852495e234..4532062dce 100644 --- a/erts/emulator/test/nif_SUITE_data/nif_SUITE.c +++ b/erts/emulator/test/nif_SUITE_data/nif_SUITE.c @@ -1,6 +1,9 @@ #include "erl_nif.h" + +#include <stdio.h> #include <string.h> #include <assert.h> +#include <limits.h> #include "nif_mod.h" @@ -65,7 +68,7 @@ static void unload(ErlNifEnv* env, void* priv_data) } } -static ERL_NIF_TERM lib_version(ErlNifEnv* env) +static ERL_NIF_TERM lib_version(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) { ADD_CALL("lib_version"); return enif_make_int(env, NIF_SUITE_LIB_VER); @@ -89,19 +92,19 @@ static ERL_NIF_TERM make_call_history(ErlNifEnv* env, CallInfo** headp) return list; } -static ERL_NIF_TERM call_history(ErlNifEnv* env) +static ERL_NIF_TERM call_history(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) { PrivData* data = (PrivData*) enif_get_data(env); return make_call_history(env,&data->call_history); } -static ERL_NIF_TERM hold_nif_mod_priv_data(ErlNifEnv* env, ERL_NIF_TERM a1) +static ERL_NIF_TERM hold_nif_mod_priv_data(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) { PrivData* data = (PrivData*) enif_get_data(env); unsigned long ptr_as_ulong; - if (!enif_get_ulong(env,a1,&ptr_as_ulong)) { + if (!enif_get_ulong(env,argv[0],&ptr_as_ulong)) { return enif_make_badarg(env); } if (data->nif_mod != NULL && --(data->nif_mod->ref_cnt) == 0) { @@ -111,7 +114,7 @@ static ERL_NIF_TERM hold_nif_mod_priv_data(ErlNifEnv* env, ERL_NIF_TERM a1) return enif_make_int(env,++(data->nif_mod->ref_cnt)); } -static ERL_NIF_TERM nif_mod_call_history(ErlNifEnv* env) +static ERL_NIF_TERM nif_mod_call_history(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) { PrivData* data = (PrivData*) enif_get_data(env); @@ -121,11 +124,11 @@ static ERL_NIF_TERM nif_mod_call_history(ErlNifEnv* env) return make_call_history(env,&data->nif_mod->call_history); } -static ERL_NIF_TERM list_seq(ErlNifEnv* env, ERL_NIF_TERM a1) +static ERL_NIF_TERM list_seq(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) { ERL_NIF_TERM list; int n; - if (!enif_get_int(env, a1, &n)) { + if (!enif_get_int(env, argv[0], &n)) { return enif_make_badarg(env); } list = enif_make_list(env, 0); /* NIL */ @@ -136,13 +139,183 @@ static ERL_NIF_TERM list_seq(ErlNifEnv* env, ERL_NIF_TERM a1) return list; } +static int test_int(ErlNifEnv* env, int i1) +{ + int i2 = 0; + ERL_NIF_TERM int_term = enif_make_int(env, i1); + if (!enif_get_int(env,int_term, &i2) || i1 != i2) { + fprintf(stderr, "test_int(%d) ...FAILED i2=%d\r\n", i1, i2); + return 0; + } + return 1; +} + +static int test_ulong(ErlNifEnv* env, unsigned long i1) +{ + unsigned long i2 = 0; + ERL_NIF_TERM int_term = enif_make_ulong(env, i1); + if (!enif_get_ulong(env,int_term, &i2) || i1 != i2) { + fprintf(stderr, "SVERK: test_ulong(%lu) ...FAILED i2=%lu\r\n", i1, i2); + return 0; + } + return 1; +} + +static int test_double(ErlNifEnv* env, double d1) +{ + double d2 = 0; + ERL_NIF_TERM term = enif_make_double(env, d1); + if (!enif_get_double(env,term, &d2) || d1 != d2) { + fprintf(stderr, "SVERK: test_double(%e) ...FAILED i2=%e\r\n", d1, d2); + return 0; + } + return 1; +} + +#define TAG_BITS 4 +#define SMALL_BITS (sizeof(void*)*8 - TAG_BITS) +#define MAX_SMALL ((1L << (SMALL_BITS-1))-1) +#define MIN_SMALL (-(1L << (SMALL_BITS-1))) + +static ERL_NIF_TERM type_test(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) +{ + int i; + unsigned long u; + double d; + ERL_NIF_TERM atom, ref1, ref2; + + i = INT_MIN; + do { + if (!test_int(env,i)) { + goto error; + } + i += ~i / 3 + 1; + } while (i < 0); + i = INT_MAX; + do { + if (!test_int(env,i)) { + goto error; + } + i -= i / 3 + 1; + } while (i >= 0); + + u = ULONG_MAX; + for (;;) { + if (!test_ulong(env,u)) { + + } + if (u == 0) break; + u -= u / 3 + 1; + } + + if (MAX_SMALL < INT_MAX) { /* 32-bit */ + for (i=-10 ; i <= 10; i++) { + if (!test_int(env,MAX_SMALL+i)) { + goto error; + } + } + for (i=-10 ; i <= 10; i++) { + if (!test_int(env,MIN_SMALL+i)) { + goto error; + } + } + } + assert((MAX_SMALL < INT_MAX) == (MIN_SMALL > INT_MIN)); + + for (u=0 ; u < 10; u++) { + if (!test_ulong(env,MAX_SMALL+u) || !test_ulong(env,MAX_SMALL-u)) { + goto error; + } + } + + for (d=3.141592e-100 ; d < 1e100 ; d *= 9.97) { + if (!test_double(env,d) || !test_double(env,-d)) { + goto error; + } + } + + if (!enif_make_existing_atom(env,"nif_SUITE", &atom) + || !enif_is_identical(env,atom,enif_make_atom(env,"nif_SUITE"))) { + fprintf(stderr, "SVERK: nif_SUITE not an atom?\r\n"); + goto error; + } + for (i=2; i; i--) { + if (enif_make_existing_atom(env,"nif_SUITE_pink_unicorn", &atom)) { + fprintf(stderr, "SVERK: pink unicorn exist?\r\n"); + goto error; + } + } + ref1 = enif_make_ref(env); + ref2 = enif_make_ref(env); + if (!enif_is_ref(env,ref1) || !enif_is_ref(env,ref2) + || enif_is_identical(env,ref1,ref2) || enif_compare(env,ref1,ref2)==0) { + fprintf(stderr, "SVERK: strange refs?\r\n"); + } + return enif_make_atom(env,"ok"); + +error: + return enif_make_atom(env,"error"); +} + +static ERL_NIF_TERM tuple_2_list(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) +{ + int arity = -1; + ERL_NIF_TERM* ptr; + ERL_NIF_TERM list = enif_make_list(env,0); + + if (argc!=1 || !enif_get_tuple(env,argv[0],&arity,&ptr)) { + return enif_make_badarg(env); + } + while (--arity >= 0) { + list = enif_make_list_cell(env,ptr[arity],list); + } + return list; +} + +static ERL_NIF_TERM is_identical(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) +{ + if (argc != 2) { + return enif_make_badarg(env); + } + return enif_make_atom(env, (enif_is_identical(env,argv[0],argv[1]) ? + "true" : "false")); +} + +static ERL_NIF_TERM compare(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) +{ + if (argc != 2) { + return enif_make_badarg(env); + } + return enif_make_int(env, enif_compare(env,argv[0],argv[1])); +} + +static ERL_NIF_TERM many_args_100(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) +{ + int i, k; + if (argc == 100) { + for (i=1; i<=100; i++) { + if (!enif_get_int(env,argv[i-1],&k) || k!=i) { + goto badarg; + } + } + return enif_make_atom(env,"ok"); + } +badarg: + return enif_make_badarg(env); +} + static ErlNifFunc nif_funcs[] = { {"lib_version", 0, lib_version}, {"call_history", 0, call_history}, {"hold_nif_mod_priv_data", 1, hold_nif_mod_priv_data}, {"nif_mod_call_history", 0, nif_mod_call_history}, - {"list_seq", 1, list_seq} + {"list_seq", 1, list_seq}, + {"type_test", 0, type_test}, + {"tuple_2_list", 1, tuple_2_list}, + {"is_identical",2,is_identical}, + {"compare",2,compare}, + {"many_args_100", 100, many_args_100} }; ERL_NIF_INIT(nif_SUITE,nif_funcs,load,reload,upgrade,unload) diff --git a/erts/emulator/test/nif_SUITE_data/nif_mod.c b/erts/emulator/test/nif_SUITE_data/nif_mod.c index 18f676335a..2f2267cf78 100644 --- a/erts/emulator/test/nif_SUITE_data/nif_mod.c +++ b/erts/emulator/test/nif_SUITE_data/nif_mod.c @@ -58,13 +58,13 @@ static void unload(ErlNifEnv* env, void* priv_data) } } -static ERL_NIF_TERM lib_version(ErlNifEnv* env) +static ERL_NIF_TERM lib_version(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) { ADD_CALL("lib_version"); return enif_make_int(env, NIF_LIB_VER); } -static ERL_NIF_TERM call_history(ErlNifEnv* env) +static ERL_NIF_TERM call_history(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) { NifModPrivData* data = (NifModPrivData*) enif_get_data(env); ERL_NIF_TERM list = enif_make_list(env, 0); /* NIL */ @@ -81,7 +81,7 @@ static ERL_NIF_TERM call_history(ErlNifEnv* env) return list; } -static ERL_NIF_TERM get_priv_data_ptr(ErlNifEnv* env) +static ERL_NIF_TERM get_priv_data_ptr(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) { ADD_CALL("get_priv_data_ptr"); return enif_make_ulong(env, (unsigned long)enif_get_data(env)); diff --git a/erts/emulator/test/trace_nif_SUITE_data/trace_nif.c b/erts/emulator/test/trace_nif_SUITE_data/trace_nif.c index 732f1010ae..26f2420b8b 100644 --- a/erts/emulator/test/trace_nif_SUITE_data/trace_nif.c +++ b/erts/emulator/test/trace_nif_SUITE_data/trace_nif.c @@ -20,18 +20,18 @@ static void unload(ErlNifEnv* env, void* priv_data) { } -static ERL_NIF_TERM nif_0(ErlNifEnv* env) +static ERL_NIF_TERM nif_0(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) { return enif_make_tuple(env,2, enif_make_atom(env,"ok"), enif_make_list(env,0)); } -static ERL_NIF_TERM nif_1(ErlNifEnv* env, ERL_NIF_TERM a1) +static ERL_NIF_TERM nif_1(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) { return enif_make_tuple(env,2, enif_make_atom(env,"ok"), - enif_make_list(env,1,a1)); + enif_make_list(env,1,argv[0])); } diff --git a/erts/emulator/utils/beam_makeops b/erts/emulator/utils/beam_makeops index 2b7e8a6dde..4a859c3094 100755 --- a/erts/emulator/utils/beam_makeops +++ b/erts/emulator/utils/beam_makeops @@ -753,8 +753,8 @@ sub comment { print "$prefix$line\n"; } } else { - print "$prefix Warning: Do not edit this file. It was automatically\n"; - print "$prefix generated by '$prog' on ", (scalar localtime), ".\n"; + print "$prefix Warning: Do not edit this file.\n"; + print "$prefix Auto-generated by '$prog'.\n"; } if ($lang eq 'C') { print " */\n"; diff --git a/lib/.gitignore b/lib/.gitignore new file mode 100644 index 0000000000..bdc850f3b7 --- /dev/null +++ b/lib/.gitignore @@ -0,0 +1,464 @@ +# megaco + +/megaco/src/binary/megaco_ber_bin_drv_media_gateway_control_prev3a.erl +/megaco/src/binary/megaco_ber_bin_drv_media_gateway_control_prev3a.hrl +/megaco/src/binary/megaco_ber_bin_drv_media_gateway_control_prev3b.erl +/megaco/src/binary/megaco_ber_bin_drv_media_gateway_control_prev3b.hrl +/megaco/src/binary/megaco_ber_bin_drv_media_gateway_control_prev3c.erl +/megaco/src/binary/megaco_ber_bin_drv_media_gateway_control_prev3c.hrl +/megaco/src/binary/megaco_ber_bin_drv_media_gateway_control_v1.erl +/megaco/src/binary/megaco_ber_bin_drv_media_gateway_control_v1.hrl +/megaco/src/binary/megaco_ber_bin_drv_media_gateway_control_v2.erl +/megaco/src/binary/megaco_ber_bin_drv_media_gateway_control_v2.hrl +/megaco/src/binary/megaco_ber_bin_drv_media_gateway_control_v3.erl +/megaco/src/binary/megaco_ber_bin_drv_media_gateway_control_v3.hrl +/megaco/src/binary/megaco_ber_bin_media_gateway_control_prev3a.erl +/megaco/src/binary/megaco_ber_bin_media_gateway_control_prev3a.hrl +/megaco/src/binary/megaco_ber_bin_media_gateway_control_prev3b.erl +/megaco/src/binary/megaco_ber_bin_media_gateway_control_prev3b.hrl +/megaco/src/binary/megaco_ber_bin_media_gateway_control_prev3c.erl +/megaco/src/binary/megaco_ber_bin_media_gateway_control_prev3c.hrl +/megaco/src/binary/megaco_ber_bin_media_gateway_control_v1.erl +/megaco/src/binary/megaco_ber_bin_media_gateway_control_v1.hrl +/megaco/src/binary/megaco_ber_bin_media_gateway_control_v2.erl +/megaco/src/binary/megaco_ber_bin_media_gateway_control_v2.hrl +/megaco/src/binary/megaco_ber_bin_media_gateway_control_v3.erl +/megaco/src/binary/megaco_ber_bin_media_gateway_control_v3.hrl +/megaco/src/binary/megaco_ber_media_gateway_control_prev3a.erl +/megaco/src/binary/megaco_ber_media_gateway_control_prev3a.hrl +/megaco/src/binary/megaco_ber_media_gateway_control_prev3b.erl +/megaco/src/binary/megaco_ber_media_gateway_control_prev3b.hrl +/megaco/src/binary/megaco_ber_media_gateway_control_prev3c.erl +/megaco/src/binary/megaco_ber_media_gateway_control_prev3c.hrl +/megaco/src/binary/megaco_ber_media_gateway_control_v1.erl +/megaco/src/binary/megaco_ber_media_gateway_control_v1.hrl +/megaco/src/binary/megaco_ber_media_gateway_control_v2.erl +/megaco/src/binary/megaco_ber_media_gateway_control_v2.hrl +/megaco/src/binary/megaco_ber_media_gateway_control_v3.erl +/megaco/src/binary/megaco_ber_media_gateway_control_v3.hrl +/megaco/src/binary/megaco_per_bin_drv_media_gateway_control_prev3a.erl +/megaco/src/binary/megaco_per_bin_drv_media_gateway_control_prev3a.hrl +/megaco/src/binary/megaco_per_bin_drv_media_gateway_control_prev3b.erl +/megaco/src/binary/megaco_per_bin_drv_media_gateway_control_prev3b.hrl +/megaco/src/binary/megaco_per_bin_drv_media_gateway_control_prev3c.erl +/megaco/src/binary/megaco_per_bin_drv_media_gateway_control_prev3c.hrl +/megaco/src/binary/megaco_per_bin_drv_media_gateway_control_v1.erl +/megaco/src/binary/megaco_per_bin_drv_media_gateway_control_v1.hrl +/megaco/src/binary/megaco_per_bin_drv_media_gateway_control_v2.erl +/megaco/src/binary/megaco_per_bin_drv_media_gateway_control_v2.hrl +/megaco/src/binary/megaco_per_bin_drv_media_gateway_control_v3.erl +/megaco/src/binary/megaco_per_bin_drv_media_gateway_control_v3.hrl +/megaco/src/binary/megaco_per_bin_media_gateway_control_prev3a.erl +/megaco/src/binary/megaco_per_bin_media_gateway_control_prev3a.hrl +/megaco/src/binary/megaco_per_bin_media_gateway_control_prev3b.erl +/megaco/src/binary/megaco_per_bin_media_gateway_control_prev3b.hrl +/megaco/src/binary/megaco_per_bin_media_gateway_control_prev3c.erl +/megaco/src/binary/megaco_per_bin_media_gateway_control_prev3c.hrl +/megaco/src/binary/megaco_per_bin_media_gateway_control_v1.erl +/megaco/src/binary/megaco_per_bin_media_gateway_control_v1.hrl +/megaco/src/binary/megaco_per_bin_media_gateway_control_v2.erl +/megaco/src/binary/megaco_per_bin_media_gateway_control_v2.hrl +/megaco/src/binary/megaco_per_bin_media_gateway_control_v3.erl +/megaco/src/binary/megaco_per_bin_media_gateway_control_v3.hrl +/megaco/src/binary/megaco_per_media_gateway_control_prev3a.erl +/megaco/src/binary/megaco_per_media_gateway_control_prev3a.hrl +/megaco/src/binary/megaco_per_media_gateway_control_prev3b.erl +/megaco/src/binary/megaco_per_media_gateway_control_prev3b.hrl +/megaco/src/binary/megaco_per_media_gateway_control_prev3c.erl +/megaco/src/binary/megaco_per_media_gateway_control_prev3c.hrl +/megaco/src/binary/megaco_per_media_gateway_control_v1.erl +/megaco/src/binary/megaco_per_media_gateway_control_v1.hrl +/megaco/src/binary/megaco_per_media_gateway_control_v2.erl +/megaco/src/binary/megaco_per_media_gateway_control_v2.hrl +/megaco/src/binary/megaco_per_media_gateway_control_v3.erl +/megaco/src/binary/megaco_per_media_gateway_control_v3.hrl +/megaco/src/binary/prebuild.skip +/megaco/src/flex/megaco_flex_scanner_drv.c +/megaco/src/flex/megaco_flex_scanner_drv.flex +/megaco/src/flex/megaco_flex_scanner_drv_mt.c +/megaco/src/flex/megaco_flex_scanner_drv_mt.flex +/megaco/src/text/megaco_text_mini_parser.erl +/megaco/src/text/megaco_text_parser_prev3a.erl +/megaco/src/text/megaco_text_parser_prev3b.erl +/megaco/src/text/megaco_text_parser_prev3c.erl +/megaco/src/text/megaco_text_parser_v1.erl +/megaco/src/text/megaco_text_parser_v2.erl +/megaco/src/text/megaco_text_parser_v3.erl + +# orber & cos* applications + +/cosEvent/include/CosEventChannelAdmin.hrl +/cosEvent/include/CosEventChannelAdmin_ConsumerAdmin.hrl +/cosEvent/include/CosEventChannelAdmin_EventChannel.hrl +/cosEvent/include/CosEventChannelAdmin_ProxyPullConsumer.hrl +/cosEvent/include/CosEventChannelAdmin_ProxyPullSupplier.hrl +/cosEvent/include/CosEventChannelAdmin_ProxyPushConsumer.hrl +/cosEvent/include/CosEventChannelAdmin_ProxyPushSupplier.hrl +/cosEvent/include/CosEventChannelAdmin_SupplierAdmin.hrl +/cosEvent/include/CosEventComm.hrl +/cosEvent/include/CosEventComm_PullConsumer.hrl +/cosEvent/include/CosEventComm_PullSupplier.hrl +/cosEvent/include/CosEventComm_PushConsumer.hrl +/cosEvent/include/CosEventComm_PushSupplier.hrl +/cosEvent/include/oe_CosEventChannelAdmin.hrl +/cosEvent/include/oe_CosEventComm.hrl +/cosEvent/src/CosEventChannelAdmin_AlreadyConnected.erl +/cosEvent/src/CosEventChannelAdmin_ConsumerAdmin.erl +/cosEvent/src/CosEventChannelAdmin_EventChannel.erl +/cosEvent/src/CosEventChannelAdmin_ProxyPullConsumer.erl +/cosEvent/src/CosEventChannelAdmin_ProxyPullSupplier.erl +/cosEvent/src/CosEventChannelAdmin_ProxyPushConsumer.erl +/cosEvent/src/CosEventChannelAdmin_ProxyPushSupplier.erl +/cosEvent/src/CosEventChannelAdmin_SupplierAdmin.erl +/cosEvent/src/CosEventChannelAdmin_TypeError.erl +/cosEvent/src/CosEventComm_Disconnected.erl +/cosEvent/src/CosEventComm_PullConsumer.erl +/cosEvent/src/CosEventComm_PullSupplier.erl +/cosEvent/src/CosEventComm_PushConsumer.erl +/cosEvent/src/CosEventComm_PushSupplier.erl +/cosEvent/src/oe_CosEventChannelAdmin.erl +/cosEvent/src/oe_CosEventComm.erl +/cosEvent/src/oe_CosEventComm_CAdmin.erl +/cosEvent/src/oe_CosEventComm_CAdmin.hrl +/cosEvent/src/oe_CosEventComm_Channel.erl +/cosEvent/src/oe_CosEventComm_Channel.hrl +/cosEvent/src/oe_CosEventComm_Event.erl +/cosEvent/src/oe_CosEventComm_Event.hrl +/cosEvent/src/oe_CosEventComm_PullerS.erl +/cosEvent/src/oe_CosEventComm_PullerS.hrl +/cosEvent/src/oe_CosEventComm_PusherS.erl +/cosEvent/src/oe_CosEventComm_PusherS.hrl +/cosEvent/src/oe_cosEventApp.erl +/cosEvent/src/oe_cosEventApp.hrl +/cosEventDomain/include/CosEventDomainAdmin.hrl +/cosEventDomain/include/CosEventDomainAdmin_EventDomain.hrl +/cosEventDomain/include/CosEventDomainAdmin_EventDomainFactory.hrl +/cosEventDomain/include/oe_CosEventDomainAdmin.hrl +/cosEventDomain/src/CosEventDomainAdmin.erl +/cosEventDomain/src/CosEventDomainAdmin_AlreadyExists.erl +/cosEventDomain/src/CosEventDomainAdmin_Connection.erl +/cosEventDomain/src/CosEventDomainAdmin_ConnectionIDSeq.erl +/cosEventDomain/src/CosEventDomainAdmin_ConnectionNotFound.erl +/cosEventDomain/src/CosEventDomainAdmin_CycleCreationForbidden.erl +/cosEventDomain/src/CosEventDomainAdmin_CycleSeq.erl +/cosEventDomain/src/CosEventDomainAdmin_DiamondCreationForbidden.erl +/cosEventDomain/src/CosEventDomainAdmin_DiamondSeq.erl +/cosEventDomain/src/CosEventDomainAdmin_DomainIDSeq.erl +/cosEventDomain/src/CosEventDomainAdmin_DomainNotFound.erl +/cosEventDomain/src/CosEventDomainAdmin_EventDomain.erl +/cosEventDomain/src/CosEventDomainAdmin_EventDomainFactory.erl +/cosEventDomain/src/CosEventDomainAdmin_MemberIDSeq.erl +/cosEventDomain/src/CosEventDomainAdmin_RouteSeq.erl +/cosEventDomain/src/oe_CosEventDomainAdmin.erl +/cosFileTransfer/include/CosFileTransfer.hrl +/cosFileTransfer/include/CosFileTransfer_Directory.hrl +/cosFileTransfer/include/CosFileTransfer_File.hrl +/cosFileTransfer/include/CosFileTransfer_FileIterator.hrl +/cosFileTransfer/include/CosFileTransfer_FileTransferSession.hrl +/cosFileTransfer/include/CosFileTransfer_VirtualFileSystem.hrl +/cosFileTransfer/include/oe_CosFileTransfer.hrl +/cosFileTransfer/src/CosFileTransfer.erl +/cosFileTransfer/src/CosFileTransfer_AccessLevel.erl +/cosFileTransfer/src/CosFileTransfer_CommandNotImplementedException.erl +/cosFileTransfer/src/CosFileTransfer_Directory.erl +/cosFileTransfer/src/CosFileTransfer_File.erl +/cosFileTransfer/src/CosFileTransfer_FileIterator.erl +/cosFileTransfer/src/CosFileTransfer_FileList.erl +/cosFileTransfer/src/CosFileTransfer_FileNameList.erl +/cosFileTransfer/src/CosFileTransfer_FileNotFoundException.erl +/cosFileTransfer/src/CosFileTransfer_FileTransferSession.erl +/cosFileTransfer/src/CosFileTransfer_FileWrapper.erl +/cosFileTransfer/src/CosFileTransfer_IllegalOperationException.erl +/cosFileTransfer/src/CosFileTransfer_ProtocolAddressList.erl +/cosFileTransfer/src/CosFileTransfer_ProtocolSupport.erl +/cosFileTransfer/src/CosFileTransfer_RequestFailureException.erl +/cosFileTransfer/src/CosFileTransfer_SessionException.erl +/cosFileTransfer/src/CosFileTransfer_SupportedProtocolAddresses.erl +/cosFileTransfer/src/CosFileTransfer_TransferException.erl +/cosFileTransfer/src/CosFileTransfer_VirtualFileSystem.erl +/cosFileTransfer/src/CosFileTransfer_VirtualFileSystem_ContentList.erl +/cosFileTransfer/src/oe_CosFileTransfer.erl +/cosNotification/include/CosNotification.hrl +/cosNotification/include/CosNotification_AdminPropertiesAdmin.hrl +/cosNotification/include/CosNotification_QoSAdmin.hrl +/cosNotification/include/CosNotifyChannelAdmin.hrl +/cosNotification/include/CosNotifyChannelAdmin_ConsumerAdmin.hrl +/cosNotification/include/CosNotifyChannelAdmin_EventChannel.hrl +/cosNotification/include/CosNotifyChannelAdmin_EventChannelFactory.hrl +/cosNotification/include/CosNotifyChannelAdmin_ProxyConsumer.hrl +/cosNotification/include/CosNotifyChannelAdmin_ProxyPullConsumer.hrl +/cosNotification/include/CosNotifyChannelAdmin_ProxyPullSupplier.hrl +/cosNotification/include/CosNotifyChannelAdmin_ProxyPushConsumer.hrl +/cosNotification/include/CosNotifyChannelAdmin_ProxyPushSupplier.hrl +/cosNotification/include/CosNotifyChannelAdmin_ProxySupplier.hrl +/cosNotification/include/CosNotifyChannelAdmin_SequenceProxyPullConsumer.hrl +/cosNotification/include/CosNotifyChannelAdmin_SequenceProxyPullSupplier.hrl +/cosNotification/include/CosNotifyChannelAdmin_SequenceProxyPushConsumer.hrl +/cosNotification/include/CosNotifyChannelAdmin_SequenceProxyPushSupplier.hrl +/cosNotification/include/CosNotifyChannelAdmin_StructuredProxyPullConsumer.hrl +/cosNotification/include/CosNotifyChannelAdmin_StructuredProxyPullSupplier.hrl +/cosNotification/include/CosNotifyChannelAdmin_StructuredProxyPushConsumer.hrl +/cosNotification/include/CosNotifyChannelAdmin_StructuredProxyPushSupplier.hrl +/cosNotification/include/CosNotifyChannelAdmin_SupplierAdmin.hrl +/cosNotification/include/CosNotifyComm.hrl +/cosNotification/include/CosNotifyComm_NotifyPublish.hrl +/cosNotification/include/CosNotifyComm_NotifySubscribe.hrl +/cosNotification/include/CosNotifyComm_PullConsumer.hrl +/cosNotification/include/CosNotifyComm_PullSupplier.hrl +/cosNotification/include/CosNotifyComm_PushConsumer.hrl +/cosNotification/include/CosNotifyComm_PushSupplier.hrl +/cosNotification/include/CosNotifyComm_SequencePullConsumer.hrl +/cosNotification/include/CosNotifyComm_SequencePullSupplier.hrl +/cosNotification/include/CosNotifyComm_SequencePushConsumer.hrl +/cosNotification/include/CosNotifyComm_SequencePushSupplier.hrl +/cosNotification/include/CosNotifyComm_StructuredPullConsumer.hrl +/cosNotification/include/CosNotifyComm_StructuredPullSupplier.hrl +/cosNotification/include/CosNotifyComm_StructuredPushConsumer.hrl +/cosNotification/include/CosNotifyComm_StructuredPushSupplier.hrl +/cosNotification/include/CosNotifyFilter.hrl +/cosNotification/include/CosNotifyFilter_Filter.hrl +/cosNotification/include/CosNotifyFilter_FilterAdmin.hrl +/cosNotification/include/CosNotifyFilter_FilterFactory.hrl +/cosNotification/include/CosNotifyFilter_MappingFilter.hrl +/cosNotification/include/oe_CosNotification.hrl +/cosNotification/include/oe_CosNotifyChannelAdmin.hrl +/cosNotification/include/oe_CosNotifyComm.hrl +/cosNotification/include/oe_CosNotifyFilter.hrl +/cosNotification/src/CosNotification.erl +/cosNotification/src/CosNotification_AdminPropertiesAdmin.erl +/cosNotification/src/CosNotification_EventBatch.erl +/cosNotification/src/CosNotification_EventHeader.erl +/cosNotification/src/CosNotification_EventType.erl +/cosNotification/src/CosNotification_EventTypeSeq.erl +/cosNotification/src/CosNotification_FixedEventHeader.erl +/cosNotification/src/CosNotification_NamedPropertyRange.erl +/cosNotification/src/CosNotification_NamedPropertyRangeSeq.erl +/cosNotification/src/CosNotification_Property.erl +/cosNotification/src/CosNotification_PropertyError.erl +/cosNotification/src/CosNotification_PropertyErrorSeq.erl +/cosNotification/src/CosNotification_PropertyRange.erl +/cosNotification/src/CosNotification_PropertySeq.erl +/cosNotification/src/CosNotification_QoSAdmin.erl +/cosNotification/src/CosNotification_StructuredEvent.erl +/cosNotification/src/CosNotification_UnsupportedAdmin.erl +/cosNotification/src/CosNotification_UnsupportedQoS.erl +/cosNotification/src/CosNotifyChannelAdmin_AdminIDSeq.erl +/cosNotification/src/CosNotifyChannelAdmin_AdminLimit.erl +/cosNotification/src/CosNotifyChannelAdmin_AdminLimitExceeded.erl +/cosNotification/src/CosNotifyChannelAdmin_AdminNotFound.erl +/cosNotification/src/CosNotifyChannelAdmin_ChannelIDSeq.erl +/cosNotification/src/CosNotifyChannelAdmin_ChannelNotFound.erl +/cosNotification/src/CosNotifyChannelAdmin_ConnectionAlreadyActive.erl +/cosNotification/src/CosNotifyChannelAdmin_ConnectionAlreadyInactive.erl +/cosNotification/src/CosNotifyChannelAdmin_ConsumerAdmin.erl +/cosNotification/src/CosNotifyChannelAdmin_EventChannel.erl +/cosNotification/src/CosNotifyChannelAdmin_EventChannelFactory.erl +/cosNotification/src/CosNotifyChannelAdmin_NotConnected.erl +/cosNotification/src/CosNotifyChannelAdmin_ProxyConsumer.erl +/cosNotification/src/CosNotifyChannelAdmin_ProxyIDSeq.erl +/cosNotification/src/CosNotifyChannelAdmin_ProxyNotFound.erl +/cosNotification/src/CosNotifyChannelAdmin_ProxyPullConsumer.erl +/cosNotification/src/CosNotifyChannelAdmin_ProxyPullSupplier.erl +/cosNotification/src/CosNotifyChannelAdmin_ProxyPushConsumer.erl +/cosNotification/src/CosNotifyChannelAdmin_ProxyPushSupplier.erl +/cosNotification/src/CosNotifyChannelAdmin_ProxySupplier.erl +/cosNotification/src/CosNotifyChannelAdmin_SequenceProxyPullConsumer.erl +/cosNotification/src/CosNotifyChannelAdmin_SequenceProxyPullSupplier.erl +/cosNotification/src/CosNotifyChannelAdmin_SequenceProxyPushConsumer.erl +/cosNotification/src/CosNotifyChannelAdmin_SequenceProxyPushSupplier.erl +/cosNotification/src/CosNotifyChannelAdmin_StructuredProxyPullConsumer.erl +/cosNotification/src/CosNotifyChannelAdmin_StructuredProxyPullSupplier.erl +/cosNotification/src/CosNotifyChannelAdmin_StructuredProxyPushConsumer.erl +/cosNotification/src/CosNotifyChannelAdmin_StructuredProxyPushSupplier.erl +/cosNotification/src/CosNotifyChannelAdmin_SupplierAdmin.erl +/cosNotification/src/CosNotifyComm_InvalidEventType.erl +/cosNotification/src/CosNotifyComm_NotifyPublish.erl +/cosNotification/src/CosNotifyComm_NotifySubscribe.erl +/cosNotification/src/CosNotifyComm_PullConsumer.erl +/cosNotification/src/CosNotifyComm_PullSupplier.erl +/cosNotification/src/CosNotifyComm_PushConsumer.erl +/cosNotification/src/CosNotifyComm_PushSupplier.erl +/cosNotification/src/CosNotifyComm_SequencePullConsumer.erl +/cosNotification/src/CosNotifyComm_SequencePullSupplier.erl +/cosNotification/src/CosNotifyComm_SequencePushConsumer.erl +/cosNotification/src/CosNotifyComm_SequencePushSupplier.erl +/cosNotification/src/CosNotifyComm_StructuredPullConsumer.erl +/cosNotification/src/CosNotifyComm_StructuredPullSupplier.erl +/cosNotification/src/CosNotifyComm_StructuredPushConsumer.erl +/cosNotification/src/CosNotifyComm_StructuredPushSupplier.erl +/cosNotification/src/CosNotifyFilter_CallbackIDSeq.erl +/cosNotification/src/CosNotifyFilter_CallbackNotFound.erl +/cosNotification/src/CosNotifyFilter_ConstraintExp.erl +/cosNotification/src/CosNotifyFilter_ConstraintExpSeq.erl +/cosNotification/src/CosNotifyFilter_ConstraintIDSeq.erl +/cosNotification/src/CosNotifyFilter_ConstraintInfo.erl +/cosNotification/src/CosNotifyFilter_ConstraintInfoSeq.erl +/cosNotification/src/CosNotifyFilter_ConstraintNotFound.erl +/cosNotification/src/CosNotifyFilter_DuplicateConstraintID.erl +/cosNotification/src/CosNotifyFilter_Filter.erl +/cosNotification/src/CosNotifyFilter_FilterAdmin.erl +/cosNotification/src/CosNotifyFilter_FilterFactory.erl +/cosNotification/src/CosNotifyFilter_FilterIDSeq.erl +/cosNotification/src/CosNotifyFilter_FilterNotFound.erl +/cosNotification/src/CosNotifyFilter_InvalidConstraint.erl +/cosNotification/src/CosNotifyFilter_InvalidGrammar.erl +/cosNotification/src/CosNotifyFilter_InvalidValue.erl +/cosNotification/src/CosNotifyFilter_MappingConstraintInfo.erl +/cosNotification/src/CosNotifyFilter_MappingConstraintInfoSeq.erl +/cosNotification/src/CosNotifyFilter_MappingConstraintPair.erl +/cosNotification/src/CosNotifyFilter_MappingConstraintPairSeq.erl +/cosNotification/src/CosNotifyFilter_MappingFilter.erl +/cosNotification/src/CosNotifyFilter_UnsupportedFilterableData.erl +/cosNotification/src/cosNotification_Grammar.erl +/cosNotification/src/oe_CosNotification.erl +/cosNotification/src/oe_CosNotificationComm.hrl +/cosNotification/src/oe_CosNotificationComm_Event.erl +/cosNotification/src/oe_CosNotificationComm_Event.hrl +/cosNotification/src/oe_CosNotifyChannelAdmin.erl +/cosNotification/src/oe_CosNotifyComm.erl +/cosNotification/src/oe_CosNotifyFilter.erl +/cosNotification/src/oe_cosNotificationAppComm.erl +/cosNotification/src/oe_cosNotificationAppComm.hrl +/cosProperty/include/CosPropertyService.hrl +/cosProperty/include/CosPropertyService_PropertiesIterator.hrl +/cosProperty/include/CosPropertyService_PropertyNamesIterator.hrl +/cosProperty/include/CosPropertyService_PropertySet.hrl +/cosProperty/include/CosPropertyService_PropertySetDef.hrl +/cosProperty/include/CosPropertyService_PropertySetDefFactory.hrl +/cosProperty/include/CosPropertyService_PropertySetFactory.hrl +/cosProperty/include/oe_CosProperty.hrl +/cosProperty/src/CosPropertyService_ConflictingProperty.erl +/cosProperty/src/CosPropertyService_ConstraintNotSupported.erl +/cosProperty/src/CosPropertyService_FixedProperty.erl +/cosProperty/src/CosPropertyService_InvalidPropertyName.erl +/cosProperty/src/CosPropertyService_MultipleExceptions.erl +/cosProperty/src/CosPropertyService_Properties.erl +/cosProperty/src/CosPropertyService_PropertiesIterator.erl +/cosProperty/src/CosPropertyService_Property.erl +/cosProperty/src/CosPropertyService_PropertyDef.erl +/cosProperty/src/CosPropertyService_PropertyDefs.erl +/cosProperty/src/CosPropertyService_PropertyException.erl +/cosProperty/src/CosPropertyService_PropertyExceptions.erl +/cosProperty/src/CosPropertyService_PropertyMode.erl +/cosProperty/src/CosPropertyService_PropertyModes.erl +/cosProperty/src/CosPropertyService_PropertyNames.erl +/cosProperty/src/CosPropertyService_PropertyNamesIterator.erl +/cosProperty/src/CosPropertyService_PropertyNotFound.erl +/cosProperty/src/CosPropertyService_PropertySet.erl +/cosProperty/src/CosPropertyService_PropertySetDef.erl +/cosProperty/src/CosPropertyService_PropertySetDefFactory.erl +/cosProperty/src/CosPropertyService_PropertySetFactory.erl +/cosProperty/src/CosPropertyService_PropertyTypes.erl +/cosProperty/src/CosPropertyService_ReadOnlyProperty.erl +/cosProperty/src/CosPropertyService_UnsupportedMode.erl +/cosProperty/src/CosPropertyService_UnsupportedProperty.erl +/cosProperty/src/CosPropertyService_UnsupportedTypeCode.erl +/cosProperty/src/oe_CosProperty.erl +/cosTime/include/CosTime.hrl +/cosTime/include/CosTime_TIO.hrl +/cosTime/include/CosTime_TimeService.hrl +/cosTime/include/CosTime_UTO.hrl +/cosTime/include/CosTimerEvent.hrl +/cosTime/include/CosTimerEvent_TimerEventHandler.hrl +/cosTime/include/CosTimerEvent_TimerEventService.hrl +/cosTime/include/TimeBase.hrl +/cosTime/include/oe_CosTime.hrl +/cosTime/include/oe_CosTimerEvent.hrl +/cosTime/include/oe_TimeBase.hrl +/cosTime/src/CosTime_TIO.erl +/cosTime/src/CosTime_TimeService.erl +/cosTime/src/CosTime_TimeUnavailable.erl +/cosTime/src/CosTime_UTO.erl +/cosTime/src/CosTimerEvent_TimerEventHandler.erl +/cosTime/src/CosTimerEvent_TimerEventService.erl +/cosTime/src/CosTimerEvent_TimerEventT.erl +/cosTime/src/TimeBase_IntervalT.erl +/cosTime/src/TimeBase_UtcT.erl +/cosTime/src/oe_CosTime.erl +/cosTime/src/oe_CosTimerEvent.erl +/cosTime/src/oe_TimeBase.erl +/cosTransactions/include/CosTransactions.hrl +/cosTransactions/include/CosTransactions_Control.hrl +/cosTransactions/include/CosTransactions_Coordinator.hrl +/cosTransactions/include/CosTransactions_RecoveryCoordinator.hrl +/cosTransactions/include/CosTransactions_Resource.hrl +/cosTransactions/include/CosTransactions_SubtransactionAwareResource.hrl +/cosTransactions/include/CosTransactions_Terminator.hrl +/cosTransactions/include/CosTransactions_TransactionFactory.hrl +/cosTransactions/include/ETraP.hrl +/cosTransactions/include/ETraP_Server.hrl +/cosTransactions/include/oe_CosTransactions.hrl +/cosTransactions/src/CosTransactions_Control.erl +/cosTransactions/src/CosTransactions_Coordinator.erl +/cosTransactions/src/CosTransactions_HeuristicCommit.erl +/cosTransactions/src/CosTransactions_HeuristicHazard.erl +/cosTransactions/src/CosTransactions_HeuristicMixed.erl +/cosTransactions/src/CosTransactions_HeuristicRollback.erl +/cosTransactions/src/CosTransactions_Inactive.erl +/cosTransactions/src/CosTransactions_InvalidControl.erl +/cosTransactions/src/CosTransactions_NoTransaction.erl +/cosTransactions/src/CosTransactions_NotPrepared.erl +/cosTransactions/src/CosTransactions_NotSubtransaction.erl +/cosTransactions/src/CosTransactions_PropagationContext.erl +/cosTransactions/src/CosTransactions_RecoveryCoordinator.erl +/cosTransactions/src/CosTransactions_Resource.erl +/cosTransactions/src/CosTransactions_SubtransactionAwareResource.erl +/cosTransactions/src/CosTransactions_SubtransactionsUnavailable.erl +/cosTransactions/src/CosTransactions_SynchronizationUnavailable.erl +/cosTransactions/src/CosTransactions_Terminator.erl +/cosTransactions/src/CosTransactions_TransIdentity.erl +/cosTransactions/src/CosTransactions_TransactionFactory.erl +/cosTransactions/src/CosTransactions_Unavailable.erl +/cosTransactions/src/CosTransactions_WrongTransaction.erl +/cosTransactions/src/CosTransactions_otid_t.erl +/cosTransactions/src/ETraP_Server.erl +/cosTransactions/src/oe_CosTransactions.erl +/orber/COSS/CosNaming/CosNaming.hrl +/orber/COSS/CosNaming/CosNaming_Binding.erl +/orber/COSS/CosNaming/CosNaming_BindingIterator.erl +/orber/COSS/CosNaming/CosNaming_BindingIterator.hrl +/orber/COSS/CosNaming/CosNaming_BindingList.erl +/orber/COSS/CosNaming/CosNaming_Name.erl +/orber/COSS/CosNaming/CosNaming_NameComponent.erl +/orber/COSS/CosNaming/CosNaming_NamingContext.erl +/orber/COSS/CosNaming/CosNaming_NamingContext.hrl +/orber/COSS/CosNaming/CosNaming_NamingContextExt.erl +/orber/COSS/CosNaming/CosNaming_NamingContextExt.hrl +/orber/COSS/CosNaming/CosNaming_NamingContextExt_AlreadyBound.erl +/orber/COSS/CosNaming/CosNaming_NamingContextExt_CannotProceed.erl +/orber/COSS/CosNaming/CosNaming_NamingContextExt_InvalidAddress.erl +/orber/COSS/CosNaming/CosNaming_NamingContextExt_InvalidName.erl +/orber/COSS/CosNaming/CosNaming_NamingContextExt_NotEmpty.erl +/orber/COSS/CosNaming/CosNaming_NamingContextExt_NotFound.erl +/orber/COSS/CosNaming/CosNaming_NamingContext_AlreadyBound.erl +/orber/COSS/CosNaming/CosNaming_NamingContext_CannotProceed.erl +/orber/COSS/CosNaming/CosNaming_NamingContext_InvalidName.erl +/orber/COSS/CosNaming/CosNaming_NamingContext_NotEmpty.erl +/orber/COSS/CosNaming/CosNaming_NamingContext_NotFound.erl +/orber/COSS/CosNaming/oe_cos_naming.erl +/orber/COSS/CosNaming/oe_cos_naming.hrl +/orber/COSS/CosNaming/oe_cos_naming_ext.erl +/orber/COSS/CosNaming/oe_cos_naming_ext.hrl +/orber/examples/Stack/StackModule.hrl +/orber/examples/Stack/StackModule_EmptyStack.erl +/orber/examples/Stack/StackModule_Stack.erl +/orber/examples/Stack/StackModule_Stack.hrl +/orber/examples/Stack/StackModule_StackFactory.erl +/orber/examples/Stack/StackModule_StackFactory.hrl +/orber/examples/Stack/oe_stack.erl +/orber/examples/Stack/oe_stack.hrl +/orber/src/CORBA.hrl +/orber/src/OrberApp.hrl +/orber/src/OrberApp_IFR.erl +/orber/src/OrberApp_IFR.hrl +/orber/src/erlang.hrl +/orber/src/erlang_binary.erl +/orber/src/erlang_pid.erl +/orber/src/erlang_port.erl +/orber/src/erlang_ref.erl +/orber/src/oe_CORBA.erl +/orber/src/oe_CORBA.hrl +/orber/src/oe_OrberIFR.erl +/orber/src/oe_OrberIFR.hrl +/orber/src/oe_erlang.erl +/orber/src/oe_erlang.hrl diff --git a/lib/asn1/doc/src/Makefile b/lib/asn1/doc/src/Makefile index be8755f0ff..d29225f6c9 100644 --- a/lib/asn1/doc/src/Makefile +++ b/lib/asn1/doc/src/Makefile @@ -51,9 +51,7 @@ XML_REF3_FILES = asn1ct.xml \ GEN_XML = \ asn1_spec.xml -XML_PART_FILES = \ - part.xml \ - part_notes.xml +XML_PART_FILES = part.xml XML_HTML_FILE = \ notes_history.xml diff --git a/lib/asn1/doc/src/note.gif b/lib/asn1/doc/src/note.gif Binary files differdeleted file mode 100644 index 6fffe30419..0000000000 --- a/lib/asn1/doc/src/note.gif +++ /dev/null diff --git a/lib/asn1/doc/src/notes_history.xml b/lib/asn1/doc/src/notes_history.xml deleted file mode 100644 index e6c423e79e..0000000000 --- a/lib/asn1/doc/src/notes_history.xml +++ /dev/null @@ -1,1782 +0,0 @@ -<?xml version="1.0" encoding="latin1" ?> -<!DOCTYPE chapter SYSTEM "chapter.dtd"> - -<chapter> - <header> - <copyright> - <year>2006</year><year>2009</year> - <holder>Ericsson AB. All Rights Reserved.</holder> - </copyright> - <legalnotice> - The contents of this file are subject to the Erlang Public License, - Version 1.1, (the "License"); you may not use this file except in - compliance with the License. You should have received a copy of the - Erlang Public License along with this software. If not, it can be - retrieved online at http://www.erlang.org/. - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and limitations - under the License. - - </legalnotice> - - <title>ASN1 Release Notes</title> - <prepared>Bertil Karlsson</prepared> - <responsible></responsible> - <docno></docno> - <approved></approved> - <checked></checked> - <date>06-04-24</date> - <rev></rev> - <file>notes_history.sgml</file> - </header> - <p>This document describes the changes made to the asn1 system - from version to version. The intention of this document is to - list all incompatibilities as well as all enhancements and - bug-fixes for every release of the asn1 application. Each release of asn1 - thus constitutes one section in this document. The title of each - section is the version number of asn1.</p> - - - <section> - <title>Asn1 1.4.4.14</title> - - <section> - <title>Improvements and New Features</title> - <list type="bulleted"> - <item> - <p>Data in info/0 in generated code is moved to attribute - asn1_info, thus vsn value remains the same if compiler - options for asn1-spec differs but the generated code is - the same.</p> - <p>Own Id: OTP-6462</p> - </item> - <item> - <p>Dialyzer warnings on asn1 are removed, i.e. dead code - removed.</p> - <p>Own Id: OTP-6506</p> - </item> - </list> - </section> - </section> - - <section> - <title>Asn1 1.4.4.13</title> - - <section> - <title>Improvements and New Features</title> - <list type="bulleted"> - <item> - <p>Now it is possible to use 'asn1config' and 'inline' - options together. It is also possible to use 'inline' on - a single file like: - <c>asn1ct:compile("MyASN1spec.asn",[inline])</c>.</p> - <p>Own Id: OTP-6405</p> - </item> - </list> - </section> - </section> - - <section> - <title>Asn1 1.4.4.12</title> - - <section> - <title>Improvements and New Features</title> - <list type="bulleted"> - <item> - <p>As a complement to the option "{inline,OutputFile}" it is - now possible to use the option "inline". Then asn1 creates - an output file with the name of the source .set file.</p> - <p>Own Id: OTP-6314</p> - </item> - </list> - </section> - </section> - - <section> - <title>Asn1 1.4.4.11</title> - - <section> - <title>Fixed Bugs and Malfunctions</title> - <list type="bulleted"> - <item> - <p>When compiling an asn1 source that reference a type in - another source the compiler uses the asn1db file of the - other source to resolve the reference. It also tests - whether the other source has been updated since the - asn1db file was generated. This last test was to brutal - in that it exits compilation when no source was found, - even though a asn1db file existed. Changed behavior from - a brutal exit to a warning.</p> - <p>Own Id: OTP-6143</p> - </item> - </list> - </section> - </section> - - <section> - <title>Asn1 1.4.4.10</title> - - <section> - <title>Fixed Bugs and Malfunctions</title> - <list type="bulleted"> - <item> - <p>asn1 encoding failed on BIT STRING with constraint - <c>(SIZE (32..MAX))</c>.</p> - <p>Own Id: OTP-5932</p> - </item> - <item> - <p>Race condition removed in server for variable names for - generated code.</p> - <p>Own Id: OTP-6111</p> - </item> - </list> - </section> - </section> - - <section> - <title>Asn1 1.4.4.9</title> - - <section> - <title>Fixed Bugs and Malfunctions</title> - <list type="bulleted"> - <item> - <p>Now exists a default function clause for table lookup of - a table constraint. This causes a nice error instead of a - crash. Did also remove some obsolete funs ({Mod,Fun}) in - generated code.</p> - <p>Own Id: OTP-5783</p> - </item> - <item> - <p>ASN1-compiler failed to derive a value out of an external - reference in some certain cases, when compiling specs so - that the spec with the reference was compiled before the - spec with the defined value.</p> - <p>Own Id: OTP-5812 Aux Id: seq10133 </p> - </item> - <item> - <p>The documentation of how records of embedded types are - named is extended and made clearer by examples and rules. - The section "Naming of Records in .hrl Files" in the - User's Guide is added.</p> - <p>Own Id: OTP-5831 Aux Id: seq10133 </p> - </item> - <item> - <p>The compiler failed to give right name to record/function - of a parameterized type that was referenced through - another instance of a parameterized type in another - module. The fault occurred when modules were compiled in a - certain order. Now the compiler resolves the name - correctly.</p> - <p>Own Id: OTP-5832 Aux Id: seq10133 </p> - </item> - </list> - </section> - </section> - - <section> - <title>Asn1 1.4.4.8</title> - - <section> - <title>Fixed Bugs and Malfunctions</title> - <list type="bulleted"> - <item> - <p>The dynamic sort of SET OF values now correctly handles - values encoded in the "ber_bin, der, optimize" mode, the - value of a SET OF is a list of binaries.</p> - <p>Own Id: OTP-5687</p> - </item> - <item> - <p>Bad code was generated for an INTEGER with value-range. If - the value that was encoded had a lower bound with - negative value it caused a crash. This bug is now - removed.</p> - <p>Own Id: OTP-5688 Aux Id: seq10049 </p> - </item> - <item> - <p>Compiler now handles wrong include paths by returning an - error if a referenced module is not available.</p> - <p>Own Id: OTP-5689</p> - </item> - <item> - <p>The bug causing a runtime error when encoding a type - defined by: <c>BIT STRING {a(1),b(2)}</c> with the value - [] in <c>per_bin</c> mode is now removed.</p> - <p>Own Id: OTP-5710 Aux Id: seq10066 </p> - </item> - </list> - </section> - - <section> - <title>Improvements and New Features</title> - <list type="bulleted"> - <item> - <p>Better handling of filename paths</p> - <p>Own Id: OTP-5701</p> - </item> - </list> - </section> - </section> - - <section> - <title>Asn1 1.4.4.7</title> - - <section> - <title>Fixed Bugs and Malfunctions</title> - <list type="bulleted"> - <item> - <p>Effective constraint for <c>per</c> now corrected. For - instance <c>INTEGER (0|15..269)</c> didn't work properly.</p> - <p>Own Id: OTP-5477 Aux Id: OTP-5511 </p> - </item> - <item> - <p>Adjusted compiler so that functions in generated code - only are exported once.</p> - <p>Own Id: OTP-5509</p> - </item> - <item> - <p>Fixed the compiler failure when handling a value range - constraint with an extension mark that had the Lower - bound and/or Upper bound values as an external reference - to a defined value.</p> - <p>Own Id: OTP-5511 Aux Id: OTP-5466 </p> - </item> - <item> - <p>Removed sorting of elements for SEQUENCE OF. It shall - only be done in SET OF.</p> - <p>Own Id: OTP-5602</p> - </item> - <item> - <p>Corrected code that generated code causing badarith - warning.</p> - <p>Own Id: OTP-5616</p> - </item> - </list> - </section> - </section> - - <section> - <title>Asn1 1.4.4.6</title> - - <section> - <title>Known Bugs and Problems</title> - <list type="bulleted"> - <item> - <p>Compiler now correctly crashes when compiling bad values. - Failed for instance on INTEGER value that was a reference - to a defined value. Also solved problem with a union - constraint on an INTEGER.</p> - <p>Own Id: OTP-5457</p> - </item> - <item> - <p>Additional coverage of object set syntax.</p> - <p>Own Id: OTP-5466</p> - </item> - </list> - </section> - </section> - - <section> - <title>Asn1 1.4.4.5</title> - - <section> - <title>Fixed Bugs and Malfunctions</title> - <list type="bulleted"> - <item> - <p>A bug due to representation of open_type values is now - fixed. It could cause problem if one used the EXTERNAL - type.</p> - <p>Own Id: OTP-5302</p> - </item> - <item> - <p>Due to an internal error the same code could have been - generated more than one time. This happened for the - exclusive decode functionality.</p> - <p>Own Id: OTP-5378</p> - </item> - </list> - </section> - </section> - - <section> - <title>Asn1 1.4.4.4</title> - - <section> - <title>Fixed Bugs and Malfunctions</title> - <list type="bulleted"> - <item> - <p>Empty objects caused problems. There was trouble when an - object set referenced imported objects that in turn - referenced imported types. Lacked support of - SelectionType in object. All these have been attended.</p> - <p>Own Id: OTP-5240</p> - </item> - </list> - </section> - - <section> - <title>Improvements and New Features</title> - <list type="bulleted"> - <item> - <p>Now it is possible to inline asn1 run-time functionality - in the module generated by the asn1 compiler. Thus, it - will be only one module doing all encoding/decoding.</p> - <p>Own Id: OTP-5243</p> - </item> - </list> - </section> - </section> - - <section> - <title>Asn1 1.4.4.3</title> - - <section> - <title>Fixed errors and malfunctions</title> - <list type="bulleted"> - <item> - <p>A class that was referenced in two steps caused a - compiler failure. It is now corrected.</p> - <p>Own Id: OTP-5103</p> - </item> - </list> - </section> - - <section> - <title>Improvements and new features</title> - <list type="bulleted"> - <item> - <p>Optionally make it possible to get the un-decoded rest along with - the return value. Compile with option <em>undec_rest</em>.</p> - <p>Own Id: OTP-5104</p> - </item> - </list> - </section> - </section> - - <section> - <title>Asn1 1.4.4.2</title> - - <section> - <title>Fixed errors and malfunctions</title> - <list type="bulleted"> - <item> - <p>An error due to unchecked referenced imported type resulted - in missing tag in some table constraint cases. This error is - now corrected. Error occurred during decode in - <c>ber_bin optimized</c> version.</p> - <p>Own Id: OTP-5022</p> - </item> - </list> - </section> - </section> - - <section> - <title>Asn1 1.4.4.1</title> - - <section> - <title>Fixed errors and malfunctions</title> - <list type="bulleted"> - <item> - <p>When a referenced value in another module in turn referenced a - defined value the compilation crashed. This is due to the new - routines for compilation, that external references are resolved - during compilation, and not by the order in which modules are - compiled. This error is now corrected.</p> - <p>Own Id: OTP-4970</p> - </item> - </list> - </section> - </section> - - <section> - <title>Asn1 1.4.4</title> - - <section> - <title>Fixed errors and malfunctions</title> - <list type="bulleted"> - <item> - <p>Functionality for parameterized class is added. Parsing failures on - WithSyntax spec is corrected.</p> - <p>Own Id: OTP-4893</p> - </item> - <item> - <p>The failure due to Parameterized Type when parameter is an object - set is corrected.</p> - <p>Own Id: OTP-4894</p> - <p>Aux Id: OTP-4893</p> - </item> - <item> - <p>Object Identifier values with two components and the first was a - value reference failed due to parsing conflicts. Now it is - corrected.</p> - <p>Own Id: OTP-4895</p> - </item> - <item> - <p>The erroneous comparison of file name and asn1 module name could - cause compilation failure. The situation for this failure is rare, - it requires that other processes modifies the compiled file during - the compilation procedure. It is now fixed.</p> - <p>Own Id: OTP-4944</p> - <p>Aux Id: seq8429</p> - </item> - <item> - <p>Selective decode was ignored when exclusive decode spec in asn1 - configfile was missing. Selective decode failed when the selected - type was the top type. These bugs are now removed.</p> - <p>Own Id: OTP-4953</p> - <p>Aux Id: seq8436</p> - </item> - <item> - <p>The test interface asn1ct:test/1,2,3 and asn1ct:value/2 failed for - open type and EXTERNAL. The bug is now removed.</p> - <p>Own Id: OTP-4955</p> - <p>Aux Id: seq8438)</p> - </item> - <item> - <p>Two equal functions were generated for two components referencing - the same type when they were picked by the action "parts". The bug - is now fixed.</p> - <p>Own Id: OTP-4957</p> - <p>Aux Id: seq8434</p> - </item> - </list> - </section> - - <section> - <title>Improvements and new features</title> - <list type="bulleted"> - <item> - <p>INTEGER with named number list and ENUMERATED can now be sub - constrained with names from the names list.</p> - <p>Own Id: OTP-4917</p> - </item> - <item> - <p>Now there is support for SelectionType (X 680 section 29)</p> - <p>Own Id: OTP-4918</p> - </item> - <item> - <p>The compiler now resolves circular dependencies. When asn1 specs - IMPORTS from each other so that there are circular dependencies.</p> - <p>Own Id: OTP-4919</p> - </item> - <item> - <p>Now is the asn1 type UTF8String supported. For user instructions - see documentation.</p> - <p>Own Id: OTP-4965</p> - </item> - </list> - </section> - </section> - - <section> - <title>Asn1 1.4.3.1</title> - - <section> - <title>Fixed Bugs and Malfunctions</title> - <list type="bulleted"> - <item> - <p>The <c>{internal_error,...,{ unrecognized_type,...}}</c> - error occurring for a SET type when compiling with options - <c>[ber_bin,optimize,der]</c> is now corrected.</p> - <p>Own Id: OTP-4866</p> - </item> - <item> - <p>False encode of BIT STRING in PER (per_bin,optimize) is fixed. The error occurred when there was a type like BIT STRING (SIZE(C)) and C > 16.</p> - <p>Own Id: OTP-4869</p> - </item> - </list> - </section> - </section> - - <section> - <title>Asn1 1.4.3</title> - - <section> - <title>Fixed errors and malfunctions</title> - <list type="bulleted"> - <item> - <p>Functionality to handle parameterized object sets have been added.</p> - <p>Own Id: OTP-4832</p> - </item> - <item> - <p>Bug causing duplicated function definitions using exclusive decode is removed.</p> - <p>Own Id: OTP-4833)</p> - </item> - <item> - <p>The race condition when loading asn1 driver is solved.</p> - <p>Own Id: OTP-4835</p> - </item> - </list> - </section> - - <section> - <title>Improvements and new features</title> - <list type="bulleted"> - <item> - <p>A specialized decode, <em>selective decode</em> is now available. It decodes a chosen internal sub-type of a constructed type.</p> - <p>Own Id: OTP-4856)</p> - </item> - </list> - </section> - </section> - - <section> - <title>Asn1 1.4.2.2</title> - - <section> - <title>Fixed errors and malfunctions</title> - <list type="bulleted"> - <item> - <p>Release of Asn1 1.4.2.1 on R7B, The functionality is the same, but - the layer between the driver and the asn1 erlang code is different.</p> - </item> - </list> - </section> - </section> - - <section> - <title>Asn1 1.4.2.1</title> - - <section> - <title>Fixed errors and malfunctions</title> - <list type="bulleted"> - <item> - <p>ObjectDescriptor does now work as part of a sequence, set or choice.</p> - <p>Own Id: OTP-4773</p> - </item> - <item> - <p>When a SEQUENCE that have extension mark was decoded inside a - SEQUENCE OF it could cause decode error due to a failure in - restbytes2. It is now corrected.</p> - <p>Own Id: OTP-4791)</p> - </item> - <item> - <p>Now the bug is fixed that caused the compiler crash on an untagged - optional open type.</p> - <p>Own Id: OTP-4792</p> - </item> - <item> - <p>The earlier exit caused by bad in-data is now fixed so it will - return an {error,Reason} tuple.</p> - return an {error,Reason} tuple.</p> - <p>Own Id: OTP-4797</p> - </item> - <item> - <p>Open type encoded with indefinite length is now correct decoded.</p> - <p>Own Id: OTP-4798</p> - </item> - <item> - <p>Now is absent optional open types handled correctly.</p> - <p>Own Id: OTP-4799</p> - </item> - <item> - <p>Now is the necessary functions available for sorting in run-time of - SET and SET OF components.</p> - <p>Own Id: OTP-4809</p> - </item> - </list> - </section> - </section> - - <section> - <title>Asn1 1.4.2</title> - - <section> - <title>Fixed errors and malfunctions</title> - <list type="bulleted"> - <item> - <p>When a component in a SEQUENCE is a CHOICE (or reference to a CHOICE) - and the SEQUENCE's component and one of the alternatives in the CHOICE - have identical names, an error may occur if one doesn't use the - 'optimized' versions of the compiler. In the older versions (<c>ber, ber_bin, per, per_bin</c>) one could optionally apply a value of a - component as <c>{ComponentName,Value}</c>, and the generated code - chooses the second element of the tuple. However, a value of a CHOICE - must be applied as a tuple: <c>{AlternativeName,Value}</c>. Thus, - in the rare case described above and if the value to the SEQUENCE's - component is not in a tuple notation the - <c>{AlternativeName,Value}</c> will be peeled off in the SEQUENCE - and the value fed to the CHOICE will only be the <c>Value</c> - part of <c>{AlternativeName,Value}</c>, and the encoder crashes. - The best way to avoid this is to use the optimized version of the - compiler where the unnecessary tuple notation - <c>{ComponentName,Value}</c> no longer is allowed. Since it isn't - possible to solve this bug in the compiler.</p> - <p>Own Id: OTP-4693</p> - </item> - </list> - </section> - - <section> - <title>Improvements and new features</title> - <list type="bulleted"> - <item> - <p>Exclusive decode is enabled by a compiler option and a configuration - file. It makes it possible to leave parts of an ASN.1 encoded message - un-decoded.</p> - <p>Own Id: OTP-4744</p> - </item> - </list> - </section> - </section> - - <section> - <title>Asn1 1.4.1.1</title> - - <section> - <title>Fixed errors and malfunctions</title> - <list type="bulleted"> - <item> - <p>The documentation about how extensibility is handled is now corrected.</p> - <p>Own Id: OTP-4663</p> - </item> - <item> - <p>Function in object now calls the exported function</p> - <p>Own Id: OTP-4665</p> - </item> - <item> - <p>Now is tags for ObjectClassFieldType analyzed correctly.</p> - <p>Own Id: OTP-4666</p> - </item> - </list> - </section> - </section> - - <section> - <title>Asn1 1.4.1</title> - - <section> - <title>Fixed errors and malfunctions</title> - <list type="bulleted"> - <item> - <p>Now is the Default value for an ENUMERATED returned as the name from - the NamedList when decoding.</p> - <p>Own Id: OTP-4633</p> - </item> - <item> - <p>It was an internal failure when permitted alphabet constraint existed - together with for instance a size constraint. E.g. when a - referenced type is constrained by a size constraint and the defined - type in turn is constrained by a permitted alphabet constraint.</p> - <p>Own Id: OTP-4559</p> - </item> - <item> - <p>Record is generated in hrl file for a CHOICE with extension mark - that has an internal SEQUENCE/SET definition.</p> - <p>Own Id: OTP-4560</p> - </item> - <item> - <p>Now is the length of a SEQUENCE/SET OF correctly encoded/decoded (PER).</p> - <p>Own Id: OTP-4590</p> - </item> - <item> - <p>The problem with unordered decoded terms when a component is a - ObjectClassFieldType has been solved.</p> - <p>Own Id: OTP-4591</p> - </item> - </list> - </section> - - <section> - <title>Improvements and new features</title> - <list type="bulleted"> - <item> - <p>More complex definitions with TableConstraints where the SimpleTable - and ComponentRelation are on different levels is now fully - supported.</p> - <p>Own Id: OTP-4631</p> - </item> - </list> - </section> - </section> - - <section> - <title>Asn1 1.4</title> - - <section> - <title>Fixed errors and malfunctions</title> - </section> - - <section> - <title>Improvements and new features</title> - <list type="bulleted"> - <item> - <p>Each generated .erl file have now a function info/0 that returns - information about the used compiler version and options.</p> - <p>Own Id: OTP-4373</p> - </item> - <item> - <p>When compiling an ASN.1 module the compiler generates an Erlang module - that is compiled by the Erlang compiler. Earlier it was not possible to - add options to the final step, the Erlang compilation. By adding any - option that is not recognized as a specific ASN.1 option it will be - passed to the final step like: <c>erlc +debug_info Mymodule.asn</c> or - <c>asn1ct:compile('Mymodule',[debug_info])</c>.</p> - <p>Own Id: OTP-4491</p> - </item> - <item> - <p>Earlier one couldn't multi file compile modules that had different - tagdefault, which now is possible. Equal Type/Value names in different - modules are resolved by renaming (concatenate type name and module - name): If two types with the same name T exist in module A and module B - they will get the new names TA and TB.</p> - <p>(Own Id: OTP-4492)</p> - <p>Aux Id: OTP-3983</p> - </item> - <item> - <p>BER: Encode/decode of data have been significantly improved. By use of - the compiler options <c>ber_bin</c> and <c>optimize</c>, - optimized code will be generated and the optimized run-time module will - be used.</p> - <p>Own Id: OTP-4493</p> - </item> - </list> - </section> - </section> - - <section> - <title>Asn1 1.3.3.1</title> - - <section> - <title>Fixed errors and malfunctions</title> - <list type="bulleted"> - <item> - <p>Proper length encoding and padding implemented for a <c>BIT STRING</c> with - NamedNumberList and size constraint as value range. This functionality - didn't work in the rare occasion when the NamedNumberList is shorter - than the lower bound of the constraint.As in this example: - <c>TestS ::= BIT STRING {a (0),b (1)} (SIZE (3..8))</c></p> - <p>(Own Id: OTP-4353)</p> - </item> - <item> - <p>Bug in compiler, when an <c>OBJECT IDENTIFIER</c> value consisting of - two identifiers (Defined values or Name form identifiers) was falsely - interpreted causing a compiling error is now corrected.</p> - <p>(Own Id: OTP-4354)</p> - </item> - <item> - <p>Internal error in check phase that caused crash on - <c>ObjectClassFieldType</c> in ber_bin is corrected.</p> - <p>(Own Id: OTP-4390)</p> - </item> - <item> - <p>Tags for open types are handled according to <c>x.680 30.6c</c>, i.e. - open types shall not be tagged <c>IMPLICIT.</c></p> - <p>(Own Id: OTP-4395)</p> - <p>(Aux Id: OTP-4390)</p> - </item> - </list> - </section> - </section> - - <section> - <title>Asn1 1.3.3</title> - - <section> - <title>Fixed errors and malfunctions</title> - <list type="bulleted"> - <item> - <p>Now gives the compiler an appropriate error report when exported - undefined types are detected.</p> - <p>(Own Id: OTP-4129)</p> - </item> - <item> - <p>The type <c>ObjectDescriptor</c> is now supported, previously the - implementation of encode/decode for this rarely used type was - incomplete.</p> - <p>(Own Id: OTP-4161)</p> - <p>(Aux Id: seq7165)</p> - </item> - <item> - <p>In case of per and compact_bit_string the rightmost byte were erroneous - truncated when the rightmost bits of that byte were zeros. This is now - corrected.</p> - <p>(Own Id: OTP-4200)</p> - </item> - <item> - <p>Bad match of return-value from decode_length in skipvalue/3 has now been - fixed.</p> - <p>(Own Id: OTP-4232)</p> - </item> - <item> - <p>Now is decode of ENUMERATED handled correctly, when tagged EXPLICIT.</p> - <p>(Own Id: OTP-4234)</p> - </item> - <item> - <p>The compiler now parses and handles the ValueFromObject construct.</p> - <p>(Own Id: OTP-4242)</p> - </item> - <item> - <p>Now does the compiler handle the case when the object set in simple - table and componentrelation constraints is of a CLASS without a UNIQUE - field. In this case is the octets, which is assumed to be encoded, - encoded as an open type.</p> - <p>(Own Id: OTP-4248)</p> - <p>(Aux Id: OTP-4242)</p> - </item> - <item> - <p>Compiler handles objects in AdditionalElementSetSpec in ObjectSetSpec, - i.e. the objects that are referred to after the ellipses in an object set.</p> - <p>(Own Id: OTP-4275)</p> - </item> - <item> - <p>Now are values with a component of type CHOICE encoded with indefinite - length correctly decoded.</p> - <p>(Own Id: OTP-4358)</p> - </item> - </list> - </section> - - <section> - <title>Improvements and new features</title> - <list type="bulleted"> - <item> - <p>The language constructs (from the old 1988 standard) <c>ANY</c> - and <c>ANY DEFINED BY</c> are now implemented.</p> - <p>(Own Id: OTP-2741)</p> - <p>(Aux Id: seq 1188)</p> - </item> - <item> - <p>Now it is checked in run-time if a <c>OBJECT IDENTIFIER</c> value is invalid</p> - <p>(Own Id: OTP-4235)</p> - </item> - <item> - <p>The ASN.1 types EXTERNAL,EMBEDDED PDV and CHARACTER STRING now have full support in the compiler.</p> - <p>(Own Id: OTP-4247)</p> - </item> - <item> - <p>A driver in C does the final job (complete) of the PER encoding when - files are compiled with <c>per_bin</c> and <c>optimize</c> flags. - It gives significant faster encoding for PER.</p> - <p>(Own Id: OTP-4355)</p> - </item> - <item> - <p>Encode and decode of PER encoding has been made faster by moving - analysis done in run-time to compile-time. These optimizations are - available by compiling ASN.1 files with options <c>per_bin</c> and - <c>optimize</c>.</p> - <p>(Own Id: OTP-4381)</p> - <p>(Aux Id: OTP-4355)</p> - </item> - </list> - </section> - </section> - - <section> - <title>Asn1 1.3.2</title> - - <section> - <title>Fixed errors and malfunctions</title> - <list type="bulleted"> - <item> - <p>Now does the compiler check values (including referenced values), and - formats the value so it is suitable to use as input to encoding - functions.</p> - <p>(Own Id: OTP-3277)</p> - <p>(Aux Id: OTP-4103)</p> - </item> - <item> - <p>Unnecessary external function calls in generated code are now generated - as internal function calls.</p> - <p>(Own Id: OTP-4073)</p> - </item> - </list> - </section> - - <section> - <title>Improvements and new features</title> - <list type="bulleted"> - <item> - <p>Now is Information Objects supported in BER encoding.</p> - <p>(Own Id: OTP-3980)</p> - <p>(Aux Id: OTP-3979 OTP-3978)</p> - <p></p> - </item> - <item> - <p>PER: A new option <c>per_bin</c> is now supported. When used the - generated encode/decode functions use binaries and the bit syntax to - get better performance than the old <c>per</c> variant which used - lists. All values input to encode and returned from decode are - compatible between <c>per</c> and <c>per_bin</c> except for - open types which are represented as binaries with per_bin and octet - lists with per. We recommend that you use per_bin instead of per from - now on, the use of binaries will be the default in coming versions and - all improvements and optimizations for PER will be concentrated to that - solution.</p> - <p>(Own Id: OTP-4094)</p> - <p></p> - </item> - <item> - <p>Support for DER implemented. Used by flag +der when compiling. Include - the full BER encoding plus: sorting of SET components, sorting of - encoded elements in SET OF, full check of default values in SET and - SEQUENCE. See new documentation on DER in user_guide sections 1.3.1; - 1.4.11; 1.4.12; 1.4.14; 1.4.16 and 1.10, in the reference manual for - asn1ct.</p> - <p>(Own Id: OTP-4103)</p> - <p></p> - </item> - </list> - </section> - </section> - - <section> - <title>Asn1 1.3.1</title> - - <section> - <title>Fixed errors and malfunctions</title> - <list type="bulleted"> - <item> - <p>Do not generate record in .hrl file for SET types</p> - <p>Own Id: OTP-4025</p> - </item> - <item> - <p>Fixed internal error when using BIT STRINGs with Named Number List in combination with <c>compact_bit_string</c> and <c>ber_bin</c> options.</p> - <p>Own Id: OTP-4026</p> - <p>Aux Id: OTP-3982</p> - </item> - <item> - <p>The atom 'com' can now be used in ENUMERATED as an EnumerationItem.</p> - <p>Own Id: OTP-4037</p> - <p>Aux Id: Seq 7036</p> - </item> - <item> - <p>ber: Now it is possible (again) to encode data format "{Type,Value}" in a SEQUENCE OF RequestParameter, when RequestParameter is of type ENUMERATED. The {Type,Value} - notation is not recommended for use, it is redundant and exist only for very ancient backwards compatibility reasons. The "feature" might be removed in forthcoming versions.</p> - <p>Own Id: OTP-4057</p> - <p>Aux Id: Seq 7066</p> - </item> - <item> - <p>A bug in the parser, that caused failure on COMPONENTS OF is now removed.</p> - <p>Own Id: OTP-4058</p> - </item> - </list> - </section> - </section> - - <section> - <title>Asn1 1.3</title> - - <section> - <title>Known problems</title> - <list type="bulleted"> - <item> - <p>The compiler will now check that a value referenced by name - does exist.</p> - <p>Own Id: OTP-3277</p> - </item> - <item> - <p>BER:Decode of a type T ::= SEQUENCE OF C fails if C is encoded with indefinite length. - This is know corrected.</p> - <p>Own Id: OTP-3811</p> - <p>Aux Id: seq5040</p> - </item> - </list> - </section> - - <section> - <title>Fixed errors and malfunctions</title> - <list type="bulleted"> - <item> - <p>The new parser handles imports when one import ends with FROM, a modulename and a reference to a objectidentifier followed by imports from other modules.</p> - <p>Own Id: OTP-3463</p> - </item> - <item> - <p>The compiler did not check that a name mentioned as EXPORTED - actually is defined within the module. - This is now corrected.</p> - <p>Own Id: OTP-3659</p> - </item> - <item> - <p>Removed bug caused by use of nested indefinite length</p> - <p>Own Id: OTP-3994</p> - </item> - </list> - </section> - - <section> - <title>Improvements and new features</title> - <list type="bulleted"> - <item> - <p>Now supporting most common use of parameterization according to X.683</p> - <p>(Own Id: OTP-3978)</p> - </item> - <item> - <p>PER: Now supporting most common use of Information Objects according to X.681. A new parser has been implemented. The error messages due to syntax errors are slightly different than previous. TableConstraint part of X.682 now also supported.</p> - <p>Own Id: OTP-3979</p> - </item> - <item> - <p>New compiler option added: <c>ber_bin</c>. The compiler generates code with new bit syntax. Run time functions uses bit syntax when feasible. Higher encoding/decoding performance in most cases. Se also comments for Asn1 1.2.9.3.</p> - <p>Own Id: OTP-3981</p> - </item> - <item> - <p>A more compact format of BIT STRING in Erlang is now available by use of the compiler option <c>compact_bit_string</c>. It is much faster when large BIT STRINGs are used.</p> - <p>Own Id: OTP-3982</p> - </item> - <item> - <p>Now possible to merge many ASN.1 input files to one Erlang file by use of a configuration file that lists the ASN.1 files.</p> - <p>Own Id: OTP-3983</p> - </item> - <item> - <p>New documentation in <em>User's Guide</em> in section:</p> - <p>3.1: New compile-time functions and options are described.</p> - <p>4.6: New compact format of BIT STRING is described.</p> - <p>4.8: Additional comments on character strings.</p> - <p>7: New section describing ASN.1 Information Objects.</p> - <p>8: New section describing Parameterization.</p> - <p><em>Reference Manual/asn1ct</em> New compile options are described.</p> - <p>Own Id: OTP-3984</p> - <p>Aux Id: OTP-3978, OTP-3979, OTP-3981, OTP-3982, OTP-3983</p> - </item> - <item> - <p>Added the functionality to invoke ASN1Mod:encode (and decode).</p> - <p>Own Id: OTP-3985</p> - </item> - <item> - <p>Performance improvements by removing not necessary use of apply when calling asn1rt:encode. Also other general improvements.</p> - <p>Own Id: OTP-3988</p> - </item> - </list> - </section> - </section> - - <section> - <title>Asn1 1.2.9.6</title> - - <section> - <title>Known problems</title> - <list type="bulleted"> - <item> - <p>The compiler does not check that an exported name actually exists in the ASN.1 module.</p> - <p>Own Id: OTP-3659</p> - </item> - <item> - <p>The compiler does not check that a value referenced by name does exist.</p> - <p>Own Id: OTP-3277</p> - </item> - <item> - <p>BER: The compiler does not take the extensions into account when checking if - the tags are unique in a SEQUENCE or SET.</p> - <p>Own Id: OTP-3304</p> - </item> - </list> - </section> - - <section> - <title>Fixed errors and malfunctions</title> - <list type="bulleted"> - <item> - <p>PER: Trailing zeroes in a BIT STRING declared without named bits - should not be removed in the encodings.</p> - <p>Own Id: OTP-3830</p> - </item> - </list> - </section> - </section> - - <section> - <title>Asn1 1.2.9.5</title> - - <section> - <title>Known problems</title> - <p>Same as for 1.2.9.3.</p> - </section> - - <section> - <title>Fixed errors and malfunctions</title> - <list type="bulleted"> - <item> - <p>PER: Constraints are not propagated when types are - referring to each other. Example:</p> - <code type="none"> - - TBCD-STRING ::= OCTET STRING - - LAI ::= TBCD-STRING (SIZE(3)) </code> - <p>The size constraint is not passed on during encode,decode - resulting in wrong encoding for PER , it is - coded with a length determinant which should not be there - when the length is fixed. For BER this does not matter because the constraints does - not affect the encodings.</p> - <p>Own Id: OTP-3713</p> - </item> - <item> - <p>The generated code gets wrong if there are several ENUMERATED fields in a SEQUENCE or SET, this is now corrected.</p> - <p>Own Id: OTP-3796</p> - </item> - <item> - <p>BER:Decode of a type T ::= SEQUENCE OF C fails if C is encoded with indefinite length. - This is know corrected.</p> - <p>Own Id: OTP-3811</p> - </item> - </list> - </section> - </section> - - <section> - <title>Asn1 1.2.9.3</title> - - <section> - <title>Known problems</title> - <list type="bulleted"> - <item> - <p>The compiler does not check that an exported name actually exists in the ASN.1 module.</p> - <p>Own Id: OTP-3659</p> - </item> - <item> - <p>The compiler does not check that a value referenced by name does exist.</p> - <p>Own Id: OTP-3277</p> - </item> - <item> - <p>BER: The compiler does not take the extensions into account when checking if - the tags are unique in a SEQUENCE or SET.</p> - <p>Own Id: OTP-3304</p> - </item> - </list> - </section> - - <section> - <title>Fixed errors and malfunctions</title> - <list type="bulleted"> - <item> - <p>This version supports soft upgrade from versions 1.2.6 1.2.7.</p> - </item> - <item> - <p>In an ENUMERATED type like this:</p> - <code type="none"> -\011\011T ::= ENUMERATED { blue, green} </code> - <p>The symbols was encoded/decoded with the wrong values, i.e in - reverse order. This is now corrected.</p> - <p>Own Id: OTP-3700</p> - </item> - <item> - <p>PER: OCTET STRING with Size constrained to a single value i.e fixed size - was treated wrong during encode and decode. This is now corrected.</p> - <p>Own Id: OTP-3701</p> - </item> - </list> - </section> - - <section> - <title>Improvements and new features</title> - <list type="bulleted"> - <item> - <p>There is now a new compiler option <c>ber_bin</c> available that can be used to - generate encode/decode functions for BER that uses the new "bit-syntax" to - make the functions more efficient. The <c>ber_bin</c> option is used - as an alternative to the <c>ber</c> and <c>per</c> options.</p> - <p>The encode function then produces a - possibly nested list of binaries and integer lists. The decode function does - in this case require a single binary as input instead of a list. - The modules generated with this option require that you have an R7A or later - system, otherwise they will not compile and the runtime module asn1rt_ber_bin - can not be executed.</p> - <p>The ber_bin option is not officially supported in this version (will be - in a later version) but is provided for those who want to try it. - It should be significantly faster at decode and is slightly faster at encode. - Exactly how performance differs between this binary approach and the - list approach depends highly on the type of input. - Another thing worth noting is that both approaches still have a lot of - solutions in common which can be improved a lot to gain even better - performance.</p> - </item> - </list> - </section> - </section> - - <section> - <title>Asn1 1.2.9.2</title> - - <section> - <title>Fixed errors and malfunctions</title> - <list type="bulleted"> - <item> - <p>BER: Encode/decode of extension components did not work properly. This is now corrected.</p> - <p>Own Id: OTP-3395</p> - <p>Aux Id: </p> - <p>PER:The encode/decode of NULL as an open type has been corrected. An open type must always have a length of at least 1 byte even if the contained - value (e.g NULL) encodes to nothing.</p> - <p>Own Id: OTP-3496</p> - <p>Aux Id: </p> - </item> - <item> - <p>BER:In the current implementation extension components of a SEQUENCE are required - to be present when they are specified as mandatory. This is an error, all extension - components are "optional" even if they are not specified to have the OPTIONAL or - DEFAULT property. This is now corrected.</p> - <p>Own Id: OTP-3278</p> - </item> - </list> - </section> - - <section> - <title>Improvements and new features</title> - <list type="bulleted"> - <item> - <p>The ASN.1 language feature <c>COMPONENTS OF</c> is now implemented.</p> - <p>Own Id: OTP-2515</p> - </item> - <item> - <p>The encoding and decoding of ENUMERATED and - INTEGER with NamedNumbers is made more efficient and thus - faster in runtime.</p> - <p>Own Id: OTP-3464</p> - <p>Aux Id:</p> - </item> - <item> - <p>Added support for encode/decode of open type which is - constrained to a specific type. Previously the value of - an open type had to be a list of octets, but now the Erlang - representation of the specific type used in the constraint - is used both as input to encode and as output from decode.</p> - <p>Own Id: OTP-3569</p> - <p>Aux Id: </p> - </item> - <item> - <p>PER: GeneralString, GraphicalString etc. i.e all strings - that are not so called "known-multiplier character - string types" are now supported by the runtime - encode/decode functions.</p> - <p>Own Id: OTP-3573</p> - <p>Aux Id:</p> - </item> - </list> - </section> - </section> - - <section> - <title>Asn1 1.2.6</title> - - <section> - <title>Known problems</title> - <list type="bulleted"> - <item> - <p>The ASN.1 language feature <c>COMPONENTS OF</c> is not implemented.</p> - <p>Own Id: OTP-2515</p> - </item> - <item> - <p>The compiler does not check that a value referenced by name does exist.</p> - <p>Own Id: OTP-3277</p> - </item> - <item> - <p>BER:In the current implementation extension components of a SEQUENCE are required - to be present when they are specified as mandatory. This is an error, all extension - components are "optional" even if they are not specified to have the OPTIONAL or - DEFAULT property.</p> - <p>Own Id: OTP-3278</p> - </item> - <item> - <p>BER: The compiler does not take the extensions into account when checking if - the tags are unique in a SEQUENCE or SET.</p> - <p>Own Id: OTP-3304</p> - </item> - </list> - </section> - - <section> - <title>Fixed errors and malfunctions</title> - <list type="bulleted"> - <item> - <p>This version supports soft upgrade from versions 1.1.1, 1.1.5 and 1.1.6. - Two new runtime modules <c>asn1rt_ber_v1</c> and - <c>asn1rt_per_v1</c> are delivered together with the old ones. This makes - it possible to continue running applications with modules generated with the - previous version of the asn1 compiler while modules generated by this version - will use the new runtime modules. Note that it is only advice-able to continue - running old generates if they are working perfectly and have no need - for the corrections made in this version of the asn1 application.</p> - </item> - <item> - <p>BER: SEQUENCEs encoded with indefinite length was not correctly decoded. - This in now corrected.</p> - <p>Own Id: OTP-3352</p> - <p>Aux Id: Seq 4100</p> - </item> - </list> - </section> - </section> - - <section> - <title>Asn1 1.2.4</title> - - <section> - <title>Fixed errors and malfunctions</title> - <list type="bulleted"> - <item> - <p>The compiler now detects multiple definitions of values and types and reports this as - an error. Previously this was detected when the generated Erlang module was compiled.</p> - <p>Own Id: OTP-3105</p> - </item> - <item> - <p>BER: An error regarding encoding of <c>ENUMERATED</c> present in asn1-1.1.1 - is corrected. The new version 1.1.2 of asn1 containing this correction is - delivered as a "patch".</p> - <p>Own Id: OTP-3169</p> - </item> - <item> - <p>BER: Decoding of <c>SEQUENCE OF</c> and <c>SET OF</c> with indefinite length is corrected. - The correction was first delivered in version 1.1.2.</p> - <p>Own Id: OTP-3170</p> - </item> - <item> - <p>BER: Encoding and decoding of <c>ENUMERATED</c> - with extensionmark - "..." did not work (crashed with a runtime error). This - has now been corrected. If an unknown enumerated value is - decoded (for an extensible enumerated type) - it is returned as <c>{asn1_enum,Value}</c> where - <c>Value</c> is an integer. Enumerated values in this format - are also accepted by the encoder. - ASN.1 modules containing - <c>ENUMERATED</c> with extensionmark should be - recompiled with the corrected - version of the compiler. The BER runtime functions are also - corrected. - Note that this correction has already been delivered as a - bugfix for R4B (OTP-2951).</p> - <p>Own Id: OTP-3202</p> - <p>Aux Id: Seq3745</p> - </item> - <item> - <p>BER: The primitive/constructed bit in the tag byte of an encoding - is not correct when it comes to user defined tags. - For example in </p> - <code type="none"> - T ::= [2] SEQUENCE { a BOOLEAN} </code> - <p>the tag 2 does not get the constructed bit set which it should. - This is now corrected.</p> - <p>Own Id: OTP-3241</p> - </item> - <item> - <p>The decoder can now detect if there are unexpected bytes - remaining when all components of a sequence are decoded. - The decoder will then return <c>{error,{asn1{unexpected,Bytes}}}</c></p> - <p>Own Id: OTP-3270</p> - </item> - <item> - <p>Values of type <c>OBJECT IDENTIFIER</c> was sometimes returned as an Erlang list - (ASN.1 constants) and sometimes as a tuple (from the decode functions). This is now - changed so that <c>OBJECT IDENTIFIER</c> values always are represented as an Erlang - tuple.</p> - <p>Own Id: OTP-3280</p> - </item> - <item> - <p>PER:The encode/decode functions could not handle integers with - a range greater than 16#7ffffff. This limit is now removed.</p> - <p>Own Id: OTP-3287</p> - </item> - <item> - <p>PER: The encoding/decoding of the length for a SET OF/SEQUENCE OF - was wrong if there was a size constraint. This is now corrected.</p> - <p>Own Id: OTP-3291</p> - </item> - <item> - <p>PER: Encoding of a constrained INTEGER (range > 16 k) was wrong for - the value 0. This is now corrected.</p> - <p>Own Id: OTP-3306</p> - </item> - </list> - </section> - - <section> - <title>Improvements and new features</title> - <list type="bulleted"> - <item> - <p>The ASN.1 module name and the filename where the ASN.1 - specification resides must match each other (has always been the - case). This is now checked by the compiler. The check requires that - the names match in a case or case insensitive way depending on the - characteristics for the current system.</p> - <p>Own Id: OTP-1843</p> - </item> - <item> - <p>PER: Encode/decode of an extension value (i.e not within the root set) for - <c>ENUMERATED</c> did not work properly. This is now corrected. - If an unknown enumerated value is - decoded (for an extensible enumerated type) - it is returned as <c>{asn1_enum,Value}</c> where - <c>Value</c> is an integer. Enumerated values in this format - are also accepted by the encoder (if the value is >= the number of known - extension values).</p> - <p>Own Id: OTP-2930</p> - </item> - <item> - <p>Unnecessary printouts from the compiler are removed. - The compiler version and the compiler options are now - printed to stdout.</p> - <p>Own Id: OTP-3276</p> - </item> - <item> - <p>In order to better suite the use of ASN.1 in embedded systems only - the modules needed in runtime are now listed in the <c>.app</c> file.</p> - <p>Own Id: OTP-3279</p> - </item> - <item> - <p>The compiler now supports extensionmarker in constraint specifications. - Example:</p> - <code type="none"> -INTEGER (0..10, ...) </code> - <p>In previous version this was reported as a syntax error.</p> - <p>Own Id: OTP-3281</p> - </item> - <item> - <p>A very limited part of ITU-T recommendation X.681 - Abstract Syntax Notation One (ASN.1): Information - object specification is now implemented. Specifically \011 - TYPE IDENTIFIER is recognized by the compiler.</p> - <p>Own Id: OTP-3325</p> - </item> - <item> - <p>Parameterization of ASN.1 specifications (ITU-T X.683) is now - supported to a limited extent.</p> - <p>Own Id: OTP-3326</p> - </item> - </list> - </section> - </section> - - <section> - <title>Asn1 1.1.3.1</title> - - <section> - <title>Fixed errors and malfunctions</title> - <list type="bulleted"> - <item> - <p>BER Encoding and decoding of <c>ENUMERATED</c> - with extensionmark - "..." did not work (crashed with a runtime error). This - has now been corrected. If an unknown enumerated value is - decoded (for an extensible enumerated type) - it is returned as <c>{asn1_enum,Value}</c> where - <c>Value</c> is an integer. Enumerated values in this format - are also accepted by the encoder. - ASN.1 modules containing - <c>ENUMERATED</c> with extensionmark should be - recompiled with the corrected - version of the compiler. The BER runtime functions are also - corrected. - Note that this correction has already been delivered as a - bug-fix for R4B (OTP-2951).</p> - <p>Own Id: OTP-3202</p> - <p>Aux Id: Seq3745</p> - </item> - </list> - </section> - </section> - - <section> - <title>Asn1 1.1.1</title> - - <section> - <title>Known problems</title> - <list type="bulleted"> - <item> - <p>The syntactic construct <c>COMPONENTS OF</c> is not - implemented.</p> - <p>Own Id: OTP-2515</p> - </item> - <item> - <p><c>ANY</c> and <c>ANY DEFINED BY</c> are currently not - supported.</p> - <p>Own Id: OTP-2741</p> - <p>Aux Id: seq 1188</p> - </item> - <item> - <p>Multiple definitions of the same Type or Value is not detected - by the compiler. The error occurs when the generated Erlang - module is compiled.</p> - <p>Own Id: OTP-3105</p> - </item> - </list> - </section> - </section> - - <section> - <title>Asn1 1.1</title> - - <section> - <title>Known problems</title> - <list type="bulleted"> - <item> - <p>The primitive/constructed bit in the tag byte of an encoding - is not correct when it comes to user defined tags. - For example in</p> - <code type="none"> - T ::= [2] SEQUENCE { a BOOLEAN} </code> - <p>the tag 2 does not get the constructed bit set which it should. - This is now corrected.</p> - <p>Own Id: OTP-3241</p> - </item> - </list> - </section> - - <section> - <title>Fixed errors and malfunctions</title> - <list type="bulleted"> - <item> - <p>The BER decoder failed to decode certain nested data types - where <c>IMPLICIT</c> tags where involved. - This is now corrected.</p> - <p>Own Id: OTP-2719</p> - <p>Aux Id: seq 1148</p> - </item> - <item> - <p>The handling of types with extension marker "..." is corrected. - Earlier each SEQUENCE and SET with an extension marker got an - extra field named <c>asn1_EXT</c> in the generated record. - This was a mistake and that field is now removed (concerns - both BER and BER).</p> - <p>Own Id: OTP-2724</p> - <p>Aux Id: seq 1148, OTP-2719</p> - </item> - <item> - <p>The decoder (both BER and PER) could not handle unnamed - bits of a <c>BIT STRING</c> if the type had any - named bits declared. This is now corrected and the unnamed - bits are returned as <c>{bit,Pos}</c> where Pos is the bit - position. The <c>{bit,Pos}</c> can be used as input to the - encoder too.</p> - <p>Own Id: OTP-2725</p> - <p>Aux Id: seq 1148,OTP-2719,OTP-2724</p> - </item> - <item> - <p>The functions <c>asn1rt:decode</c> and <c>asn1ct:decode</c> - did not always return <c>{ok,Result}</c> or - <c>{error,Reason}</c> as documented. This is now corrected.</p> - <p>Own Id: OTP-2730</p> - <p>Aux Id: seq 1158</p> - </item> - <item> - <p>The compiler did not accept CHOICE types as components - of a SEQUENCE or SET when - the modules tag default was IMPLICIT. - Example:</p> - <code type="none"> -C ::= CHOICE { ......} -A ::= SEQUENCE { -a [1] C, -- This was not accepted -..... </code> - <p>This was an error - caused by a misinterpretation of the ASN.1 standard. This - is now corrected.</p> - <p>Own Id: OTP-2731</p> - <p>Aux Id: seq 1163</p> - </item> - <item> - <p>When decoding a SEQUENCE A which contains an OPTIONAL component - b which is a SEQUENCE with mandatory components, the decoder - does not detect as an error that a mandatory component of b - is missing. The same error could occur also in other cases - with nested types and optional components of SEQUENCE or SET. - This is now corrected.</p> - <p>Own Id: OTP-2738</p> - <p>Aux Id: seq 1183</p> - </item> - <item> - <p>BER Encoding and decoding of <c>ENUMERATED</c> - with extensionmark - "..." did not work (crashed with a runtime error). This - has now been corrected. If an unknown enumerated value is - decoded (for an extensible enumerated type) - it is returned as <c>{asn1_enum,Value}</c> where - <c>Value</c> is an integer. Enumerated values in this format - are also accepted by the encoder. - ASN.1 modules containing - <c>ENUMERATED</c> with extensionmark should be - recompiled with the corrected - version of the compiler. The BER runtime functions are also - corrected.</p> - <p>Own Id: OTP-2951</p> - <p>Aux Id: Seq 1446 OTP-2929</p> - </item> - <item> - <p>The compiler does now accept all valid value notations - for the OBJECT IDENTIFIER type. The generated code for - those values is also corrected.</p> - <p>Own Id: OTP-3059</p> - </item> - </list> - </section> - - <section> - <title>Improvements and new features</title> - <list type="bulleted"> - <item> - <p>The code generated for BER is significantly enhanced resulting - in less code and around 300% better performance in runtime - for the encoding of complex ASN.1 values. The performance of - decoding is unchanged.</p> - <p>Own Id: OTP-2806</p> - </item> - </list> - </section> - </section> - - <section> - <title>Asn1 1.0.3</title> - - <section> - <title>Fixed errors and malfunctions</title> - <list type="bulleted"> - <item> - <p>The <c>asn1.app</c> file is corrected.</p> - <p>Own Id: OTP-2640</p> - </item> - <item> - <p>The encoding of integers in BER did not comply with the - standard for all values. The values was not encoded - in the minimum number of octets as required. This is - now corrected in the runtime module <c>asn1rt_ber</c>.</p> - <p>Own Id: OTP-2666</p> - </item> - </list> - </section> - - <section> - <title>Improvements and new features</title> - <list type="bulleted"> - <item> - <p>The compiler now generates explicit exports directives for - all generated - functions that should be exported (instead of -compile(export_all)). - This eliminates the warnings from the Erlang compiler when - compiling the - generated file.</p> - <p>Own Id: OTP-1845</p> - </item> - </list> - </section> - </section> - - <section> - <title>R3B02 (Asn1 1.0.2)</title> - - <section> - <title>Fixed errors and malfunctions</title> - <list type="bulleted"> - <item> - <p>The decoding of a BER encoded SEQUENCE with optional component - of type SEQUENCE (also with optional components) could result - in an error or wrong result if the tags are equal.</p> - <p>Own Id: OTP-2226</p> - </item> - <item> - <p>The encoding of (PER) SEQUENCE with extensionmark was wrong. - This is now corrected.</p> - <p>Own Id: OTP-2349</p> - </item> - </list> - </section> - </section> - - <section> - <title>R3A (Asn1 0.9)</title> - - <section> - <title>Fixed errors and malfunctions</title> - <list type="bulleted"> - <item> - <p>The asn1 compiler now detects the use of an implicit tag before <c>CHOICE</c> as an error (in accordance with the standard)</p> - <p>Own Id: OTP-1844</p> - </item> - <item> - <p>An OPTIONAL CHOICE embedded in SEQUENCE when BER coding - caused an error when generating decode code. This is now - corrected.</p> - <p>Own Id: OTP-1857</p> - <p>Aux Id: OTP-1848</p> - </item> - </list> - </section> - </section> - - <section> - <title>1 ASN1 0.8.1</title> - <p>This is the first release of the ASN1 application. This version is - released for beta-testing. Some functionality will be added until the - 1.0 version is released. See the release notes for the latest version - for the exact details about new features. A list of missing features - and restrictions can be found in the chapter below.</p> - - <section> - <title>1.1 Missing features and other restrictions</title> - <p></p> - <list type="bulleted"> - <item> - <p>The encoding rules BER and PER (aligned) is supported. <em>PER (unaligned) IS NOT SUPPORTED</em>.</p> - </item> - <item> - <p>NOT SUPPORTED types <c>ANY</c> and <c>ANY DEFINED BY</c> - (is not in the standard any more).</p> - </item> - <item> - <p>NOT SUPPORTED types <c>EXTERNAL</c> and <c>EMBEDDED-PDV</c>. </p> - </item> - <item> - <p>NOT SUPPORTED type <c>REAL</c> (planned to be implemented). </p> - </item> - <item> - <p>The code generation support for value definitions in the ASN.1 notation is very limited - (planned to be enhanced).</p> - </item> - <item> - <p>The support for constraints is limited to:</p> - </item> - </list> - <list type="bulleted"> - <item> - <p>SizeConstraint SIZE(X)</p> - </item> - <item> - <p>SingleValue (1)</p> - </item> - <item> - <p>ValueRange (X..Y)</p> - </item> - <item> - <p>PermittedAlpabet FROM (but not for BMPString and UniversalString when generating PER).</p> - </item> - <item> - <p>Complex expressions in constraints is not supported (planned to be extended).</p> - </item> - <item> - <p>The current version of the compiler has very limited error checking:</p> - </item> - <item> - <p>Stops at first syntax error.</p> - </item> - <item> - <p>Does not stop when a reference to an undefined type is found , - but prints an error message. Compilation of the generated - Erlang module will then fail.</p> - </item> - <item> - <p>A whole number of other semantical controls is currently - missing. This means that the compiler will give little - or bad help to detect what's wrong with an ASN.1 - specification, but will mostly work very well when the - ASN.1 specification is correct.</p> - </item> - </list> - <list type="bulleted"> - <item> - <p>The maximum INTEGER supported in this version is a - signed 64 bit integer. This limitation is probably quite - reasonable. (Planned to be extended).</p> - </item> - <item> - <p>Only AUTOMATIC TAGS supported for PER.</p> - </item> - <item> - <p>Only EXPLICIT and IMPLICIT TAGS supported for BER.</p> - </item> - <item> - <p>The compiler supports decoding of BER-data with indefinite - length but it is not possible to produce data with indefinite - length with the encoder.</p> - </item> - </list> - </section> - </section> -</chapter> - diff --git a/lib/asn1/doc/src/part_notes.xml b/lib/asn1/doc/src/part_notes.xml deleted file mode 100644 index b0a6887aa5..0000000000 --- a/lib/asn1/doc/src/part_notes.xml +++ /dev/null @@ -1,39 +0,0 @@ -<?xml version="1.0" encoding="latin1" ?> -<!DOCTYPE part SYSTEM "part.dtd"> - -<part xmlns:xi="http://www.w3.org/2001/XInclude"> - <header> - <copyright> - <year>2004</year><year>2009</year> - <holder>Ericsson AB. All Rights Reserved.</holder> - </copyright> - <legalnotice> - The contents of this file are subject to the Erlang Public License, - Version 1.1, (the "License"); you may not use this file except in - compliance with the License. You should have received a copy of the - Erlang Public License along with this software. If not, it can be - retrieved online at http://www.erlang.org/. - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and limitations - under the License. - - </legalnotice> - - <title>Asn1 Release Notes</title> - <prepared>Ingela Anderton Andin</prepared> - <docno></docno> - <date>>2004-09-07</date> - <rev></rev> - <file>part_notes.sgml</file> - </header> - <description> - <p>The <em>Asn1</em> application - contains modules with compile-time and run-time support for ASN.1.</p> - <p>There are also release notes for - <url href="notes_history.html">older versions</url>.</p> - </description> - <xi:include href="notes.xml"/> -</part> - diff --git a/lib/asn1/doc/src/warning.gif b/lib/asn1/doc/src/warning.gif Binary files differdeleted file mode 100644 index 96af52360e..0000000000 --- a/lib/asn1/doc/src/warning.gif +++ /dev/null diff --git a/lib/compiler/src/beam_asm.erl b/lib/compiler/src/beam_asm.erl index 90d25d87b2..497c4fa07b 100644 --- a/lib/compiler/src/beam_asm.erl +++ b/lib/compiler/src/beam_asm.erl @@ -150,7 +150,7 @@ build_file(Code, Attr, Dict, NumLabels, NumFuncs, Abst, SourceFile, Opts) -> %% Create IFF chunk. Chunks = case member(slim, Opts) of - true -> [Essentials,AttrChunk,CompileChunk,AbstChunk]; + true -> [Essentials,AttrChunk,AbstChunk]; false -> [Essentials,LocChunk,AttrChunk,CompileChunk,AbstChunk] end, build_form(<<"BEAM">>, Chunks). diff --git a/lib/crypto/test/blowfish_SUITE.erl b/lib/crypto/test/blowfish_SUITE.erl index 0a30ac33f3..d4cc167ea9 100644 --- a/lib/crypto/test/blowfish_SUITE.erl +++ b/lib/crypto/test/blowfish_SUITE.erl @@ -1,19 +1,19 @@ %% %% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2008-2009. All Rights Reserved. -%% +%% +%% Copyright Ericsson AB 2009. All Rights Reserved. +%% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in %% compliance with the License. You should have received a copy of the %% Erlang Public License along with this software. If not, it can be %% retrieved online at http://www.erlang.org/. -%% +%% %% Software distributed under the License is distributed on an "AS IS" %% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See %% the License for the specific language governing rights and limitations %% under the License. -%% +%% %% %CopyrightEnd% %% diff --git a/lib/debugger/doc/src/Makefile b/lib/debugger/doc/src/Makefile index e6a1de2701..1c0bbaf9d2 100644 --- a/lib/debugger/doc/src/Makefile +++ b/lib/debugger/doc/src/Makefile @@ -39,7 +39,7 @@ RELSYSDIR = $(RELEASE_PATH)/lib/$(APPLICATION)-$(VSN) XML_APPLICATION_FILES = ref_man.xml XML_REF3_FILES = debugger.xml i.xml int.xml -XML_PART_FILES = part.xml part_notes.xml +XML_PART_FILES = part.xml XML_CHAPTER_FILES = debugger_chapter.xml notes.xml BOOK_FILES = book.xml diff --git a/lib/debugger/doc/src/part_notes.xml b/lib/debugger/doc/src/part_notes.xml deleted file mode 100644 index 60299bbb11..0000000000 --- a/lib/debugger/doc/src/part_notes.xml +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0" encoding="latin1" ?> -<!DOCTYPE part SYSTEM "part.dtd"> - -<part xmlns:xi="http://www.w3.org/2001/XInclude"> - <header> - <copyright> - <year>2004</year><year>2009</year> - <holder>Ericsson AB. All Rights Reserved.</holder> - </copyright> - <legalnotice> - The contents of this file are subject to the Erlang Public License, - Version 1.1, (the "License"); you may not use this file except in - compliance with the License. You should have received a copy of the - Erlang Public License along with this software. If not, it can be - retrieved online at http://www.erlang.org/. - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and limitations - under the License. - - </legalnotice> - - <title>Debugger Release Notes</title> - <prepared></prepared> - <docno></docno> - <date>2004-09-07</date> - <rev>1.0</rev> - <file>part_notes.sgml</file> - </header> - <description> - <p><em>Debugger</em> is a graphical tool which can be used for - debugging and testing of Erlang programs. For example, breakpoints - can be set, code can be single stepped and variable values can be - displayed and changed.</p> - </description> - <xi:include href="notes.xml"> -</part> - - diff --git a/lib/debugger/doc/src/warning.gif b/lib/debugger/doc/src/warning.gif Binary files differdeleted file mode 100644 index 96af52360e..0000000000 --- a/lib/debugger/doc/src/warning.gif +++ /dev/null diff --git a/lib/erl_interface/doc/src/ei_connect.xml b/lib/erl_interface/doc/src/ei_connect.xml index 08e7b122c6..abf705f9e2 100644 --- a/lib/erl_interface/doc/src/ei_connect.xml +++ b/lib/erl_interface/doc/src/ei_connect.xml @@ -619,6 +619,16 @@ typedef struct { <p>These are convenience functions for some common name lookup functions.</p> </desc> </func> + <func> + <name><ret>int</ret><nametext>ei_get_tracelevel(void)</nametext></name> + <name><ret>void</ret><nametext>ei_set_tracelevel(int level)</nametext></name> + <fsummary>Get and set functions for tracing.</fsummary> + <desc> + <p>These functions are used to set tracing on the distribution. The levels are different verbosity levels. A higher level means more information. + See also Debug Information and <c><![CDATA[EI_TRACELEVEL]]></c> below. </p> + <p> <c><![CDATA[ei_set_tracelevel]]></c> and <c><![CDATA[ei_get_tracelevel]]></c> are not thread safe. </p> + </desc> + </func> </funcs> <section> @@ -634,6 +644,17 @@ typedef struct { <item>the environment variable <c><![CDATA[ERL_EPMD_PORT]]></c> is set correctly.</item> </list> + <p>The connection attempt can be traced by setting a tracelevel by either using + <c><![CDATA[ei_set_tracelevel]]></c> or by setting the environment variable <c><![CDATA[EI_TRACELEVEL]]></c>. + The different tracelevels has the following messages:</p> + <list> + <item>1: Verbose error messages</item> + <item>2: Above messages and verbose warning messages </item> + <item>3: Above messages and progress reports for connection handling</item> + <item>4: Above messages and progress reports for communication</item> + <item>5: Above messages and progress reports for data conversion</item> + </list> </section> + </cref> diff --git a/lib/erl_interface/include/ei.h b/lib/erl_interface/include/ei.h index 01272244e1..d1a697615a 100644 --- a/lib/erl_interface/include/ei.h +++ b/lib/erl_interface/include/ei.h @@ -339,7 +339,13 @@ const char *ei_thisalivename(const ei_cnode* ec); erlang_pid *ei_self(ei_cnode* ec); +/* + * settings + */ + void ei_set_compat_rel(unsigned rel); +void ei_set_tracelevel(int); +int ei_get_tracelevel(void); /* * We have erl_gethost*() so we include ei versions as well. diff --git a/lib/erl_interface/src/connect/ei_connect.c b/lib/erl_interface/src/connect/ei_connect.c index 9ac5a93c5a..d2d0a7e7c1 100644 --- a/lib/erl_interface/src/connect/ei_connect.c +++ b/lib/erl_interface/src/connect/ei_connect.c @@ -249,8 +249,22 @@ ei_cnode *ei_fd_to_cnode(int fd) return &sockinfo->cnode; } + +/*************************************************************************** + * Get/Set tracelevel + ***************************************************************************/ + +void ei_set_tracelevel(int level) { + ei_tracelevel = level; +} + +int ei_get_tracelevel(void) { + return ei_tracelevel; +} + + /*************************************************************************** - * XXXX + * Distversion ***************************************************************************/ int ei_distversion(int fd) @@ -1282,8 +1296,6 @@ error: return -1; } -/* FIXME fix the signed/unsigned mess..... */ - static int send_name_or_challenge(int fd, char *nodename, int f_chall, unsigned challenge, diff --git a/lib/observer/src/crashdump_viewer.erl b/lib/observer/src/crashdump_viewer.erl index b323d86ea4..978541e470 100644 --- a/lib/observer/src/crashdump_viewer.erl +++ b/lib/observer/src/crashdump_viewer.erl @@ -1272,6 +1272,9 @@ get_general_info(Fd,GenInfo) -> get_general_info(Fd,GenInfo#general_info{system_vsn=val(Fd)}); "Compiled" -> get_general_info(Fd,GenInfo#general_info{compile_time=val(Fd)}); + "Taints" -> + Val = case val(Fd) of "-1" -> "(none)"; Line -> Line end, + get_general_info(Fd,GenInfo#general_info{taints=Val}); "Atoms" -> get_general_info(Fd,GenInfo#general_info{num_atoms=val(Fd)}); "=" ++ _next_tag -> diff --git a/lib/observer/src/crashdump_viewer.hrl b/lib/observer/src/crashdump_viewer.hrl index 386d3bb423..6ce727cd3e 100644 --- a/lib/observer/src/crashdump_viewer.hrl +++ b/lib/observer/src/crashdump_viewer.hrl @@ -26,6 +26,7 @@ slogan, system_vsn, compile_time, + taints, node_name, num_atoms, num_procs, diff --git a/lib/observer/src/crashdump_viewer_html.erl b/lib/observer/src/crashdump_viewer_html.erl index 5fa829ed37..5e7bbf62a0 100644 --- a/lib/observer/src/crashdump_viewer_html.erl +++ b/lib/observer/src/crashdump_viewer_html.erl @@ -215,6 +215,8 @@ general_info_body(Heading,GenInfo) -> td(GenInfo#general_info.system_vsn)]), tr([th("ALIGN=left BGCOLOR=\"#8899AA\"","Compiled"), td(GenInfo#general_info.compile_time)]), + tr([th("ALIGN=left BGCOLOR=\"#8899AA\"","Taints"), + td(GenInfo#general_info.taints)]), case GenInfo#general_info.mem_tot of "" -> ""; MemTot -> diff --git a/lib/public_key/doc/src/cert_records.xml b/lib/public_key/doc/src/cert_records.xml index 8fb4ea5fd0..8cfe57f670 100644 --- a/lib/public_key/doc/src/cert_records.xml +++ b/lib/public_key/doc/src/cert_records.xml @@ -41,10 +41,18 @@ </p> <p>Use the following include directive to get access to the - records and constant macros described in the following sections.</p> + records and constant macros (OIDs) described in the following sections.</p> <code> -include_lib("public_key/include/public_key.hrl"). </code> + <p>The used specification is available in <c>OTP-PKIX.asn1</c>, + which is an amelioration of + the <c>PKIX1Explicit88.asn1</c>, <c>PKIX1Implicit88.asn1</c> + and <c>PKIX1Algorithms88.asn1</c> modules. + You find all these modules in the <c>asn1</c> subdirectory + of the application <c>public_key</c>. + </p> + <section> <title>Common Data Types</title> @@ -148,8 +156,7 @@ oid names see table below. Ex: ?'id-dsa-with-sha1'</p> }. </code> -<p><c>id_attributes() = ?oid_name_as_erlang_atom</c> -for available oid names see table below. Ex: ?'id-at-name'</p> +<p><c>id_attributes() </c></p> <table> <row> <cell align="left" valign="middle">OID name</cell> @@ -231,8 +238,7 @@ for available oid names see table below. Ex: ?'id-at-name'</p> }. </code> -<p><c> id_public_key_algorithm() = ?oid_name_as_erlang_atom</c> for available -oid names see table below. Ex: ?'id-dsa'</p> +<p><c> id_public_key_algorithm() </c></p> <table> <row> <cell align="left" valign="middle">OID name</cell> @@ -264,14 +270,11 @@ oid names see table below. Ex: ?'id-dsa'</p> }. </code> -<p><c>id_extensions() = ?oid_name_as_erlang_atom</c> for -available oid names see tables. Ex: ?'id-ce-authorityKeyIdentifier'<seealso -marker="#StdCertExt">Standard Certificate Extensions</seealso>, - <seealso - marker="#PrivIntExt">Private Internet Extensions</seealso>, <seealso - marker="#CRLCertExt">CRL Extensions</seealso> and - <seealso - marker="#CRLEntryExt">CRL Entry Extensions</seealso>. +<p><c>id_extensions()</c> + <seealso marker="#StdCertExt">Standard Certificate Extensions</seealso>, + <seealso marker="#PrivIntExt">Private Internet Extensions</seealso>, + <seealso marker="#CRLCertExt">CRL Extensions</seealso> and + <seealso marker="#CRLEntryExt">CRL Entry Extensions</seealso>. </p> </section> @@ -368,9 +371,8 @@ marker="#StdCertExt">Standard Certificate Extensions</seealso>, decipherOnly </c></p> - <p><c> id_key_purpose() = ?oid_name_as_erlang_atom</c> for available -oid names see table below. Ex: ?'id-kp-serverAuth'</p> - + <p><c> id_key_purpose()</c></p> + <table> <row> <cell align="left" valign="middle">OID name</cell> diff --git a/lib/ssl/doc/src/create_certs.xml b/lib/ssl/doc/src/create_certs.xml index 15958ee457..79cc8a0537 100644 --- a/lib/ssl/doc/src/create_certs.xml +++ b/lib/ssl/doc/src/create_certs.xml @@ -98,12 +98,12 @@ <title>Creating the Erlang root CA</title> <p>The Erlang root CA is created with the command</p> <code type="none"> -\011openssl req -new -x509 -config /some/path/req.cnf \\ -\011 -keyout /some/path/key.pem -out /some/path/cert.pem </code> + openssl req -new -x509 -config /some/path/req.cnf \\ + -keyout /some/path/key.pem -out /some/path/cert.pem </code> <p>where the option <c>-new</c> indicates that we want to create a new certificate request and the option <c>-x509</c> implies that a self-signed certificate is created. - </p> + </p> </section> <section> @@ -111,12 +111,12 @@ <p>The OTP CA is created by first creating a certificate request with the command</p> <code type="none"> -\011openssl req -new -config /some/path/req.cnf \\ -\011 -keyout /some/path/key.pem -out /some/path/req.pem </code> + openssl req -new -config /some/path/req.cnf \\ + -keyout /some/path/key.pem -out /some/path/req.pem </code> <p>and the ask the Erlang CA to sign it:</p> <code type="none"> -\011openssl ca -batch -notext -config /some/path/req.cnf \\ -\011 -extensions ca_cert -in /some/path/req.pem -out /some/path/cert.pem </code> + openssl ca -batch -notext -config /some/path/req.cnf \\ + -extensions ca_cert -in /some/path/req.pem -out /some/path/cert.pem </code> <p>where the option <c>-extensions</c> refers to a section in the configuration file saying that it should create a CA certificate, and not a plain user certificate. diff --git a/lib/ssl/doc/src/new_ssl.xml b/lib/ssl/doc/src/new_ssl.xml index f50f714fe6..a11919eb51 100644 --- a/lib/ssl/doc/src/new_ssl.xml +++ b/lib/ssl/doc/src/new_ssl.xml @@ -437,30 +437,17 @@ end </func> <func> - <name>peercert(Socket) -> </name> - <name>peercert(Socket, Opts) -> {ok, Cert} | {error, Reason}</name> + <name>peercert(Socket) -> {ok, Cert} | {error, Reason}</name> <fsummary>Return the peer certificate.</fsummary> <type> <v>Socket = sslsocket()</v> - <v>Opts = [] | [otp] | [plain] </v> - <v>Cert = term()</v> + <v>Cert = binary()</v> <v>Subject = term()</v> </type> <desc> - <p><c>peercert(Cert)</c> is equivalent to <c>peercert(Cert, [])</c>. - </p> - <p>The form of the returned certificate depends on the - options. - </p> - <p>If the options list is empty the certificate is returned as - a DER encoded binary. - </p> - <p>The option <c>otp</c> or <c>plain</c> implies that the - certificate will be returned as a parsed ASN.1 structure in the - form of an Erlang term. For detail see the public_key application. - Currently only plain is officially supported see the public_key users - guide. - </p> + <p>The peer certificate is returned as a DER encoded binary. + The certificate can be decoded with <c>public_key:pkix_decode_cert/2</c>. + </p> </desc> </func> <func> diff --git a/lib/ssl/doc/src/pkix_certs.xml b/lib/ssl/doc/src/pkix_certs.xml index 47818c1b7d..1de807cadc 100644 --- a/lib/ssl/doc/src/pkix_certs.xml +++ b/lib/ssl/doc/src/pkix_certs.xml @@ -34,219 +34,24 @@ <p>Certificates were originally defined by ITU (CCITT) and the latest definitions are described in <cite id="X.509"></cite>, but those definitions are (as always) not working. - </p> + </p> <p>Working certificate definitions for the Internet Community are found - in the the PKIX RFCs <cite id="rfc3279"></cite>and <cite id="rfc3280"></cite>. + in the the PKIX RFCs <cite id="rfc3279"></cite> and <cite id="rfc3280"></cite>. The parsing of certificates in the Erlang/OTP SSL application is based on those RFCS. - </p> + </p> <p>Certificates are defined in terms of ASN.1 (<cite id="X.680"></cite>). For an introduction to ASN.1 see <url href="http://asn1.elibel.tm.fr/">ASN.1 Information Site</url>. - </p> + </p> </section> <section> <title>PKIX Certificates</title> - <p>Here we base the PKIX certificate definitions in RFCs <cite id="rfc3279"></cite>and <cite id="rfc3280"></cite>. We however present the - definitions according to <c>SSL-PKIX.asn1</c> module, - which is an amelioration of the <c>PKIX1Explicit88.asn1</c>, - <c>PKIX1Implicit88.asn1</c>, and <c>PKIX1Algorithms88.asn1</c> - modules. You find all these modules in the <c>pkix</c> subdirectory - of SSL. - </p> - <p>The Erlang terms that are returned by the functions - <c>ssl:peercert/1/2</c>, <c>ssl_pkix:decode_cert/1/2</c>, and - <c>ssl_pkix:decode_cert_file/1/2</c> when the option <c>ssl</c> - is used in those functions, correspond the ASN.1 structures - described in the sequel. - </p> - - <section> - <title>Certificate and TBSCertificate</title> - <code type="none"> -Certificate ::= SEQUENCE { - tbsCertificate TBSCertificate, - signatureAlgorithm SignatureAlgorithm, - signature BIT STRING } - -TBSCertificate ::= SEQUENCE { - version [0] Version DEFAULT v1, - serialNumber CertificateSerialNumber, - signature SignatureAlgorithm, - issuer Name, - validity Validity, - subject Name, - subjectPublicKeyInfo SubjectPublicKeyInfo, - issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL, - -- If present, version MUST be v2 or v3 - subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL, - -- If present, version MUST be v2 or v3 - extensions [3] Extensions OPTIONAL - -- If present, version MUST be v3 -- } - -Version ::= INTEGER { v1(0), v2(1), v3(2) } - -CertificateSerialNumber ::= INTEGER - -Validity ::= SEQUENCE { - notBefore Time, - notAfter Time } - -Time ::= CHOICE { - utcTime UTCTime, - generalTime GeneralizedTime } - </code> - <p>The meaning of the fields <c>version</c>, <c>serialNumber</c>, - and <c>validity</c> are quite obvious given the type definitions - above, so we do not go further into their details. - </p> - <p>The <c>signatureAlgorithm</c> field of <c>Certificate</c> and - the <c>signature</c> field of <c>TBSCertificate</c> contain - the name and parameters of the algorithm used for signing the - certificate. The values of these two fields must be equal. - </p> - <p>The <c>signature</c> field of <c>Certificate</c> contains the - value of the signature that the issuer computed by using the - prescribed algorithm. - </p> - <p>The <c><![CDATA[issuer<c> and <c>subject]]></c> fields can contain many - different types av data, and is therefore considered in a - separate section. The same holds for the <c>extensions</c> - field. - The <c>issuerUniqueID</c> and the <c>subjectUniqueID</c> fields - are not considered further.</p> - </section> - - <section> - <title>TBSCertificate issuer and subject</title> - <p></p> - <code type="none"><![CDATA[ -Name ::= CHOICE { -- only one possibility for now -- - rdnSequence RDNSequence } - -RDNSequence ::= SEQUENCE OF RelativeDistinguishedName - -DistinguishedName ::= RDNSequence - -RelativeDistinguishedName ::= - SET SIZE (1 .. MAX) OF AttributeTypeAndValue - -AttributeTypeAndValue ::= SEQUENCE { - type ATTRIBUTE-TYPE-AND-VALUE-CLASS.&id -\011\011({SupportedAttributeTypeAndValues}), - value ATTRIBUTE-TYPE-AND-VALUE-CLASS.&Type -\011\011({SupportedAttributeTypeAndValues}{@type}) } - -SupportedAttributeTypeAndValues ATTRIBUTE-TYPE-AND-VALUE-CLASS ::= -\011{ name | surname | givenName | initials | generationQualifier | -\011 commonName | localityName | stateOrProvinceName | organizationName | -\011 organizationalUnitName | title | dnQualifier | countryName | -\011 serialNumber | pseudonym | domainComponent | emailAddress } ]]></code> - </section> - - <section> - <title>TBSCertificate extensions</title> - <p>The <c>extensions</c> field of a <c>TBScertificate</c> is a - sequence of type <c>Extension</c>, defined as follows,</p> - <code type="none"> -Extension ::= SEQUENCE { - extnID OBJECT IDENTIFIER, - critical BOOLEAN DEFAULT FALSE, - extnValue ANY } </code> - <p>Each extension has a unique object identifier. An extension - with a <c>critical</c> value set to <c>TRUE</c><em>must</em> - be recognised by the reader of a certificate, or else the - certificate must be rejected. - </p> - <p>Extensions are divided into two groups: standard extensions - and internet certificate extensions. All extensions listed in - the table that follows are standard extensions, except for - <c>authorityInfoAccess</c> and <c>subjectInfoAccess</c>, which - are internet extensions. - </p> - <p>Depending on the object identifier the <c>extnValue</c> is - parsed into an appropriate welldefined structure. - </p> - <p>The following table shows the purpose of each extension, but - does not specify the structure. To see the structure consult - the <c>PKIX1Implicit88.asn1</c> module. - </p> - <table> - <row> - <cell align="left" valign="middle">authorityKeyIdentifier</cell> - <cell align="left" valign="middle">Used by to identify a certificate signed that has multiple signing keys. </cell> - </row> - <row> - <cell align="left" valign="middle">subjectKeyIdentifier</cell> - <cell align="left" valign="middle">Used to identify certificates that contain a public key. Must appear i CA certificates.</cell> - </row> - <row> - <cell align="left" valign="middle">keyUsage </cell> - <cell align="left" valign="middle">Defines the purpose of the certificate. Can be one or several of<c>digitalSignature</c>, <c>nonRepudiation</c>,<c>keyEncipherment</c>, <c>dataEncipherment</c>,<c>keyAgreement</c>, <c>keyCertSign</c>, <c>cRLSign</c>,<c>encipherOnly</c>, <c>decipherOnly</c>.</cell> - </row> - <row> - <cell align="left" valign="middle">privateKeyUsagePeriod </cell> - <cell align="left" valign="middle">Allows certificate issuer to provide a private key usage period to be short than the certificate usage period.</cell> - </row> - <row> - <cell align="left" valign="middle">certificatePolicies</cell> - <cell align="left" valign="middle">Contains one or more policy information terms indicating the policies under which the certificate has been issued.</cell> - </row> - <row> - <cell align="left" valign="middle">policyMappings</cell> - <cell align="left" valign="middle">Used i CA certificates. </cell> - </row> - <row> - <cell align="left" valign="middle">subjectAltName</cell> - <cell align="left" valign="middle">Allows additional identities to be bound the the subject. </cell> - </row> - <row> - <cell align="left" valign="middle">issuerAltName</cell> - <cell align="left" valign="middle">Allows additional identities to be bound the the issuer.</cell> - </row> - <row> - <cell align="left" valign="middle">subjectDirectoryAttributes</cell> - <cell align="left" valign="middle">Conveys identity attributes of the subject.</cell> - </row> - <row> - <cell align="left" valign="middle">basicConstraints</cell> - <cell align="left" valign="middle">Tells if the certificate holder is a CA or not.</cell> - </row> - <row> - <cell align="left" valign="middle">nameConstraints</cell> - <cell align="left" valign="middle">Used in CA certificates.</cell> - </row> - <row> - <cell align="left" valign="middle">policyConstraints</cell> - <cell align="left" valign="middle">Used in CA certificates.</cell> - </row> - <row> - <cell align="left" valign="middle">extKeyUsage</cell> - <cell align="left" valign="middle">Indicates for which purposed the public key may be used. </cell> - </row> - <row> - <cell align="left" valign="middle">cRLDistributionPoints</cell> - <cell align="left" valign="middle">Indicates how CRL (Certificate Revokation List) information is obtained.</cell> - </row> - <row> - <cell align="left" valign="middle">inhibitAnyPolicy</cell> - <cell align="left" valign="middle">Used i CA certificates.</cell> - </row> - <row> - <cell align="left" valign="middle">freshestCRL</cell> - <cell align="left" valign="middle">For CRLs.</cell> - </row> - <row> - <cell align="left" valign="middle">authorityInfoAccess</cell> - <cell align="left" valign="middle">How to access CA information of the issuer of the certificate.</cell> - </row> - <row> - <cell align="left" valign="middle">subjectInfoAccess</cell> - <cell align="left" valign="middle">How to access CA information of the subject of the certificate.</cell> - </row> - <tcaption>PKIX Extensions</tcaption> - </table> - </section> + <p>Certificate handling is now handled by the <c>public_key</c> application.</p> + <p> + DER encoded certificates returned by <c>ssl:peercert/1</c> can for example + be decoded by the <c>public_key:pkix_decode_cert/2</c> function. + </p> </section> </chapter> diff --git a/lib/ssl/doc/src/remember.xml b/lib/ssl/doc/src/remember.xml deleted file mode 100644 index 799627a33c..0000000000 --- a/lib/ssl/doc/src/remember.xml +++ /dev/null @@ -1,83 +0,0 @@ -<?xml version="1.0" encoding="latin1" ?> -<!DOCTYPE chapter SYSTEM "chapter.dtd"> - -<chapter> - <header> - <copyright> - <year>2003</year><year>2009</year> - <holder>Ericsson AB. All Rights Reserved.</holder> - </copyright> - <legalnotice> - The contents of this file are subject to the Erlang Public License, - Version 1.1, (the "License"); you may not use this file except in - compliance with the License. You should have received a copy of the - Erlang Public License along with this software. If not, it can be - retrieved online at http://www.erlang.org/. - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and limitations - under the License. - - </legalnotice> - - <title>PKIX Certificates</title> - <prepared>UAB/F/P Peter Högfeldt</prepared> - <docno></docno> - <date>2003-06-09</date> - <rev>A</rev> - <file>pkix_certs.sgml</file> - </header> - - <section> - <title>Introduction to Certificates</title> - <p><em>Outline:</em></p> - <list type="bulleted"> - <item>SSL/TLS protocol - server must have certificate - -what - the the server sends to the client - client may verify the - server - server may ask client for certificate - what the - client sends to the server - server may then verify the client - - verification - certificate chains - root certificates - - public keys - key agreement - purpose of certificate - main - contents of certificate - contents have increased as time went - by - common file formats for certificates. - </item> - <item>private keys - password protection - key generation - file - formats. - </item> - <item>ssl_pkix and alternate decodings. - </item> - <item>Attribute Certificates (not used by SSL). - </item> - <item>Certificate requests - certificate authorities - signing of - certificates - certificate revocation lists. - </item> - <item>standards: ASN.1, X.509, X.520, PKIX, PKCS, PEM. - </item> - <item>incompatibilities between standards (X.509-1997 vs old) - the - ASN.1 problem of ANY, BIT STRING and OCTET STRING - the module - ssl_pkix. - </item> - <item>test suites: NIST - </item> - <item>Warnings: *creation* of trusted certificate (OpenSSL). - </item> - <item>Erlang SSL and certificates - </item> - <item>The need for seeding the random generator. See also John - S. Denker: High-Entropy Symbol Generator - (http://www.monmouth.com/~jsd). - </item> - <item>links to standards and documents. Books (Rescorla). - </item> - <item>ASN.1 crash course. - </item> - <item>Nagel algorithm. - </item> - </list> - <p>For an introduction to ASN.1 see <url href="http://asn1.elibel.tm.fr/">ASN.1 Information Site</url>. - </p> - </section> -</chapter> - - diff --git a/lib/ssl/doc/src/ssl.xml b/lib/ssl/doc/src/ssl.xml index 9b780b14ce..217eb791d0 100644 --- a/lib/ssl/doc/src/ssl.xml +++ b/lib/ssl/doc/src/ssl.xml @@ -347,39 +347,17 @@ </desc> </func> <func> - <name>peercert(Socket) -> </name> - <name>peercert(Socket, Opts) -> {ok, Cert} | {ok, Subject} | {error, Reason}</name> + <name>peercert(Socket) -> {ok, Cert} | {error, Reason}</name> <fsummary>Return the peer certificate.</fsummary> <type> <v>Socket = sslsocket()</v> - <v>Opts = [pkix | ssl | subject]()</v> - <v>Cert = term()()</v> + <v>Cert = binary()()</v> <v>Subject = term()()</v> </type> <desc> - <p><c>peercert(Cert)</c> is equivalent to <c>peercert(Cert, [])</c>. - </p> - <p>The form of the returned certificate depends on the - options. - </p> - <p>If the options list is empty the certificate is returned as - a DER encoded binary. - </p> - <p>The options <c>pkix</c> and <c>ssl</c> implies that the - certificate is returned as a parsed ASN.1 structure in the - form of an Erlang term. - </p> - <p>The <c>ssl</c> option gives a more elaborate return - structure, with more explicit information. In particular - object identifiers are replaced by atoms. - </p> - <p>The options <c>pkix</c>, and <c>ssl</c> are mutually - exclusive. - </p> - <p>The option <c>subject</c> implies that only the subject's - distinguished name part of the peer certificate is returned. - It can only be used together with the option <c>pkix</c> or - the option <c>ssl</c>.</p> + <p>Returns the DER encoded peer certificate, the certificate can be decoded with + <c>public_key:pkix_decode_cert/2</c>. + </p> </desc> </func> <func> @@ -719,8 +697,7 @@ <section> <title>SEE ALSO</title> - <p>gen_tcp(3), inet(3) - </p> + <p>gen_tcp(3), inet(3) public_key(3) </p> </section> </erlref> diff --git a/lib/wx/api_gen/wxapi.conf b/lib/wx/api_gen/wxapi.conf index df154f0125..4a646650ea 100644 --- a/lib/wx/api_gen/wxapi.conf +++ b/lib/wx/api_gen/wxapi.conf @@ -985,7 +985,9 @@ {class, wxFileDialog, wxDialog, [{skip, [{wxFileDialog,0}]}], ['wxFileDialog','~wxFileDialog','GetDirectory','GetFilename', {'GetFilenames',[{"files", out}]}, - 'GetFilterIndex','GetMessage','GetPath','GetPaths','GetWildcard', + 'GetFilterIndex','GetMessage','GetPath', + {'GetPaths', [{"paths", out}]}, + 'GetWildcard', 'SetDirectory','SetFilename','SetFilterIndex','SetMessage','SetPath', 'SetWildcard']}. diff --git a/lib/wx/c_src/gen/wxe_funcs.cpp b/lib/wx/c_src/gen/wxe_funcs.cpp index cb662fc91b..ccbacce9b9 100644 --- a/lib/wx/c_src/gen/wxe_funcs.cpp +++ b/lib/wx/c_src/gen/wxe_funcs.cpp @@ -20582,19 +20582,11 @@ case wxFileDialog_GetPath: { // wxFileDialog::GetPath break; } case wxFileDialog_GetPaths: { // wxFileDialog::GetPaths - wxFileDialog *This = (wxFileDialog *) getPtr(bp,memenv); bp += 4; - int * pathsLen = (int *) bp; bp += 4; wxArrayString paths; - int pathsASz = 0, * pathsTemp; - for(int i=0; i < *pathsLen; i++) { - pathsTemp = (int *) bp; bp += 4; - paths.Add(wxString(bp, wxConvUTF8)); - bp += *pathsTemp; - pathsASz += *pathsTemp+4; - } - bp += (8-((0+ pathsASz) & 7 )) & 7; + wxFileDialog *This = (wxFileDialog *) getPtr(bp,memenv); bp += 4; if(!This) throw wxe_badarg(0); This->GetPaths(paths); + rt.add(paths); break; } case wxFileDialog_GetWildcard: { // wxFileDialog::GetWildcard diff --git a/lib/wx/doc/src/Makefile b/lib/wx/doc/src/Makefile index d18daa753a..fd9f7441a3 100644 --- a/lib/wx/doc/src/Makefile +++ b/lib/wx/doc/src/Makefile @@ -31,12 +31,6 @@ GenMods = $(shell ls ../../src/gen | grep 'wx[A-Z].*\.erl') \ glu.erl \ gl.erl -# GenMods = \ -# wx_misc.erl \ -# glu.erl \ -# gl.erl - - ModsNoExt = $(ErlMods:%.erl=%) $(GenMods:%.erl=%) ifneq ($(INSIDE_ERLSRC),true) @@ -126,9 +120,9 @@ gifs: $(GIF_FILES:%=$(HTMLDIR)/%) xml: $(XML_REF3_FILES) $(XML_CHAPTER_FILES) -ref_man.xml: ref_man.src.xml +ref_man.xml: ref_man.xml.src @echo Preparing ref_man.xml - @cat ref_man.src.xml > ref_man.xml + @cat ref_man.xml.src > ref_man.xml @for d in $(ModsNoExt); do \ echo " <xi:include href=\"$$d.xml\"/>" >> ref_man.xml ; \ done diff --git a/lib/wx/doc/src/ref_man.src.xml b/lib/wx/doc/src/ref_man.xml.src index 77fd16b050..77fd16b050 100644 --- a/lib/wx/doc/src/ref_man.src.xml +++ b/lib/wx/doc/src/ref_man.xml.src diff --git a/lib/wx/src/gen/wxFileDialog.erl b/lib/wx/src/gen/wxFileDialog.erl index 22b39aa150..efe1ff57f3 100644 --- a/lib/wx/src/gen/wxFileDialog.erl +++ b/lib/wx/src/gen/wxFileDialog.erl @@ -31,7 +31,7 @@ -module(wxFileDialog). -include("wxe.hrl"). -export([destroy/1,getDirectory/1,getFilename/1,getFilenames/1,getFilterIndex/1, - getMessage/1,getPath/1,getPaths/2,getWildcard/1,new/1,new/2,setDirectory/2, + getMessage/1,getPath/1,getPaths/1,getWildcard/1,new/1,new/2,setDirectory/2, setFilename/2,setFilterIndex/2,setMessage/2,setPath/2,setWildcard/2]). %% inherited exports @@ -152,15 +152,12 @@ getPath(#wx_ref{type=ThisT,ref=ThisRef}) -> wxe_util:call(?wxFileDialog_GetPath, <<ThisRef:32/?UI>>). -%% @spec (This::wxFileDialog(), Paths::[[string()]]) -> ok +%% @spec (This::wxFileDialog()) -> [[string()]] %% @doc See <a href="http://www.wxwidgets.org/manuals/stable/wx_wxfiledialog.html#wxfiledialoggetpaths">external documentation</a>. -getPaths(#wx_ref{type=ThisT,ref=ThisRef},Paths) - when is_list(Paths) -> +getPaths(#wx_ref{type=ThisT,ref=ThisRef}) -> ?CLASS(ThisT,wxFileDialog), - Paths_UCA = [unicode:characters_to_binary([PathsTemp,0]) || - PathsTemp <- Paths], - wxe_util:cast(?wxFileDialog_GetPaths, - <<ThisRef:32/?UI,(length(Paths_UCA)):32/?UI, (<< <<(byte_size(UC_Str)):32/?UI, UC_Str/binary>>|| UC_Str <- Paths_UCA>>)/binary, 0:(((8- ((0 + lists:sum([byte_size(S)+4||S<-Paths_UCA])) band 16#7)) band 16#7))/unit:8>>). + wxe_util:call(?wxFileDialog_GetPaths, + <<ThisRef:32/?UI>>). %% @spec (This::wxFileDialog()) -> string() %% @doc See <a href="http://www.wxwidgets.org/manuals/stable/wx_wxfiledialog.html#wxfiledialoggetwildcard">external documentation</a>. diff --git a/make/otp_subdir.mk b/make/otp_subdir.mk index 46c61c9e54..96b961c15d 100644 --- a/make/otp_subdir.mk +++ b/make/otp_subdir.mk @@ -24,7 +24,7 @@ # # Targets that don't affect documentation directories # -debug opt release local_docs docs release_docs tests release_tests clean depend valgrind: +opt debug release local_docs docs release_docs tests release_tests clean depend valgrind: @set -e ; \ app_pwd=`pwd` ; \ if test -f vsn.mk; then \ diff --git a/system/doc/reference_manual/code_loading.xml b/system/doc/reference_manual/code_loading.xml index 8861b3bea5..0e148298b1 100644 --- a/system/doc/reference_manual/code_loading.xml +++ b/system/doc/reference_manual/code_loading.xml @@ -117,6 +117,7 @@ loop() -> </section> <section> + <marker id="on_load"></marker> <title>Running a function when a module is loaded</title> <warning> |