The unified diff between revisions [01477beb..] and [9b3b2d4f..] is displayed below. It can also be downloaded as a raw diff.

#
#
# delete "examples/dsa/Makefile.local"
#
# delete "examples/dsa/echo/README"
#
# delete "examples/dsa/local.gpr"
#
# add_dir "corba_bis"
#
# add_dir "corba_bis/all_exceptions"
#
# add_dir "corba_bis/all_exceptions/CORBA_ALL_EXCEPTIONS_0"
#
# add_dir "corba_bis/all_exceptions/CORBA_ALL_EXCEPTIONS_1"
#
# add_dir "corba_bis/all_exceptions/CORBA_ALL_EXCEPTIONS_2"
#
# add_dir "corba_bis/all_exceptions/CORBA_ALL_EXCEPTIONS_3"
#
# add_dir "corba_bis/benchs"
#
# add_dir "corba_bis/benchs/CORBA_BENCHS_0"
#
# add_dir "corba_bis/code_sets"
#
# add_dir "corba_bis/code_sets/CODE_SETS_0"
#
# add_dir "corba_bis/code_sets/CODE_SETS_1"
#
# add_dir "corba_bis/domainmanager"
#
# add_dir "corba_bis/domainmanager/DOMAINMANAGER_0"
#
# add_dir "corba_bis/harness"
#
# add_dir "corba_bis/harness/CORBA_HARNESS_0"
#
# add_dir "corba_bis/harness/CORBA_HARNESS_1"
#
# add_dir "corba_bis/harness/CORBA_HARNESS_2"
#
# add_dir "corba_bis/harness/CORBA_HARNESS_3"
#
# add_dir "corba_bis/harness/CORBA_HARNESS_4"
#
# add_dir "corba_bis/harness/CORBA_HARNESS_5"
#
# add_dir "corba_bis/harness/CORBA_HARNESS_6"
#
# add_dir "corba_bis/harness/CORBA_HARNESS_7"
#
# add_dir "corba_bis/interop"
#
# add_dir "corba_bis/interop/CORBA_INTEROP_0"
#
# add_dir "corba_bis/interop/CORBA_INTEROP_1"
#
# add_dir "corba_bis/interop/CORBA_INTEROP_2"
#
# add_dir "corba_bis/interop/CORBA_INTEROP_3"
#
# add_dir "corba_bis/interop/CORBA_INTEROP_4"
#
# add_dir "corba_bis/interop/CORBA_INTEROP_5"
#
# add_dir "corba_bis/local"
#
# add_dir "corba_bis/local/LOCAL_0"
#
# add_dir "corba_bis/location_forwarding"
#
# add_dir "corba_bis/location_forwarding/LOCATION_FORWARDING_0"
#
# add_dir "corba_bis/location_forwarding/LOCATION_FORWARDING_1"
#
# add_dir "corba_bis/object"
#
# add_dir "corba_bis/object/OBJECT_0"
#
# add_dir "corba_bis/orb_init"
#
# add_dir "corba_bis/orb_init/ORB_INIT_0"
#
# add_dir "corba_bis/performance"
#
# add_dir "corba_bis/performance/CORBA_PERFORMANCE_0"
#
# add_dir "corba_bis/portableinterceptor"
#
# add_dir "corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_0"
#
# add_dir "corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_1"
#
# add_dir "corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_2"
#
# add_dir "corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_3"
#
# add_dir "corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_4"
#
# add_dir "corba_bis/portableserver"
#
# add_dir "corba_bis/portableserver/PORTABLESERVER_0"
#
# add_dir "corba_bis/portableserver/PORTABLESERVER_1"
#
# add_dir "corba_bis/portableserver/PORTABLESERVER_2"
#
# add_dir "corba_bis/rtcorba-rtcurrent"
#
# add_dir "corba_bis/rtcorba-rtcurrent/RTCURRENT_0"
#
# add_dir "corba_bis/rtcorba-rtorb"
#
# add_dir "corba_bis/rtcorba-rtorb/RTORB_0"
#
# add_dir "corba_bis/rtcorba-rtpoa"
#
# add_dir "corba_bis/rtcorba-rtpoa/RTPOA_0"
#
# add_dir "corba_bis/shutdown"
#
# add_dir "corba_bis/shutdown/SHUTDOWN_0"
#
# add_dir "corba_bis/shutdown/SHUTDOWN_1"
#
# add_dir "core_bis"
#
# add_dir "core_bis/chained_lists"
#
# add_dir "core_bis/chained_lists/CHAINED_LIST_0"
#
# add_dir "core_bis/dynamic_dict"
#
# add_dir "core_bis/dynamic_dict/DYNAMIC_DICT_0"
#
# add_dir "core_bis/fixed_point"
#
# add_dir "core_bis/fixed_point/FIXED_0"
#
# add_dir "core_bis/initialization"
#
# add_dir "core_bis/initialization/INIT_0"
#
# add_dir "core_bis/initialization/INIT_1"
#
# add_dir "core_bis/initialization/INIT_2"
#
# add_dir "core_bis/initialization/INIT_3"
#
# add_dir "core_bis/initialization/INIT_4"
#
# add_dir "core_bis/obj_adapters"
#
# add_dir "core_bis/obj_adapters/OA_0"
#
# add_dir "core_bis/obj_adapters/OA_1"
#
# add_dir "core_bis/poa"
#
# add_dir "core_bis/poa/POA_0"
#
# add_dir "core_bis/random"
#
# add_dir "core_bis/random/RANDOM_0"
#
# add_dir "core_bis/sync_policies"
#
# add_dir "core_bis/sync_policies/CORE_SYNC_POLICIES_0"
#
# add_dir "core_bis/tasking"
#
# add_dir "core_bis/tasking/TASK_0"
#
# add_dir "core_bis/tasking/TASK_1"
#
# add_dir "core_bis/tasking/TASK_2"
#
# add_dir "core_bis/tasking/TASK_3"
#
# add_dir "core_bis/uri_encoding"
#
# add_dir "core_bis/uri_encoding/URI_ENCODING_0"
#
# add_dir "cos_bis"
#
# add_dir "cos_bis/ir"
#
# add_dir "cos_bis/ir/IR_0"
#
# add_dir "cos_bis/naming"
#
# add_dir "cos_bis/naming/NAMING_0"
#
# add_dir "cos_bis/time"
#
# add_dir "cos_bis/time/TIME_0"
#
# add_dir "examples/dsa/connections"
#
# add_dir "examples/dsa/demo"
#
# add_dir "examples/dsa/mailboxes"
#
# add_dir "examples_bis"
#
# add_dir "examples_bis/corba-all_functions"
#
# add_dir "examples_bis/corba-all_functions/ALL_FUNCTIONS_0"
#
# add_dir "examples_bis/corba-all_functions/ALL_FUNCTIONS_1"
#
# add_dir "examples_bis/corba-all_functions/ALL_FUNCTIONS_2"
#
# add_dir "examples_bis/corba-all_functions/ALL_FUNCTIONS_3"
#
# add_dir "examples_bis/corba-all_functions/ALL_FUNCTIONS_4"
#
# add_dir "examples_bis/corba-all_functions/ALL_FUNCTIONS_5"
#
# add_dir "examples_bis/corba-all_functions/ALL_FUNCTIONS_6"
#
# add_dir "examples_bis/corba-all_types"
#
# add_dir "examples_bis/corba-all_types/ALL_TYPES_0"
#
# add_dir "examples_bis/corba-all_types/ALL_TYPES_1"
#
# add_dir "examples_bis/corba-all_types/ALL_TYPES_2"
#
# add_dir "examples_bis/corba-all_types/ALL_TYPES_3"
#
# add_dir "examples_bis/corba-all_types/ALL_TYPES_4"
#
# add_dir "examples_bis/corba-all_types/ALL_TYPES_5"
#
# add_dir "examples_bis/corba-all_types/ALL_TYPES_6"
#
# add_dir "examples_bis/corba-all_types/ALL_TYPES_7"
#
# add_dir "examples_bis/corba-echo"
#
# add_dir "examples_bis/corba-echo/ECHO_0"
#
# add_dir "examples_bis/corba-echo/ECHO_1"
#
# add_dir "examples_bis/corba-echo/ECHO_2"
#
# add_dir "examples_bis/corba-echo/ECHO_3"
#
# add_dir "examples_bis/corba-echo/ECHO_4"
#
# add_dir "examples_bis/corba-echo/ECHO_5"
#
# add_dir "examples_bis/corba-echo/ECHO_6"
#
# add_dir "examples_bis/corba-echo/ECHO_7"
#
# add_dir "examples_bis/corba-random"
#
# add_dir "examples_bis/corba-random/CORBA_RANDOM_0"
#
# add_dir "examples_bis/corba-random/CORBA_RANDOM_1"
#
# add_dir "examples_bis/corba-rtcorba-client_propagated"
#
# add_dir "examples_bis/corba-rtcorba-client_propagated/RTCORBA_CLIENT_PROPAGATED_0"
#
# add_dir "examples_bis/corba-rtcorba-dhb"
#
# add_dir "examples_bis/corba-rtcorba-dhb/RTCORBA_DHB_0"
#
# add_dir "examples_bis/corba-rtcorba-rtcosscheduling"
#
# add_dir "examples_bis/corba-rtcorba-rtcosscheduling/RTCORBA_RTCOSSCHEDULING_0"
#
# add_dir "examples_bis/corba-rtcorba-server_declared"
#
# add_dir "examples_bis/corba-rtcorba-server_declared/RTCORBA_SERVER_DECLARED_0"
#
# add_dir "examples_bis/corba-rtcorba-server_declared/RTCORBA_SERVER_DECLARED_1"
#
# add_dir "examples_bis/corba-secure_echo"
#
# add_dir "examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_0"
#
# add_dir "examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_1"
#
# add_dir "examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_2"
#
# add_dir "examples_bis/corba-send"
#
# add_dir "examples_bis/corba-send/CORBA_MIOP_0"
#
# add_dir "examples_bis/moma"
#
# add_dir "examples_bis/moma/MOMA_0"
#
# add_dir "examples_bis/moma/MOMA_1"
#
# add_dir "examples_bis/polyorb"
#
# add_dir "examples_bis/polyorb/POLYORB_CORE_0"
#
# add_dir "examples_bis/polyorb/POLYORB_CORE_1"
#
# add_dir "examples_bis/polyorb/POLYORB_CORE_2"
#
# add_dir "examples_bis/polyorb/POLYORB_CORE_3"
#
# add_dir "testsuite/corba/performance/java"
#
# add_file "README.DSA"
#  content [f5e0679fe90dff7879b0722355320d02e1de1e06]
#
# add_file "corba_bis/all_exceptions/CORBA_ALL_EXCEPTIONS_0/test.py"
#  content [02b4bc3f8ff05ad994890748c600e1c894841eb7]
#
# add_file "corba_bis/all_exceptions/CORBA_ALL_EXCEPTIONS_1/test.py"
#  content [3bceede77661af46ccccc1f3d84a9b62f4b7e6bd]
#
# add_file "corba_bis/all_exceptions/CORBA_ALL_EXCEPTIONS_2/test.py"
#  content [065d4ded6344ad6e938171fcaea627c0629d8b9f]
#
# add_file "corba_bis/all_exceptions/CORBA_ALL_EXCEPTIONS_3/test.py"
#  content [1edc10f2a3e43cd24af64e3f1a1e04cff5e7b5a6]
#
# add_file "corba_bis/benchs/CORBA_BENCHS_0/test.opt"
#  content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "corba_bis/benchs/CORBA_BENCHS_0/test.py"
#  content [7208b2de5b0b61063f72adb210b762648e7e3b02]
#
# add_file "corba_bis/code_sets/CODE_SETS_0/test.opt"
#  content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "corba_bis/code_sets/CODE_SETS_0/test.py"
#  content [025bd2d387115a002d157efe46c2285c4f59622d]
#
# add_file "corba_bis/code_sets/CODE_SETS_1/test.opt"
#  content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "corba_bis/code_sets/CODE_SETS_1/test.py"
#  content [48ce89ba8afb85a55f9ec222b0c4243422d54f29]
#
# add_file "corba_bis/domainmanager/DOMAINMANAGER_0/test.py"
#  content [33b6110d5102fa0a0c251600e0a1ceca16709ab4]
#
# add_file "corba_bis/harness/CORBA_HARNESS_0/test.py"
#  content [ac082d9b2e3beadbb9ae7e6f93b2cdd87f6a3048]
#
# add_file "corba_bis/harness/CORBA_HARNESS_1/test.py"
#  content [45e8fd2ef6da1fffb74feaac5b6a7b019d4d9384]
#
# add_file "corba_bis/harness/CORBA_HARNESS_2/test.py"
#  content [d7fef518a6aa9dab4f94cc7bb63c03a945a644f9]
#
# add_file "corba_bis/harness/CORBA_HARNESS_3/test.py"
#  content [162fb2e48de6005e7dc1692948f4464bb6601027]
#
# add_file "corba_bis/harness/CORBA_HARNESS_4/test.py"
#  content [a0d1cc6638f3f15f3a1de9d8ee99d7352071545f]
#
# add_file "corba_bis/harness/CORBA_HARNESS_5/test.py"
#  content [9b084452f13adfcab9160fdc11356bea3834cf53]
#
# add_file "corba_bis/harness/CORBA_HARNESS_6/test.py"
#  content [6d311c82f6c37d8680beac386fee4746da4be8c3]
#
# add_file "corba_bis/harness/CORBA_HARNESS_7/test.py"
#  content [0eb455a2b48d040941a3820fb8f66f3c2314d5ff]
#
# add_file "corba_bis/interop/CORBA_INTEROP_0/test.opt"
#  content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "corba_bis/interop/CORBA_INTEROP_0/test.py"
#  content [1ff2261b75a3124a5d0efadac0ff1cf607a1c396]
#
# add_file "corba_bis/interop/CORBA_INTEROP_1/test.opt"
#  content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "corba_bis/interop/CORBA_INTEROP_1/test.py"
#  content [93b1e3d4c0a81a060f93d4f9e19eb4600e5c5e34]
#
# add_file "corba_bis/interop/CORBA_INTEROP_2/test.opt"
#  content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "corba_bis/interop/CORBA_INTEROP_2/test.py"
#  content [647e6bc5a42f1654fba03d56f22d9a92b18a4051]
#
# add_file "corba_bis/interop/CORBA_INTEROP_3/test.opt"
#  content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "corba_bis/interop/CORBA_INTEROP_3/test.py"
#  content [ef0c7484ed912eb831a122002a23f0be06ab9cef]
#
# add_file "corba_bis/interop/CORBA_INTEROP_4/test.opt"
#  content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "corba_bis/interop/CORBA_INTEROP_4/test.py"
#  content [98c03befc07827a744b6d69296a9d05c7ab1741d]
#
# add_file "corba_bis/interop/CORBA_INTEROP_5/test.opt"
#  content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "corba_bis/interop/CORBA_INTEROP_5/test.py"
#  content [3f3ff74c817f400f9a8083a11d340b782dcec782]
#
# add_file "corba_bis/local/LOCAL_0/test.py"
#  content [23fb2fcd10ed6daff01e5bc8280ab30b44b6ebbf]
#
# add_file "corba_bis/location_forwarding/LOCATION_FORWARDING_0/test.py"
#  content [267a18f97db706e90b00f104de0770079cef4661]
#
# add_file "corba_bis/location_forwarding/LOCATION_FORWARDING_1/test.py"
#  content [e4e84559e4f8c29b4f5db8682c7fefdffc0a7159]
#
# add_file "corba_bis/object/OBJECT_0/test.py"
#  content [361d469e9e034efcc3c14a052f9ebe31b508ffd0]
#
# add_file "corba_bis/orb_init/ORB_INIT_0/test.py"
#  content [f3d5ad870f5de47d812a79c85117767832a6d834]
#
# add_file "corba_bis/performance/CORBA_PERFORMANCE_0/test.opt"
#  content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "corba_bis/performance/CORBA_PERFORMANCE_0/test.py"
#  content [09e29d2242ba9e03077f05d4461f95249b4d8f6e]
#
# add_file "corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_0/test.py"
#  content [fbca7a5b66b64e64596baea36361661f0afc07c1]
#
# add_file "corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_1/test.opt"
#  content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_1/test.py"
#  content [8686af4940669e87d4ad8aa15ef7cc7145c7b7f5]
#
# add_file "corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_2/test.py"
#  content [b2aaa0f42bcd44a218f56df92e9c721e7cfeec68]
#
# add_file "corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_3/test.py"
#  content [56bfdcfb8894c6729ef232a3a3fe8d2a75c70ec8]
#
# add_file "corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_4/test.py"
#  content [b69c8f29369f3c1447e7a7ef590acd36224d8e09]
#
# add_file "corba_bis/portableserver/PORTABLESERVER_0/test.py"
#  content [a19b32844451698820c18c5e22facb34b7fe1420]
#
# add_file "corba_bis/portableserver/PORTABLESERVER_1/test.py"
#  content [fcf0ef0d3eebb594da0d66f397da5cfff83b5162]
#
# add_file "corba_bis/portableserver/PORTABLESERVER_2/test.py"
#  content [1463baa82fdae53584f2b0542a8d6e1225311912]
#
# add_file "corba_bis/rtcorba-rtcurrent/RTCURRENT_0/test.py"
#  content [e1b3988f7b688e5bd64bbd698378e7ff53d826a4]
#
# add_file "corba_bis/rtcorba-rtorb/RTORB_0/test.py"
#  content [8eac96978d21730754fac0b81fd8e5d5201b1ed3]
#
# add_file "corba_bis/rtcorba-rtpoa/RTPOA_0/test.py"
#  content [0b7f1a571559b94858f12fdf444958b979f72945]
#
# add_file "corba_bis/shutdown/SHUTDOWN_0/test.py"
#  content [a5309db45b9efd84ff4a52b93959028a774ba13b]
#
# add_file "corba_bis/shutdown/SHUTDOWN_1/test.opt"
#  content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "corba_bis/shutdown/SHUTDOWN_1/test.py"
#  content [a1c6290dbeab094863bfac52bd61ffa1d54bd05f]
#
# add_file "core_bis/chained_lists/CHAINED_LIST_0/test.py"
#  content [649c3dada77dcf40bf27c6663cc2c3e76c70b6db]
#
# add_file "core_bis/dynamic_dict/DYNAMIC_DICT_0/test.py"
#  content [916779b2b27c85d980968dffab92d6f528bee857]
#
# add_file "core_bis/fixed_point/FIXED_0/test.py"
#  content [b0785c9190ae16a049453015eaf5b901712ab91e]
#
# add_file "core_bis/initialization/INIT_0/test.py"
#  content [923e889c69b26a531b8e9123503e58e0bf1d4a19]
#
# add_file "core_bis/initialization/INIT_1/test.py"
#  content [dc8b188cd3945cb2a77c30cf500186cf60a1dc95]
#
# add_file "core_bis/initialization/INIT_2/test.py"
#  content [7d92364e62d62c90e5aaddaa0ba2fb60f314c08f]
#
# add_file "core_bis/initialization/INIT_3/test.py"
#  content [992d550f74b270fa8eb154bd99d2515caab22d9f]
#
# add_file "core_bis/initialization/INIT_4/test.py"
#  content [3f07df197fe5ec9c55341a1ca4a43951161e17d7]
#
# add_file "core_bis/obj_adapters/OA_0/test.py"
#  content [14752ff3e239330f2cfdff8da046bb0c6f2c6dc9]
#
# add_file "core_bis/obj_adapters/OA_1/test.py"
#  content [b2f36cc5db8347a10aa11b793608d6db3ea9e72f]
#
# add_file "core_bis/poa/POA_0/test.py"
#  content [d8cd328c2a2a9416181c6efbc5741f1cae72f112]
#
# add_file "core_bis/random/RANDOM_0/test.py"
#  content [a34a169faeda7147f3c2e21bdbc905d16f9569ed]
#
# add_file "core_bis/sync_policies/CORE_SYNC_POLICIES_0/test.py"
#  content [9a030c9a917bdb6cdc0966f7fae40136b190aa4e]
#
# add_file "core_bis/tasking/TASK_0/test.py"
#  content [029f54bdc4221981b90ac68d2d3063a545e8b586]
#
# add_file "core_bis/tasking/TASK_1/test.py"
#  content [9a2db0c9ab147bfd2e9d13b8e5adb2d42cc2d8d5]
#
# add_file "core_bis/tasking/TASK_2/test.py"
#  content [3ebacceb7afe6b9d3d3c60d5f852fc2fc4ce90af]
#
# add_file "core_bis/tasking/TASK_3/test.py"
#  content [a9f48a6e20189d77d144275b9345a41b565a1e72]
#
# add_file "core_bis/uri_encoding/URI_ENCODING_0/test.py"
#  content [787062f6b16174e18f03bff998d88b0a8a6cbe69]
#
# add_file "cos_bis/ir/IR_0/test.py"
#  content [e5aa5a44895f831859c578b7b26fd4ea79203c35]
#
# add_file "cos_bis/naming/NAMING_0/test.py"
#  content [a20fc47ed0503e15f3d2ec7882caa78f6e7a19d8]
#
# add_file "cos_bis/time/TIME_0/test.py"
#  content [b88c064c898d7d75c5bc32d750b48a4d12d4ed50]
#
# add_file "examples/dsa/README"
#  content [796d115225797a4046b009c0126e899501a87b77]
#
# add_file "examples/dsa/connections/client.adb"
#  content [4b96e51bb9ad1009cfd0a4ffdb56cc30082c2995]
#
# add_file "examples/dsa/connections/connect.cfg"
#  content [fc56260163f31af745d8bcd20536032b1432918f]
#
# add_file "examples/dsa/connections/connections.ads"
#  content [c20487a2926744f337c0cefd1c65414cf3762e38]
#
# add_file "examples/dsa/connections/hub.adb"
#  content [6ad5a38307913dd1ae8dc4c127a5b7b3610f9a39]
#
# add_file "examples/dsa/connections/hub.ads"
#  content [be22f840d00931d7a3a3bd35f24e13abdae80b28]
#
# add_file "examples/dsa/connections/hub_main.adb"
#  content [382f5c5066a65129332c6ec3ea66f5de089c4bcd]
#
# add_file "examples/dsa/connections/listeners.adb"
#  content [8bb26cd878ba108b504958dc69cb7114fa01974a]
#
# add_file "examples/dsa/connections/listeners.ads"
#  content [2f84486209933ae691ff4834e4e83edff985678e]
#
# add_file "examples/dsa/connections/server.adb"
#  content [dbac62b27214f39add871e39f6bf694b10a69e32]
#
# add_file "examples/dsa/demo/noproc.adb"
#  content [6df02d6dee51a7e0510bc650f77d0b6c808108cb]
#
# add_file "examples/dsa/mailboxes/client.adb"
#  content [d5fd1609be9fb3af5f6c4c44a80f6211010482da]
#
# add_file "examples/dsa/mailboxes/hub.adb"
#  content [c6c0d705e16447985edf4705a939aa6aa5cafb93]
#
# add_file "examples/dsa/mailboxes/hub.ads"
#  content [421b78155df83bf3bec01ca826c0c1baaded8943]
#
# add_file "examples/dsa/mailboxes/hub_main.adb"
#  content [382f5c5066a65129332c6ec3ea66f5de089c4bcd]
#
# add_file "examples/dsa/mailboxes/mail.cfg"
#  content [fc56260163f31af745d8bcd20536032b1432918f]
#
# add_file "examples/dsa/mailboxes/mailboxes-active.adb"
#  content [d7a41972f9cfbaf2b61def6c83377d7a1cc7eacd]
#
# add_file "examples/dsa/mailboxes/mailboxes-active.ads"
#  content [d5f7e6dbdf25244d1a3a1f352857dfb361d74037]
#
# add_file "examples/dsa/mailboxes/mailboxes.ads"
#  content [09f88822dd99d55b119f3b4b55dc67c0922113d6]
#
# add_file "examples/dsa/mailboxes/server.adb"
#  content [08b31cacfdb5b25377fec24c3393e6d735c57dea]
#
# add_file "examples_bis/corba-all_functions/ALL_FUNCTIONS_0/test.py"
#  content [68aa225c597ee1ea1e57bf8327d51a4c0e6d649c]
#
# add_file "examples_bis/corba-all_functions/ALL_FUNCTIONS_1/test.opt"
#  content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "examples_bis/corba-all_functions/ALL_FUNCTIONS_1/test.py"
#  content [a9e16bdeda47e08878aa5a5a8b21b1c30b3881fd]
#
# add_file "examples_bis/corba-all_functions/ALL_FUNCTIONS_2/test.opt"
#  content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "examples_bis/corba-all_functions/ALL_FUNCTIONS_2/test.py"
#  content [095ea4fd0e64c6d28d9a8f438d6adaf8f664d29c]
#
# add_file "examples_bis/corba-all_functions/ALL_FUNCTIONS_3/test.opt"
#  content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "examples_bis/corba-all_functions/ALL_FUNCTIONS_3/test.py"
#  content [6aaa8104fc496100e12d452b9c32cc48bb2c6589]
#
# add_file "examples_bis/corba-all_functions/ALL_FUNCTIONS_4/test.py"
#  content [81d7aa7dba5d85b38893ac9b57fc8d16d20dd365]
#
# add_file "examples_bis/corba-all_functions/ALL_FUNCTIONS_5/test.py"
#  content [87e0e7439a7d748e177102e2cf098f2f17ba6581]
#
# add_file "examples_bis/corba-all_functions/ALL_FUNCTIONS_6/test.py"
#  content [17ecf31c0883d79dc14bc798df49da7e68970074]
#
# add_file "examples_bis/corba-all_types/ALL_TYPES_0/test.py"
#  content [e4265b5ba5f5b7501c27a1f126e664bf41f82fc1]
#
# add_file "examples_bis/corba-all_types/ALL_TYPES_1/test.opt"
#  content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "examples_bis/corba-all_types/ALL_TYPES_1/test.py"
#  content [5787206f07f7dfe5e8ee1db67766458cce462035]
#
# add_file "examples_bis/corba-all_types/ALL_TYPES_2/test.opt"
#  content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "examples_bis/corba-all_types/ALL_TYPES_2/test.py"
#  content [deff83559a903317c7eefa2a473395cc876349ba]
#
# add_file "examples_bis/corba-all_types/ALL_TYPES_3/test.opt"
#  content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "examples_bis/corba-all_types/ALL_TYPES_3/test.py"
#  content [dc2d40418cf86d7478a2c1e46c91ed02bf6d6657]
#
# add_file "examples_bis/corba-all_types/ALL_TYPES_4/test.opt"
#  content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "examples_bis/corba-all_types/ALL_TYPES_4/test.py"
#  content [5f13fb1756c71da7191b9f0db57c313f60df2a23]
#
# add_file "examples_bis/corba-all_types/ALL_TYPES_5/test.py"
#  content [bde530741e5188a744cf07e049874f77ad76054a]
#
# add_file "examples_bis/corba-all_types/ALL_TYPES_6/test.py"
#  content [b6fe510f02e466e6ec6439b9b649cd6c056dba83]
#
# add_file "examples_bis/corba-all_types/ALL_TYPES_7/test.py"
#  content [af7461b837c089c4d285991f0849de52a1c3bee6]
#
# add_file "examples_bis/corba-echo/ECHO_0/test.py"
#  content [a137b15e04e8921d2454d76e615fcd342aebe29d]
#
# add_file "examples_bis/corba-echo/ECHO_1/test.py"
#  content [a98c4323ca0913c26ca1c017cd7b21d7485c662b]
#
# add_file "examples_bis/corba-echo/ECHO_2/test.py"
#  content [ac078c610334cc58bd98d1d380fceb0e1f5e0f3f]
#
# add_file "examples_bis/corba-echo/ECHO_3/test.py"
#  content [573d5e8b192de06b6ef3fb0b314b3945fb515c43]
#
# add_file "examples_bis/corba-echo/ECHO_4/test.py"
#  content [c9e52764bc62e3d5365584e9b4b54b4bca540b0b]
#
# add_file "examples_bis/corba-echo/ECHO_5/test.py"
#  content [b002b1a4d6669b66adc84404f2880d4aef6167fc]
#
# add_file "examples_bis/corba-echo/ECHO_6/test.py"
#  content [c19dad02feb280d47ec405e2d9c394465fd998ce]
#
# add_file "examples_bis/corba-echo/ECHO_7/test.py"
#  content [af110eecdf05cecd91d7ab2580f5f16c17965686]
#
# add_file "examples_bis/corba-random/CORBA_RANDOM_0/test.py"
#  content [6dce46ed02bed61b77ac825525b7a53a0be34b66]
#
# add_file "examples_bis/corba-random/CORBA_RANDOM_1/test.py"
#  content [b61a010850494f7edbb30b8d3ea229be1bc0b305]
#
# add_file "examples_bis/corba-rtcorba-client_propagated/RTCORBA_CLIENT_PROPAGATED_0/test.py"
#  content [f83ee0cf1f7c7b6dcea97bfe4558f4aa94983ac4]
#
# add_file "examples_bis/corba-rtcorba-dhb/RTCORBA_DHB_0/test.opt"
#  content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "examples_bis/corba-rtcorba-dhb/RTCORBA_DHB_0/test.py"
#  content [2b28e439b56093378a809e48d1c96c0e828325b1]
#
# add_file "examples_bis/corba-rtcorba-rtcosscheduling/RTCORBA_RTCOSSCHEDULING_0/test.opt"
#  content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "examples_bis/corba-rtcorba-rtcosscheduling/RTCORBA_RTCOSSCHEDULING_0/test.py"
#  content [35bc2e824be67e6584afee208d5ad2f245f3e181]
#
# add_file "examples_bis/corba-rtcorba-server_declared/RTCORBA_SERVER_DECLARED_0/test.py"
#  content [b05bf0f80cd66aa50a08953a81be621d8589ac22]
#
# add_file "examples_bis/corba-rtcorba-server_declared/RTCORBA_SERVER_DECLARED_1/test.py"
#  content [ec64e5c98ed3e89b2be01617d30dd7f81c6bdf8d]
#
# add_file "examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_0/test.opt"
#  content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_0/test.py"
#  content [fbeefc45c9538c10f319a6990606ab395fdafe7b]
#
# add_file "examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_1/test.opt"
#  content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_1/test.py"
#  content [4b03d1a1d9410f0714b5c536059d5757dc1c40af]
#
# add_file "examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_2/test.opt"
#  content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_2/test.py"
#  content [f111fa79ac937964a0ddf3fe2f5121dde8612b1c]
#
# add_file "examples_bis/corba-send/CORBA_MIOP_0/test.opt"
#  content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "examples_bis/corba-send/CORBA_MIOP_0/test.py"
#  content [1fa34c814de58ac2b0702a4317bdc812a11f0b79]
#
# add_file "examples_bis/moma/MOMA_0/test.opt"
#  content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "examples_bis/moma/MOMA_0/test.py"
#  content [3339674efe649e7a96c1cb0958e833f56fea17ff]
#
# add_file "examples_bis/moma/MOMA_1/test.opt"
#  content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "examples_bis/moma/MOMA_1/test.py"
#  content [9beac423042e6a59ce34544fbc4a6d12f58db5dd]
#
# add_file "examples_bis/polyorb/POLYORB_CORE_0/test.py"
#  content [010053b9ca51afba7b1a56b706e8e4536eaf1ef7]
#
# add_file "examples_bis/polyorb/POLYORB_CORE_1/test.py"
#  content [b05b3d2e46d13c4d8af74c6957997e82cfc1a0fd]
#
# add_file "examples_bis/polyorb/POLYORB_CORE_2/test.py"
#  content [44ae14db934212dbaca6300b106ff391b3eaca0c]
#
# add_file "examples_bis/polyorb/POLYORB_CORE_3/test.py"
#  content [ea3a2fc70be49b54254fe2d5e2cf4dfbd33ebe9b]
#
# add_file "src/polyorb-binding_objects-lists.ads"
#  content [0bcd6b554b70f79f741ead2ade6a95fa30ded467]
#
# add_file "src/polyorb-smart_pointers-controlled_entities.adb"
#  content [ce2d84752e999da9daedc2073cd10754146ecf53]
#
# add_file "src/polyorb-smart_pointers-controlled_entities.ads"
#  content [bbb49214d7c7afb7af251dac8d5bdf6b37560498]
#
# add_file "src/polyorb-utils-ilists.adb"
#  content [0dd5c696b3f3b3a49b706206c8a177b10bc14c5b]
#
# add_file "src/polyorb-utils-ilists.ads"
#  content [d3074756615441d8370dbb6dee1e4130a1d1f759]
#
# add_file "testsuite/corba/performance/java/Makefile"
#  content [dfb0bb2fd6c08a04744e1343f34bf7d0efabd79e]
#
# add_file "testsuite/corba/performance/java/benchs.idl"
#  content [0383f70a59878d96dd5dea9191db7e11a0b1f191]
#
# add_file "testsuite/corba/performance/java/benchsServer.java"
#  content [325253d97716cc69eadec2ab2c3e306fb04978be]
#
# patch "MANIFEST"
#  from [beaa6ff2ced91a674fbd62d84038eecee7ce4c8d]
#    to [3650d7c4d95f47132a24bd91ab8215d95931b59c]
#
# patch "compilers/gnatdist/xe_utils.adb"
#  from [74d04cc35273e32850a84734cfe4f5cf2c2af286]
#    to [1369f8f06066604a9f7f4b3036904315dc8045bd]
#
# patch "features-26"
#  from [5e90266bc20d4c6bcdc0235f37465302fe1b007a]
#    to [051e40959808a48a6b8b0207f78a773538c2ff82]
#
# patch "src/corba/corba-impl.ads"
#  from [aa835283edc63b97e1deb24eef71aae532258efa]
#    to [718a38a5b5443f36dc1e1d78d91d4d887d93f70d]
#
# patch "src/corba/corba-object-helper.adb"
#  from [c57cd12d420117a4f3e18e7c9ce72b1f03978a36]
#    to [9ac407e68d900308b7d42902f4f66a276c98edfc]
#
# patch "src/corba/corba-object.adb"
#  from [67106837169e07ab8ab2cc086006b834080cf1a5]
#    to [7e882b38a09a51f3a067eae19583de4e36d43d13]
#
# patch "src/corba/corba-object.ads"
#  from [5ae29a3f4c2a911a546de7440540128ff679fbd7]
#    to [ea5942a564aa71d3704415705019ed49022fde03]
#
# patch "src/corba/corba-orb.adb"
#  from [a74270a24b312144fa0b01230403f4c6fe6ff328]
#    to [e7ec35ffe299d70cb6c2fad615ddbee7bc569d2f]
#
# patch "src/corba/corba-orb.ads"
#  from [aa906897ac4eb3ded98bbb78fda830d0e1891545]
#    to [880b3419411d9d3682a7795c5f8d2777b1e3324d]
#
# patch "src/corba/polyorb-corba_p-interceptors_hooks.ads"
#  from [98eaddd0e37a6905523f11a7e60b895564db8cfb]
#    to [aed849baa66bd04eae5b88c9cbce4483adf3a260]
#
# patch "src/corba/polyorb-corba_p-local.ads"
#  from [ebcf72aace438dfd761f113048b97257ab52b7fa]
#    to [a2dda3cf96c7a578dbc26a8aefe9cba6f4be403c]
#
# patch "src/corba/polyorb-corba_p-policy.ads"
#  from [ec6aa6561b854cc389e1fc3a118298abfd52d1a9]
#    to [91a076df115ca593c8c518d25c4003d11ca73d56]
#
# patch "src/corba/portableinterceptor/polyorb-corba_p-interceptors.adb"
#  from [33539a6fd20c74ca0a00d77d2abdedbe279fb449]
#    to [fe5649fdf103fa33e133623f45760cdbadc7bacc]
#
# patch "src/corba/portableinterceptor/portableinterceptor-clientrequestinfo-impl.adb"
#  from [cac49b4a2e4473fd221126bf44c67e0e8029cffa]
#    to [c3de8260da334b5da747b383621e9ce5c2894198]
#
# patch "src/corba/portableinterceptor/portableinterceptor-requestinfo-impl.adb"
#  from [48c4ae913c97a8cc8746d665bdbd325aa6449564]
#    to [2e0f63207cc029df0ab83756522ef633e44d3b97]
#
# patch "src/corba/portableserver-current.adb"
#  from [91160a73769d5b1532f8f49c5056cda45a986c3d]
#    to [669e5f4863f051651cdcc9866deea0a02887883e]
#
# patch "src/corba/portableserver-poa.adb"
#  from [1dbebd0259567e516a0ef0e7d9514c931abff12e]
#    to [b8f54372ff8c7c845d1e7f0cf63b5f474f8b0916]
#
# patch "src/corba/portableserver.adb"
#  from [d4a8dd7c9278a39b665b62ab5f09c9cd7de4616d]
#    to [edb5a02c82b0284a6305260bf624385996b7eb5b]
#
# patch "src/corba/rtcorba/rtcorba-current.adb"
#  from [f26a512485f78e29871b6201827eb8af747e46d6]
#    to [9a09e19e2c73b09a77cc3e8c68865339b540b9bb]
#
# patch "src/corba/rtcorba/rtcorba-current.ads"
#  from [181aca4bca3b31d0190a87cf168c874dd0705b24]
#    to [22a004fd9f1ec7f428689d1bd91ba5525133aaf1]
#
# patch "src/corba/rtcorba/rtcorba-rtorb.ads"
#  from [99025f81078249b4cd07bd9e969821cb3328c5d1]
#    to [ce280560710036613627002175db16d57edf4abc]
#
# patch "src/corba/rtcorba/rtportableserver-poa.adb"
#  from [22e7ab563596f6771c2726620f52c4f355bb0084]
#    to [8be1768c780a4f1e73aff3a1688173190dff7cfb]
#
# patch "src/corba/security/polyorb-corba_p-security_policy.adb"
#  from [d33e32f266bfa0569a8e078f059bb9add23d7c12]
#    to [420c58225df4944e0fa5fafb06958df1d53dcc4f]
#
# patch "src/corba/security/polyorb-corba_p-tss_state_machine.adb"
#  from [935417d2bbbedf813b37253f563ade29760ff8d1]
#    to [7f18155aa966fc3bc024feb5ff3a5b06413c900b]
#
# patch "src/dsa/polyorb-dsa_p-storages-dfs.adb"
#  from [c1cd2fe74b765dd90eedf741273c7a060df89c7c]
#    to [db1d0fdd06faa2dcd91288720a5fa09de21a4b92]
#
# patch "src/dsa/s-parint.adb"
#  from [d513233ce0727c06c687742df487e374fbb16886]
#    to [bde9ffb0c92fe35313153611bc8224528e3e5790]
#
# patch "src/dsa/s-parint.ads"
#  from [9890673a72e8d30ca1710f2ec86617802d5d28cb]
#    to [32b90ab9889e734de17a35cfacefba4f3d0323c9]
#
# patch "src/dsa/s-shasto.adb"
#  from [9be2e415d5966f20042c42ff58c23d584bd4a505]
#    to [bc64f5f67e9c2175edfc915cf7590707a9adccf0]
#
# patch "src/giop/diop/polyorb-giop_p-transport_mechanisms-diop.adb"
#  from [bd45f1f3e6d7b2981c07ff095757c19ad19cba35]
#    to [f96de414dee35283810592f4356848b60c63f1b6]
#
# patch "src/giop/iiop/polyorb-giop_p-transport_mechanisms-iiop.adb"
#  from [ec433bce6dea695b3db475fa9fcd60dfab546f36]
#    to [ff93b81c382a7715fcec21d654939d40d9154251]
#
# patch "src/giop/iiop/security/tls/polyorb-giop_p-transport_mechanisms-tls.adb"
#  from [bfa051ef5a5286df8295ef0c0d71677e44aeb6ee]
#    to [3c3ce6909ec41c3bfb6ea24cbdc14b3fb346a977]
#
# patch "src/giop/iiop/ssliop/polyorb-giop_p-transport_mechanisms-ssliop.adb"
#  from [9081f70b8ec9b5b941220b7ddb59d550052170b1]
#    to [e2a54ca1995ec488a67bf4f524b6f9f10131710a]
#
# patch "src/giop/miop/polyorb-filters-miop.adb"
#  from [00aee6619958456cbfda4955d1e789000272c0ff]
#    to [116deeebf873e24dab845492072dad253c10b345]
#
# patch "src/giop/miop/polyorb-giop_p-transport_mechanisms-uipmc.adb"
#  from [c6ee13976f5296b245fd63120184f6b1b57fbc04]
#    to [8d550f738ee677f7f5b42621d74ec3a72be04528]
#
# patch "src/giop/polyorb-giop_p-code_sets-converters.adb"
#  from [f3ed428a929080947334dc346075cd5dd2b183dd]
#    to [8ba032e2005080d3e24161b7a5ee69b1bdac75d6]
#
# patch "src/giop/polyorb-giop_p-tagged_components.adb"
#  from [6adb4a44a74679e013dc941a2114e477ee94bf22]
#    to [3adb0caa60937355c1c41d18ba6e6f54fb85573e]
#
# patch "src/giop/polyorb-protocols-giop-common.adb"
#  from [77d42bece36b2be62815f8c726e2e4428b9efa75]
#    to [24043ebee726daf304caf00ffeb9e0c46defce47]
#
# patch "src/giop/polyorb-protocols-giop-giop_1_0.ads"
#  from [8f843e2e3182654fa12dfdbd7f27701f98adf546]
#    to [b3651c63e6b24157a115e008060fc740c7d25641]
#
# patch "src/giop/polyorb-protocols-giop-giop_1_1.ads"
#  from [ab0d42bc43630139422b4adeedd4089729c10321]
#    to [a0b0ede73ca7271379f434364a93559c9db1bffd]
#
# patch "src/giop/polyorb-protocols-giop-giop_1_2.ads"
#  from [f9429c32ec4497de8f0b725297a1b3592ddc3189]
#    to [00ca83ae03bc8450592e7aafc8badb336cd8c766]
#
# patch "src/giop/polyorb-protocols-giop.adb"
#  from [63bea4f95a38fe9df1814373f570f74ae1601d32]
#    to [a60144d9bf88353f990aff59a00f0a6d8297b8a3]
#
# patch "src/moma/polyorb-moma_p-provider-topic_datas.adb"
#  from [f545a167daeca97c1757a3b04d82eae5a18b196e]
#    to [731ac702d14bd8008d21fe9853fa864307d53608]
#
# patch "src/polyorb-asynch_ev-sockets.adb"
#  from [6d7ef022c6bb6b2db6ade0e4074a56e3ecb1f11d]
#    to [da9d36dcf79bbda85337c489434f6bf8043c946c]
#
# patch "src/polyorb-asynch_ev-sockets.ads"
#  from [f145eec3986b99b2e542bbdb840132a1bed5c34e]
#    to [db9d4b0130554e5ab153c935a17d7e9022b4b1b3]
#
# patch "src/polyorb-binding_objects.adb"
#  from [eba30a65cef3d288734a8d87b88e6e711731e0a1]
#    to [b307b51b67c5497619e2f0517b67687ca8d3b565]
#
# patch "src/polyorb-binding_objects.ads"
#  from [09596e10cb8ec629ed43c88a3e9642d285effad4]
#    to [0c45487ddb03011c54a10b69cc65ddc858cab5f8]
#
# patch "src/polyorb-buffers.adb"
#  from [37848e6f2a31b7862eedd1731894a83b5a155e76]
#    to [1d84ea6a542a20d87f551541a703be0b7703edc4]
#
# patch "src/polyorb-buffers.ads"
#  from [11916cf4cd3bbf85ac3f1cec3e3258b3f55cc4e6]
#    to [6bb4bfbd014031a17a72d6fa142448937293608c]
#
# patch "src/polyorb-exceptions.adb"
#  from [f8d2de11d4615d84e490265229949ca430326d08]
#    to [90bb51d2a7ccd0f01ef210908cb23ef82c4373f1]
#
# patch "src/polyorb-if_descriptors.ads"
#  from [0cef5e8b1268b6c299d0ba1658baf3067ac8e5a2]
#    to [661166cb263715f320bc96025a8eee327938f480]
#
# patch "src/polyorb-jobs.adb"
#  from [f0697ad1b8affcbf53bef6b435a6955a84f3952a]
#    to [1dce24e40213573ef364c6467a2c67839b3e324b]
#
# patch "src/polyorb-minimal_servant.ads"
#  from [471788336df2a4fb10b2178852cb392718a154ef]
#    to [70ea2db2756739d89e673e6ec54b6c3bec4ed874]
#
# patch "src/polyorb-opaque-chunk_pools.adb"
#  from [e192a5d0143eaa35a83187111175b88350421734]
#    to [70261eaec2aee40c52b3c7e7634dba38401d035a]
#
# patch "src/polyorb-opaque-chunk_pools.ads"
#  from [19d09d4d795d8e83a12682a9aa30e32d62663d57]
#    to [a4f3ca205b2d723e8fc53876da9e538ef2d81dbb]
#
# patch "src/polyorb-orb.adb"
#  from [38549bf735dccbffb71e5c8d6a9a5da27f217dcc]
#    to [31cea568c888e0588e64562740702d4a72381d1a]
#
# patch "src/polyorb-orb.ads"
#  from [5a5f09d08b9fae81db8d56a85367fb1859f328db]
#    to [90b4dfe13639558e244d2467e77c19faa20376cf]
#
# patch "src/polyorb-poa_manager-basic_manager.adb"
#  from [940803f7bb53121ccbcb29fcdf823c3e6002dfed]
#    to [e56aff07f963a6e027a5af5a60da3ac83c5f1c6e]
#
# patch "src/polyorb-poa_manager-basic_manager.ads"
#  from [0b176448e4d191aba4e02ada3a87930c88ef20c5]
#    to [495d1b41846642501703b3499bdf8923f15c7169]
#
# patch "src/polyorb-poa_manager.ads"
#  from [ec3001c5983cae39e4a8a27947074ca89edc2487]
#    to [0edcbce66c9b8473930fb97977ceb221d5389d69]
#
# patch "src/polyorb-references-ior.adb"
#  from [b6f075b931047ade3517564aa0cc5e3a11dd5931]
#    to [afcb63f6a912e58bd8b3cc6df55a66cb9e7d41ce]
#
# patch "src/polyorb-references-uri.adb"
#  from [7dad7b907947ed7bc935ca68bb9f95df1f8d9a47]
#    to [fe956470c0137830c5614681388d2f088cdafec9]
#
# patch "src/polyorb-references.ads"
#  from [8a58554d26800bf6018f8b1344eda091ce400cb7]
#    to [a94899add6bdf8fd2d9b5baece4c4d9363ca1520]
#
# patch "src/polyorb-representations-cdr-common.adb"
#  from [48e55eecf86e8a6a03230e58bbcbeed493a550a0]
#    to [b45c3ab99826439f45747d57c55aae41b4e131e9]
#
# patch "src/polyorb-representations-cdr.adb"
#  from [7633553de55e337f04a5dcc0b32aa7ed80d4a61f]
#    to [7c492bb499c601870f0e050aa1551acc15df28ab]
#
# patch "src/polyorb-representations-test.adb"
#  from [28e5b72ba24ed33e43f94feff17c6833c26763e4]
#    to [d4a331920c3897ca7e830454d2e0ef7cac07f1be]
#
# patch "src/polyorb-servants-group_servants.adb"
#  from [5264d5f908feab5a73078a495447b562d0ee2991]
#    to [d55fa9ec95d15c9f932a1a4155cf6c82ec690130]
#
# patch "src/polyorb-smart_pointers-initialization.adb"
#  from [d558c5f480a1242d4e18b47efe56d30afa37d08f]
#    to [4d77d7353e67ed63fcde10ef4daa36ce35c98721]
#
# patch "src/polyorb-smart_pointers.adb"
#  from [3708a49832a6b36abcebe143d72dc127b80bfc15]
#    to [5771db48ee89af79eda56325f590f17302e7ba72]
#
# patch "src/polyorb-smart_pointers.ads"
#  from [d8438c6adc9f3ea8a6420257ccf0b9785f35dd27]
#    to [ea54c240d3278d0be12d2936d3582b0fb3a3a200]
#
# patch "src/polyorb-task_info.adb"
#  from [40d2a3dafe9bf04f8e9983b4d15dcda48a96f615]
#    to [e6beed64fd8ee5c7a2e438ed52d4508e9f1d779f]
#
# patch "src/polyorb-task_info.ads"
#  from [dee96975701f64f4d10311d2aa03202083463067]
#    to [495f627cd43ac04822c4a2bf8164a6e53551aed7]
#
# patch "src/polyorb-tasking-idle_tasks_managers.adb"
#  from [8bec7f54f4ba680c1029647f7a5bff52eb16a18a]
#    to [5fe13723243c0c248132b75c15a8d62aaf09339e]
#
# patch "src/polyorb-tasking-idle_tasks_managers.ads"
#  from [8b897e243e52b9626988dbc58c1b4d16a7b4da8f]
#    to [db0cc938ccab4dda1c7526d113498ebd35179bb3]
#
# patch "src/polyorb-transport-connected.adb"
#  from [3625a040566158bcb053b7d0844ab228a4d8e9ef]
#    to [cf4467f233df06d8f65c885b5f5647fa41a49267]
#
# patch "src/polyorb-transport-datagram.adb"
#  from [92e3e05f69961d0e557fd1dddaa2750f50e4ad2f]
#    to [80f7c7a5307dfcf448ab9c92d3a21ad774739e09]
#
# patch "src/polyorb-utils-buffers.adb"
#  from [8e4f6bde700d063df06afa6a6787084cee31e3bc]
#    to [826754f2c8dbc423f07d699a11ac19f2ddb967c6]
#
# patch "src/polyorb-utils-buffers.ads"
#  from [b6d97a5c47d26f4402779fca18486d336149d8e6]
#    to [f063effab0ba0700f2654c1d5290e712535e20e3]
#
# patch "src/polyorb-utils-chained_lists.adb"
#  from [4288c17d13e173020ecab1f5cf84d6806021f5bc]
#    to [b65e335a75cb213285f7fb891b1f5384e2050c4a]
#
# patch "src/polyorb-utils-chained_lists.ads"
#  from [efce85573b6d5a9c12869744965bc776fcc5da9a]
#    to [93d0b2a36e20196781d22547eccd5b2642eeb3c7]
#
# patch "src/polyorb-utils-strings-lists.adb"
#  from [bde08790b56512ed4d51264b0ac4a7ee768ea518]
#    to [7c0f7bb784ea2b89ded586c2006e0583df0f9da6]
#
# patch "src/security/polyorb-qos-clients_security.adb"
#  from [dc536343faa741e0586c0a549d6c8a5a36662d42]
#    to [a5b8097c048f53ec67d293affa646056e616e59e]
#
# patch "src/security/polyorb-qos-targets_security.adb"
#  from [dcd0bae565732fb5fcadc3f256ad7d20428a1505]
#    to [f706fecc1da5a21ac786730448a77dc61a75fa9a]
#
# patch "src/security/tls/polyorb-asynch_ev-sockets-tls.adb"
#  from [3272658453d24b5f2aaa70360da38fa939a164de]
#    to [1ca9e598c949f9de49b5ed232182d202326de8b3]
#
# patch "src/security/tls/polyorb-security-transport_mechanisms-tls.adb"
#  from [0d34f7286180c9cb1ede376858e9cf50d0f3fac9]
#    to [c0a4bd7044a9f6db6ea07d418f806726e22b37ed]
#
# patch "src/soap/polyorb-binding_data-soap.adb"
#  from [0f898e423a529f609f9be06a0435e8475498c831]
#    to [fea803d3c7eec1b07d1ed3bfea3882394ae263dc]
#
# patch "src/soap/polyorb-utils-text_buffers.adb"
#  from [da7062608c898021cd3b1cec585d364dd4431a70]
#    to [231e9ec0057873a4c275763840e2b7f4b5565938]
#
# patch "src/srp/polyorb-binding_data-srp.adb"
#  from [7dbbcf796fb1f1733c7a1591d5bfe88d84abffc6]
#    to [35304b2805ad939440e0c942c8e6675598bc7035]
#
# patch "src/srp/polyorb-representations-srp.adb"
#  from [ffb2ecc945201b06e0a1ff987baade4ddd3bd23c]
#    to [4136f14bc72279e85b45e63b72aea51fb6fc46ef]
#
# patch "src/ssl/polyorb-asynch_ev-sockets-ssl.adb"
#  from [2f34a5aea0b70844f3e9539d97b2bce1947f0c71]
#    to [22de5a147f68869f9d531922a3a445058f136ae7]
#
# patch "testsuite/core/chained_lists/test000.adb"
#  from [5ac857885260c83aaa4105b68c972cd4c7c5dfd7]
#    to [877b4ec21f7109cff7a170f7fe0d9a5b543d3155]
#
============================================================
--- README.DSA	f5e0679fe90dff7879b0722355320d02e1de1e06
+++ README.DSA	f5e0679fe90dff7879b0722355320d02e1de1e06
@@ -0,0 +1,20 @@
+Using PolyORB as DSA PCS
+========================
+
+PolyORB provides an application personality that implements a Partition
+Communication Subsystem for the Distributed Systems Annex of the Ada
+language, in conjunction with the GNAT compiler. In order to use this
+personality, you need to use matching releases of the compiler and
+middleware.
+
+The following combinations of releases are known to be compatible:
+
+GNAT version  | PolyORB version
+--------------+-----------------
+GNAT Pro 6.0  | PolyORB 2.2
+GNAT Pro 6.1  | PolyORB 2.3
+GNAT GPL 2008 | PolyORB 2.4
+GNAT Pro 6.2  | PolyORB 2.5
+GNAT GPL 2009 | PoylORB GPL 2009 (planned)
+GNAT Pro 6.3  | PolyORB 2.6      (planned)
+
============================================================
--- corba_bis/all_exceptions/CORBA_ALL_EXCEPTIONS_0/test.py	02b4bc3f8ff05ad994890748c600e1c894841eb7
+++ corba_bis/all_exceptions/CORBA_ALL_EXCEPTIONS_0/test.py	02b4bc3f8ff05ad994890748c600e1c894841eb7
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/all_exceptions/client', r'',
+                     r'corba/all_exceptions/server', r''):
+    sys.exit(1)
+
============================================================
--- corba_bis/all_exceptions/CORBA_ALL_EXCEPTIONS_1/test.py	3bceede77661af46ccccc1f3d84a9b62f4b7e6bd
+++ corba_bis/all_exceptions/CORBA_ALL_EXCEPTIONS_1/test.py	3bceede77661af46ccccc1f3d84a9b62f4b7e6bd
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/all_exceptions/client', r'scenarios/polyorb_conf/giop_1_0.conf',
+                     r'corba/all_exceptions/server', r'scenarios/polyorb_conf/giop_1_0.conf'):
+    sys.exit(1)
+
============================================================
--- corba_bis/all_exceptions/CORBA_ALL_EXCEPTIONS_2/test.py	065d4ded6344ad6e938171fcaea627c0629d8b9f
+++ corba_bis/all_exceptions/CORBA_ALL_EXCEPTIONS_2/test.py	065d4ded6344ad6e938171fcaea627c0629d8b9f
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/all_exceptions/client', r'scenarios/polyorb_conf/giop_1_1.conf',
+                     r'corba/all_exceptions/server', r'scenarios/polyorb_conf/giop_1_1.conf'):
+    sys.exit(1)
+
============================================================
--- corba_bis/all_exceptions/CORBA_ALL_EXCEPTIONS_3/test.py	1edc10f2a3e43cd24af64e3f1a1e04cff5e7b5a6
+++ corba_bis/all_exceptions/CORBA_ALL_EXCEPTIONS_3/test.py	1edc10f2a3e43cd24af64e3f1a1e04cff5e7b5a6
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/all_exceptions/client', r'scenarios/polyorb_conf/giop_1_2.conf',
+                     r'corba/all_exceptions/server', r'scenarios/polyorb_conf/giop_1_2.conf'):
+    sys.exit(1)
+
============================================================
--- corba_bis/benchs/CORBA_BENCHS_0/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ corba_bis/benchs/CORBA_BENCHS_0/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- corba_bis/benchs/CORBA_BENCHS_0/test.py	7208b2de5b0b61063f72adb210b762648e7e3b02
+++ corba_bis/benchs/CORBA_BENCHS_0/test.py	7208b2de5b0b61063f72adb210b762648e7e3b02
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/benchs/test000/client', r'',
+                     r'corba/benchs/test000/server', r''):
+    sys.exit(1)
+
============================================================
--- corba_bis/code_sets/CODE_SETS_0/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ corba_bis/code_sets/CODE_SETS_0/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- corba_bis/code_sets/CODE_SETS_0/test.py	025bd2d387115a002d157efe46c2285c4f59622d
+++ corba_bis/code_sets/CODE_SETS_0/test.py	025bd2d387115a002d157efe46c2285c4f59622d
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/code_sets/test000/client', r'',
+                     r'corba/code_sets/test000/server', r'scenarios/polyorb_conf/code_sets_000_server.conf'):
+    sys.exit(1)
+
============================================================
--- corba_bis/code_sets/CODE_SETS_1/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ corba_bis/code_sets/CODE_SETS_1/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- corba_bis/code_sets/CODE_SETS_1/test.py	48ce89ba8afb85a55f9ec222b0c4243422d54f29
+++ corba_bis/code_sets/CODE_SETS_1/test.py	48ce89ba8afb85a55f9ec222b0c4243422d54f29
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/code_sets/test000/client', r'scenarios/polyorb_conf/code_sets_000_client.conf',
+                     r'corba/code_sets/test000/server', r'scenarios/polyorb_conf/code_sets_000_server.conf'):
+    sys.exit(1)
+
============================================================
--- corba_bis/domainmanager/DOMAINMANAGER_0/test.py	33b6110d5102fa0a0c251600e0a1ceca16709ab4
+++ corba_bis/domainmanager/DOMAINMANAGER_0/test.py	33b6110d5102fa0a0c251600e0a1ceca16709ab4
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/domainmanager/test000/client', r'',
+                     r'corba/domainmanager/test000/server', r''):
+    sys.exit(1)
+
============================================================
--- corba_bis/harness/CORBA_HARNESS_0/test.py	ac082d9b2e3beadbb9ae7e6f93b2cdd87f6a3048
+++ corba_bis/harness/CORBA_HARNESS_0/test.py	ac082d9b2e3beadbb9ae7e6f93b2cdd87f6a3048
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/harness/client', r'',
+                     r'corba/harness/server_no_tasking', r''):
+    sys.exit(1)
+
============================================================
--- corba_bis/harness/CORBA_HARNESS_1/test.py	45e8fd2ef6da1fffb74feaac5b6a7b019d4d9384
+++ corba_bis/harness/CORBA_HARNESS_1/test.py	45e8fd2ef6da1fffb74feaac5b6a7b019d4d9384
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/harness/client', r'',
+                     r'corba/harness/server_thread_pool', r''):
+    sys.exit(1)
+
============================================================
--- corba_bis/harness/CORBA_HARNESS_2/test.py	d7fef518a6aa9dab4f94cc7bb63c03a945a644f9
+++ corba_bis/harness/CORBA_HARNESS_2/test.py	d7fef518a6aa9dab4f94cc7bb63c03a945a644f9
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/harness/client', r'',
+                     r'corba/harness/server_thread_per_request', r''):
+    sys.exit(1)
+
============================================================
--- corba_bis/harness/CORBA_HARNESS_3/test.py	162fb2e48de6005e7dc1692948f4464bb6601027
+++ corba_bis/harness/CORBA_HARNESS_3/test.py	162fb2e48de6005e7dc1692948f4464bb6601027
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/harness/client', r'',
+                     r'corba/harness/server_thread_per_session', r''):
+    sys.exit(1)
+
============================================================
--- corba_bis/harness/CORBA_HARNESS_4/test.py	a0d1cc6638f3f15f3a1de9d8ee99d7352071545f
+++ corba_bis/harness/CORBA_HARNESS_4/test.py	a0d1cc6638f3f15f3a1de9d8ee99d7352071545f
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/harness/client', r'',
+                     r'corba/harness/server_no_tasking2', r''):
+    sys.exit(1)
+
============================================================
--- corba_bis/harness/CORBA_HARNESS_5/test.py	9b084452f13adfcab9160fdc11356bea3834cf53
+++ corba_bis/harness/CORBA_HARNESS_5/test.py	9b084452f13adfcab9160fdc11356bea3834cf53
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/harness/client', r'',
+                     r'corba/harness/server_thread_pool_lf', r''):
+    sys.exit(1)
+
============================================================
--- corba_bis/harness/CORBA_HARNESS_6/test.py	6d311c82f6c37d8680beac386fee4746da4be8c3
+++ corba_bis/harness/CORBA_HARNESS_6/test.py	6d311c82f6c37d8680beac386fee4746da4be8c3
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/harness/client', r'',
+                     r'corba/harness/server_thread_pool_hahs', r''):
+    sys.exit(1)
+
============================================================
--- corba_bis/harness/CORBA_HARNESS_7/test.py	0eb455a2b48d040941a3820fb8f66f3c2314d5ff
+++ corba_bis/harness/CORBA_HARNESS_7/test.py	0eb455a2b48d040941a3820fb8f66f3c2314d5ff
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'corba/harness/local', r''):
+    sys.exit(1)
+
============================================================
--- corba_bis/interop/CORBA_INTEROP_0/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ corba_bis/interop/CORBA_INTEROP_0/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- corba_bis/interop/CORBA_INTEROP_0/test.py	1ff2261b75a3124a5d0efadac0ff1cf607a1c396
+++ corba_bis/interop/CORBA_INTEROP_0/test.py	1ff2261b75a3124a5d0efadac0ff1cf607a1c396
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/interop/cpp/MICO/all_types_dynclient', r'',
+                     r'corba/interop/cpp/MICO/all_types_dynserver', r''):
+    sys.exit(1)
+
============================================================
--- corba_bis/interop/CORBA_INTEROP_1/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ corba_bis/interop/CORBA_INTEROP_1/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- corba_bis/interop/CORBA_INTEROP_1/test.py	93b1e3d4c0a81a060f93d4f9e19eb4600e5c5e34
+++ corba_bis/interop/CORBA_INTEROP_1/test.py	93b1e3d4c0a81a060f93d4f9e19eb4600e5c5e34
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/interop/cpp/omniORB/all_types_dynclient', r'',
+                     r'corba/interop/cpp/omniORB/all_types_dynserver', r''):
+    sys.exit(1)
+
============================================================
--- corba_bis/interop/CORBA_INTEROP_2/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ corba_bis/interop/CORBA_INTEROP_2/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- corba_bis/interop/CORBA_INTEROP_2/test.py	647e6bc5a42f1654fba03d56f22d9a92b18a4051
+++ corba_bis/interop/CORBA_INTEROP_2/test.py	647e6bc5a42f1654fba03d56f22d9a92b18a4051
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/interop/cpp/TAO/all_types_dynclient', r'',
+                     r'corba/interop/cpp/TAO/all_types_dynserver', r''):
+    sys.exit(1)
+
============================================================
--- corba_bis/interop/CORBA_INTEROP_3/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ corba_bis/interop/CORBA_INTEROP_3/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- corba_bis/interop/CORBA_INTEROP_3/test.py	ef0c7484ed912eb831a122002a23f0be06ab9cef
+++ corba_bis/interop/CORBA_INTEROP_3/test.py	ef0c7484ed912eb831a122002a23f0be06ab9cef
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/interop/cpp/omniORB/all_types_client', r'',
+                     r'../examples/corba/all_types/server', r''):
+    sys.exit(1)
+
============================================================
--- corba_bis/interop/CORBA_INTEROP_4/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ corba_bis/interop/CORBA_INTEROP_4/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- corba_bis/interop/CORBA_INTEROP_4/test.py	98c03befc07827a744b6d69296a9d05c7ab1741d
+++ corba_bis/interop/CORBA_INTEROP_4/test.py	98c03befc07827a744b6d69296a9d05c7ab1741d
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/interop/cpp/omniORB/all_functions_client', r'',
+                     r'../examples/corba/all_functions/server', r''):
+    sys.exit(1)
+
============================================================
--- corba_bis/interop/CORBA_INTEROP_5/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ corba_bis/interop/CORBA_INTEROP_5/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- corba_bis/interop/CORBA_INTEROP_5/test.py	3f3ff74c817f400f9a8083a11d340b782dcec782
+++ corba_bis/interop/CORBA_INTEROP_5/test.py	3f3ff74c817f400f9a8083a11d340b782dcec782
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/interop/cpp/TAO/all_types_dynclient', r'',
+                     r'../examples/corba/all_types/server', r'scenarios/polyorb_conf/broken_codesets.conf'):
+    sys.exit(1)
+
============================================================
--- corba_bis/local/LOCAL_0/test.py	23fb2fcd10ed6daff01e5bc8280ab30b44b6ebbf
+++ corba_bis/local/LOCAL_0/test.py	23fb2fcd10ed6daff01e5bc8280ab30b44b6ebbf
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'corba/local/test000', r''):
+    sys.exit(1)
+
============================================================
--- corba_bis/location_forwarding/LOCATION_FORWARDING_0/test.py	267a18f97db706e90b00f104de0770079cef4661
+++ corba_bis/location_forwarding/LOCATION_FORWARDING_0/test.py	267a18f97db706e90b00f104de0770079cef4661
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'corba/location_forwarding/test000/test000', r''):
+    sys.exit(1)
+
============================================================
--- corba_bis/location_forwarding/LOCATION_FORWARDING_1/test.py	e4e84559e4f8c29b4f5db8682c7fefdffc0a7159
+++ corba_bis/location_forwarding/LOCATION_FORWARDING_1/test.py	e4e84559e4f8c29b4f5db8682c7fefdffc0a7159
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/location_forwarding/test001/test001_client', r'',
+                     r'corba/location_forwarding/test001/test001_server', r''):
+    sys.exit(1)
+
============================================================
--- corba_bis/object/OBJECT_0/test.py	361d469e9e034efcc3c14a052f9ebe31b508ffd0
+++ corba_bis/object/OBJECT_0/test.py	361d469e9e034efcc3c14a052f9ebe31b508ffd0
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/object/test000/test000_client', r'',
+                     r'corba/object/test000/test000_server', r''):
+    sys.exit(1)
+
============================================================
--- corba_bis/orb_init/ORB_INIT_0/test.py	f3d5ad870f5de47d812a79c85117767832a6d834
+++ corba_bis/orb_init/ORB_INIT_0/test.py	f3d5ad870f5de47d812a79c85117767832a6d834
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'corba/orb_init/test000', r''):
+    sys.exit(1)
+
============================================================
--- corba_bis/performance/CORBA_PERFORMANCE_0/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ corba_bis/performance/CORBA_PERFORMANCE_0/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- corba_bis/performance/CORBA_PERFORMANCE_0/test.py	09e29d2242ba9e03077f05d4461f95249b4d8f6e
+++ corba_bis/performance/CORBA_PERFORMANCE_0/test.py	09e29d2242ba9e03077f05d4461f95249b4d8f6e
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/performance/client', r'scenarios/polyorb_conf/performance.conf',
+                     r'corba/performance/server_no_tasking', r'scenarios/polyorb_conf/performance.conf'):
+    sys.exit(1)
+
============================================================
--- corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_0/test.py	fbca7a5b66b64e64596baea36361661f0afc07c1
+++ corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_0/test.py	fbca7a5b66b64e64596baea36361661f0afc07c1
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'corba/portableinterceptor/test000/test000', r''):
+    sys.exit(1)
+
============================================================
--- corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_1/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_1/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_1/test.py	8686af4940669e87d4ad8aa15ef7cc7145c7b7f5
+++ corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_1/test.py	8686af4940669e87d4ad8aa15ef7cc7145c7b7f5
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'corba/portableinterceptor/test001/test001', r''):
+    sys.exit(1)
+
============================================================
--- corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_2/test.py	b2aaa0f42bcd44a218f56df92e9c721e7cfeec68
+++ corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_2/test.py	b2aaa0f42bcd44a218f56df92e9c721e7cfeec68
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'corba/portableinterceptor/test002/test002', r''):
+    sys.exit(1)
+
============================================================
--- corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_3/test.py	56bfdcfb8894c6729ef232a3a3fe8d2a75c70ec8
+++ corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_3/test.py	56bfdcfb8894c6729ef232a3a3fe8d2a75c70ec8
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'corba/portableinterceptor/test003/test003', r''):
+    sys.exit(1)
+
============================================================
--- corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_4/test.py	b69c8f29369f3c1447e7a7ef590acd36224d8e09
+++ corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_4/test.py	b69c8f29369f3c1447e7a7ef590acd36224d8e09
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/portableinterceptor/test004/client', r'',
+                     r'corba/portableinterceptor/test004/server', r''):
+    sys.exit(1)
+
============================================================
--- corba_bis/portableserver/PORTABLESERVER_0/test.py	a19b32844451698820c18c5e22facb34b7fe1420
+++ corba_bis/portableserver/PORTABLESERVER_0/test.py	a19b32844451698820c18c5e22facb34b7fe1420
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'corba/portableserver/test000', r''):
+    sys.exit(1)
+
============================================================
--- corba_bis/portableserver/PORTABLESERVER_1/test.py	fcf0ef0d3eebb594da0d66f397da5cfff83b5162
+++ corba_bis/portableserver/PORTABLESERVER_1/test.py	fcf0ef0d3eebb594da0d66f397da5cfff83b5162
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'corba/portableserver/test001', r''):
+    sys.exit(1)
+
============================================================
--- corba_bis/portableserver/PORTABLESERVER_2/test.py	1463baa82fdae53584f2b0542a8d6e1225311912
+++ corba_bis/portableserver/PORTABLESERVER_2/test.py	1463baa82fdae53584f2b0542a8d6e1225311912
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'corba/portableserver/test002', r''):
+    sys.exit(1)
+
============================================================
--- corba_bis/rtcorba-rtcurrent/RTCURRENT_0/test.py	e1b3988f7b688e5bd64bbd698378e7ff53d826a4
+++ corba_bis/rtcorba-rtcurrent/RTCURRENT_0/test.py	e1b3988f7b688e5bd64bbd698378e7ff53d826a4
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'corba/rtcorba/rtcurrent/rtcurrent', r''):
+    sys.exit(1)
+
============================================================
--- corba_bis/rtcorba-rtorb/RTORB_0/test.py	8eac96978d21730754fac0b81fd8e5d5201b1ed3
+++ corba_bis/rtcorba-rtorb/RTORB_0/test.py	8eac96978d21730754fac0b81fd8e5d5201b1ed3
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'corba/rtcorba/rtorb/test000', r''):
+    sys.exit(1)
+
============================================================
--- corba_bis/rtcorba-rtpoa/RTPOA_0/test.py	0b7f1a571559b94858f12fdf444958b979f72945
+++ corba_bis/rtcorba-rtpoa/RTPOA_0/test.py	0b7f1a571559b94858f12fdf444958b979f72945
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'corba/rtcorba/rtpoa/test000', r''):
+    sys.exit(1)
+
============================================================
--- corba_bis/shutdown/SHUTDOWN_0/test.py	a5309db45b9efd84ff4a52b93959028a774ba13b
+++ corba_bis/shutdown/SHUTDOWN_0/test.py	a5309db45b9efd84ff4a52b93959028a774ba13b
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'corba/shutdown/test000_client', r''):
+    sys.exit(1)
+
============================================================
--- corba_bis/shutdown/SHUTDOWN_1/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ corba_bis/shutdown/SHUTDOWN_1/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- corba_bis/shutdown/SHUTDOWN_1/test.py	a1c6290dbeab094863bfac52bd61ffa1d54bd05f
+++ corba_bis/shutdown/SHUTDOWN_1/test.py	a1c6290dbeab094863bfac52bd61ffa1d54bd05f
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'corba/shutdown/test001_client', r''):
+    sys.exit(1)
+
============================================================
--- core_bis/chained_lists/CHAINED_LIST_0/test.py	649c3dada77dcf40bf27c6663cc2c3e76c70b6db
+++ core_bis/chained_lists/CHAINED_LIST_0/test.py	649c3dada77dcf40bf27c6663cc2c3e76c70b6db
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'core/chained_lists/test000', r''):
+    sys.exit(1)
+
============================================================
--- core_bis/dynamic_dict/DYNAMIC_DICT_0/test.py	916779b2b27c85d980968dffab92d6f528bee857
+++ core_bis/dynamic_dict/DYNAMIC_DICT_0/test.py	916779b2b27c85d980968dffab92d6f528bee857
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'core/dynamic_dict/test000', r''):
+    sys.exit(1)
+
============================================================
--- core_bis/fixed_point/FIXED_0/test.py	b0785c9190ae16a049453015eaf5b901712ab91e
+++ core_bis/fixed_point/FIXED_0/test.py	b0785c9190ae16a049453015eaf5b901712ab91e
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'core/fixed_point/test000', r''):
+    sys.exit(1)
+
============================================================
--- core_bis/initialization/INIT_0/test.py	923e889c69b26a531b8e9123503e58e0bf1d4a19
+++ core_bis/initialization/INIT_0/test.py	923e889c69b26a531b8e9123503e58e0bf1d4a19
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'core/initialization/test000', r''):
+    sys.exit(1)
+
============================================================
--- core_bis/initialization/INIT_1/test.py	dc8b188cd3945cb2a77c30cf500186cf60a1dc95
+++ core_bis/initialization/INIT_1/test.py	dc8b188cd3945cb2a77c30cf500186cf60a1dc95
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'core/initialization/test001', r''):
+    sys.exit(1)
+
============================================================
--- core_bis/initialization/INIT_2/test.py	7d92364e62d62c90e5aaddaa0ba2fb60f314c08f
+++ core_bis/initialization/INIT_2/test.py	7d92364e62d62c90e5aaddaa0ba2fb60f314c08f
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'core/initialization/test002', r''):
+    sys.exit(1)
+
============================================================
--- core_bis/initialization/INIT_3/test.py	992d550f74b270fa8eb154bd99d2515caab22d9f
+++ core_bis/initialization/INIT_3/test.py	992d550f74b270fa8eb154bd99d2515caab22d9f
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'core/initialization/test003', r''):
+    sys.exit(1)
+
============================================================
--- core_bis/initialization/INIT_4/test.py	3f07df197fe5ec9c55341a1ca4a43951161e17d7
+++ core_bis/initialization/INIT_4/test.py	3f07df197fe5ec9c55341a1ca4a43951161e17d7
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'core/initialization/test004', r''):
+    sys.exit(1)
+
============================================================
--- core_bis/obj_adapters/OA_0/test.py	14752ff3e239330f2cfdff8da046bb0c6f2c6dc9
+++ core_bis/obj_adapters/OA_0/test.py	14752ff3e239330f2cfdff8da046bb0c6f2c6dc9
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'core/obj_adapters/test000', r''):
+    sys.exit(1)
+
============================================================
--- core_bis/obj_adapters/OA_1/test.py	b2f36cc5db8347a10aa11b793608d6db3ea9e72f
+++ core_bis/obj_adapters/OA_1/test.py	b2f36cc5db8347a10aa11b793608d6db3ea9e72f
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'core/obj_adapters/test001', r''):
+    sys.exit(1)
+
============================================================
--- core_bis/poa/POA_0/test.py	d8cd328c2a2a9416181c6efbc5741f1cae72f112
+++ core_bis/poa/POA_0/test.py	d8cd328c2a2a9416181c6efbc5741f1cae72f112
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'core/poa/test000', r''):
+    sys.exit(1)
+
============================================================
--- core_bis/random/RANDOM_0/test.py	a34a169faeda7147f3c2e21bdbc905d16f9569ed
+++ core_bis/random/RANDOM_0/test.py	a34a169faeda7147f3c2e21bdbc905d16f9569ed
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'core/random/test000', r''):
+    sys.exit(1)
+
============================================================
--- core_bis/sync_policies/CORE_SYNC_POLICIES_0/test.py	9a030c9a917bdb6cdc0966f7fae40136b190aa4e
+++ core_bis/sync_policies/CORE_SYNC_POLICIES_0/test.py	9a030c9a917bdb6cdc0966f7fae40136b190aa4e
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'core/sync_policies/client', r'',
+                     r'core/sync_policies/server_no_tasking', r''):
+    sys.exit(1)
+
============================================================
--- core_bis/tasking/TASK_0/test.py	029f54bdc4221981b90ac68d2d3063a545e8b586
+++ core_bis/tasking/TASK_0/test.py	029f54bdc4221981b90ac68d2d3063a545e8b586
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'core/tasking/test000', r''):
+    sys.exit(1)
+
============================================================
--- core_bis/tasking/TASK_1/test.py	9a2db0c9ab147bfd2e9d13b8e5adb2d42cc2d8d5
+++ core_bis/tasking/TASK_1/test.py	9a2db0c9ab147bfd2e9d13b8e5adb2d42cc2d8d5
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'core/tasking/test001', r''):
+    sys.exit(1)
+
============================================================
--- core_bis/tasking/TASK_2/test.py	3ebacceb7afe6b9d3d3c60d5f852fc2fc4ce90af
+++ core_bis/tasking/TASK_2/test.py	3ebacceb7afe6b9d3d3c60d5f852fc2fc4ce90af
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'core/tasking/test002', r''):
+    sys.exit(1)
+
============================================================
--- core_bis/tasking/TASK_3/test.py	a9f48a6e20189d77d144275b9345a41b565a1e72
+++ core_bis/tasking/TASK_3/test.py	a9f48a6e20189d77d144275b9345a41b565a1e72
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'core/tasking/test003', r''):
+    sys.exit(1)
+
============================================================
--- core_bis/uri_encoding/URI_ENCODING_0/test.py	787062f6b16174e18f03bff998d88b0a8a6cbe69
+++ core_bis/uri_encoding/URI_ENCODING_0/test.py	787062f6b16174e18f03bff998d88b0a8a6cbe69
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'core/uri_encoding/test000', r''):
+    sys.exit(1)
+
============================================================
--- cos_bis/ir/IR_0/test.py	e5aa5a44895f831859c578b7b26fd4ea79203c35
+++ cos_bis/ir/IR_0/test.py	e5aa5a44895f831859c578b7b26fd4ea79203c35
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/cos/ir/client', r'',
+                     r'corba/cos/ir/server', r''):
+    sys.exit(1)
+
============================================================
--- cos_bis/naming/NAMING_0/test.py	a20fc47ed0503e15f3d2ec7882caa78f6e7a19d8
+++ cos_bis/naming/NAMING_0/test.py	a20fc47ed0503e15f3d2ec7882caa78f6e7a19d8
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/cos/naming/test_naming_corba', r'',
+                     r'../tools/po_cos_naming/po_cos_naming', r''):
+    sys.exit(1)
+
============================================================
--- cos_bis/time/TIME_0/test.py	b88c064c898d7d75c5bc32d750b48a4d12d4ed50
+++ cos_bis/time/TIME_0/test.py	b88c064c898d7d75c5bc32d750b48a4d12d4ed50
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'corba/cos/time/test_time', r''):
+    sys.exit(1)
+
============================================================
--- examples/dsa/README	796d115225797a4046b009c0126e899501a87b77
+++ examples/dsa/README	796d115225797a4046b009c0126e899501a87b77
@@ -0,0 +1,17 @@
+This directory contains the following examples for the Ada Distributed
+Systems Annex:
+
+- echo
+  Simple client/server ping
+
+- demo
+  Demo of passing complex data types between client and server
+
+- connections
+  Multiple servers and multiple clients, each server has a single
+  receiving task and blocks waiting for clients; clients use asynchronous
+  send operations
+
+- mailboxes
+  Same as "connections" but implemented in Ada 2005 using an RACW with
+  designating an interface implemented by the server task.
============================================================
--- examples/dsa/connections/client.adb	4b96e51bb9ad1009cfd0a4ffdb56cc30082c2995
+++ examples/dsa/connections/client.adb	4b96e51bb9ad1009cfd0a4ffdb56cc30082c2995
@@ -0,0 +1,42 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                           POLYORB COMPONENTS                             --
+--                                                                          --
+--                               C L I E N T                                --
+--                                                                          --
+--                                 B o d y                                  --
+--                                                                          --
+--           Copyright (C) 2009, Free Software Foundation, Inc.             --
+--                                                                          --
+-- PolyORB is free software; you  can  redistribute  it and/or modify it    --
+-- under terms of the  GNU General Public License as published by the  Free --
+-- Software Foundation;  either version 2,  or (at your option)  any  later --
+-- version. PolyORB is distributed  in the hope that it will be  useful,    --
+-- but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License  for more details.  You should have received  a copy of the GNU  --
+-- General Public License distributed with PolyORB; see file COPYING. If    --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth    --
+-- Floor, Boston, MA 02111-1301, USA.                                       --
+--                                                                          --
+-- As a special exception,  if other files  instantiate  generics from this --
+-- unit, or you link  this unit with other files  to produce an executable, --
+-- this  unit  does not  by itself cause  the resulting  executable  to  be --
+-- covered  by the  GNU  General  Public  License.  This exception does not --
+-- however invalidate  any other reasons why  the executable file  might be --
+-- covered by the  GNU Public License.                                      --
+--                                                                          --
+--                  PolyORB is maintained by AdaCore                        --
+--                     (email: sales@adacore.com)                           --
+--                                                                          --
+------------------------------------------------------------------------------
+
+with Ada.Command_Line; use Ada.Command_Line;
+with Hub;
+with Connections;
+procedure Client is
+   Target : Connections.Connection;
+begin
+   Target := Hub.Get_Listener (Integer'Value (Argument (1)));
+   Connections.Send (Target.all, Argument (2));
+end Client;
============================================================
--- examples/dsa/connections/connect.cfg	fc56260163f31af745d8bcd20536032b1432918f
+++ examples/dsa/connections/connect.cfg	fc56260163f31af745d8bcd20536032b1432918f
@@ -0,0 +1,17 @@
+configuration Mail is
+   pragma Starter (None);
+
+   Hub_Partition : Partition := (Hub);
+   procedure Hub_Main is in Hub_Partition;
+   for Hub_Partition'Termination use Deferred_Termination;
+
+   Server_Partition : Partition;
+   procedure Server;
+   for Server_Partition'Main use Server;
+   for Server_Partition'Termination use Deferred_Termination;
+
+   Client_Partition : Partition;
+   procedure Client;
+   for Client_Partition'Main use Client;
+   for Client_Partition'Termination use Local_Termination;
+end Mail;
============================================================
--- examples/dsa/connections/connections.ads	c20487a2926744f337c0cefd1c65414cf3762e38
+++ examples/dsa/connections/connections.ads	c20487a2926744f337c0cefd1c65414cf3762e38
@@ -0,0 +1,45 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                           POLYORB COMPONENTS                             --
+--                                                                          --
+--                          C O N N E C T I O N S                           --
+--                                                                          --
+--                                 S p e c                                  --
+--                                                                          --
+--           Copyright (C) 2009, Free Software Foundation, Inc.             --
+--                                                                          --
+-- PolyORB is free software; you  can  redistribute  it and/or modify it    --
+-- under terms of the  GNU General Public License as published by the  Free --
+-- Software Foundation;  either version 2,  or (at your option)  any  later --
+-- version. PolyORB is distributed  in the hope that it will be  useful,    --
+-- but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License  for more details.  You should have received  a copy of the GNU  --
+-- General Public License distributed with PolyORB; see file COPYING. If    --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth    --
+-- Floor, Boston, MA 02111-1301, USA.                                       --
+--                                                                          --
+-- As a special exception,  if other files  instantiate  generics from this --
+-- unit, or you link  this unit with other files  to produce an executable, --
+-- this  unit  does not  by itself cause  the resulting  executable  to  be --
+-- covered  by the  GNU  General  Public  License.  This exception does not --
+-- however invalidate  any other reasons why  the executable file  might be --
+-- covered by the  GNU Public License.                                      --
+--                                                                          --
+--                  PolyORB is maintained by AdaCore                        --
+--                     (email: sales@adacore.com)                           --
+--                                                                          --
+------------------------------------------------------------------------------
+
+package Connections is
+   pragma Remote_Types;
+
+   type Connection_Listener is abstract tagged limited private;
+   procedure Send (Target : Connection_Listener; Message : String) is abstract;
+
+   type Connection is access all Connection_Listener'Class;
+   pragma Asynchronous (Connection);
+
+private
+   type Connection_Listener is abstract tagged limited null record;
+end Connections;
============================================================
--- examples/dsa/connections/hub.adb	6ad5a38307913dd1ae8dc4c127a5b7b3610f9a39
+++ examples/dsa/connections/hub.adb	6ad5a38307913dd1ae8dc4c127a5b7b3610f9a39
@@ -0,0 +1,47 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                           POLYORB COMPONENTS                             --
+--                                                                          --
+--                                  H U B                                   --
+--                                                                          --
+--                                 B o d y                                  --
+--                                                                          --
+--           Copyright (C) 2009, Free Software Foundation, Inc.             --
+--                                                                          --
+-- PolyORB is free software; you  can  redistribute  it and/or modify it    --
+-- under terms of the  GNU General Public License as published by the  Free --
+-- Software Foundation;  either version 2,  or (at your option)  any  later --
+-- version. PolyORB is distributed  in the hope that it will be  useful,    --
+-- but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License  for more details.  You should have received  a copy of the GNU  --
+-- General Public License distributed with PolyORB; see file COPYING. If    --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth    --
+-- Floor, Boston, MA 02111-1301, USA.                                       --
+--                                                                          --
+-- As a special exception,  if other files  instantiate  generics from this --
+-- unit, or you link  this unit with other files  to produce an executable, --
+-- this  unit  does not  by itself cause  the resulting  executable  to  be --
+-- covered  by the  GNU  General  Public  License.  This exception does not --
+-- however invalidate  any other reasons why  the executable file  might be --
+-- covered by the  GNU Public License.                                      --
+--                                                                          --
+--                  PolyORB is maintained by AdaCore                        --
+--                     (email: sales@adacore.com)                           --
+--                                                                          --
+------------------------------------------------------------------------------
+
+package body Hub is
+   All_Listeners : array (0 .. 7) of Connections.Connection;
+
+   procedure Register_Listener (Id : Integer; Ptr : Connections.Connection) is
+   begin
+      All_Listeners (Id) := Ptr;
+   end Register_Listener;
+
+   function Get_Listener (Id : Integer) return Connections.Connection is
+   begin
+      return All_Listeners (Id);
+   end Get_Listener;
+
+end Hub;
============================================================
--- examples/dsa/connections/hub.ads	be22f840d00931d7a3a3bd35f24e13abdae80b28
+++ examples/dsa/connections/hub.ads	be22f840d00931d7a3a3bd35f24e13abdae80b28
@@ -0,0 +1,39 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                           POLYORB COMPONENTS                             --
+--                                                                          --
+--                                  H U B                                   --
+--                                                                          --
+--                                 S p e c                                  --
+--                                                                          --
+--           Copyright (C) 2009, Free Software Foundation, Inc.             --
+--                                                                          --
+-- PolyORB is free software; you  can  redistribute  it and/or modify it    --
+-- under terms of the  GNU General Public License as published by the  Free --
+-- Software Foundation;  either version 2,  or (at your option)  any  later --
+-- version. PolyORB is distributed  in the hope that it will be  useful,    --
+-- but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License  for more details.  You should have received  a copy of the GNU  --
+-- General Public License distributed with PolyORB; see file COPYING. If    --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth    --
+-- Floor, Boston, MA 02111-1301, USA.                                       --
+--                                                                          --
+-- As a special exception,  if other files  instantiate  generics from this --
+-- unit, or you link  this unit with other files  to produce an executable, --
+-- this  unit  does not  by itself cause  the resulting  executable  to  be --
+-- covered  by the  GNU  General  Public  License.  This exception does not --
+-- however invalidate  any other reasons why  the executable file  might be --
+-- covered by the  GNU Public License.                                      --
+--                                                                          --
+--                  PolyORB is maintained by AdaCore                        --
+--                     (email: sales@adacore.com)                           --
+--                                                                          --
+------------------------------------------------------------------------------
+
+with Connections;
+package Hub is
+   pragma Remote_Call_Interface;
+   procedure Register_Listener (Id : Integer; Ptr : Connections.Connection);
+   function Get_Listener (Id : Integer) return Connections.Connection;
+end Hub;
============================================================
--- examples/dsa/connections/hub_main.adb	382f5c5066a65129332c6ec3ea66f5de089c4bcd
+++ examples/dsa/connections/hub_main.adb	382f5c5066a65129332c6ec3ea66f5de089c4bcd
@@ -0,0 +1,34 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                           POLYORB COMPONENTS                             --
+--                                                                          --
+--                             H U B _ M A I N                              --
+--                                                                          --
+--                                 B o d y                                  --
+--                                                                          --
+--           Copyright (C) 2009, Free Software Foundation, Inc.             --
+--                                                                          --
+-- PolyORB is free software; you  can  redistribute  it and/or modify it    --
+-- under terms of the  GNU General Public License as published by the  Free --
+-- Software Foundation;  either version 2,  or (at your option)  any  later --
+-- version. PolyORB is distributed  in the hope that it will be  useful,    --
+-- but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License  for more details.  You should have received  a copy of the GNU  --
+-- General Public License distributed with PolyORB; see file COPYING. If    --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth    --
+-- Floor, Boston, MA 02111-1301, USA.                                       --
+--                                                                          --
+-- As a special exception,  if other files  instantiate  generics from this --
+-- unit, or you link  this unit with other files  to produce an executable, --
+-- this  unit  does not  by itself cause  the resulting  executable  to  be --
+-- covered  by the  GNU  General  Public  License.  This exception does not --
+-- however invalidate  any other reasons why  the executable file  might be --
+-- covered by the  GNU Public License.                                      --
+--                                                                          --
+--                  PolyORB is maintained by AdaCore                        --
+--                     (email: sales@adacore.com)                           --
+--                                                                          --
+------------------------------------------------------------------------------
+
+procedure Hub_Main is begin null; end Hub_Main;
============================================================
--- examples/dsa/connections/listeners.adb	8bb26cd878ba108b504958dc69cb7114fa01974a
+++ examples/dsa/connections/listeners.adb	8bb26cd878ba108b504958dc69cb7114fa01974a
@@ -0,0 +1,56 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                           POLYORB COMPONENTS                             --
+--                                                                          --
+--                            L I S T E N E R S                             --
+--                                                                          --
+--                                 B o d y                                  --
+--                                                                          --
+--           Copyright (C) 2009, Free Software Foundation, Inc.             --
+--                                                                          --
+-- PolyORB is free software; you  can  redistribute  it and/or modify it    --
+-- under terms of the  GNU General Public License as published by the  Free --
+-- Software Foundation;  either version 2,  or (at your option)  any  later --
+-- version. PolyORB is distributed  in the hope that it will be  useful,    --
+-- but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License  for more details.  You should have received  a copy of the GNU  --
+-- General Public License distributed with PolyORB; see file COPYING. If    --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth    --
+-- Floor, Boston, MA 02111-1301, USA.                                       --
+--                                                                          --
+-- As a special exception,  if other files  instantiate  generics from this --
+-- unit, or you link  this unit with other files  to produce an executable, --
+-- this  unit  does not  by itself cause  the resulting  executable  to  be --
+-- covered  by the  GNU  General  Public  License.  This exception does not --
+-- however invalidate  any other reasons why  the executable file  might be --
+-- covered by the  GNU Public License.                                      --
+--                                                                          --
+--                  PolyORB is maintained by AdaCore                        --
+--                     (email: sales@adacore.com)                           --
+--                                                                          --
+------------------------------------------------------------------------------
+
+with Ada.Text_IO; use Ada.Text_IO;
+package body Listeners is
+
+   task body Listener_Task is
+      My_Id : Integer;
+   begin
+      accept Start (Id : Integer) do
+         My_Id := Id;
+      end Start;
+
+      loop
+         accept Process_Message (Message : String) do
+            Put_Line ("Got message: " & Message);
+         end Process_Message;
+      end loop;
+   end Listener_Task;
+
+   procedure Send (X : Active_Listener; Message : String) is
+   begin
+      X.T.Process_Message (Message);
+   end Send;
+
+end Listeners;
============================================================
--- examples/dsa/connections/listeners.ads	2f84486209933ae691ff4834e4e83edff985678e
+++ examples/dsa/connections/listeners.ads	2f84486209933ae691ff4834e4e83edff985678e
@@ -0,0 +1,49 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                           POLYORB COMPONENTS                             --
+--                                                                          --
+--                            L I S T E N E R S                             --
+--                                                                          --
+--                                 S p e c                                  --
+--                                                                          --
+--           Copyright (C) 2009, Free Software Foundation, Inc.             --
+--                                                                          --
+-- PolyORB is free software; you  can  redistribute  it and/or modify it    --
+-- under terms of the  GNU General Public License as published by the  Free --
+-- Software Foundation;  either version 2,  or (at your option)  any  later --
+-- version. PolyORB is distributed  in the hope that it will be  useful,    --
+-- but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License  for more details.  You should have received  a copy of the GNU  --
+-- General Public License distributed with PolyORB; see file COPYING. If    --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth    --
+-- Floor, Boston, MA 02111-1301, USA.                                       --
+--                                                                          --
+-- As a special exception,  if other files  instantiate  generics from this --
+-- unit, or you link  this unit with other files  to produce an executable, --
+-- this  unit  does not  by itself cause  the resulting  executable  to  be --
+-- covered  by the  GNU  General  Public  License.  This exception does not --
+-- however invalidate  any other reasons why  the executable file  might be --
+-- covered by the  GNU Public License.                                      --
+--                                                                          --
+--                  PolyORB is maintained by AdaCore                        --
+--                     (email: sales@adacore.com)                           --
+--                                                                          --
+------------------------------------------------------------------------------
+
+with Connections;
+package Listeners is
+
+   task type Listener_Task is
+      entry Start (Id : Integer);
+      entry Process_Message (Message : String);
+   end Listener_Task;
+
+   type Listener_Task_Acc is access Listener_Task;
+
+   type Active_Listener (T : access Listener_Task) is
+     new Connections.Connection_Listener with null record;
+   procedure Send (X : Active_Listener; Message : String);
+
+   type Active_Listener_Acc is access Active_Listener;
+end Listeners;
============================================================
--- examples/dsa/connections/server.adb	dbac62b27214f39add871e39f6bf694b10a69e32
+++ examples/dsa/connections/server.adb	dbac62b27214f39add871e39f6bf694b10a69e32
@@ -0,0 +1,47 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                           POLYORB COMPONENTS                             --
+--                                                                          --
+--                               S E R V E R                                --
+--                                                                          --
+--                                 B o d y                                  --
+--                                                                          --
+--           Copyright (C) 2009, Free Software Foundation, Inc.             --
+--                                                                          --
+-- PolyORB is free software; you  can  redistribute  it and/or modify it    --
+-- under terms of the  GNU General Public License as published by the  Free --
+-- Software Foundation;  either version 2,  or (at your option)  any  later --
+-- version. PolyORB is distributed  in the hope that it will be  useful,    --
+-- but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License  for more details.  You should have received  a copy of the GNU  --
+-- General Public License distributed with PolyORB; see file COPYING. If    --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth    --
+-- Floor, Boston, MA 02111-1301, USA.                                       --
+--                                                                          --
+-- As a special exception,  if other files  instantiate  generics from this --
+-- unit, or you link  this unit with other files  to produce an executable, --
+-- this  unit  does not  by itself cause  the resulting  executable  to  be --
+-- covered  by the  GNU  General  Public  License.  This exception does not --
+-- however invalidate  any other reasons why  the executable file  might be --
+-- covered by the  GNU Public License.                                      --
+--                                                                          --
+--                  PolyORB is maintained by AdaCore                        --
+--                     (email: sales@adacore.com)                           --
+--                                                                          --
+------------------------------------------------------------------------------
+
+with Ada.Command_Line; use Ada.Command_Line;
+with Connections;
+with Hub;
+with Listeners; use Listeners;
+
+procedure Server is
+   My_Id : constant Integer := Integer'Value (Argument (1));
+   Myself_T : constant Listener_Task_Acc := new Listener_Task;
+   Myself : constant Active_Listener_Acc := new Active_Listener (Myself_T);
+begin
+   Myself.T.Start (My_Id);
+   Hub.Register_Listener
+     (Id => My_Id, Ptr => Connections.Connection (Myself));
+end Server;
============================================================
--- examples/dsa/demo/noproc.adb	6df02d6dee51a7e0510bc650f77d0b6c808108cb
+++ examples/dsa/demo/noproc.adb	6df02d6dee51a7e0510bc650f77d0b6c808108cb
@@ -0,0 +1,34 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                           POLYORB COMPONENTS                             --
+--                                                                          --
+--                               N O P R O C                                --
+--                                                                          --
+--                                 B o d y                                  --
+--                                                                          --
+--           Copyright (C) 2009, Free Software Foundation, Inc.             --
+--                                                                          --
+-- PolyORB is free software; you  can  redistribute  it and/or modify it    --
+-- under terms of the  GNU General Public License as published by the  Free --
+-- Software Foundation;  either version 2,  or (at your option)  any  later --
+-- version. PolyORB is distributed  in the hope that it will be  useful,    --
+-- but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License  for more details.  You should have received  a copy of the GNU  --
+-- General Public License distributed with PolyORB; see file COPYING. If    --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth    --
+-- Floor, Boston, MA 02111-1301, USA.                                       --
+--                                                                          --
+-- As a special exception,  if other files  instantiate  generics from this --
+-- unit, or you link  this unit with other files  to produce an executable, --
+-- this  unit  does not  by itself cause  the resulting  executable  to  be --
+-- covered  by the  GNU  General  Public  License.  This exception does not --
+-- however invalidate  any other reasons why  the executable file  might be --
+-- covered by the  GNU Public License.                                      --
+--                                                                          --
+--                  PolyORB is maintained by AdaCore                        --
+--                     (email: sales@adacore.com)                           --
+--                                                                          --
+------------------------------------------------------------------------------
+
+procedure Noproc is begin null; end Noproc;
============================================================
--- examples/dsa/mailboxes/client.adb	d5fd1609be9fb3af5f6c4c44a80f6211010482da
+++ examples/dsa/mailboxes/client.adb	d5fd1609be9fb3af5f6c4c44a80f6211010482da
@@ -0,0 +1,42 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                           POLYORB COMPONENTS                             --
+--                                                                          --
+--                               C L I E N T                                --
+--                                                                          --
+--                                 B o d y                                  --
+--                                                                          --
+--           Copyright (C) 2009, Free Software Foundation, Inc.             --
+--                                                                          --
+-- PolyORB is free software; you  can  redistribute  it and/or modify it    --
+-- under terms of the  GNU General Public License as published by the  Free --
+-- Software Foundation;  either version 2,  or (at your option)  any  later --
+-- version. PolyORB is distributed  in the hope that it will be  useful,    --
+-- but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License  for more details.  You should have received  a copy of the GNU  --
+-- General Public License distributed with PolyORB; see file COPYING. If    --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth    --
+-- Floor, Boston, MA 02111-1301, USA.                                       --
+--                                                                          --
+-- As a special exception,  if other files  instantiate  generics from this --
+-- unit, or you link  this unit with other files  to produce an executable, --
+-- this  unit  does not  by itself cause  the resulting  executable  to  be --
+-- covered  by the  GNU  General  Public  License.  This exception does not --
+-- however invalidate  any other reasons why  the executable file  might be --
+-- covered by the  GNU Public License.                                      --
+--                                                                          --
+--                  PolyORB is maintained by AdaCore                        --
+--                     (email: sales@adacore.com)                           --
+--                                                                          --
+------------------------------------------------------------------------------
+
+with Ada.Command_Line; use Ada.Command_Line;
+with Hub;
+with Mailboxes;
+procedure Client is
+   Target : Mailboxes.Remote_Mailbox;
+begin
+   Target := Hub.Get_Mailbox (Integer'Value (Argument (1)));
+   Target.Send_Message (Argument (2));
+end Client;
============================================================
--- examples/dsa/mailboxes/hub.adb	c6c0d705e16447985edf4705a939aa6aa5cafb93
+++ examples/dsa/mailboxes/hub.adb	c6c0d705e16447985edf4705a939aa6aa5cafb93
@@ -0,0 +1,47 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                           POLYORB COMPONENTS                             --
+--                                                                          --
+--                                  H U B                                   --
+--                                                                          --
+--                                 B o d y                                  --
+--                                                                          --
+--           Copyright (C) 2009, Free Software Foundation, Inc.             --
+--                                                                          --
+-- PolyORB is free software; you  can  redistribute  it and/or modify it    --
+-- under terms of the  GNU General Public License as published by the  Free --
+-- Software Foundation;  either version 2,  or (at your option)  any  later --
+-- version. PolyORB is distributed  in the hope that it will be  useful,    --
+-- but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License  for more details.  You should have received  a copy of the GNU  --
+-- General Public License distributed with PolyORB; see file COPYING. If    --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth    --
+-- Floor, Boston, MA 02111-1301, USA.                                       --
+--                                                                          --
+-- As a special exception,  if other files  instantiate  generics from this --
+-- unit, or you link  this unit with other files  to produce an executable, --
+-- this  unit  does not  by itself cause  the resulting  executable  to  be --
+-- covered  by the  GNU  General  Public  License.  This exception does not --
+-- however invalidate  any other reasons why  the executable file  might be --
+-- covered by the  GNU Public License.                                      --
+--                                                                          --
+--                  PolyORB is maintained by AdaCore                        --
+--                     (email: sales@adacore.com)                           --
+--                                                                          --
+------------------------------------------------------------------------------
+
+package body Hub is
+   All_Mailboxes : array (0 .. 7) of Mailboxes.Remote_Mailbox;
+
+   procedure Register_Mailbox (Id : Integer; Ptr : Mailboxes.Remote_Mailbox) is
+   begin
+      All_Mailboxes (Id) := Ptr;
+   end Register_Mailbox;
+
+   function Get_Mailbox (Id : Integer) return Mailboxes.Remote_Mailbox is
+   begin
+      return All_Mailboxes (Id);
+   end Get_Mailbox;
+
+end Hub;
============================================================
--- examples/dsa/mailboxes/hub.ads	421b78155df83bf3bec01ca826c0c1baaded8943
+++ examples/dsa/mailboxes/hub.ads	421b78155df83bf3bec01ca826c0c1baaded8943
@@ -0,0 +1,39 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                           POLYORB COMPONENTS                             --
+--                                                                          --
+--                                  H U B                                   --
+--                                                                          --
+--                                 S p e c                                  --
+--                                                                          --
+--           Copyright (C) 2009, Free Software Foundation, Inc.             --
+--                                                                          --
+-- PolyORB is free software; you  can  redistribute  it and/or modify it    --
+-- under terms of the  GNU General Public License as published by the  Free --
+-- Software Foundation;  either version 2,  or (at your option)  any  later --
+-- version. PolyORB is distributed  in the hope that it will be  useful,    --
+-- but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License  for more details.  You should have received  a copy of the GNU  --
+-- General Public License distributed with PolyORB; see file COPYING. If    --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth    --
+-- Floor, Boston, MA 02111-1301, USA.                                       --
+--                                                                          --
+-- As a special exception,  if other files  instantiate  generics from this --
+-- unit, or you link  this unit with other files  to produce an executable, --
+-- this  unit  does not  by itself cause  the resulting  executable  to  be --
+-- covered  by the  GNU  General  Public  License.  This exception does not --
+-- however invalidate  any other reasons why  the executable file  might be --
+-- covered by the  GNU Public License.                                      --
+--                                                                          --
+--                  PolyORB is maintained by AdaCore                        --
+--                     (email: sales@adacore.com)                           --
+--                                                                          --
+------------------------------------------------------------------------------
+
+with Mailboxes;
+package Hub is
+   pragma Remote_Call_Interface;
+   procedure Register_Mailbox (Id : Integer; Ptr : Mailboxes.Remote_Mailbox);
+   function Get_Mailbox (Id : Integer) return Mailboxes.Remote_Mailbox;
+end Hub;
============================================================
--- examples/dsa/mailboxes/hub_main.adb	382f5c5066a65129332c6ec3ea66f5de089c4bcd
+++ examples/dsa/mailboxes/hub_main.adb	382f5c5066a65129332c6ec3ea66f5de089c4bcd
@@ -0,0 +1,34 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                           POLYORB COMPONENTS                             --
+--                                                                          --
+--                             H U B _ M A I N                              --
+--                                                                          --
+--                                 B o d y                                  --
+--                                                                          --
+--           Copyright (C) 2009, Free Software Foundation, Inc.             --
+--                                                                          --
+-- PolyORB is free software; you  can  redistribute  it and/or modify it    --
+-- under terms of the  GNU General Public License as published by the  Free --
+-- Software Foundation;  either version 2,  or (at your option)  any  later --
+-- version. PolyORB is distributed  in the hope that it will be  useful,    --
+-- but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License  for more details.  You should have received  a copy of the GNU  --
+-- General Public License distributed with PolyORB; see file COPYING. If    --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth    --
+-- Floor, Boston, MA 02111-1301, USA.                                       --
+--                                                                          --
+-- As a special exception,  if other files  instantiate  generics from this --
+-- unit, or you link  this unit with other files  to produce an executable, --
+-- this  unit  does not  by itself cause  the resulting  executable  to  be --
+-- covered  by the  GNU  General  Public  License.  This exception does not --
+-- however invalidate  any other reasons why  the executable file  might be --
+-- covered by the  GNU Public License.                                      --
+--                                                                          --
+--                  PolyORB is maintained by AdaCore                        --
+--                     (email: sales@adacore.com)                           --
+--                                                                          --
+------------------------------------------------------------------------------
+
+procedure Hub_Main is begin null; end Hub_Main;
============================================================
--- examples/dsa/mailboxes/mail.cfg	fc56260163f31af745d8bcd20536032b1432918f
+++ examples/dsa/mailboxes/mail.cfg	fc56260163f31af745d8bcd20536032b1432918f
@@ -0,0 +1,17 @@
+configuration Mail is
+   pragma Starter (None);
+
+   Hub_Partition : Partition := (Hub);
+   procedure Hub_Main is in Hub_Partition;
+   for Hub_Partition'Termination use Deferred_Termination;
+
+   Server_Partition : Partition;
+   procedure Server;
+   for Server_Partition'Main use Server;
+   for Server_Partition'Termination use Deferred_Termination;
+
+   Client_Partition : Partition;
+   procedure Client;
+   for Client_Partition'Main use Client;
+   for Client_Partition'Termination use Local_Termination;
+end Mail;
============================================================
--- examples/dsa/mailboxes/mailboxes-active.adb	d7a41972f9cfbaf2b61def6c83377d7a1cc7eacd
+++ examples/dsa/mailboxes/mailboxes-active.adb	d7a41972f9cfbaf2b61def6c83377d7a1cc7eacd
@@ -0,0 +1,51 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                           POLYORB COMPONENTS                             --
+--                                                                          --
+--                     M A I L B O X E S . A C T I V E                      --
+--                                                                          --
+--                                 B o d y                                  --
+--                                                                          --
+--           Copyright (C) 2009, Free Software Foundation, Inc.             --
+--                                                                          --
+-- PolyORB is free software; you  can  redistribute  it and/or modify it    --
+-- under terms of the  GNU General Public License as published by the  Free --
+-- Software Foundation;  either version 2,  or (at your option)  any  later --
+-- version. PolyORB is distributed  in the hope that it will be  useful,    --
+-- but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License  for more details.  You should have received  a copy of the GNU  --
+-- General Public License distributed with PolyORB; see file COPYING. If    --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth    --
+-- Floor, Boston, MA 02111-1301, USA.                                       --
+--                                                                          --
+-- As a special exception,  if other files  instantiate  generics from this --
+-- unit, or you link  this unit with other files  to produce an executable, --
+-- this  unit  does not  by itself cause  the resulting  executable  to  be --
+-- covered  by the  GNU  General  Public  License.  This exception does not --
+-- however invalidate  any other reasons why  the executable file  might be --
+-- covered by the  GNU Public License.                                      --
+--                                                                          --
+--                  PolyORB is maintained by AdaCore                        --
+--                     (email: sales@adacore.com)                           --
+--                                                                          --
+------------------------------------------------------------------------------
+
+with Ada.Text_IO; use Ada.Text_IO;
+
+package body Mailboxes.Active is
+   task body Active_Mailbox is
+      My_Id : Integer;
+   begin
+      accept Start (Id : Integer) do
+         My_Id := Id;
+      end Start;
+      Put_Line ("Active_Mailbox #" & My_Id'Img & " starting");
+
+      loop
+         accept Send_Message (Message : Message_Type) do
+            Put_Line ("... got message: " & Message);
+         end Send_Message;
+      end loop;
+   end Active_Mailbox;
+end Mailboxes.Active;
============================================================
--- examples/dsa/mailboxes/mailboxes-active.ads	d5f7e6dbdf25244d1a3a1f352857dfb361d74037
+++ examples/dsa/mailboxes/mailboxes-active.ads	d5f7e6dbdf25244d1a3a1f352857dfb361d74037
@@ -0,0 +1,43 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                           POLYORB COMPONENTS                             --
+--                                                                          --
+--                     M A I L B O X E S . A C T I V E                      --
+--                                                                          --
+--                                 S p e c                                  --
+--                                                                          --
+--           Copyright (C) 2009, Free Software Foundation, Inc.             --
+--                                                                          --
+-- PolyORB is free software; you  can  redistribute  it and/or modify it    --
+-- under terms of the  GNU General Public License as published by the  Free --
+-- Software Foundation;  either version 2,  or (at your option)  any  later --
+-- version. PolyORB is distributed  in the hope that it will be  useful,    --
+-- but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License  for more details.  You should have received  a copy of the GNU  --
+-- General Public License distributed with PolyORB; see file COPYING. If    --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth    --
+-- Floor, Boston, MA 02111-1301, USA.                                       --
+--                                                                          --
+-- As a special exception,  if other files  instantiate  generics from this --
+-- unit, or you link  this unit with other files  to produce an executable, --
+-- this  unit  does not  by itself cause  the resulting  executable  to  be --
+-- covered  by the  GNU  General  Public  License.  This exception does not --
+-- however invalidate  any other reasons why  the executable file  might be --
+-- covered by the  GNU Public License.                                      --
+--                                                                          --
+--                  PolyORB is maintained by AdaCore                        --
+--                     (email: sales@adacore.com)                           --
+--                                                                          --
+------------------------------------------------------------------------------
+
+package Mailboxes.Active is
+   task type Active_Mailbox is new Mailbox with
+      entry Start (Id : Integer);
+      entry Send_Message (Message : Message_Type);
+   end Active_Mailbox;
+
+   type Active_Mailbox_Acc is access all Active_Mailbox;
+   --  Local access type
+
+end Mailboxes.Active;
============================================================
--- examples/dsa/mailboxes/mailboxes.ads	09f88822dd99d55b119f3b4b55dc67c0922113d6
+++ examples/dsa/mailboxes/mailboxes.ads	09f88822dd99d55b119f3b4b55dc67c0922113d6
@@ -0,0 +1,47 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                           POLYORB COMPONENTS                             --
+--                                                                          --
+--                            M A I L B O X E S                             --
+--                                                                          --
+--                                 S p e c                                  --
+--                                                                          --
+--           Copyright (C) 2009, Free Software Foundation, Inc.             --
+--                                                                          --
+-- PolyORB is free software; you  can  redistribute  it and/or modify it    --
+-- under terms of the  GNU General Public License as published by the  Free --
+-- Software Foundation;  either version 2,  or (at your option)  any  later --
+-- version. PolyORB is distributed  in the hope that it will be  useful,    --
+-- but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License  for more details.  You should have received  a copy of the GNU  --
+-- General Public License distributed with PolyORB; see file COPYING. If    --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth    --
+-- Floor, Boston, MA 02111-1301, USA.                                       --
+--                                                                          --
+-- As a special exception,  if other files  instantiate  generics from this --
+-- unit, or you link  this unit with other files  to produce an executable, --
+-- this  unit  does not  by itself cause  the resulting  executable  to  be --
+-- covered  by the  GNU  General  Public  License.  This exception does not --
+-- however invalidate  any other reasons why  the executable file  might be --
+-- covered by the  GNU Public License.                                      --
+--                                                                          --
+--                  PolyORB is maintained by AdaCore                        --
+--                     (email: sales@adacore.com)                           --
+--                                                                          --
+------------------------------------------------------------------------------
+
+package Mailboxes is
+   pragma Remote_Types;
+
+   subtype Message_Type is String;
+
+   type Mailbox is limited interface;
+   procedure Send_Message (Recipient : access Mailbox; Message : Message_Type)
+     is abstract;
+
+   type Remote_Mailbox is access all Mailbox'Class;
+   pragma Asynchronous (Remote_Mailbox);
+   --  Remote access to mailbox
+
+end Mailboxes;
============================================================
--- examples/dsa/mailboxes/server.adb	08b31cacfdb5b25377fec24c3393e6d735c57dea
+++ examples/dsa/mailboxes/server.adb	08b31cacfdb5b25377fec24c3393e6d735c57dea
@@ -0,0 +1,45 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                           POLYORB COMPONENTS                             --
+--                                                                          --
+--                               S E R V E R                                --
+--                                                                          --
+--                                 B o d y                                  --
+--                                                                          --
+--           Copyright (C) 2009, Free Software Foundation, Inc.             --
+--                                                                          --
+-- PolyORB is free software; you  can  redistribute  it and/or modify it    --
+-- under terms of the  GNU General Public License as published by the  Free --
+-- Software Foundation;  either version 2,  or (at your option)  any  later --
+-- version. PolyORB is distributed  in the hope that it will be  useful,    --
+-- but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License  for more details.  You should have received  a copy of the GNU  --
+-- General Public License distributed with PolyORB; see file COPYING. If    --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth    --
+-- Floor, Boston, MA 02111-1301, USA.                                       --
+--                                                                          --
+-- As a special exception,  if other files  instantiate  generics from this --
+-- unit, or you link  this unit with other files  to produce an executable, --
+-- this  unit  does not  by itself cause  the resulting  executable  to  be --
+-- covered  by the  GNU  General  Public  License.  This exception does not --
+-- however invalidate  any other reasons why  the executable file  might be --
+-- covered by the  GNU Public License.                                      --
+--                                                                          --
+--                  PolyORB is maintained by AdaCore                        --
+--                     (email: sales@adacore.com)                           --
+--                                                                          --
+------------------------------------------------------------------------------
+
+with Ada.Command_Line; use Ada.Command_Line;
+with Mailboxes.Active;
+with Hub;
+procedure Server is
+   My_Id : constant Integer := Integer'Value (Argument (1));
+   My_Mailbox : Mailboxes.Active.Active_Mailbox_Acc :=
+                  new Mailboxes.Active.Active_Mailbox;
+begin
+   My_Mailbox.Start (My_Id);
+   Hub.Register_Mailbox
+     (Id => My_Id, Ptr => Mailboxes.Remote_Mailbox (My_Mailbox));
+end Server;
============================================================
--- examples_bis/corba-all_functions/ALL_FUNCTIONS_0/test.py	68aa225c597ee1ea1e57bf8327d51a4c0e6d649c
+++ examples_bis/corba-all_functions/ALL_FUNCTIONS_0/test.py	68aa225c597ee1ea1e57bf8327d51a4c0e6d649c
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/all_functions/client', r'',
+                     r'../examples/corba/all_functions/server', r''):
+    sys.exit(1)
+
============================================================
--- examples_bis/corba-all_functions/ALL_FUNCTIONS_1/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ examples_bis/corba-all_functions/ALL_FUNCTIONS_1/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- examples_bis/corba-all_functions/ALL_FUNCTIONS_1/test.py	a9e16bdeda47e08878aa5a5a8b21b1c30b3881fd
+++ examples_bis/corba-all_functions/ALL_FUNCTIONS_1/test.py	a9e16bdeda47e08878aa5a5a8b21b1c30b3881fd
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/all_functions/client', r'scenarios/polyorb_conf/soap.conf',
+                     r'../examples/corba/all_functions/server', r'scenarios/polyorb_conf/soap.conf'):
+    sys.exit(1)
+
============================================================
--- examples_bis/corba-all_functions/ALL_FUNCTIONS_2/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ examples_bis/corba-all_functions/ALL_FUNCTIONS_2/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- examples_bis/corba-all_functions/ALL_FUNCTIONS_2/test.py	095ea4fd0e64c6d28d9a8f438d6adaf8f664d29c
+++ examples_bis/corba-all_functions/ALL_FUNCTIONS_2/test.py	095ea4fd0e64c6d28d9a8f438d6adaf8f664d29c
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/all_functions/dynclient', r'',
+                     r'../examples/corba/all_functions/server', r''):
+    sys.exit(1)
+
============================================================
--- examples_bis/corba-all_functions/ALL_FUNCTIONS_3/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ examples_bis/corba-all_functions/ALL_FUNCTIONS_3/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- examples_bis/corba-all_functions/ALL_FUNCTIONS_3/test.py	6aaa8104fc496100e12d452b9c32cc48bb2c6589
+++ examples_bis/corba-all_functions/ALL_FUNCTIONS_3/test.py	6aaa8104fc496100e12d452b9c32cc48bb2c6589
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/all_functions/dynclient', r'scenarios/polyorb_conf/soap.conf',
+                     r'../examples/corba/all_functions/server', r'scenarios/polyorb_conf/soap.conf'):
+    sys.exit(1)
+
============================================================
--- examples_bis/corba-all_functions/ALL_FUNCTIONS_4/test.py	81d7aa7dba5d85b38893ac9b57fc8d16d20dd365
+++ examples_bis/corba-all_functions/ALL_FUNCTIONS_4/test.py	81d7aa7dba5d85b38893ac9b57fc8d16d20dd365
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/all_functions/client', r'scenarios/polyorb_conf/giop_1_0.conf',
+                     r'../examples/corba/all_functions/server', r'scenarios/polyorb_conf/giop_1_0.conf'):
+    sys.exit(1)
+
============================================================
--- examples_bis/corba-all_functions/ALL_FUNCTIONS_5/test.py	87e0e7439a7d748e177102e2cf098f2f17ba6581
+++ examples_bis/corba-all_functions/ALL_FUNCTIONS_5/test.py	87e0e7439a7d748e177102e2cf098f2f17ba6581
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/all_functions/client', r'scenarios/polyorb_conf/giop_1_1.conf',
+                     r'../examples/corba/all_functions/server', r'scenarios/polyorb_conf/giop_1_1.conf'):
+    sys.exit(1)
+
============================================================
--- examples_bis/corba-all_functions/ALL_FUNCTIONS_6/test.py	17ecf31c0883d79dc14bc798df49da7e68970074
+++ examples_bis/corba-all_functions/ALL_FUNCTIONS_6/test.py	17ecf31c0883d79dc14bc798df49da7e68970074
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/all_functions/client', r'scenarios/polyorb_conf/giop_1_2.conf',
+                     r'../examples/corba/all_functions/server', r'scenarios/polyorb_conf/giop_1_2.conf'):
+    sys.exit(1)
+
============================================================
--- examples_bis/corba-all_types/ALL_TYPES_0/test.py	e4265b5ba5f5b7501c27a1f126e664bf41f82fc1
+++ examples_bis/corba-all_types/ALL_TYPES_0/test.py	e4265b5ba5f5b7501c27a1f126e664bf41f82fc1
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/all_types/client', r'',
+                     r'../examples/corba/all_types/server', r''):
+    sys.exit(1)
+
============================================================
--- examples_bis/corba-all_types/ALL_TYPES_1/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ examples_bis/corba-all_types/ALL_TYPES_1/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- examples_bis/corba-all_types/ALL_TYPES_1/test.py	5787206f07f7dfe5e8ee1db67766458cce462035
+++ examples_bis/corba-all_types/ALL_TYPES_1/test.py	5787206f07f7dfe5e8ee1db67766458cce462035
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/all_types/client', r'scenarios/polyorb_conf/soap.conf',
+                     r'../examples/corba/all_types/server', r'scenarios/polyorb_conf/soap.conf'):
+    sys.exit(1)
+
============================================================
--- examples_bis/corba-all_types/ALL_TYPES_2/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ examples_bis/corba-all_types/ALL_TYPES_2/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- examples_bis/corba-all_types/ALL_TYPES_2/test.py	deff83559a903317c7eefa2a473395cc876349ba
+++ examples_bis/corba-all_types/ALL_TYPES_2/test.py	deff83559a903317c7eefa2a473395cc876349ba
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/all_types/dynclient', r'',
+                     r'../examples/corba/all_types/server', r''):
+    sys.exit(1)
+
============================================================
--- examples_bis/corba-all_types/ALL_TYPES_3/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ examples_bis/corba-all_types/ALL_TYPES_3/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- examples_bis/corba-all_types/ALL_TYPES_3/test.py	dc2d40418cf86d7478a2c1e46c91ed02bf6d6657
+++ examples_bis/corba-all_types/ALL_TYPES_3/test.py	dc2d40418cf86d7478a2c1e46c91ed02bf6d6657
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/all_types/dynclient', r'scenarios/polyorb_conf/soap.conf',
+                     r'../examples/corba/all_types/server', r'scenarios/polyorb_conf/soap.conf'):
+    sys.exit(1)
+
============================================================
--- examples_bis/corba-all_types/ALL_TYPES_4/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ examples_bis/corba-all_types/ALL_TYPES_4/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- examples_bis/corba-all_types/ALL_TYPES_4/test.py	5f13fb1756c71da7191b9f0db57c313f60df2a23
+++ examples_bis/corba-all_types/ALL_TYPES_4/test.py	5f13fb1756c71da7191b9f0db57c313f60df2a23
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/all_types/client', r'scenarios/polyorb_conf/ssliop.conf',
+                     r'../examples/corba/all_types/server', r'scenarios/polyorb_conf/ssliop.conf'):
+    sys.exit(1)
+
============================================================
--- examples_bis/corba-all_types/ALL_TYPES_5/test.py	bde530741e5188a744cf07e049874f77ad76054a
+++ examples_bis/corba-all_types/ALL_TYPES_5/test.py	bde530741e5188a744cf07e049874f77ad76054a
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/all_types/client', r'scenarios/polyorb_conf/giop_1_0.conf',
+                     r'../examples/corba/all_types/server', r'scenarios/polyorb_conf/giop_1_0.conf'):
+    sys.exit(1)
+
============================================================
--- examples_bis/corba-all_types/ALL_TYPES_6/test.py	b6fe510f02e466e6ec6439b9b649cd6c056dba83
+++ examples_bis/corba-all_types/ALL_TYPES_6/test.py	b6fe510f02e466e6ec6439b9b649cd6c056dba83
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/all_types/client', r'scenarios/polyorb_conf/giop_1_1.conf',
+                     r'../examples/corba/all_types/server', r'scenarios/polyorb_conf/giop_1_1.conf'):
+    sys.exit(1)
+
============================================================
--- examples_bis/corba-all_types/ALL_TYPES_7/test.py	af7461b837c089c4d285991f0849de52a1c3bee6
+++ examples_bis/corba-all_types/ALL_TYPES_7/test.py	af7461b837c089c4d285991f0849de52a1c3bee6
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/all_types/client', r'scenarios/polyorb_conf/giop_1_2.conf',
+                     r'../examples/corba/all_types/server', r'scenarios/polyorb_conf/giop_1_2.conf'):
+    sys.exit(1)
+
============================================================
--- examples_bis/corba-echo/ECHO_0/test.py	a137b15e04e8921d2454d76e615fcd342aebe29d
+++ examples_bis/corba-echo/ECHO_0/test.py	a137b15e04e8921d2454d76e615fcd342aebe29d
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/echo/client', r'',
+                     r'../examples/corba/echo/server', r''):
+    sys.exit(1)
+
============================================================
--- examples_bis/corba-echo/ECHO_1/test.py	a98c4323ca0913c26ca1c017cd7b21d7485c662b
+++ examples_bis/corba-echo/ECHO_1/test.py	a98c4323ca0913c26ca1c017cd7b21d7485c662b
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/echo/client', r'scenarios/polyorb_conf/soap.conf',
+                     r'../examples/corba/echo/server', r'scenarios/polyorb_conf/soap.conf'):
+    sys.exit(1)
+
============================================================
--- examples_bis/corba-echo/ECHO_2/test.py	ac078c610334cc58bd98d1d380fceb0e1f5e0f3f
+++ examples_bis/corba-echo/ECHO_2/test.py	ac078c610334cc58bd98d1d380fceb0e1f5e0f3f
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/echo/dynclient', r'',
+                     r'../examples/corba/echo/server', r''):
+    sys.exit(1)
+
============================================================
--- examples_bis/corba-echo/ECHO_3/test.py	573d5e8b192de06b6ef3fb0b314b3945fb515c43
+++ examples_bis/corba-echo/ECHO_3/test.py	573d5e8b192de06b6ef3fb0b314b3945fb515c43
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/echo/dynclient', r'scenarios/polyorb_conf/soap.conf',
+                     r'../examples/corba/echo/server', r'scenarios/polyorb_conf/soap.conf'):
+    sys.exit(1)
+
============================================================
--- examples_bis/corba-echo/ECHO_4/test.py	c9e52764bc62e3d5365584e9b4b54b4bca540b0b
+++ examples_bis/corba-echo/ECHO_4/test.py	c9e52764bc62e3d5365584e9b4b54b4bca540b0b
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/echo/dynclient', r'',
+                     r'../examples/corba/echo/dynserver', r''):
+    sys.exit(1)
+
============================================================
--- examples_bis/corba-echo/ECHO_5/test.py	b002b1a4d6669b66adc84404f2880d4aef6167fc
+++ examples_bis/corba-echo/ECHO_5/test.py	b002b1a4d6669b66adc84404f2880d4aef6167fc
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/echo/client', r'scenarios/polyorb_conf/giop_1_0.conf',
+                     r'../examples/corba/echo/server', r'scenarios/polyorb_conf/giop_1_0.conf'):
+    sys.exit(1)
+
============================================================
--- examples_bis/corba-echo/ECHO_6/test.py	c19dad02feb280d47ec405e2d9c394465fd998ce
+++ examples_bis/corba-echo/ECHO_6/test.py	c19dad02feb280d47ec405e2d9c394465fd998ce
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/echo/client', r'scenarios/polyorb_conf/giop_1_1.conf',
+                     r'../examples/corba/echo/server', r'scenarios/polyorb_conf/giop_1_1.conf'):
+    sys.exit(1)
+
============================================================
--- examples_bis/corba-echo/ECHO_7/test.py	af110eecdf05cecd91d7ab2580f5f16c17965686
+++ examples_bis/corba-echo/ECHO_7/test.py	af110eecdf05cecd91d7ab2580f5f16c17965686
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/echo/client', r'scenarios/polyorb_conf/giop_1_2.conf',
+                     r'../examples/corba/echo/server', r'scenarios/polyorb_conf/giop_1_2.conf'):
+    sys.exit(1)
+
============================================================
--- examples_bis/corba-random/CORBA_RANDOM_0/test.py	6dce46ed02bed61b77ac825525b7a53a0be34b66
+++ examples_bis/corba-random/CORBA_RANDOM_0/test.py	6dce46ed02bed61b77ac825525b7a53a0be34b66
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/random/client', r'',
+                     r'../examples/corba/random/server', r''):
+    sys.exit(1)
+
============================================================
--- examples_bis/corba-random/CORBA_RANDOM_1/test.py	b61a010850494f7edbb30b8d3ea229be1bc0b305
+++ examples_bis/corba-random/CORBA_RANDOM_1/test.py	b61a010850494f7edbb30b8d3ea229be1bc0b305
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/random/client', r'scenarios/polyorb_conf/soap.conf',
+                     r'../examples/corba/random/server', r'scenarios/polyorb_conf/soap.conf'):
+    sys.exit(1)
+
============================================================
--- examples_bis/corba-rtcorba-client_propagated/RTCORBA_CLIENT_PROPAGATED_0/test.py	f83ee0cf1f7c7b6dcea97bfe4558f4aa94983ac4
+++ examples_bis/corba-rtcorba-client_propagated/RTCORBA_CLIENT_PROPAGATED_0/test.py	f83ee0cf1f7c7b6dcea97bfe4558f4aa94983ac4
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/rtcorba/client_propagated/client', r'',
+                     r'../examples/corba/rtcorba/client_propagated/server', r''):
+    sys.exit(1)
+
============================================================
--- examples_bis/corba-rtcorba-dhb/RTCORBA_DHB_0/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ examples_bis/corba-rtcorba-dhb/RTCORBA_DHB_0/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- examples_bis/corba-rtcorba-dhb/RTCORBA_DHB_0/test.py	2b28e439b56093378a809e48d1c96c0e828325b1
+++ examples_bis/corba-rtcorba-dhb/RTCORBA_DHB_0/test.py	2b28e439b56093378a809e48d1c96c0e828325b1
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/rtcorba/dhb/rtcorba_iiop_client', r'',
+                     r'../examples/corba/rtcorba/dhb/rtcorba_iiop_server', r''):
+    sys.exit(1)
+
============================================================
--- examples_bis/corba-rtcorba-rtcosscheduling/RTCORBA_RTCOSSCHEDULING_0/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ examples_bis/corba-rtcorba-rtcosscheduling/RTCORBA_RTCOSSCHEDULING_0/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- examples_bis/corba-rtcorba-rtcosscheduling/RTCORBA_RTCOSSCHEDULING_0/test.py	35bc2e824be67e6584afee208d5ad2f245f3e181
+++ examples_bis/corba-rtcorba-rtcosscheduling/RTCORBA_RTCOSSCHEDULING_0/test.py	35bc2e824be67e6584afee208d5ad2f245f3e181
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/rtcorba/rtcosscheduling/client', r'',
+                     r'../examples/corba/rtcorba/rtcosscheduling/server', r''):
+    sys.exit(1)
+
============================================================
--- examples_bis/corba-rtcorba-server_declared/RTCORBA_SERVER_DECLARED_0/test.py	b05bf0f80cd66aa50a08953a81be621d8589ac22
+++ examples_bis/corba-rtcorba-server_declared/RTCORBA_SERVER_DECLARED_0/test.py	b05bf0f80cd66aa50a08953a81be621d8589ac22
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/echo/client', r'',
+                     r'../examples/corba/rtcorba/server_declared/server', r''):
+    sys.exit(1)
+
============================================================
--- examples_bis/corba-rtcorba-server_declared/RTCORBA_SERVER_DECLARED_1/test.py	ec64e5c98ed3e89b2be01617d30dd7f81c6bdf8d
+++ examples_bis/corba-rtcorba-server_declared/RTCORBA_SERVER_DECLARED_1/test.py	ec64e5c98ed3e89b2be01617d30dd7f81c6bdf8d
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/rtcorba/server_declared/client', r'',
+                     r'../examples/corba/rtcorba/server_declared/server', r''):
+    sys.exit(1)
+
============================================================
--- examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_0/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_0/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_0/test.py	fbeefc45c9538c10f319a6990606ab395fdafe7b
+++ examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_0/test.py	fbeefc45c9538c10f319a6990606ab395fdafe7b
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'../examples/corba/secure_echo/gssup_example', r''):
+    sys.exit(1)
+
============================================================
--- examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_1/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_1/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_1/test.py	4b03d1a1d9410f0714b5c536059d5757dc1c40af
+++ examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_1/test.py	4b03d1a1d9410f0714b5c536059d5757dc1c40af
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'../examples/corba/secure_echo/tls_example', r''):
+    sys.exit(1)
+
============================================================
--- examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_2/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_2/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_2/test.py	f111fa79ac937964a0ddf3fe2f5121dde8612b1c
+++ examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_2/test.py	f111fa79ac937964a0ddf3fe2f5121dde8612b1c
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'../examples/corba/secure_echo/tls_gssup_example', r''):
+    sys.exit(1)
+
============================================================
--- examples_bis/corba-send/CORBA_MIOP_0/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ examples_bis/corba-send/CORBA_MIOP_0/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- examples_bis/corba-send/CORBA_MIOP_0/test.py	1fa34c814de58ac2b0702a4317bdc812a11f0b79
+++ examples_bis/corba-send/CORBA_MIOP_0/test.py	1fa34c814de58ac2b0702a4317bdc812a11f0b79
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/send/send', r'scenarios/polyorb_conf/miop.conf',
+                     r'../examples/corba/send/listener', r'scenarios/polyorb_conf/miop.conf'):
+    sys.exit(1)
+
============================================================
--- examples_bis/moma/MOMA_0/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ examples_bis/moma/MOMA_0/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- examples_bis/moma/MOMA_0/test.py	3339674efe649e7a96c1cb0958e833f56fea17ff
+++ examples_bis/moma/MOMA_0/test.py	3339674efe649e7a96c1cb0958e833f56fea17ff
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/moma/client', r'',
+                     r'../examples/moma/server', r''):
+    sys.exit(1)
+
============================================================
--- examples_bis/moma/MOMA_1/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ examples_bis/moma/MOMA_1/test.opt	256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- examples_bis/moma/MOMA_1/test.py	9beac423042e6a59ce34544fbc4a6d12f58db5dd
+++ examples_bis/moma/MOMA_1/test.py	9beac423042e6a59ce34544fbc4a6d12f58db5dd
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/moma/client_call_back', r'',
+                     r'../examples/moma/server', r''):
+    sys.exit(1)
+
============================================================
--- examples_bis/polyorb/POLYORB_CORE_0/test.py	010053b9ca51afba7b1a56b706e8e4536eaf1ef7
+++ examples_bis/polyorb/POLYORB_CORE_0/test.py	010053b9ca51afba7b1a56b706e8e4536eaf1ef7
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'../examples/polyorb/polyorb-test-no_tasking', r''):
+    sys.exit(1)
+
============================================================
--- examples_bis/polyorb/POLYORB_CORE_1/test.py	b05b3d2e46d13c4d8af74c6957997e82cfc1a0fd
+++ examples_bis/polyorb/POLYORB_CORE_1/test.py	b05b3d2e46d13c4d8af74c6957997e82cfc1a0fd
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'../examples/polyorb/polyorb-test-no_tasking_poa', r''):
+    sys.exit(1)
+
============================================================
--- examples_bis/polyorb/POLYORB_CORE_2/test.py	44ae14db934212dbaca6300b106ff391b3eaca0c
+++ examples_bis/polyorb/POLYORB_CORE_2/test.py	44ae14db934212dbaca6300b106ff391b3eaca0c
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'../examples/polyorb/polyorb-test-thread_pool', r''):
+    sys.exit(1)
+
============================================================
--- examples_bis/polyorb/POLYORB_CORE_3/test.py	ea3a2fc70be49b54254fe2d5e2cf4dfbd33ebe9b
+++ examples_bis/polyorb/POLYORB_CORE_3/test.py	ea3a2fc70be49b54254fe2d5e2cf4dfbd33ebe9b
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'../examples/polyorb/polyorb-test-thread_pool_poa', r''):
+    sys.exit(1)
+
============================================================
--- src/polyorb-binding_objects-lists.ads	0bcd6b554b70f79f741ead2ade6a95fa30ded467
+++ src/polyorb-binding_objects-lists.ads	0bcd6b554b70f79f741ead2ade6a95fa30ded467
@@ -0,0 +1,38 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                           POLYORB COMPONENTS                             --
+--                                                                          --
+--        P O L Y O R B . B I N D I N G _ O B J E C T S . L I S T S         --
+--                                                                          --
+--                                 S p e c                                  --
+--                                                                          --
+--         Copyright (C) 2004-2009, Free Software Foundation, Inc.          --
+--                                                                          --
+-- PolyORB is free software; you  can  redistribute  it and/or modify it    --
+-- under terms of the  GNU General Public License as published by the  Free --
+-- Software Foundation;  either version 2,  or (at your option)  any  later --
+-- version. PolyORB is distributed  in the hope that it will be  useful,    --
+-- but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License  for more details.  You should have received  a copy of the GNU  --
+-- General Public License distributed with PolyORB; see file COPYING. If    --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth    --
+-- Floor, Boston, MA 02111-1301, USA.                                       --
+--                                                                          --
+-- As a special exception,  if other files  instantiate  generics from this --
+-- unit, or you link  this unit with other files  to produce an executable, --
+-- this  unit  does not  by itself cause  the resulting  executable  to  be --
+-- covered  by the  GNU  General  Public  License.  This exception does not --
+-- however invalidate  any other reasons why  the executable file  might be --
+-- covered by the  GNU Public License.                                      --
+--                                                                          --
+--                  PolyORB is maintained by AdaCore                        --
+--                     (email: sales@adacore.com)                           --
+--                                                                          --
+------------------------------------------------------------------------------
+
+package PolyORB.Binding_Objects.Lists is
+  new PolyORB.Utils.Ilists.Lists
+     (T             => Binding_Object'Class,
+      T_Acc         => Binding_Object_Access,
+      Doubly_Linked => True);
============================================================
--- src/polyorb-smart_pointers-controlled_entities.adb	ce2d84752e999da9daedc2073cd10754146ecf53
+++ src/polyorb-smart_pointers-controlled_entities.adb	ce2d84752e999da9daedc2073cd10754146ecf53
@@ -0,0 +1,64 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                           POLYORB COMPONENTS                             --
+--                                                                          --
+--               POLYORB.SMART_POINTERS.CONTROLLED_ENTITIES                 --
+--                                                                          --
+--                                 B o d y                                  --
+--                                                                          --
+--         Copyright (C) 2001-2009, Free Software Foundation, Inc.          --
+--                                                                          --
+-- PolyORB is free software; you  can  redistribute  it and/or modify it    --
+-- under terms of the  GNU General Public License as published by the  Free --
+-- Software Foundation;  either version 2,  or (at your option)  any  later --
+-- version. PolyORB is distributed  in the hope that it will be  useful,    --
+-- but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License  for more details.  You should have received  a copy of the GNU  --
+-- General Public License distributed with PolyORB; see file COPYING. If    --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth    --
+-- Floor, Boston, MA 02111-1301, USA.                                       --
+--                                                                          --
+-- As a special exception,  if other files  instantiate  generics from this --
+-- unit, or you link  this unit with other files  to produce an executable, --
+-- this  unit  does not  by itself cause  the resulting  executable  to  be --
+-- covered  by the  GNU  General  Public  License.  This exception does not --
+-- however invalidate  any other reasons why  the executable file  might be --
+-- covered by the  GNU Public License.                                      --
+--                                                                          --
+--                  PolyORB is maintained by AdaCore                        --
+--                     (email: sales@adacore.com)                           --
+--                                                                          --
+------------------------------------------------------------------------------
+
+package body PolyORB.Smart_Pointers.Controlled_Entities is
+
+   --------------
+   -- Finalize --
+   --------------
+
+   procedure Finalize (X : in out Entity_Controller) is
+   begin
+      Finalize (X.E.all);
+   end Finalize;
+
+   ----------------
+   -- Initialize --
+   ----------------
+
+   procedure Initialize (X : in out Entity_Controller) is
+   begin
+      Initialize (X.E.all);
+   end Initialize;
+
+   -------------------
+   -- Is_Controlled --
+   -------------------
+
+   function Is_Controlled (X : Entity) return Boolean is
+      pragma Unreferenced (X);
+   begin
+      return True;
+   end Is_Controlled;
+
+end PolyORB.Smart_Pointers.Controlled_Entities;
============================================================
--- src/polyorb-smart_pointers-controlled_entities.ads	bbb49214d7c7afb7af251dac8d5bdf6b37560498
+++ src/polyorb-smart_pointers-controlled_entities.ads	bbb49214d7c7afb7af251dac8d5bdf6b37560498
@@ -0,0 +1,67 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                           POLYORB COMPONENTS                             --
+--                                                                          --
+--               POLYORB.SMART_POINTERS.CONTROLLED_ENTITIES                 --
+--                                                                          --
+--                                 S p e c                                  --
+--                                                                          --
+--         Copyright (C) 2001-2009, Free Software Foundation, Inc.          --
+--                                                                          --
+-- PolyORB is free software; you  can  redistribute  it and/or modify it    --
+-- under terms of the  GNU General Public License as published by the  Free --
+-- Software Foundation;  either version 2,  or (at your option)  any  later --
+-- version. PolyORB is distributed  in the hope that it will be  useful,    --
+-- but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License  for more details.  You should have received  a copy of the GNU  --
+-- General Public License distributed with PolyORB; see file COPYING. If    --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth    --
+-- Floor, Boston, MA 02111-1301, USA.                                       --
+--                                                                          --
+-- As a special exception,  if other files  instantiate  generics from this --
+-- unit, or you link  this unit with other files  to produce an executable, --
+-- this  unit  does not  by itself cause  the resulting  executable  to  be --
+-- covered  by the  GNU  General  Public  License.  This exception does not --
+-- however invalidate  any other reasons why  the executable file  might be --
+-- covered by the  GNU Public License.                                      --
+--                                                                          --
+--                  PolyORB is maintained by AdaCore                        --
+--                     (email: sales@adacore.com)                           --
+--                                                                          --
+------------------------------------------------------------------------------
+
+pragma Ada_2005;
+
+package PolyORB.Smart_Pointers.Controlled_Entities is
+
+   pragma Preelaborate;
+
+   ---------------------------------
+   -- Controlled task-safe entity --
+   ---------------------------------
+
+   type Entity is abstract new Non_Controlled_Entity with private;
+   procedure Initialize (X : in out Entity) is null;
+   function Is_Controlled (X : Entity) return Boolean;
+
+private
+
+   ---------------------------------
+   -- Task-safe controlled entity --
+   ---------------------------------
+
+   type Entity_Controller (E : access Entity'Class)
+      is new Ada.Finalization.Limited_Controlled with null record;
+
+   procedure Initialize (X : in out Entity_Controller);
+   procedure Finalize   (X : in out Entity_Controller);
+
+   type Entity is abstract new Non_Controlled_Entity with record
+      Controller : Entity_Controller (Entity'Access);
+      --  Controller component used to trigger a call to the Entity's
+      --  Finalize primitive operation when it is Finalized (note that
+      --  Entity itself is not a controlled type).
+   end record;
+
+end PolyORB.Smart_Pointers.Controlled_Entities;
============================================================
--- src/polyorb-utils-ilists.adb	0dd5c696b3f3b3a49b706206c8a177b10bc14c5b
+++ src/polyorb-utils-ilists.adb	0dd5c696b3f3b3a49b706206c8a177b10bc14c5b
@@ -0,0 +1,237 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                           POLYORB COMPONENTS                             --
+--                                                                          --
+--                 P O L Y O R B . U T I L S . I L I S T S                  --
+--                                                                          --
+--                                 B o d y                                  --
+--                                                                          --
+--           Copyright (C) 2009, Free Software Foundation, Inc.             --
+--                                                                          --
+-- PolyORB is free software; you  can  redistribute  it and/or modify it    --
+-- under terms of the  GNU General Public License as published by the  Free --
+-- Software Foundation;  either version 2,  or (at your option)  any  later --
+-- version. PolyORB is distributed  in the hope that it will be  useful,    --
+-- but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License  for more details.  You should have received  a copy of the GNU  --
+-- General Public License distributed with PolyORB; see file COPYING. If    --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth    --
+-- Floor, Boston, MA 02111-1301, USA.                                       --
+--                                                                          --
+-- As a special exception,  if other files  instantiate  generics from this --
+-- unit, or you link  this unit with other files  to produce an executable, --
+-- this  unit  does not  by itself cause  the resulting  executable  to  be --
+-- covered  by the  GNU  General  Public  License.  This exception does not --
+-- however invalidate  any other reasons why  the executable file  might be --
+-- covered by the  GNU Public License.                                      --
+--                                                                          --
+--                  PolyORB is maintained by AdaCore                        --
+--                     (email: sales@adacore.com)                           --
+--                                                                          --
+------------------------------------------------------------------------------
+
+package body PolyORB.Utils.Ilists is
+
+   package body Lists is
+
+      function "+" (X : access T) return T_Acc;
+      pragma Inline ("+");
+      --  Convert X to a general access type, bypassing accessibility checks
+
+      function Link (X : access T; Which : Link_Type) return T_Acc;
+      procedure Set_Link (X : access T; Which : Link_Type; To : T_Acc);
+      pragma Inline (Link);
+      pragma Inline (Set_Link);
+      --  Short-hand notation for read and write usage of the Link accessor
+
+      ----------
+      -- Link --
+      ----------
+
+      function Link (X : access T; Which : Link_Type) return T_Acc is
+      begin
+         return Link (X, Which).all;
+      end Link;
+
+      --------------
+      -- Set_Link --
+      --------------
+
+      procedure Set_Link (X : access T; Which : Link_Type; To : T_Acc) is
+      begin
+         Link (X, Which).all := To;
+      end Set_Link;
+
+      ---------
+      -- "+" --
+      ---------
+
+      function "+" (X : access T) return T_Acc is
+         pragma Suppress (Access_Check);
+      begin
+         return X.all'Unchecked_Access;
+      end "+";
+
+      ------------
+      -- Append --
+      ------------
+
+      procedure Append (L : in out List; X : access T) is
+      begin
+         if L.Last /= null then
+            if Doubly_Linked then
+               Set_Link (X, Prev, L.Last);
+            end if;
+            Set_Link (L.Last, Next, +X);
+         end if;
+         L.Last := +X;
+         if L.First = null then
+            L.First := +X;
+         end if;
+         L.Length := L.Length + 1;
+      end Append;
+
+      -----------
+      -- First --
+      -----------
+
+      function First (L : List) return Iterator is
+      begin
+         return Iterator (L.First);
+      end First;
+
+      --------------
+      -- Is_Empty --
+      --------------
+
+      function Is_Empty (L : List) return Boolean is
+      begin
+         return L.Length = 0;
+      end Is_Empty;
+
+      ----------
+      -- Last --
+      ----------
+
+      function Last (L : List) return Iterator is
+         pragma Unreferenced (L);
+      begin
+         return null;
+      end Last;
+
+      ----------
+      -- Last --
+      ----------
+
+      function Last (It : Iterator) return Boolean is
+      begin
+         return It = null;
+      end Last;
+
+      ------------
+      -- Length --
+      ------------
+
+      function Length (L : List) return Natural is
+      begin
+         return L.Length;
+      end Length;
+
+      ----------
+      -- Next --
+      ----------
+
+      procedure Next (It : in out Iterator) is
+      begin
+         It := Iterator (T_Acc'(Link (It, Next)));
+      end Next;
+
+      -------------
+      -- Prepend --
+      -------------
+
+      procedure Prepend (L : in out List; X : access T) is
+      begin
+         Set_Link (X, Next, L.First);
+         if Doubly_Linked and then L.First /= null then
+            Set_Link (L.First, Prev, +X);
+         end if;
+
+         L.First := +X;
+         if L.Last = null then
+            L.Last := +X;
+         end if;
+         L.Length := L.Length + 1;
+      end Prepend;
+
+      ------------
+      -- Remove --
+      ------------
+
+      procedure Remove (L : in out List; It : in out Iterator) is
+         Element : constant access T := It;
+      begin
+         Next (It);
+         Remove_Element (L, Element);
+      end Remove;
+
+      --------------------
+      -- Remove_Element --
+      --------------------
+
+      procedure Remove_Element (L : in out List; X : access T) is
+         Previous : T_Acc;
+      begin
+         if Doubly_Linked then
+            Previous := Link (X, Prev);
+         else
+            pragma Assert (X = L.First);
+            Previous := null;
+         end if;
+         Remove_Element (L, X => X, PX => Previous);
+      end Remove_Element;
+
+      --------------------
+      -- Remove_Element --
+      --------------------
+
+      procedure Remove_Element
+        (L  : in out List;
+         X  : access T;
+         PX : access T)
+      is
+      begin
+         if PX = null then
+            L.First := Link (X, Next);
+         else
+            Set_Link (PX, Next, Link (X, Next));
+         end if;
+
+         if L.Last = X then
+            L.Last := +PX;
+         end if;
+
+         if Doubly_Linked then
+            if Link (X, Next) /= T_Acc'(null) then
+               Set_Link (Link (X, Next), Prev, +PX);
+            end if;
+            Set_Link (X, Prev, null);
+         end if;
+
+         Set_Link (X, Next, null);
+         L.Length := L.Length - 1;
+      end Remove_Element;
+
+      -----------
+      -- Value --
+      -----------
+
+      function Value (It : Iterator) return T_Acc is
+      begin
+         return T_Acc (It);
+      end Value;
+
+   end Lists;
+
+end PolyORB.Utils.Ilists;
============================================================
--- src/polyorb-utils-ilists.ads	d3074756615441d8370dbb6dee1e4130a1d1f759
+++ src/polyorb-utils-ilists.ads	d3074756615441d8370dbb6dee1e4130a1d1f759
@@ -0,0 +1,124 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                           POLYORB COMPONENTS                             --
+--                                                                          --
+--                 P O L Y O R B . U T I L S . I L I S T S                  --
+--                                                                          --
+--                                 S p e c                                  --
+--                                                                          --
+--           Copyright (C) 2009, Free Software Foundation, Inc.             --
+--                                                                          --
+-- PolyORB is free software; you  can  redistribute  it and/or modify it    --
+-- under terms of the  GNU General Public License as published by the  Free --
+-- Software Foundation;  either version 2,  or (at your option)  any  later --
+-- version. PolyORB is distributed  in the hope that it will be  useful,    --
+-- but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License  for more details.  You should have received  a copy of the GNU  --
+-- General Public License distributed with PolyORB; see file COPYING. If    --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth    --
+-- Floor, Boston, MA 02111-1301, USA.                                       --
+--                                                                          --
+-- As a special exception,  if other files  instantiate  generics from this --
+-- unit, or you link  this unit with other files  to produce an executable, --
+-- this  unit  does not  by itself cause  the resulting  executable  to  be --
+-- covered  by the  GNU  General  Public  License.  This exception does not --
+-- however invalidate  any other reasons why  the executable file  might be --
+-- covered by the  GNU Public License.                                      --
+--                                                                          --
+--                  PolyORB is maintained by AdaCore                        --
+--                     (email: sales@adacore.com)                           --
+--                                                                          --
+------------------------------------------------------------------------------
+
+--  In-place chained lists
+
+--  This unit provides a chained list data type operating on any limited type
+--  that exposes Next and (for the doubly linked case) Previous pointers.
+--  None of the provided list operations use any dynamic memory allocation.
+
+pragma Ada_2005;
+
+package PolyORB.Utils.Ilists is
+
+   pragma Preelaborate;
+
+   type Link_Type is (Prev, Next);
+
+   generic
+      type T (<>) is limited private;
+      type T_Acc is access all T;
+      with function Link
+        (X : access T; Which : Link_Type) return access T_Acc is <>;
+      --  Accessor for the list pointers. For a doubly linked list, Prev and
+      --  Next must be supported. For a simply linked list, only Next needs to
+      --  be supported.
+
+      Doubly_Linked : Boolean;
+      --  If True, the list is doubly linked
+
+   package Lists is
+      type List is private;
+      --  A list of objects of type T
+
+      type Iterator is private;
+      --  Iterator over List
+
+      procedure Append (L : in out List; X : access T);
+      --  Append X to L. Note that any given object cannot be appended to more
+      --  than one list (from the same instance of this unit) at a given time.
+
+      procedure Prepend (L : in out List; X : access T);
+      --  Prepend X to L. Note that any given object cannot be appended to more
+      --  than one list (from the same instance of this unit) at a given time.
+
+      procedure Remove (L : in out List; It : in out Iterator);
+      --  Remove the element denoted by L and advance It to the next element
+      --  in L.
+
+      procedure Remove_Element (L : in out List; X : access T);
+      --  Remove X from L (L needs to be doubly linked)
+
+      procedure Remove_Element (L : in out List; X : access T; PX : access T);
+      --  Remove X from L (L may be simply linked). PX is the previous element
+      --  in L.
+
+      function First (L : List) return Iterator;
+      --  Return an iterator denoting the first element of L
+
+      function Last (L : List) return Iterator;
+      --  Return an iterator denoting a position past the last element of L
+
+      procedure Next (It : in out Iterator);
+      --  Advance It to the next element in its list
+
+      function Last (It : Iterator) return Boolean;
+      --  True when It is past the last element in its list
+
+      function Value (It : Iterator) return T_Acc;
+      --  Return the element at It
+
+      function Length (L : List) return Natural;
+      --  Return the length of L
+
+      function Is_Empty (L : List) return Boolean;
+      --  True when L has no elements
+
+   private
+      pragma Inline (First);
+      pragma Inline (Next);
+      pragma Inline (Last);
+      pragma Inline (Value);
+      pragma Inline (Length);
+      pragma Inline (Is_Empty);
+
+      type Iterator is new T_Acc;
+
+      type List is record
+         First, Last : T_Acc;
+         Length      : Natural := 0;
+      end record;
+
+   end Lists;
+
+end PolyORB.Utils.Ilists;
============================================================
--- testsuite/corba/performance/java/Makefile	dfb0bb2fd6c08a04744e1343f34bf7d0efabd79e
+++ testsuite/corba/performance/java/Makefile	dfb0bb2fd6c08a04744e1343f34bf7d0efabd79e
@@ -0,0 +1,16 @@
+
+all:
+	idlj -fall benchs.idl
+	javac benchsServer.java benchsPackage/*.java
+#	orbd -ORBInitialPort 1050 -ORBInitialHost localhost
+	java benchsServer -ORBInitialPort 1050 -ORBInitialHost localhost
+
+clean:
+	rm -rf *.class \
+		benchsHelper.java \
+		benchs.java \
+		benchsPOA.java \
+		benchsHolder.java \
+		benchsOperations.java \
+		_benchsStub.java \
+		benchsPackage
============================================================
--- testsuite/corba/performance/java/benchs.idl	0383f70a59878d96dd5dea9191db7e11a0b1f191
+++ testsuite/corba/performance/java/benchs.idl	0383f70a59878d96dd5dea9191db7e11a0b1f191
@@ -0,0 +1,122 @@
+//--------------------------------------------------------------------------//
+//                                                                          //
+//                           POLYORB COMPONENTS                             //
+//                                                                          //
+//                               B E N C H S                                //
+//                                                                          //
+//                                  I D L                                   //
+//                                                                          //
+//           Copyright (C) 2009, Free Software Foundation, Inc.             //
+//                                                                          //
+// PolyORB is free software; you  can  redistribute  it and/or modify it    //
+// under terms of the  GNU General Public License as published by the  Free //
+// Software Foundation;  either version 2,  or (at your option)  any  later //
+// version. PolyORB is distributed  in the hope that it will be  useful,    //
+// but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN- //
+// TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public //
+// License  for more details.  You should have received  a copy of the GNU  //
+// General Public License distributed with PolyORB; see file COPYING. If    //
+// not, write to the Free Software Foundation, 51 Franklin Street, Fifth    //
+// Floor, Boston, MA 02111-1301, USA.                                       //
+//                                                                          //
+// As a special exception,  if other files  instantiate  generics from this //
+// unit, or you link  this unit with other files  to produce an executable, //
+// this  unit  does not  by itself cause  the resulting  executable  to  be //
+// covered  by the  GNU  General  Public  License.  This exception does not //
+// however invalidate  any other reasons why  the executable file  might be //
+// covered by the  GNU Public License.                                      //
+//                                                                          //
+//                  PolyORB is maintained by AdaCore                        //
+//                     (email: sales@adacore.com)                           //
+//                                                                          //
+//--------------------------------------------------------------------------//
+// This IDL file is used to benchmarks CORBA application. Each
+// function is expected to return a value equal to its parameter. It
+// allows one to evaluate the impact of parameter
+// marshalling/unmarshalling on ORB performance.
+
+interface benchs {
+
+  // fonction without parameter
+  short noParameter ();
+
+  // procedure with variable name length
+  void azerty ();
+
+  // fonction with one parameter
+  // Simple types
+  boolean echoBoolean(in boolean arg) ;
+  short echoShort(in short arg) ;
+  long echoLong(in long arg) ;
+
+  float echoFloat(in float arg) ;
+  double echoDouble(in double arg) ;
+  char echoChar(in char arg) ;
+  wchar echoWChar(in wchar arg) ;
+  string echoString (in string arg) ;
+  wstring echoWstring (in wstring arg) ;
+
+  // Enum
+  enum Color { Red, Green, Blue };
+  Color echoColor (in Color arg);
+
+  // Array of enum
+  typedef Color Rainbow[7];
+  Rainbow echoRainbow (in Rainbow arg);
+
+
+  // Unions
+  union myUnion switch (long) {
+  case 1: long    Counter;
+  case 2: boolean Flag;
+  case 3: Color   Hue;
+  default: long Unknown;
+  };
+
+  myUnion echoUnion (in myUnion arg);
+
+  union myUnionEnumSwitch switch (Color) {
+  case Red:   long   foo;
+  case Green: short  bar;
+  case Blue:  string baz;
+  };
+  myUnionEnumSwitch echoUnionEnumSwitch (in myUnionEnumSwitch arg);
+
+  // Structs
+  struct simple_struct {
+    long a;
+    string s;
+  };
+  simple_struct echoStruct (in simple_struct arg);
+
+  struct array_struct {
+    long a[10];
+    unsigned short b;
+  };
+  array_struct echoArrayStruct (in array_struct arg);
+
+  // Big arrays
+  // ----------
+
+  typedef long sixteenKb[64][64];
+  sixteenKb echoSixteenKb (in sixteenKb arg);
+
+//  struct composite_struct {
+//    fixed<12,3> fixedMember;
+//    sequence<sequence<octet> > seqseqMember;
+//    long double matrixMember[3][4];
+//  };
+
+  struct nested_struct {
+    simple_struct ns;
+  };
+  nested_struct echoNestedStruct (in nested_struct arg);
+
+
+   // Sequences
+  typedef sequence<short> U_sequence;
+  U_sequence echoUsequence (in U_sequence arg);
+
+  // stop the server
+  void StopServer ();
+};
============================================================
--- testsuite/corba/performance/java/benchsServer.java	325253d97716cc69eadec2ab2c3e306fb04978be
+++ testsuite/corba/performance/java/benchsServer.java	325253d97716cc69eadec2ab2c3e306fb04978be
@@ -0,0 +1,153 @@
+//--------------------------------------------------------------------------//
+//                                                                          //
+//                           POLYORB COMPONENTS                             //
+//                                                                          //
+//                         b e n c h s S e r v e r                          //
+//                                                                          //
+//                                 J A V A                                  //
+//                                                                          //
+//           Copyright (C) 2009, Free Software Foundation, Inc.             //
+//                                                                          //
+// PolyORB is free software; you  can  redistribute  it and/or modify it    //
+// under terms of the  GNU General Public License as published by the  Free //
+// Software Foundation;  either version 2,  or (at your option)  any  later //
+// version. PolyORB is distributed  in the hope that it will be  useful,    //
+// but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN- //
+// TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public //
+// License  for more details.  You should have received  a copy of the GNU  //
+// General Public License distributed with PolyORB; see file COPYING. If    //
+// not, write to the Free Software Foundation, 51 Franklin Street, Fifth    //
+// Floor, Boston, MA 02111-1301, USA.                                       //
+//                                                                          //
+// As a special exception,  if other files  instantiate  generics from this //
+// unit, or you link  this unit with other files  to produce an executable, //
+// this  unit  does not  by itself cause  the resulting  executable  to  be //
+// covered  by the  GNU  General  Public  License.  This exception does not //
+// however invalidate  any other reasons why  the executable file  might be //
+// covered by the  GNU Public License.                                      //
+//                                                                          //
+//                  PolyORB is maintained by AdaCore                        //
+//                     (email: sales@adacore.com)                           //
+//                                                                          //
+//--------------------------------------------------------------------------//
+import org.omg.CORBA.*;
+import org.omg.PortableServer.*;
+
+class benchsImpl extends benchsPOA {
+  private ORB orb;
+  private short data = 123;
+
+  public void setORB (ORB orb_val) {
+    orb = orb_val;
+  }
+
+  public short noParameter () {
+    return data;
+  }
+
+  public void azerty () {
+  }
+
+  public boolean echoBoolean (boolean arg) {
+    return arg;
+  }
+
+  public short echoShort (short arg) {
+    return arg;
+  }
+
+  public int echoLong (int arg) {
+    return arg;
+  }
+
+  public float echoFloat (float arg) {
+    return arg;
+  }
+
+  public double echoDouble (double arg) {
+    return arg;
+  }
+
+  public char echoChar (char arg) {
+    return arg;
+  }
+
+  public char echoWChar (char arg) {
+    return arg;
+  }
+
+  public String echoString (String arg) {
+    return arg;
+  }
+
+  public String echoWstring (String arg) {
+    return arg;
+  }
+
+  public benchsPackage.Color echoColor (benchsPackage.Color arg) {
+    return arg;
+  }
+
+  public benchsPackage.Color[] echoRainbow (benchsPackage.Color[] arg) {
+    return arg;
+  }
+
+  public benchsPackage.myUnion echoUnion (benchsPackage.myUnion arg) {
+    return arg;
+  }
+
+  public benchsPackage.myUnionEnumSwitch echoUnionEnumSwitch (benchsPackage.myUnionEnumSwitch arg) {
+    return arg;
+  }
+
+  public benchsPackage.simple_struct echoStruct (benchsPackage.simple_struct arg) {
+    return arg;
+  }
+
+  public benchsPackage.array_struct echoArrayStruct (benchsPackage.array_struct arg) {
+    return arg;
+  }
+
+  public int[][] echoSixteenKb (int[][] arg) {
+    return arg;
+  }
+
+  public benchsPackage.nested_struct echoNestedStruct (benchsPackage.nested_struct arg) {
+    return arg;
+  }
+
+  public short[] echoUsequence (short[] arg) {
+    return arg;
+  }
+
+  public void StopServer () {
+    orb.shutdown(false);
+  }
+}
+
+public class benchsServer {
+
+  public static void main (String args[]) {
+    try {
+      ORB orb = ORB.init (args, null);
+      POA poa = POAHelper.narrow (orb.resolve_initial_references ("RootPOA"));
+      poa.the_POAManager ().activate ();
+
+      benchsImpl impl = new benchsImpl ();
+      impl.setORB (orb);
+      benchs ref = benchsHelper.narrow (poa.servant_to_reference (impl));
+
+      System.out.println (orb.object_to_string (ref));
+      System.out.println ("benchServer ready and waiting...");
+
+      orb.run ();
+
+    } catch (Exception e) {
+      System.err.println ("ERROR: " + e);
+      e.printStackTrace (System.out);
+    }
+
+    System.out.println ("benchServer Exiting...");
+  }
+
+}
============================================================
--- MANIFEST	beaa6ff2ced91a674fbd62d84038eecee7ce4c8d
+++ MANIFEST	3650d7c4d95f47132a24bd91ab8215d95931b59c
@@ -6,6 +6,7 @@ README
 Makefile.in
 NEWS
 README
+README.DSA
 VERSION
 acinclude.m4
 aclocal.m4
@@ -589,13 +590,38 @@ examples/corba/send/test-printer-impl.ad
 examples/corba/send/test-controller-impl.ads
 examples/corba/send/test-printer-impl.adb
 examples/corba/send/test-printer-impl.ads
-examples/dsa/Makefile.local
-examples/dsa/echo/README
+examples/dsa/README
+examples/dsa/connections/client.adb
+examples/dsa/connections/connect.cfg
+examples/dsa/connections/connections.ads
+examples/dsa/connections/hub.adb
+examples/dsa/connections/hub.ads
+examples/dsa/connections/hub_main.adb
+examples/dsa/connections/listeners.adb
+examples/dsa/connections/listeners.ads
+examples/dsa/connections/server.adb
+examples/dsa/demo/client_main.adb
+examples/dsa/demo/matrices.adb
+examples/dsa/demo/matrices.ads
+examples/dsa/demo/noproc.adb
+examples/dsa/demo/rci.adb
+examples/dsa/demo/rci.ads
+examples/dsa/demo/rt.ads
+examples/dsa/demo/sp.ads
+examples/dsa/demo/testbed.cfg
 examples/dsa/echo/client.adb
 examples/dsa/echo/echo.cfg
 examples/dsa/echo/server.adb
 examples/dsa/echo/server.ads
-examples/dsa/local.gpr
+examples/dsa/mailboxes/client.adb
+examples/dsa/mailboxes/hub.adb
+examples/dsa/mailboxes/hub.ads
+examples/dsa/mailboxes/hub_main.adb
+examples/dsa/mailboxes/mail.cfg
+examples/dsa/mailboxes/mailboxes-active.adb
+examples/dsa/mailboxes/mailboxes-active.ads
+examples/dsa/mailboxes/mailboxes.ads
+examples/dsa/mailboxes/server.adb
 examples/moma/Makefile.local
 examples/moma/README
 examples/moma/client.adb
@@ -1324,6 +1350,7 @@ src/polyorb-binding_object_qos.ads
 src/polyorb-binding_data_qos.ads
 src/polyorb-binding_object_qos.adb
 src/polyorb-binding_object_qos.ads
+src/polyorb-binding_objects-lists.ads
 src/polyorb-binding_objects.adb
 src/polyorb-binding_objects.ads
 src/polyorb-buffers.adb
@@ -1589,6 +1616,8 @@ src/polyorb-setup.ads
 src/polyorb-setup-tasking-ravenscar.ads
 src/polyorb-setup-tasking.ads
 src/polyorb-setup.ads
+src/polyorb-smart_pointers-controlled_entities.adb
+src/polyorb-smart_pointers-controlled_entities.ads
 src/polyorb-smart_pointers-initialization.adb
 src/polyorb-smart_pointers-initialization.ads
 src/polyorb-smart_pointers.adb
@@ -1686,6 +1715,8 @@ src/polyorb-utils-htables.ads
 src/polyorb-utils-htables-perfect.adb
 src/polyorb-utils-htables-perfect.ads
 src/polyorb-utils-htables.ads
+src/polyorb-utils-ilists.adb
+src/polyorb-utils-ilists.ads
 src/polyorb-utils-random.adb
 src/polyorb-utils-random.ads
 src/polyorb-utils-report.adb
============================================================
--- compilers/gnatdist/xe_utils.adb	74d04cc35273e32850a84734cfe4f5cf2c2af286
+++ compilers/gnatdist/xe_utils.adb	1369f8f06066604a9f7f4b3036904315dc8045bd
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 1995-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 1995-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -866,10 +866,13 @@ package body XE_Utils is
          return;
       end if;

-      if Program_Args = Binder or else Program_Args = Linker then
-         Add_Make_Switch (Argv);
-         return;
-      end if;
+      case Program_Args is
+         when Compiler | Binder | Linker =>
+            Add_Make_Switch (Argv);
+            return;
+         when others =>
+            null;
+      end case;

       if Project_File_Name_Expected then
          Project_File_Name          := new String'(Normalize_Pathname (Argv));
============================================================
--- features-26	5e90266bc20d4c6bcdc0235f37465302fe1b007a
+++ features-26	051e40959808a48a6b8b0207f78a773538c2ff82
@@ -1,8 +1,8 @@
-========================================================
-PolyORB 2.6 NEW FEATURES LIST Current as of Feb 12, 2009
-========================================================
+=============================
+PolyORB 2.6 NEW FEATURES LIST
+=============================

-Copyright (c) 2008, AdaCore
+Copyright (C) 2009, AdaCore

 This file contains a complete list of new features in version 2.5 of PolyORB.
 See also file NEWS for various information about this release.
@@ -12,6 +12,14 @@ subsequent releases.
 subsequent to this date will contain the indicated feature, as will any
 subsequent releases.

+N6-26-I320-027 Performance of neutral and protocol layers (2009-04-14)
+
+   The performance of the neutral and protocol layers has been improved
+   significantly by guarding some costly and seldom useful debugging traces
+   with appropriate configuration knobs, and by rewriting the management
+   routines for some internal data structures to avoid repeated memory
+   allocations and deallocations.
+
 NF-26-H731-006 Improved handling of unbounded string arguments (2009-02-12)

    When using the Ada DSA applicative personality, remote calls involving
============================================================
--- src/corba/corba-impl.ads	aa835283edc63b97e1deb24eef71aae532258efa
+++ src/corba/corba-impl.ads	718a38a5b5443f36dc1e1d78d91d4d887d93f70d
@@ -6,12 +6,12 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---         Copyright (C) 2001-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2001-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- This specification is derived from the CORBA Specification, and adapted  --
 -- for use with PolyORB. The copyright notice above, and the license        --
--- provisions that follow apply solely to the contents neither explicitly   --
--- nor implicitly specified by the CORBA Specification defined by the OMG.  --
+-- provisions that follow apply solely to the contents neither explicitely  --
+-- nor implicitely specified by the CORBA Specification defined by the OMG. --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -33,19 +33,20 @@ with PolyORB.Smart_Pointers;
 with PolyORB.Components;
 with PolyORB.Servants;
 with PolyORB.Smart_Pointers;
+with PolyORB.Smart_Pointers.Controlled_Entities;

 package CORBA.Impl is

    pragma Elaborate_Body;

-   type Object is abstract new PolyORB.Smart_Pointers.Entity
-     with private;
+   package PSPCE renames PolyORB.Smart_Pointers.Controlled_Entities;
+
+   type Object is abstract new PSPCE.Entity with private;
+
    subtype Object_Ptr is PolyORB.Smart_Pointers.Entity_Ptr;
    --  Object_Ptr is the return type of CORBA.AbstractBase.Object_Of.
-   --  It may either designate an actual local object
-   --  (a CORBA.Impl.Object'Class), or a surrogate thereof
-   --  (a PolyORB.Smart_Pointers.Entity'Class not derived from
-   --  CORBA.Impl.Object).
+   --  It may either designate an actual local object (CORBA.Impl.Object'Class)
+   --  or a surrogate thereof.

    function Execute_Servant
      (Self : not null access Object;
@@ -78,7 +79,7 @@ private
       Msg  : PolyORB.Components.Message'Class)
      return PolyORB.Components.Message'Class;

-   type Object is abstract new PolyORB.Smart_Pointers.Entity with record
+   type Object is abstract new PSPCE.Entity with record
       Neutral_View : aliased Implementation (Object'Access);
       --  The PolyORB (personality-neutral) view of this servant.
       --  See also PolyORB.Minimal_Servant.
============================================================
--- src/corba/corba-object-helper.adb	c57cd12d420117a4f3e18e7c9ce72b1f03978a36
+++ src/corba/corba-object-helper.adb	9ac407e68d900308b7d42902f4f66a276c98edfc
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2001-2007, Free Software Foundation, Inc.          --
+--         Copyright (C) 2001-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -37,11 +37,9 @@ package body CORBA.Object.Helper is
    --------------

    function From_Any (Item : Any) return CORBA.Object.Ref is
-      Result : CORBA.Object.Ref;
    begin
-      CORBA.Object.Internals.Convert_To_CORBA_Ref
-        (PolyORB.Any.ObjRef.From_Any (PolyORB.Any.Any (Item)), Result);
-      return Result;
+      return CORBA.Object.Internals.To_CORBA_Ref
+        (PolyORB.Any.ObjRef.From_Any (PolyORB.Any.Any (Item)));
    end From_Any;

    ------------
============================================================
--- src/corba/corba-object.adb	67106837169e07ab8ab2cc086006b834080cf1a5
+++ src/corba/corba-object.adb	7e882b38a09a51f3a067eae19583de4e36d43d13
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2001-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2001-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -44,16 +44,11 @@ package body CORBA.Object is

    use PolyORB.Smart_Pointers;

-   type Internal_Object is new PolyORB.Smart_Pointers.Entity with record
-      The_Object : PolyORB.Objects.Object_Id_Access;
-   end record;
-   type Internal_Object_Access is access all Internal_Object;
-
    --  Client stub for remote calls implementing predefined CORBA::Object
-   --  operations
+   --  operations.

-   RPC_Result_Name   : constant PolyORB.Types.Identifier
-                         := To_PolyORB_String ("Result");
+   RPC_Result_Name : constant PolyORB.Types.Identifier :=
+                       To_PolyORB_String ("Result");

    RPC_Is_A_Op_Name  : constant Standard.String := "_is_a";
    RPC_Is_A_Arg_Name : constant PolyORB.Types.Identifier :=
@@ -81,8 +76,7 @@ package body CORBA.Object is

    function Hash
      (Self    : Ref;
-      Maximum : CORBA.Unsigned_Long)
-      return CORBA.Unsigned_Long
+      Maximum : CORBA.Unsigned_Long) return CORBA.Unsigned_Long
    is
       use PolyORB.Utils.HFunctions.Mul;

@@ -97,10 +91,7 @@ package body CORBA.Object is
    -- Get_Interface --
    -------------------

-   function Get_Interface
-     (Self : Ref)
-     return CORBA.Object.Ref'Class
-   is
+   function Get_Interface (Self : Ref) return CORBA.Object.Ref'Class is
       Request          : PolyORB.Requests.Request_Access;
       Arg_List         : PolyORB.Any.NVList.Ref;
       Result           : PolyORB.Any.NamedValue;
@@ -453,18 +444,6 @@ package body CORBA.Object is

    package body Internals is

-      -----------------------
-      -- To_PolyORB_Object --
-      -----------------------
-
-      function To_PolyORB_Object
-        (R : Ref)
-        return PolyORB.Objects.Object_Id
-      is
-      begin
-         return Internal_Object_Access (Entity_Of (R)).The_Object.all;
-      end To_PolyORB_Object;
-
       --------------------
       -- To_PolyORB_Ref --
       --------------------
@@ -481,24 +460,10 @@ package body CORBA.Object is
       function To_CORBA_Ref (R : PolyORB.References.Ref) return Ref is
          Result : Ref;
       begin
-         Convert_To_CORBA_Ref (R, Result);
+         Set (Result, PolyORB.References.Entity_Of (R));
          return Result;
       end To_CORBA_Ref;

-      --------------------------
-      -- Convert_To_CORBA_Ref --
-      --------------------------
-
-      procedure Convert_To_CORBA_Ref
-        (Neutral_Ref : PolyORB.References.Ref;
-         CORBA_Ref   : in out CORBA.Object.Ref'Class)
-      is
-         E : constant PolyORB.Smart_Pointers.Entity_Ptr
-           := PolyORB.References.Entity_Of (Neutral_Ref);
-      begin
-         Set (CORBA_Ref, E);
-      end Convert_To_CORBA_Ref;
-
    end Internals;

    ---------------
============================================================
--- src/corba/corba-object.ads	5ae29a3f4c2a911a546de7440540128ff679fbd7
+++ src/corba/corba-object.ads	ea5942a564aa71d3704415705019ed49022fde03
@@ -6,12 +6,12 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---         Copyright (C) 2001-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2001-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- This specification is derived from the CORBA Specification, and adapted  --
 -- for use with PolyORB. The copyright notice above, and the license        --
--- provisions that follow apply solely to the contents neither explicitly   --
--- nor implicitly specified by the CORBA Specification defined by the OMG.  --
+-- provisions that follow apply solely to the contents neither explicitely  --
+-- nor implicitely specified by the CORBA Specification defined by the OMG. --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -30,7 +30,6 @@
 --                                                                          --
 ------------------------------------------------------------------------------

-with PolyORB.Objects;
 with PolyORB.References;

 with CORBA.AbstractBase;
@@ -44,13 +43,10 @@ package CORBA.Object is

    type Ref is new CORBA.AbstractBase.Ref with private;

-   function Get_Interface
-     (Self : Ref)
-     return CORBA.Object.Ref'Class;
+   function Get_Interface (Self : Ref) return CORBA.Object.Ref'Class;

    function Is_Nil  (Self : Ref) return CORBA.Boolean;
-   function Is_Null (Self : Ref) return CORBA.Boolean
-     renames Is_Nil;
+   function Is_Null (Self : Ref) return CORBA.Boolean renames Is_Nil;

    procedure Duplicate (Self : in out Ref);

@@ -58,8 +54,7 @@ package CORBA.Object is

    function Is_A
      (Self            : Ref;
-      Logical_Type_Id : Standard.String)
-     return CORBA.Boolean;
+      Logical_Type_Id : Standard.String) return CORBA.Boolean;

    function Non_Existent (Self : Ref) return CORBA.Boolean;

@@ -100,8 +95,7 @@ package CORBA.Object is

    function Hash
      (Self    : Ref;
-      Maximum : CORBA.Unsigned_Long)
-     return CORBA.Unsigned_Long;
+      Maximum : CORBA.Unsigned_Long) return CORBA.Unsigned_Long;

    --  Implementation Note: The following policy management related
    --  Object operations were moved into child package
@@ -139,27 +133,15 @@ package CORBA.Object is
    function TC_Object return CORBA.TypeCode.Object;

    function  Object_To_String
-     (Obj : CORBA.Object.Ref'Class)
-     return CORBA.String;
+     (Obj : CORBA.Object.Ref'Class) return CORBA.String;

    package Internals is

       --  Implementation Note: This package defines internal subprograms
       --  specific to PolyORB. You must not use them.

-      function To_PolyORB_Object
-        (R : Ref)
-        return PolyORB.Objects.Object_Id;
-      --  XXX What is this supposed to do?
-      --   It is not possible in general to associate a PolyORB Object_Id
-      --   with a CORBA.Object.Ref. This can be done only when R designates
-      --   an object located on this middleware instance.
-
       function To_PolyORB_Ref (R : Ref) return PolyORB.References.Ref;
       function To_CORBA_Ref (R : PolyORB.References.Ref) return Ref;
-      procedure Convert_To_CORBA_Ref
-        (Neutral_Ref : PolyORB.References.Ref;
-         CORBA_Ref   : in out CORBA.Object.Ref'Class);
       --  Conversion functions between CORBA and neutral references.

    end Internals;
============================================================
--- src/corba/corba-orb.adb	a74270a24b312144fa0b01230403f4c6fe6ff328
+++ src/corba/corba-orb.adb	e7ec35ffe299d70cb6c2fad615ddbee7bc569d2f
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2001-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2001-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -44,7 +44,6 @@ with PolyORB.ORB;

 with PolyORB.Log;
 with PolyORB.ORB;
-with PolyORB.Objects;
 with PolyORB.Parameters;
 with PolyORB.References.IOR;
 with PolyORB.Setup;
@@ -622,32 +621,6 @@ package body CORBA.ORB is
       end if;
    end Initialize;

-   ----------------------
-   -- Create_Reference --
-   ----------------------
-
-   function Create_Reference
-     (Object : CORBA.Object.Ref;
-      Typ    : Standard.String)
-     return PolyORB.References.Ref is
-   begin
-      if The_ORB = null then
-         Raise_Internal (CORBA.Default_Sys_Member);
-      end if;
-
-      declare
-         Result : PolyORB.References.Ref;
-
-         Oid : constant PolyORB.Objects.Object_Id_Access :=
-           new PolyORB.Objects.Object_Id'
-           (CORBA.Object.Internals.To_PolyORB_Object (Object));
-      begin
-         PolyORB.ORB.Create_Reference (The_ORB, Oid, Typ, Result);
-
-         return Result;
-      end;
-   end Create_Reference;
-
    -------------------
    -- Create_Policy --
    -------------------
============================================================
--- src/corba/corba-orb.ads	aa906897ac4eb3ded98bbb78fda830d0e1891545
+++ src/corba/corba-orb.ads	880b3419411d9d3682a7795c5f8d2777b1e3324d
@@ -6,12 +6,12 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---         Copyright (C) 2001-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2001-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- This specification is derived from the CORBA Specification, and adapted  --
 -- for use with PolyORB. The copyright notice above, and the license        --
--- provisions that follow apply solely to the contents neither explicitly   --
--- nor implicitly specified by the CORBA Specification defined by the OMG.  --
+-- provisions that follow apply solely to the contents neither explicitely  --
+-- nor implicitely specified by the CORBA Specification defined by the OMG. --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -39,8 +39,6 @@ with CORBA.Sequences.Unbounded;
 with CORBA.Policy;
 with CORBA.Sequences.Unbounded;

-with PolyORB.References;
-
 package CORBA.ORB is

    pragma Elaborate_Body;
@@ -225,13 +223,6 @@ package CORBA.ORB is
    --  Implementation Note: this procedure is deprecated, use
    --  CORBA.ORB.Init instead

-   function Create_Reference
-     (Object : CORBA.Object.Ref;
-      Typ    : Standard.String)
-     return PolyORB.References.Ref;
-   --  Create an object reference that designates object Oid
-   --  of type Typ within this ORB.
-
    -------------------------------------
    -- CORBA.ORB Exceptions Management --
    -------------------------------------
============================================================
--- src/corba/polyorb-corba_p-interceptors_hooks.ads	98eaddd0e37a6905523f11a7e60b895564db8cfb
+++ src/corba/polyorb-corba_p-interceptors_hooks.ads	aed849baa66bd04eae5b88c9cbce4483adf3a260
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---         Copyright (C) 2004-2006, Free Software Foundation, Inc.          --
+--         Copyright (C) 2004-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -31,16 +31,18 @@ with PolyORB.Requests;
 with PolyORB.Errors;
 with PolyORB.POA;
 with PolyORB.Requests;
-with PolyORB.Smart_Pointers;
+with PolyORB.Smart_Pointers.Controlled_Entities;

 package PolyORB.CORBA_P.Interceptors_Hooks is

+   package PSPCE renames PolyORB.Smart_Pointers.Controlled_Entities;
+
    type Client_Invoke_Handler is access procedure
      (Self  : PolyORB.Requests.Request_Access;
       Flags : PolyORB.Requests.Flags);

    type Server_Invoke_Handler is access procedure
-     (Self    : access PolyORB.Smart_Pointers.Entity'Class;
+     (Self    : access PSPCE.Entity'Class;
       --  Actually must be PortableServer.DynamicImplementation'Class.
       Request : PolyORB.Requests.Request_Access;
       Profile : PolyORB.Binding_Data.Profile_Access);
============================================================
--- src/corba/polyorb-corba_p-local.ads	ebcf72aace438dfd761f113048b97257ab52b7fa
+++ src/corba/polyorb-corba_p-local.ads	a2dda3cf96c7a578dbc26a8aefe9cba6f4be403c
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---         Copyright (C) 2004-2006, Free Software Foundation, Inc.          --
+--         Copyright (C) 2004-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -28,11 +28,13 @@ with PolyORB.Smart_Pointers;
 with CORBA.Object;

 with PolyORB.Smart_Pointers;
+with PolyORB.Smart_Pointers.Controlled_Entities;

 package PolyORB.CORBA_P.Local is

    type Local_Object_Base is
-      abstract new PolyORB.Smart_Pointers.Entity with null record;
+      abstract new PolyORB.Smart_Pointers.Controlled_Entities.Entity
+      with null record;

    type Local_Object_Base_Ref is access all Local_Object_Base'Class;

============================================================
--- src/corba/polyorb-corba_p-policy.ads	ec6aa6561b854cc389e1fc3a118298abfd52d1a9
+++ src/corba/polyorb-corba_p-policy.ads	91a076df115ca593c8c518d25c4003d11ca73d56
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---            Copyright (C) 2003 Free Software Foundation, Inc.             --
+--         Copyright (C) 2003-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -16,23 +16,25 @@
 -- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
 -- License  for more details.  You should have received  a copy of the GNU  --
 -- General Public License distributed with PolyORB; see file COPYING. If    --
--- not, write to the Free Software Foundation, 59 Temple Place - Suite 330, --
--- Boston, MA 02111-1307, USA.                                              --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth    --
+-- Floor, Boston, MA 02111-1301, USA.                                       --
 --                                                                          --
 --                                                                          --
---                PolyORB is maintained by ACT Europe.                      --
---                    (email: sales@act-europe.fr)                          --
+--                  PolyORB is maintained by AdaCore                        --
+--                     (email: sales@adacore.com)                           --
 --                                                                          --
 ------------------------------------------------------------------------------

 with CORBA;

-with PolyORB.Smart_Pointers;
+with PolyORB.Smart_Pointers.Controlled_Entities;

 package PolyORB.CORBA_P.Policy is

-   type Policy_Object_Type is new PolyORB.Smart_Pointers.Entity with private;
+   package PSPCE renames PolyORB.Smart_Pointers.Controlled_Entities;

+   type Policy_Object_Type is new PSPCE.Entity with private;
+
    type Policy_Object_Ptr is access all Policy_Object_Type'Class;

    function Get_Policy_Type
@@ -53,7 +55,7 @@ private

 private

-   type Policy_Object_Type is new PolyORB.Smart_Pointers.Entity with record
+   type Policy_Object_Type is new PSPCE.Entity with record
       Policy : CORBA.PolicyType;
       Value  : CORBA.Any;
    end record;
============================================================
--- src/corba/portableinterceptor/polyorb-corba_p-interceptors.adb	33539a6fd20c74ca0a00d77d2abdedbe279fb449
+++ src/corba/portableinterceptor/polyorb-corba_p-interceptors.adb	fe5649fdf103fa33e133623f45760cdbadc7bacc
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2004-2007, Free Software Foundation, Inc.          --
+--         Copyright (C) 2004-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -42,7 +42,7 @@ with PolyORB.Request_QoS;
 with PolyORB.References;
 with PolyORB.Requests;
 with PolyORB.Request_QoS;
-with PolyORB.Smart_Pointers;
+with PolyORB.Smart_Pointers.Controlled_Entities;
 with PolyORB.Tasking.Mutexes;
 with PolyORB.Tasking.Threads.Annotations;
 with PolyORB.Utils.Chained_Lists;
@@ -68,6 +68,8 @@ package body PolyORB.CORBA_P.Interceptor
    use PolyORB.Tasking.Threads.Annotations;
    use type PolyORB.Any.TypeCode.Local_Ref;

+   package PSPCE renames PolyORB.Smart_Pointers.Controlled_Entities;
+
    --  Client Interceptors

    function "="
@@ -123,7 +125,7 @@ package body PolyORB.CORBA_P.Interceptor
    All_Server_Interceptors : ServerRequestInterceptor_Lists.List;

    procedure Server_Invoke
-     (Servant : access PolyORB.Smart_Pointers.Entity'Class;
+     (Servant : access PSPCE.Entity'Class;
       Request : PolyORB.Requests.Request_Access;
       Profile : PolyORB.Binding_Data.Profile_Access);

@@ -516,13 +518,12 @@ package body PolyORB.CORBA_P.Interceptor

       Req_Id  : constant CORBA.Unsigned_Long := Allocate_Request_Id;

-      Target  : CORBA.Object.Ref;
+      Target  : constant CORBA.Object.Ref :=
+                  CORBA.Object.Internals.To_CORBA_Ref (Request.Target);
       TSC     : Slots_Note;
       Index   : Natural;

    begin
-      CORBA.Object.Internals.Convert_To_CORBA_Ref (Request.Target, Target);
-
       --  Getting thread scope slots information (allocating thread scope
       --  slots if it is not allocated), and make "logical copy" and place it
       --  in the request.
@@ -964,7 +965,7 @@ package body PolyORB.CORBA_P.Interceptor
    -------------------

    procedure Server_Invoke
-     (Servant : access PolyORB.Smart_Pointers.Entity'Class;
+     (Servant : access PSPCE.Entity'Class;
       Request : PolyORB.Requests.Request_Access;
       Profile : PolyORB.Binding_Data.Profile_Access)
    is
============================================================
--- src/corba/portableinterceptor/portableinterceptor-clientrequestinfo-impl.adb	cac49b4a2e4473fd221126bf44c67e0e8029cffa
+++ src/corba/portableinterceptor/portableinterceptor-clientrequestinfo-impl.adb	c3de8260da334b5da747b383621e9ce5c2894198
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2004-2007, Free Software Foundation, Inc.          --
+--         Copyright (C) 2004-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -339,16 +339,10 @@ package body PortableInterceptor.ClientR
    --------------------------

    function Get_Effective_Target
-     (Self : access Object)
-      return CORBA.Object.Ref
+     (Self : access Object) return CORBA.Object.Ref
    is
-      Result : CORBA.Object.Ref;
-
    begin
-      CORBA.Object.Internals.Convert_To_CORBA_Ref
-        (Self.Request.Target, Result);
-
-      return Result;
+      return CORBA.Object.Internals.To_CORBA_Ref (Self.Request.Target);
    end Get_Effective_Target;

    --------------------
============================================================
--- src/corba/portableinterceptor/portableinterceptor-requestinfo-impl.adb	48c4ae913c97a8cc8746d665bdbd325aa6449564
+++ src/corba/portableinterceptor/portableinterceptor-requestinfo-impl.adb	2e0f63207cc029df0ab83756522ef633e44d3b97
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2004-2007, Free Software Foundation, Inc.          --
+--         Copyright (C) 2004-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -128,15 +128,10 @@ package body PortableInterceptor.Request
                      PolyORB.Errors.Helper.From_Any
                        (Self.Request.Exception_Info);
          Ref     : PolyORB.References.Ref;
-         Result  : CORBA.Object.Ref;
       begin
          PolyORB.References.Set
-           (Ref,
-            PolyORB.Smart_Pointers.Entity_Of (Members.Forward_Reference));
-
-         CORBA.Object.Internals.Convert_To_CORBA_Ref (Ref, Result);
-
-         return Result;
+           (Ref, PolyORB.Smart_Pointers.Entity_Of (Members.Forward_Reference));
+         return CORBA.Object.Internals.To_CORBA_Ref (Ref);
       end;
    end Get_Forward_Reference;

============================================================
--- src/corba/portableserver-current.adb	91160a73769d5b1532f8f49c5056cda45a986c3d
+++ src/corba/portableserver-current.adb	669e5f4863f051651cdcc9866deea0a02887883e
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2003-2006, Free Software Foundation, Inc.          --
+--         Copyright (C) 2003-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -211,12 +211,8 @@ package body PortableServer.Current is

    function Get_Reference (Self : Local_Ref) return CORBA.Object.Ref is
       pragma Unreferenced (Self);
-
       use type PolyORB.Requests.Request_Access;
-
       Note   : PortableServer_Current_Note;
-      Result : CORBA.Object.Ref;
-
    begin
       Get_Note (Get_Current_Thread_Notepad.all, Note,
                 Null_PortableServer_Current_Note);
@@ -225,10 +221,7 @@ package body PortableServer.Current is
          Raise_NoContext ((CORBA.IDL_Exception_Members with null record));
       end if;

-      CORBA.Object.Internals.Convert_To_CORBA_Ref
-        (Note.Request.Target, Result);
-
-      return Result;
+      return CORBA.Object.Internals.To_CORBA_Ref (Note.Request.Target);
    end Get_Reference;

    -----------------
============================================================
--- src/corba/portableserver-poa.adb	1dbebd0259567e516a0ef0e7d9514c931abff12e
+++ src/corba/portableserver-poa.adb	b8f54372ff8c7c845d1e7f0cf63b5f474f8b0916
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2001-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2001-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -371,19 +371,16 @@ package body PortableServer.POA is
          Oid : aliased PolyORB.POA_Types.Object_Id :=
            PolyORB.POA_Types.U_Oid_To_Oid (U_Oid);

-         P_Result : PolyORB.References.Ref;
-         C_Result : CORBA.Object.Ref;
+         Result : PolyORB.References.Ref;
       begin
          PolyORB.ORB.Create_Reference
            (PolyORB.Setup.The_ORB,
             Oid'Access,
             CORBA.To_Standard_String (Intf),
-            P_Result);
+            Result);
          --  Obtain object reference.

-         CORBA.Object.Internals.Convert_To_CORBA_Ref
-           (P_Result, C_Result);
-         return C_Result;
+         return CORBA.Object.Internals.To_CORBA_Ref (Result);
       end;
    end Create_Reference;

@@ -418,20 +415,16 @@ package body PortableServer.POA is
          A_Oid : aliased PolyORB.POA_Types.Object_Id :=
            PolyORB.POA_Types.U_Oid_To_Oid (U_Oid);

-         P_Result : PolyORB.References.Ref;
-         C_Result : CORBA.Object.Ref;
+         Result : PolyORB.References.Ref;
       begin
          PolyORB.ORB.Create_Reference
            (PolyORB.Setup.The_ORB,
             A_Oid'Access,
             CORBA.To_Standard_String (Intf),
-            P_Result);
+            Result);
          --  Obtain object reference.

-         CORBA.Object.Internals.Convert_To_CORBA_Ref
-           (P_Result, C_Result);
-
-         return C_Result;
+         return CORBA.Object.Internals.To_CORBA_Ref (Result);
       end;
    end Create_Reference_With_Id;

@@ -1475,8 +1468,7 @@ package body PortableServer.POA is

       TID : constant Standard.String :=
               PortableServer.Internals.Get_Type_Id (P_Servant);
-      P_Result : PolyORB.References.Ref;
-      C_Result : CORBA.Object.Ref;
+      Result : PolyORB.References.Ref;

       Error : PolyORB.Errors.Error_Container;
    begin
@@ -1492,7 +1484,7 @@ package body PortableServer.POA is
       end if;

       PolyORB.ORB.Create_Reference
-        (PolyORB.Setup.The_ORB, Oid, TID, P_Result);
+        (PolyORB.Setup.The_ORB, Oid, TID, Result);
       --  Obtain object reference.

       PolyORB.POA_Types.Free (Oid);
@@ -1502,10 +1494,7 @@ package body PortableServer.POA is

       Associate_To_Domain_Managers (P_Servant);

-      CORBA.Object.Internals.Convert_To_CORBA_Ref
-        (P_Result, C_Result);
-
-      return C_Result;
+      return CORBA.Object.Internals.To_CORBA_Ref (Result);
    end Servant_To_Reference;

    -----------------
============================================================
--- src/corba/portableserver.adb	d4a8dd7c9278a39b665b62ab5f09c9cd7de4616d
+++ src/corba/portableserver.adb	edb5a02c82b0284a6305260bf624385996b7eb5b
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2001-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2001-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -37,7 +37,6 @@ with PolyORB.Servants.Iface;
 with PolyORB.Initialization;
 with PolyORB.Log;
 with PolyORB.Servants.Iface;
-with PolyORB.Smart_Pointers;
 with PolyORB.Tasking.Threads.Annotations;
 with PolyORB.Utils.Chained_Lists;
 with PolyORB.Utils.Strings;
@@ -52,6 +51,7 @@ package body PortableServer is
    function C (Level : Log_Level := Debug) return Boolean
      renames L.Enabled;

+   use PolyORB.CORBA_P.Interceptors_Hooks;
    use PolyORB.Utils.Strings;

    ---------------------------------------
@@ -77,29 +77,29 @@ package body PortableServer is
       Skeleton : Internals.Request_Dispatcher;
    end record;

-   Null_Dispatcher_Note : constant Dispatcher_Note
-     := (PolyORB.Annotations.Note with Skeleton => null);
+   Null_Dispatcher_Note : constant Dispatcher_Note :=
+                            (PolyORB.Annotations.Note with Skeleton => null);

    procedure Default_Invoke
-     (Servant : access PolyORB.Smart_Pointers.Entity'Class;
+     (Servant : access PSPCE.Entity'Class;
       Request : PolyORB.Requests.Request_Access;
       Profile : PolyORB.Binding_Data.Profile_Access);
-   --  This is the default server side invocation handler.
+   --  This is the default server side invocation handler

    --------------------
    -- Default_Invoke --
    --------------------

    procedure Default_Invoke
-     (Servant : access PolyORB.Smart_Pointers.Entity'Class;
+     (Servant : access PSPCE.Entity'Class;
       Request : PolyORB.Requests.Request_Access;
       Profile : PolyORB.Binding_Data.Profile_Access)
    is
       pragma Unreferenced (Profile);
    begin
-      Invoke (DynamicImplementation'Class (Servant.all)'Access,
-              Request);
       --  Redispatch
+
+      Invoke (DynamicImplementation'Class (Servant.all)'Access, Request);
    end Default_Invoke;

    ---------------------
============================================================
--- src/corba/rtcorba/rtcorba-current.adb	f26a512485f78e29871b6201827eb8af747e46d6
+++ src/corba/rtcorba/rtcorba-current.adb	9a09e19e2c73b09a77cc3e8c68865339b540b9bb
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2003-2006, Free Software Foundation, Inc.          --
+--         Copyright (C) 2003-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -54,13 +54,10 @@ package body RTCORBA.Current is

    function Create return CORBA.Object.Ref is
       Result : Local_Ref;
-
-      Current : constant PolyORB.Smart_Pointers.Entity_Ptr
-        := new Current_Object;
-
+      Current : constant PolyORB.Smart_Pointers.Entity_Ptr :=
+                  new Current_Object;
    begin
       Set (Result, Current);
-
       return CORBA.Object.Ref (Result);
    end Create;

============================================================
--- src/corba/rtcorba/rtcorba-current.ads	181aca4bca3b31d0190a87cf168c874dd0705b24
+++ src/corba/rtcorba/rtcorba-current.ads	22a004fd9f1ec7f428689d1bd91ba5525133aaf1
@@ -6,12 +6,12 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---         Copyright (C) 2003-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2003-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- This specification is derived from the CORBA Specification, and adapted  --
 -- for use with PolyORB. The copyright notice above, and the license        --
--- provisions that follow apply solely to the contents neither explicitly   --
--- nor implicitly specified by the CORBA Specification defined by the OMG.  --
+-- provisions that follow apply solely to the contents neither explicitely  --
+-- nor implicitely specified by the CORBA Specification defined by the OMG. --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -38,11 +38,12 @@ package RTCORBA.Current is
    type Local_Ref is new CORBA.Current.Local_Ref with private;

    function Get_The_Priority (Self : Local_Ref) return RTCORBA.Priority;
-   procedure Set_The_Priority (Self : Local_Ref; To   : RTCORBA.Priority);
+   procedure Set_The_Priority (Self : Local_Ref; To : RTCORBA.Priority);

 private

    type Local_Ref is new CORBA.Current.Local_Ref with null record;
-   type Current_Object is new PolyORB.Smart_Pointers.Entity with null record;
+   type Current_Object is new PolyORB.Smart_Pointers.Non_Controlled_Entity
+     with null record;

 end RTCORBA.Current;
============================================================
--- src/corba/rtcorba/rtcorba-rtorb.ads	99025f81078249b4cd07bd9e969821cb3328c5d1
+++ src/corba/rtcorba/rtcorba-rtorb.ads	ce280560710036613627002175db16d57edf4abc
@@ -6,12 +6,12 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---         Copyright (C) 2003-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2003-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- This specification is derived from the CORBA Specification, and adapted  --
 -- for use with PolyORB. The copyright notice above, and the license        --
--- provisions that follow apply solely to the contents neither explicitly   --
--- nor implicitly specified by the CORBA Specification defined by the OMG.  --
+-- provisions that follow apply solely to the contents neither explicitely  --
+-- nor implicitely specified by the CORBA Specification defined by the OMG. --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -40,10 +40,12 @@ with PolyORB.Std;

 with PolyORB.Std;

-with PolyORB.Smart_Pointers;
+with PolyORB.Smart_Pointers.Controlled_Entities;

 package RTCORBA.RTORB is

+   package PSPCE renames PolyORB.Smart_Pointers.Controlled_Entities;
+
    type Local_Ref is new CORBA.Object.Ref with private;

    function Create_Mutex
@@ -149,7 +151,6 @@ private
 private

    type Local_Ref is new CORBA.Object.Ref with null record;
+   type RTORB_Object is new PSPCE.Entity with null record;

-   type RTORB_Object is new PolyORB.Smart_Pointers.Entity with null record;
-
 end RTCORBA.RTORB;
============================================================
--- src/corba/rtcorba/rtportableserver-poa.adb	22e7ab563596f6771c2726620f52c4f355bb0084
+++ src/corba/rtcorba/rtportableserver-poa.adb	8be1768c780a4f1e73aff3a1688173190dff7cfb
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2004-2006, Free Software Foundation, Inc.          --
+--         Copyright (C) 2004-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -115,21 +115,19 @@ package body RTPortableServer.POA is
       end if;

       declare
-         Oid : aliased PolyORB.POA_Types.Object_Id
-           := PolyORB.POA_Types.U_Oid_To_Oid (U_Oid);
-
-         P_Result : PolyORB.References.Ref;
-         C_Result : CORBA.Object.Ref;
+         Oid : aliased PolyORB.POA_Types.Object_Id :=
+                 PolyORB.POA_Types.U_Oid_To_Oid (U_Oid);
+         Result : PolyORB.References.Ref;
       begin
+         --  Obtain object reference
+
          PolyORB.ORB.Create_Reference
            (PolyORB.Setup.The_ORB,
             Oid'Access,
             CORBA.To_Standard_String (Intf),
-            P_Result);
-         --  Obtain object reference
+            Result);

-         CORBA.Object.Internals.Convert_To_CORBA_Ref (P_Result, C_Result);
-         return C_Result;
+         return CORBA.Object.Internals.To_CORBA_Ref (Result);
       end;
    end Create_Reference_With_Priority;

@@ -149,8 +147,8 @@ package body RTPortableServer.POA is

       Error : PolyORB.Errors.Error_Container;

-      RT_POA : constant PolyORB.RT_POA.RT_Obj_Adapter_Access
-        := To_RT_POA (Self);
+      RT_POA : constant PolyORB.RT_POA.RT_Obj_Adapter_Access :=
+                 To_RT_POA (Self);

       U_Oid : PolyORB.POA_Types.Unmarshalled_Oid;

@@ -174,22 +172,19 @@ package body RTPortableServer.POA is
       end if;

       declare
-         A_Oid : aliased PolyORB.POA_Types.Object_Id
-           := PolyORB.POA_Types.U_Oid_To_Oid (U_Oid);
-
-         P_Result : PolyORB.References.Ref;
-         C_Result : CORBA.Object.Ref;
+         A_Oid : aliased PolyORB.POA_Types.Object_Id :=
+                   PolyORB.POA_Types.U_Oid_To_Oid (U_Oid);
+         Result : PolyORB.References.Ref;
       begin
+         --  Obtain object reference
+
          PolyORB.ORB.Create_Reference
            (PolyORB.Setup.The_ORB,
             A_Oid'Access,
             CORBA.To_Standard_String (Intf),
-            P_Result);
-         --  Obtain object reference
+            Result);

-         CORBA.Object.Internals.Convert_To_CORBA_Ref (P_Result, C_Result);
-
-         return C_Result;
+         return CORBA.Object.Internals.To_CORBA_Ref (Result);
       end;
    end Create_Reference_With_Id_And_Priority;

@@ -228,9 +223,8 @@ package body RTPortableServer.POA is
       end if;

       declare
-         Oid : constant PolyORB.POA_Types.Object_Id
-           := PolyORB.POA_Types.U_Oid_To_Oid (U_Oid);
-
+         Oid : constant PolyORB.POA_Types.Object_Id :=
+                 PolyORB.POA_Types.U_Oid_To_Oid (U_Oid);
       begin
          return PortableServer.Internals.To_PortableServer_ObjectId (Oid);
       end;
@@ -256,8 +250,8 @@ package body RTPortableServer.POA is

       U_Oid : PolyORB.POA_Types.Unmarshalled_Oid;

-      A_Oid : aliased PolyORB.POA_Types.Object_Id
-        := PortableServer.Internals.To_PolyORB_Object_Id (Oid);
+      A_Oid : aliased PolyORB.POA_Types.Object_Id :=
+                PortableServer.Internals.To_PolyORB_Object_Id (Oid);

    begin
       PolyORB.RT_POA.Activate_Object_With_Id_And_Priority
============================================================
--- src/corba/security/polyorb-corba_p-security_policy.adb	d33e32f266bfa0569a8e078f059bb9add23d7c12
+++ src/corba/security/polyorb-corba_p-security_policy.adb	420c58225df4944e0fa5fafb06958df1d53dcc4f
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2005-2006, Free Software Foundation, Inc.          --
+--         Copyright (C) 2005-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -60,18 +60,14 @@ package body PolyORB.CORBA_P.Security_Po
    is
       use PolyORB.Security.Types;

-      Target   : CORBA.Object.Ref;
-      Creds    : Credentials_List_Access                    := null;
+      Target   : constant CORBA.Object.Ref :=
+                   CORBA.Object.Internals.To_CORBA_Ref (Object);
+      Creds    : Credentials_List_Access := null;
       Requires : PolyORB.Security.Types.Association_Options := 0;

    begin
-      --  Convert PolyORB's reference into CORBA reference for retrieve
-      --  effective policies
+      --  Analize overridden policy

-      CORBA.Object.Internals.Convert_To_CORBA_Ref (Object, Target);
-
-      --  Analize overrided policy
-
       for J in Registry'Range loop
          if Registry (J).Registered then
             declare
============================================================
--- src/corba/security/polyorb-corba_p-tss_state_machine.adb	935417d2bbbedf813b37253f563ade29760ff8d1
+++ src/corba/security/polyorb-corba_p-tss_state_machine.adb	7f18155aa966fc3bc024feb5ff3a5b06413c900b
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2005-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2005-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -53,7 +53,6 @@ with PolyORB.Security.Types;
 with PolyORB.Security.Security_Manager;
 with PolyORB.Security.Transport_Mechanisms;
 with PolyORB.Security.Types;
-with PolyORB.Smart_Pointers;
 with PolyORB.Tasking.Threads.Annotations;
 with PolyORB.Types;
 with PolyORB.Utils.Strings;
@@ -77,7 +76,7 @@ package body PolyORB.CORBA_P.TSS_State_M
       Error : in out PolyORB.Errors.Error_Container);

    procedure Server_Invoke
-     (Self    : access PolyORB.Smart_Pointers.Entity'Class;
+     (Self    : access PSPCE.Entity'Class;
       Request :        PolyORB.Requests.Request_Access;
       Profile :        PolyORB.Binding_Data.Profile_Access);

@@ -295,7 +294,7 @@ package body PolyORB.CORBA_P.TSS_State_M
    -------------------

    procedure Server_Invoke
-     (Self    : access PolyORB.Smart_Pointers.Entity'Class;
+     (Self    : access PSPCE.Entity'Class;
       Request :        PolyORB.Requests.Request_Access;
       Profile :        PolyORB.Binding_Data.Profile_Access)
    is
============================================================
--- src/dsa/polyorb-dsa_p-storages-dfs.adb	c1cd2fe74b765dd90eedf741273c7a060df89c7c
+++ src/dsa/polyorb-dsa_p-storages-dfs.adb	db1d0fdd06faa2dcd91288720a5fa09de21a4b92
@@ -2,11 +2,11 @@
 --                                                                          --
 --                           POLYORB COMPONENTS                             --
 --                                                                          --
---             P O L Y O R B . D S A _ P . S T O R A G E S . D F S          --
+--           P O L Y O R B . D S A _ P . S T O R A G E S . D F S            --
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2008, Free Software Foundation, Inc.               --
+--         Copyright (C) 2008-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -393,7 +393,7 @@ package body PolyORB.DSA_P.Storages.DFS

       declare
          Stream : constant Stream_Element_Array :=
-           To_Stream_Element_Array (Buffer);
+                    To_Stream_Element_Array (Buffer.all);
       begin
          SIO.Write (Self.File, Stream);
       end;
============================================================
--- src/dsa/s-parint.adb	d513233ce0727c06c687742df487e374fbb16886
+++ src/dsa/s-parint.adb	bde9ffb0c92fe35313153611bc8224528e3e5790
@@ -122,6 +122,16 @@ package body System.Partition_Interface
    procedure Initialize;
    --  Procedure called during global PolyORB initialization

+   function Nameserver_Lookup (Name, Kind : String) return Ref;
+   --  Look up the specified (Name, Kind) pair from the DSA naming context
+
+   procedure Nameserver_Register
+     (Name : String;
+      Kind : String;
+      Obj  : PolyORB.References.Ref);
+   --  Register object with the specified (Name, Kind) pair into the
+   --  DSA naming context.
+
    function Is_Reference_Valid (R : PolyORB.References.Ref) return Boolean;
    --  Binds a reference to determine whether it is valid

@@ -1357,6 +1367,120 @@ package body System.Partition_Interface
       return Result;
    end Make_Ref;

+   -----------------------
+   -- Nameserver_Lookup --
+   -----------------------
+
+   function Nameserver_Lookup (Name, Kind : String) return Ref is
+      use PolyORB.Parameters;
+      use PolyORB.Errors;
+      use PolyORB.References.Binding;
+
+      LName : constant String := To_Lower (Name);
+
+      Result : Ref;
+
+      Time_Between_Requests : constant Duration :=
+        Get_Conf
+          (Section => "dsa",
+           Key     => "delay_between_failed_requests",
+           Default => 1.0);
+
+      Max_Requests : constant Natural :=
+        Get_Conf
+          (Section => "dsa",
+           Key     => "max_failed_requests",
+           Default => 10);
+
+      Retry_Count : Natural := 0;
+   begin
+      --  Unit not known yet: we therefore know that it is remote, and we
+      --  need to look it up with the naming service.
+
+      loop
+         begin
+            Result := PSNNC.Client.Resolve
+                        (Naming_Context, To_Name (LName, Kind));
+
+            exit when Is_Reference_Valid (Result);
+            --  Resolve succeeded: exit loop
+
+         exception
+               --  Catch all exceptions: we will retry resolution, and bail
+               --  out after Max_Requests iterations.
+
+            when others =>
+               null;
+         end;
+
+         if Retry_Count = Max_Requests then
+            raise System.RPC.Communication_Error with
+              "lookup of " & Kind & " " & Name & " failed";
+         end if;
+         Retry_Count := Retry_Count + 1;
+         PolyORB.Tasking.Threads.Relative_Delay (Time_Between_Requests);
+      end loop;
+      return Result;
+   end Nameserver_Lookup;
+
+   -------------------------
+   -- Nameserver_Register --
+   -------------------------
+
+   procedure Nameserver_Register
+     (Name : String;
+      Kind : String;
+      Obj  : PolyORB.References.Ref)
+   is
+      use Ada.Exceptions;
+      Id      : constant PolyORB.Services.Naming.Name := To_Name (Name, Kind);
+      Context : PSNNC.Ref;
+      Reg_Obj : PolyORB.References.Ref;
+   begin
+      pragma Debug (C, O ("About to register " & Name & " on nameserver"));
+
+      --  May raise an exception which we do not want to handle in the
+      --  following block (failure to establish the naming context is a fatal
+      --  error and must be propagated to the caller).
+
+      Context := Naming_Context;
+
+      begin
+         Reg_Obj := PSNNC.Client.Resolve (Context, Id);
+      exception
+         when others =>
+
+            --  Resolution attempt returned an authoritative "name not found"
+            --  error: register unit now.
+
+            PSNNC.Client.Bind
+              (Self => Naming_Context,
+               N    => Id,
+               Obj  => Obj);
+            return;
+      end;
+
+      --  Name is present in name server, check validity of the reference it
+      --  resolves to.
+
+      if Is_Reference_Valid (Reg_Obj) then
+         --  Reference is valid: RCI unit is already declared by another
+         --  partition.
+
+         PolyORB.Initialization.Shutdown_World (Wait_For_Completion => False);
+         raise Program_Error with Name & " (" & Kind & ") is already declared";
+
+      else
+         --  The reference is not valid anymore: we assume the original server
+         --  has died, and rebind the name.
+
+         PSNNC.Client.Rebind
+           (Self => Naming_Context,
+            N    => To_Name (Name, Kind),
+            Obj  => Obj);
+      end if;
+   end Nameserver_Register;
+
    --------------------
    -- Naming_Context --
    --------------------
@@ -1365,12 +1489,22 @@ package body System.Partition_Interface
       R : PolyORB.References.Ref;
    begin
       if PSNNC.Is_Nil (Naming_Context_Cache) then
-         PolyORB.References.String_To_Object
-           (PolyORB.Parameters.Get_Conf ("dsa", "name_service"),
-            R);
-         PSNNC.Set (Naming_Context_Cache, Entity_Of (R));
+         declare
+            Nameserver_Location : constant String :=
+                                    PolyORB.Parameters.Get_Conf
+                                      ("dsa", "name_service");
+         begin
+            PolyORB.References.String_To_Object (Nameserver_Location, R);
+            if Is_Nil (R) then
+               raise Constraint_Error;
+            end if;
+            PSNNC.Set (Naming_Context_Cache, Entity_Of (R));
+         exception
+            when others =>
+               raise System.RPC.Communication_Error
+                 with "unable to locate name server " & Nameserver_Location;
+         end;
       end if;
-
       return Naming_Context_Cache;
    end Naming_Context;

@@ -1430,7 +1564,8 @@ package body System.Partition_Interface
          end if;

          if PolyORB.References.Is_Nil (Info.Base_Ref) then
-            raise System.RPC.Communication_Error;
+            raise System.RPC.Communication_Error
+              with "unable to locate RCI " & RCI_Name;

             --  XXX add an informative exception message.
             --  NOTE: Here, we are in calling stubs, so it is OK to raise an
@@ -1605,7 +1740,7 @@ package body System.Partition_Interface
                Known_Partition_ID  => False,
                RCI_Partition_ID    => RPC.Partition_ID'First));

-         Register_Unit_On_Name_Server
+         Nameserver_Register
            (Name => To_Lower (Stub.Name.all),
             Kind => "RCI",
             Obj  => Ref);
@@ -1643,64 +1778,6 @@ package body System.Partition_Interface
       pragma Debug (C, O ("Registered the termination manager"));
    end Register_Termination_Manager;

-   ----------------------------------
-   -- Register_Unit_On_Name_Server --
-   ----------------------------------
-
-   procedure Register_Unit_On_Name_Server
-     (Name : String;
-      Kind : String;
-      Obj  : PolyORB.References.Ref)
-   is
-      use Ada.Exceptions;
-      Id      : constant PolyORB.Services.Naming.Name := To_Name (Name, Kind);
-      Context : PSNNC.Ref;
-      Reg_Obj : PolyORB.References.Ref;
-   begin
-      pragma Debug (C, O ("About to register " & Name & " on nameserver"));
-
-      --  May raise an exception which we do not want to handle in the
-      --  following block (failure to establish the naming context is a fatal
-      --  error and must be propagated to the caller).
-
-      Context := Naming_Context;
-
-      begin
-         Reg_Obj := PSNNC.Client.Resolve (Context, Id);
-      exception
-         when others =>
-
-            --  Resolution attempt return an authoritative "name not found"
-            --  error: register unit now.
-
-            PSNNC.Client.Bind
-              (Self => Naming_Context,
-               N    => Id,
-               Obj  => Obj);
-            return;
-      end;
-
-      --  Name is present in name server, check validity of the reference it
-      --  resolves to.
-
-      if Is_Reference_Valid (Reg_Obj) then
-         --  Reference is valid: RCI unit is already declared by another
-         --  partition.
-
-         PolyORB.Initialization.Shutdown_World (Wait_For_Completion => False);
-         raise Program_Error with Name & " (" & Kind & ") is already declared";
-
-      else
-         --  The reference is not valid anymore: we assume the original server
-         --  has died, and rebind the name.
-
-         PSNNC.Client.Rebind
-           (Self => Naming_Context,
-            N    => To_Name (Name, Kind),
-            Obj  => Obj);
-      end if;
-   end Register_Unit_On_Name_Server;
-
    --------------------
    -- Release_Buffer --
    --------------------
@@ -1797,7 +1874,7 @@ package body System.Partition_Interface

       PolyORB.Objects.Free (Oid);

-      Register_Unit_On_Name_Server
+      Nameserver_Register
         (Name => To_Lower (Name),
          Kind => Kind,
          Obj  => Ref);
@@ -1882,35 +1959,7 @@ package body System.Partition_Interface
       --  retry the query up to Max_Requests times.

       if Is_Nil (Info.Base_Ref) then
-
-         --  Unit not known yet: we therefore know that it is remote, and we
-         --  need to look it up with the naming service.
-
-         loop
-            begin
-               Base_Ref := PSNNC.Client.Resolve
-                 (Naming_Context, To_Name (LName, "RCI"));
-
-               exit when Is_Reference_Valid (Base_Ref);
-               --  Resolve succeeded: exit loop
-
-            exception
-               --  Catch all exceptions: we will retry resolution, and bail
-               --  out after Max_Requests iterations.
-
-               when others =>
-                  null;
-            end;
-
-            if Retry_Count = Max_Requests then
-               O ("Cannot retrieve information for RCI "
-                  & Name & " from name server.", Error);
-               raise System.RPC.Communication_Error;
-            end if;
-            Retry_Count := Retry_Count + 1;
-            PolyORB.Tasking.Threads.Relative_Delay (Time_Between_Requests);
-         end loop;
-
+         Base_Ref := Nameserver_Lookup (LName, "RCI");
          Info := RCI_Info'
            (Base_Ref            => Base_Ref,
             Is_Local            => False,
@@ -1955,40 +2004,13 @@ package body System.Partition_Interface

    begin
       pragma Debug (C, O ("Retrieve RACW From Name Server: enter"));
-
-      loop
-         begin
-            Reg_Obj := PSNNC.Client.Resolve
-              (Naming_Context, To_Name (Name, Kind));
-
-            exit when Is_Reference_Valid (Reg_Obj);
-            --  Resolve succeeded: exit loop
-
-         exception
-               --  Catch all exceptions: we will retry resolution, and bail
-               --  out after Max_Requests iterations.
-
-            when others =>
-               null;
-         end;
-
-         if Retry_Count = Max_Requests then
-            O ("Cannot retrieve information for"
-               & "RACW " & Name & ":" & Kind & " from name server.", Error);
-            raise System.RPC.Communication_Error;
-         end if;
-         Retry_Count := Retry_Count + 1;
-         PolyORB.Tasking.Threads.Relative_Delay (Time_Between_Requests);
-      end loop;
-
+      Reg_Obj := Nameserver_Lookup (Name, Kind);
       Addr := Get_RACW
         (Ref          => Reg_Obj,
          Stub_Tag     => Stub_Tag,
          Is_RAS       => False,
          Asynchronous => True);
-
       pragma Debug (C, O ("Retrieve RACW From Name Server: leave"));
-
    end Retrieve_RACW_From_Name_Server;

    --------------------
============================================================
--- src/dsa/s-parint.ads	9890673a72e8d30ca1710f2ec86617802d5d28cb
+++ src/dsa/s-parint.ads	32b90ab9889e734de17a35cfacefba4f3d0323c9
@@ -212,14 +212,9 @@ package System.Partition_Interface is
    --  Subp_Info is the address of an array of a statically subtype
    --  of RCI_Subp_Info_Array with a range of 0 .. Subp_Info_Len - 1.

-   procedure Register_Unit_On_Name_Server (Name : String;
-                                           Kind : String;
-                                           Obj  : PolyORB.References.Ref);
-   --  Register one receiving stub on the name server
-
-   function Retrieve_Receiving_Stub (Name : String;
-                                     Kind : Receiving_Stub_Kind)
-     return Servant_Access;
+   function Retrieve_Receiving_Stub
+     (Name : String;
+      Kind : Receiving_Stub_Kind) return Servant_Access;
    --  Return the servant for distributed objects with given Name and Kind, or
    --  null if non-existant.

============================================================
--- src/dsa/s-shasto.adb	9be2e415d5966f20042c42ff58c23d584bd4a505
+++ src/dsa/s-shasto.adb	bc64f5f67e9c2175edfc915cf7590707a9adccf0
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2006-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2006-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -90,7 +90,7 @@ package body System.Shared_Storage is
          SDM      : Shared_Data_Manager_RACW;
          Data     : constant Any := Typ'To_Any (V);
          Data_Ptr : constant SDT.Any_Container_Ptr :=
-           AC_To_DAC (Get_Container (Data));
+                      AC_To_DAC (Get_Container (Data));

       begin
          Lookup_Variable (Full_Name, SDM);
============================================================
--- src/giop/diop/polyorb-giop_p-transport_mechanisms-diop.adb	bd45f1f3e6d7b2981c07ff095757c19ad19cba35
+++ src/giop/diop/polyorb-giop_p-transport_mechanisms-diop.adb	f96de414dee35283810592f4356848b60c63f1b6
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2005-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2005-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -78,9 +78,7 @@ package body PolyORB.GIOP_P.Transport_Me
       use PolyORB.Binding_Objects;

       Sock        : Socket_Type;
-
       TE          : Transport.Transport_Endpoint_Access;
-
    begin
       if Profile.all
         not in PolyORB.Binding_Data.GIOP.DIOP.DIOP_Profile_Type then
@@ -99,7 +97,8 @@ package body PolyORB.GIOP_P.Transport_Me
       Create (Socket_Out_Endpoint (TE.all), Sock, Mechanism.Address.all);

       Binding_Objects.Setup_Binding_Object
-        (TE,
+        (The_ORB,
+         TE,
          DIOP_Factories,
          BO_Ref,
          Profile_Access (Profile));
============================================================
--- src/giop/iiop/polyorb-giop_p-transport_mechanisms-iiop.adb	ec433bce6dea695b3db475fa9fcd60dfab546f36
+++ src/giop/iiop/polyorb-giop_p-transport_mechanisms-iiop.adb	ff93b81c382a7715fcec21d654939d40d9154251
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2005-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2005-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -103,7 +103,8 @@ package body PolyORB.GIOP_P.Transport_Me
             Create (Socket_Endpoint (TE.all), Sock);

             Binding_Objects.Setup_Binding_Object
-              (TE,
+              (The_ORB,
+               TE,
                IIOP_Factories,
                BO_Ref,
                Profile_Access (Profile));
============================================================
--- src/giop/iiop/security/tls/polyorb-giop_p-transport_mechanisms-tls.adb	bfa051ef5a5286df8295ef0c0d71677e44aeb6ee
+++ src/giop/iiop/security/tls/polyorb-giop_p-transport_mechanisms-tls.adb	3c3ce6909ec41c3bfb6ea24cbdc14b3fb346a977
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2005-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2005-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -135,7 +135,8 @@ package body PolyORB.GIOP_P.Transport_Me
             Create (TLS_Endpoint (TE.all), TLS_Sock);

             Binding_Objects.Setup_Binding_Object
-              (TE,
+              (The_ORB,
+               TE,
                IIOP_Factories,
                BO_Ref,
                Binding_Data.Profile_Access (Profile));
============================================================
--- src/giop/iiop/ssliop/polyorb-giop_p-transport_mechanisms-ssliop.adb	9081f70b8ec9b5b941220b7ddb59d550052170b1
+++ src/giop/iiop/ssliop/polyorb-giop_p-transport_mechanisms-ssliop.adb	e2a54ca1995ec488a67bf4f524b6f9f10131710a
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2005-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2005-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -106,7 +106,8 @@ package body PolyORB.GIOP_P.Transport_Me
       Create (SSL_Endpoint (TE.all), SSL_Sock);

       Binding_Objects.Setup_Binding_Object
-        (TE,
+        (The_ORB,
+         TE,
          IIOP_Factories,
          BO_Ref,
          Profile_Access (Profile));
============================================================
--- src/giop/miop/polyorb-filters-miop.adb	00aee6619958456cbfda4955d1e789000272c0ff
+++ src/giop/miop/polyorb-filters-miop.adb	116deeebf873e24dab845492072dad253c10b345
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2003-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2003-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -88,7 +88,7 @@ package body PolyORB.Filters.MIOP is
       Marshall (Buffer, Types.Identifier (Header.Unique_Id));

       --  Final padding
-      Pad_Align (Buffer, 8);
+      Pad_Align (Buffer, Align_8);
    end Marshall_MIOP_Header;

    ----------------------------
============================================================
--- src/giop/miop/polyorb-giop_p-transport_mechanisms-uipmc.adb	c6ee13976f5296b245fd63120184f6b1b57fbc04
+++ src/giop/miop/polyorb-giop_p-transport_mechanisms-uipmc.adb	8d550f738ee677f7f5b42621d74ec3a72be04528
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2005-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2005-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -114,7 +114,8 @@ package body PolyORB.GIOP_P.Transport_Me
       Create (Socket_Out_Endpoint (TE.all), Sock, Mechanism.Address.all);

       Binding_Objects.Setup_Binding_Object
-        (TE,
+        (The_ORB,
+         TE,
          MIOP_Factories,
          BO_Ref,
          Profile_Access (Profile));
============================================================
--- src/giop/polyorb-giop_p-code_sets-converters.adb	f3ed428a929080947334dc346075cd5dd2b183dd
+++ src/giop/polyorb-giop_p-code_sets-converters.adb	8ba032e2005080d3e24161b7a5ee69b1bdac75d6
@@ -317,7 +317,7 @@ package body PolyORB.GIOP_P.Code_Sets.Co
       pragma Unreferenced (Error);

    begin
-      Pad_Align (Buffer, 4);
+      Pad_Align (Buffer, Align_4);

       declare
          Reserv : constant Reservation     := Reserve (Buffer, 4);
============================================================
--- src/giop/polyorb-giop_p-tagged_components.adb	6adb4a44a74679e013dc941a2114e477ee94bf22
+++ src/giop/polyorb-giop_p-tagged_components.adb	3adb0caa60937355c1c41d18ba6e6f54fb85573e
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2003-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2003-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -446,10 +446,10 @@ package body PolyORB.GIOP_P.Tagged_Compo

    procedure Remove
      (List : in out Tagged_Component_List;
-      Comp :        Tagged_Component_Access)
+      Comp : Tagged_Component_Access)
    is
    begin
-      Remove (List, Comp, False);
+      Remove_Occurrences (List, Comp, All_Occurrences => False);
    end Remove;

    ---------------
============================================================
--- src/giop/polyorb-protocols-giop-common.adb	77d42bece36b2be62815f8c726e2e4428b9efa75
+++ src/giop/polyorb-protocols-giop-common.adb	24043ebee726daf304caf00ffeb9e0c46defce47
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2002-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2002-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -161,8 +161,7 @@ package body PolyORB.Protocols.GIOP.Comm
       N               : Request_Note;
       Request_Id      : Types.Unsigned_Long renames N.Id;
       CORBA_Occurence : PolyORB.Any.Any;
-      Data_Alignment  : Stream_Element_Offset :=
-        Sess.Implem.Data_Alignment;
+      Data_Alignment  : Alignment_Type := Sess.Implem.Data_Alignment;

       Static_Buffer : constant QoS_GIOP_Static_Buffer_Parameter_Access :=
         QoS_GIOP_Static_Buffer_Parameter_Access
@@ -262,10 +261,11 @@ package body PolyORB.Protocols.GIOP.Comm
             if Static_Buffer = null then
                pragma Debug (C, O ("Using Any to send reply data"));

-               if TypeCode.Kind (Get_Type (Request.Result.Argument)) /=
-                 Tk_Void then
+               if TypeCode.Kind (Get_Type (Request.Result.Argument))
+                    /= Tk_Void
+               then
                   Pad_Align (Buffer_Out, Data_Alignment);
-                  Data_Alignment := 1;
+                  Data_Alignment := Align_1;
                end if;

                Marshall_From_Any
@@ -701,8 +701,8 @@ package body PolyORB.Protocols.GIOP.Comm
       Success      : Boolean;

       ORB          : constant ORB_Access := ORB_Access (Sess.Server);
-      Arguments_Alignment : Buffers.Alignment_Type
-        := Sess.Implem.Data_Alignment;
+      Arguments_Alignment : Buffers.Alignment_Type :=
+                              Sess.Implem.Data_Alignment;
       Error        : Errors.Error_Container;

       Static_Buffer : QoS_GIOP_Static_Buffer_Parameter_Access;
@@ -741,7 +741,7 @@ package body PolyORB.Protocols.GIOP.Comm
                  /= Tk_Void
                then
                   Align_Position (Sess.Buffer_In, Arguments_Alignment);
-                  Arguments_Alignment := 1;
+                  Arguments_Alignment := Align_1;
                end if;

                Unmarshall_To_Any
============================================================
--- src/giop/polyorb-protocols-giop-giop_1_0.ads	8f843e2e3182654fa12dfdbd7f27701f98adf546
+++ src/giop/polyorb-protocols-giop-giop_1_0.ads	b3651c63e6b24157a115e008060fc740c7d25641
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---         Copyright (C) 2002-2006, Free Software Foundation, Inc.          --
+--         Copyright (C) 2002-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -93,7 +93,7 @@ private

    --  Data alignment

-   Data_Alignment_1_0 : constant Buffers.Alignment_Type := 1;
+   Data_Alignment_1_0 : constant Buffers.Alignment_Type := Buffers.Align_1;

    --  Principal

============================================================
--- src/giop/polyorb-protocols-giop-giop_1_1.ads	ab0d42bc43630139422b4adeedd4089729c10321
+++ src/giop/polyorb-protocols-giop-giop_1_1.ads	a0b0ede73ca7271379f434364a93559c9db1bffd
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---         Copyright (C) 2002-2007, Free Software Foundation, Inc.          --
+--         Copyright (C) 2002-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -113,7 +113,7 @@ private

    --  Data alignment

-   Data_Alignment_1_1 : constant Buffers.Alignment_Type := 1;
+   Data_Alignment_1_1 : constant Buffers.Alignment_Type := Buffers.Align_1;

    --  Principal

============================================================
--- src/giop/polyorb-protocols-giop-giop_1_2.ads	f9429c32ec4497de8f0b725297a1b3592ddc3189
+++ src/giop/polyorb-protocols-giop-giop_1_2.ads	00ca83ae03bc8450592e7aafc8badb336cd8c766
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---         Copyright (C) 2002-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2002-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -205,7 +205,7 @@ private

    --  Data alignment

-   Data_Alignment_1_2 : constant Buffers.Alignment_Type := 8;
+   Data_Alignment_1_2 : constant Buffers.Alignment_Type := Buffers.Align_8;

    --  Fragment header size

============================================================
--- src/giop/polyorb-protocols-giop.adb	63bea4f95a38fe9df1814373f570f74ae1601d32
+++ src/giop/polyorb-protocols-giop.adb	a60144d9bf88353f990aff59a00f0a6d8297b8a3
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2002-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2002-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -225,7 +225,7 @@ package body PolyORB.Protocols.GIOP is

          when Expect_Body =>
             pragma Debug (C, O ("Received GIOP message body"));
-            pragma Debug (Show (Sess.Buffer_In));
+            pragma Debug (C, Show (Sess.Buffer_In));
             Process_Message (Sess.Implem, Sess);

          when others =>
============================================================
--- src/moma/polyorb-moma_p-provider-topic_datas.adb	f545a167daeca97c1757a3b04d82eae5a18b196e
+++ src/moma/polyorb-moma_p-provider-topic_datas.adb	731ac702d14bd8008d21fe9853fa864307d53608
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2002-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2002-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -150,7 +150,7 @@ package body PolyORB.MOMA_P.Provider.Top
          --  XXX do we really need to raise an exception ?
       end if;

-      Destination_List.Remove (V.Subscribers, Pool);
+      Destination_List.Remove_Occurrences (V.Subscribers, Pool);
       if V.Subscribers = Destination_List.Empty then
          Delete (Data.T, T);
       end if;
============================================================
--- src/polyorb-asynch_ev-sockets.adb	6d7ef022c6bb6b2db6ade0e4074a56e3ecb1f11d
+++ src/polyorb-asynch_ev-sockets.adb	da9d36dcf79bbda85337c489434f6bf8043c946c
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2001-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2001-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -75,6 +75,18 @@ package body PolyORB.Asynch_Ev.Sockets i
       return not Source_Lists.Is_Empty (AEM.Sources);
    end Has_Sources;

+   ----------
+   -- Link --
+   ----------
+
+   function Link
+     (S     : access Socket_Event_Source'Class;
+      Which : Ilists.Link_Type) return access SES_Access
+   is
+   begin
+      return S.Links (Which)'Unchecked_Access;
+   end Link;
+
    ---------------------
    -- Register_Source --
    ---------------------
@@ -92,8 +104,13 @@ package body PolyORB.Asynch_Ev.Sockets i
          return;
       end if;

-      Set (AEM.Monitored_Set, Socket_Event_Source (AES.all).Socket);
-      Source_Lists.Append (AEM.Sources, AES);
+      declare
+         S_AES : Socket_Event_Source'Class
+                   renames Socket_Event_Source'Class (AES.all);
+      begin
+         Set (AEM.Monitored_Set, S_AES.Socket);
+         Source_Lists.Append (AEM.Sources, S_AES'Access);
+      end;
       pragma Debug (C, O ("Register_Source: Sources'Length ="
                        & Integer'Image (Source_Lists.Length (AEM.Sources))));
       AES.Monitor := Asynch_Ev_Monitor_Access (AEM);
@@ -109,7 +126,10 @@ package body PolyORB.Asynch_Ev.Sockets i
    procedure Unregister_Source
      (AEM     : in out Socket_Event_Monitor;
       AES     : Asynch_Ev_Source_Access;
-      Success : out Boolean) is
+      Success : out Boolean)
+   is
+      S_AES : Socket_Event_Source'Class
+                renames Socket_Event_Source'Class (AES.all);
    begin
       pragma Debug (C, O ("Unregister_Source: enter"));
       if not Is_Set (AEM.Monitored_Set,
@@ -117,8 +137,8 @@ package body PolyORB.Asynch_Ev.Sockets i
       then
          Success := False;
       else
-         Clear (AEM.Monitored_Set, Socket_Event_Source (AES.all).Socket);
-         Source_Lists.Remove (AEM.Sources, AES);
+         Clear (AEM.Monitored_Set, S_AES.Socket);
+         Source_Lists.Remove_Element (AEM.Sources, S_AES'Access);
          pragma Debug (C, O ("Unregister_Source: Sources'Length:="
                           & Source_Lists.Length (AEM.Sources)'Img));
          Success := True;
@@ -203,16 +223,15 @@ package body PolyORB.Asynch_Ev.Sockets i
             while not Source_Lists.Last (It) loop

                declare
-                  S    : Asynch_Ev_Source_Access renames Value (It).all;
-                  Sock : Socket_Type
-                    renames Socket_Event_Source (S.all).Socket;
+                  S_AES : Socket_Event_Source'Class renames Value (It).all;
+                  Sock  : Socket_Type renames S_AES.Socket;
                begin
                   if Is_Set (R_Set, Sock) then
                      pragma Debug
                        (C, O ("Got event on socket" & Image (Sock)));

                      Last := Last + 1;
-                     Result (Last) := S;
+                     Result (Last) := S_AES'Access;

                      Clear (AEM.Monitored_Set, Sock);
                      Remove (AEM.Sources, It);
@@ -255,8 +274,7 @@ package body PolyORB.Asynch_Ev.Sockets i
      (Socket : PolyORB.Sockets.Socket_Type)
      return Asynch_Ev_Source_Access
    is
-      Result : constant Asynch_Ev_Source_Access
-        := new Socket_Event_Source;
+      Result : constant Asynch_Ev_Source_Access := new Socket_Event_Source;
    begin
       Socket_Event_Source (Result.all).Socket := Socket;
       return Result;
============================================================
--- src/polyorb-asynch_ev-sockets.ads	f145eec3986b99b2e542bbdb840132a1bed5c34e
+++ src/polyorb-asynch_ev-sockets.ads	db9d4b0130554e5ab153c935a17d7e9022b4b1b3
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---         Copyright (C) 2001-2003 Free Software Foundation, Inc.           --
+--         Copyright (C) 2001-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -16,19 +16,19 @@
 -- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
 -- License  for more details.  You should have received  a copy of the GNU  --
 -- General Public License distributed with PolyORB; see file COPYING. If    --
--- not, write to the Free Software Foundation, 59 Temple Place - Suite 330, --
--- Boston, MA 02111-1307, USA.                                              --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth    --
+-- Floor, Boston, MA 02111-1301, USA.                                       --
 --                                                                          --
 --                                                                          --
---                PolyORB is maintained by ACT Europe.                      --
---                    (email: sales@act-europe.fr)                          --
+--                  PolyORB is maintained by AdaCore                        --
+--                     (email: sales@adacore.com)                           --
 --                                                                          --
 ------------------------------------------------------------------------------

 --  An asynchrous event source that is a set of socket descriptors.

 with PolyORB.Sockets;
-with PolyORB.Utils.Chained_Lists;
+with PolyORB.Utils.Ilists;

 package PolyORB.Asynch_Ev.Sockets is

@@ -66,18 +66,31 @@ package PolyORB.Asynch_Ev.Sockets is
      (Socket : PolyORB.Sockets.Socket_Type)
      return Asynch_Ev_Source_Access;

-   function AEM_Factory_Of (AES : Socket_Event_Source)
-     return AEM_Factory;
+   function AEM_Factory_Of (AES : Socket_Event_Source) return AEM_Factory;

 private

+   package Ilists renames Utils.Ilists;
+
+   type SES_Access is access all Socket_Event_Source'Class;
+   type Links_Type is array (Ilists.Link_Type) of aliased SES_Access;
+
    type Socket_Event_Source is new Asynch_Ev_Source with record
+      Links  : Links_Type;
       Socket : PolyORB.Sockets.Socket_Type;
    end record;

+   function Link
+     (S     : access Socket_Event_Source'Class;
+      Which : Ilists.Link_Type) return access SES_Access;
+   pragma Inline (Link);
+   --  Accessor for Links
+
    package Source_Lists is
-     new PolyORB.Utils.Chained_Lists
-       (Asynch_Ev_Source_Access, Doubly_Chained => True);
+     new Ilists.Lists
+       (T             => Socket_Event_Source'Class,
+        T_Acc         => SES_Access,
+        Doubly_Linked => True);

    type Socket_Event_Monitor is new Asynch_Ev_Monitor with record
       Selector      : PolyORB.Sockets.Selector_Type;
============================================================
--- src/polyorb-binding_objects.adb	eba30a65cef3d288734a8d87b88e6e711731e0a1
+++ src/polyorb-binding_objects.adb	b307b51b67c5497619e2f0517b67687ca8d3b565
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2004-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2004-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -55,18 +55,15 @@ package body PolyORB.Binding_Objects is
       use PolyORB.Components;
       use PolyORB.Errors;

-      use BO_Lists;
-
       Error : Error_Container;
-
    begin
       pragma Debug (C, O ("Finalizing binding object."));

       --  First remove the reference to this BO from its ORB so that is does
       --  not get reused while being finalized.

-      PolyORB.ORB.Unregister_Binding_Object
-        (X.Referenced_In, X'Unchecked_Access);
+      ORB.Unregister_Binding_Object
+        (ORB.ORB_Access (X.ORB), X'Unchecked_Access);

       --  Notify protocol stack that it is about to be dismantled

@@ -128,41 +125,49 @@ package body PolyORB.Binding_Objects is
       return BO.Profile;
    end Get_Profile;

-   -----------------------
-   -- Get_Referenced_At --
-   -----------------------
+   ----------
+   -- Link --
+   ----------

-   function Get_Referenced_At
-     (BO : Binding_Object_Access) return BO_Lists.Iterator
+   function Link
+     (X     : access Binding_Object'Class;
+      Which : Utils.Ilists.Link_Type) return access Binding_Object_Access
    is
    begin
-      return BO.Referenced_At;
-   end Get_Referenced_At;
+      return X.Links (Which)'Unchecked_Access;
+   end Link;

-   ------------------------------------
-   -- Register_Reference_Information --
-   ------------------------------------
+   ----------------
+   -- Referenced --
+   ----------------

-   procedure Register_Reference_Information
-     (BO            : Binding_Object_Access;
-      Referenced_In : Components.Component_Access;
-      Referenced_At : BO_Lists.Iterator)
+   function Referenced (BO : Binding_Object_Access) return Boolean is
+   begin
+      return BO.Referenced;
+   end Referenced;
+
+   --------------------
+   -- Set_Referenced --
+   --------------------
+
+   procedure Set_Referenced
+     (BO         : Binding_Object_Access;
+      Referenced : Boolean)
    is
    begin
-      pragma Debug (C, O ("BO : Registering reference Information."));
-      BO.Referenced_In := Referenced_In;
-      BO.Referenced_At := Referenced_At;
-   end Register_Reference_Information;
+      BO.Referenced := Referenced;
+   end Set_Referenced;

    --------------------------
    -- Setup_Binding_Object --
    --------------------------

    procedure Setup_Binding_Object
-     (TE      :        Transport.Transport_Endpoint_Access;
-      FFC     :        Filters.Factory_Array;
-      BO_Ref  :    out Smart_Pointers.Ref;
-      Pro     :        Binding_Data.Profile_Access)
+     (ORB     : Components.Component_Access;
+      TE      : Transport.Transport_Endpoint_Access;
+      FFC     : Filters.Factory_Array;
+      BO_Ref  : out Smart_Pointers.Ref;
+      Pro     : Binding_Data.Profile_Access)
    is
       BO : Binding_Object_Access;
       Bottom : Filters.Filter_Access;
@@ -173,6 +178,7 @@ package body PolyORB.Binding_Objects is

       Set_Profile (BO, Pro);

+      BO.ORB := ORB;
       BO.Transport_Endpoint := TE;
       Filters.Create_Filter_Chain
         (FFC,
============================================================
--- src/polyorb-binding_objects.ads	09596e10cb8ec629ed43c88a3e9642d285effad4
+++ src/polyorb-binding_objects.ads	0c45487ddb03011c54a10b69cc65ddc858cab5f8
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---         Copyright (C) 2004-2007, Free Software Foundation, Inc.          --
+--         Copyright (C) 2004-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -28,13 +28,15 @@
 --  Binding objects: protocol stacks seen globally as a reference-counted
 --  entity.

+pragma Ada_2005;
+
 with PolyORB.Annotations;
 with PolyORB.Binding_Data;
 with PolyORB.Components;
 with PolyORB.Filters;
 with PolyORB.Smart_Pointers;
 with PolyORB.Transport;
-with PolyORB.Utils.Chained_Lists;
+with PolyORB.Utils.Ilists;

 package PolyORB.Binding_Objects is

@@ -44,85 +46,88 @@ package PolyORB.Binding_Objects is
    --  A protocol session and associated transport and filter stack,
    --  seen globally as a reference-counted entity.

-   package BO_Lists is new PolyORB.Utils.Chained_Lists
-     (Binding_Object_Access, "=", Doubly_Chained => True);
-   subtype BO_List is BO_Lists.List;
-   --  A list of access to Binding Objects
+   function Link
+     (X     : access Binding_Object'Class;
+      Which : Utils.Ilists.Link_Type) return access Binding_Object_Access;
+   pragma Inline (Link);
+   --  Accessor for chaining pointers in binding objects allowing them to be
+   --  attached to the ORB's binding objects list.

-   function Get_Component (X : Smart_Pointers.Ref)
-     return PolyORB.Components.Component_Access;
+   function Get_Component
+     (X : Smart_Pointers.Ref) return Components.Component_Access;
    --  Return the top component of the Binding_Object
    --  designated by reference X.

-   function Get_Endpoint (X : Smart_Pointers.Ref)
-     return PolyORB.Transport.Transport_Endpoint_Access;
+   function Get_Endpoint
+     (X : Smart_Pointers.Ref) return Transport.Transport_Endpoint_Access;
    --  Return the transport endpoint of the Binding_Object
    --  designated by reference X.

-   function Get_Profile (BO : Binding_Object_Access)
-     return Binding_Data.Profile_Access;
+   function Get_Profile
+     (BO : Binding_Object_Access) return Binding_Data.Profile_Access;
    --  Return profile associated with Binding Object BO

    procedure Set_Profile
      (BO : Binding_Object_Access; P : Binding_Data.Profile_Access);
    --  Set the profile associated with Binding Object BO

-   procedure Register_Reference_Information
-     (BO            : Binding_Object_Access;
-      Referenced_In : Components.Component_Access;
-      Referenced_At : BO_Lists.Iterator);
-   --  Register reference information into the Binding Object BO so that it can
-   --  remove itself from the ORB binding object list at finalisation.
+   procedure Set_Referenced
+     (BO         : Binding_Object_Access;
+      Referenced : Boolean);
+   --  Record that BO is attached to the ORB's BO list

+   function Referenced (BO : Binding_Object_Access) return Boolean;
+   --  Test whether BO is attached to the ORB's BO list
+
    procedure Setup_Binding_Object
-     (TE      :     Transport.Transport_Endpoint_Access;
-      FFC     :     Filters.Factory_Array;
+     (ORB     : Components.Component_Access;
+      TE      : Transport.Transport_Endpoint_Access;
+      FFC     : Filters.Factory_Array;
       BO_Ref  : out Smart_Pointers.Ref;
-      Pro     :     Binding_Data.Profile_Access);
+      Pro     : Binding_Data.Profile_Access);
    --  Create a binding object associating TE with a protocol stack
    --  instantiated using FFC.

    function Notepad_Of
-     (BO : Binding_Object_Access)
-      return Annotations.Notepad_Access;
+     (BO : Binding_Object_Access) return Annotations.Notepad_Access;
    --  Returns the notepad of given Binding Object

-   function Get_Referenced_At
-     (BO : Binding_Object_Access) return BO_Lists.Iterator;
-   --  Return an iterator denoting the position of BO in the ORB's list of
-   --  active binding objects (as set by Register_Reference_Information).
-
    function Valid (BO : Binding_Object_Access) return Boolean;
    --  True if BO can be used to forward requests to an object

 private
-   type Binding_Object is
-     new Smart_Pointers.Non_Controlled_Entity with record
-         Transport_Endpoint : Transport.Transport_Endpoint_Access;
-         --  Bottom of the binding object: a transport endpoint
+   type Links_Type is
+     array (Utils.Ilists.Link_Type) of aliased Binding_Object_Access;

-         Top : Filters.Filter_Access;
-         --  Top of the binding object: a protocol session
+   type Binding_Object is new Smart_Pointers.Non_Controlled_Entity with record
+      ORB : Components.Component_Access;
+      --  The ORB owning this BO

-         Profile : Binding_Data.Profile_Access;
-         --  The Profile associated with this Binding Object. This profile is
-         --  used to determine if the Binding Object can be reused for another
-         --  profile.
+      Transport_Endpoint : Transport.Transport_Endpoint_Access;
+      --  Bottom of the binding object: a transport endpoint

-         Referenced_In : Components.Component_Access;
-         --  The ORB where this Binding Object is referenced
+      Top : Filters.Filter_Access;
+      --  Top of the binding object: a protocol session

-         Referenced_At : BO_Lists.Iterator;
-         --  The position of this Binding Object in the Binding_Objects list of
-         --  the ORB referencing this Binding Object.
-         --  Note: this component must be accessed under the protection of the
-         --  critical section of the Referenced_In ORB.
+      Profile : Binding_Data.Profile_Access;
+      --  The Profile associated with this Binding Object. This profile is
+      --  used to determine if the Binding Object can be reused for another
+      --  profile.

-         Notepad : aliased Annotations.Notepad;
-         --  Binding_Object's notepad. The user is responsible for ensuring
-         --  proper protection against incorrect concurrent accesses.
-     end record;
+      Links : aliased Links_Type;
+      --  Pointers for chaining of this Binding Object in the
+      --  Binding_Objects list of the ORB.
+      --  Note: this component must be accessed under the protection of the
+      --  critical section of the Referenced_In ORB.

+      Referenced : Boolean := False;
+      --  True when attached to the ORB's BO list
+
+      Notepad : aliased Annotations.Notepad;
+      --  Binding_Object's notepad. The user is responsible for ensuring
+      --  proper protection against incorrect concurrent accesses.
+   end record;
+
    procedure Finalize (X : in out Binding_Object);

 end PolyORB.Binding_Objects;
============================================================
--- src/polyorb-buffers.adb	37848e6f2a31b7862eedd1731894a83b5a155e76
+++ src/polyorb-buffers.adb	1d84ea6a542a20d87f551541a703be0b7703edc4
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2001-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2001-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -26,14 +26,19 @@ with Ada.Unchecked_Deallocation;
 ------------------------------------------------------------------------------

 with Ada.Unchecked_Deallocation;
---  For Iovec_Pools.Free

+pragma Warnings (Off);
+--  Depends on System.Unsigned_Types, an internal GNAT unit
+with System.Unsigned_Types;
+pragma Warnings (On);
+
 with PolyORB.Log;

 package body PolyORB.Buffers is

    use Ada.Streams;
    use System.Storage_Elements;
+   use System.Unsigned_Types;
    use PolyORB.Opaque;
    use PolyORB.Log;
    use Buffer_Chunk_Pools;
@@ -61,133 +66,102 @@ package body PolyORB.Buffers is
    --  pointer to it. The caller must take care of deallocating the pointer
    --  after use.

-   ------------------------
-   -- General operations --
-   ------------------------
+   function Padding_Size
+     (Pos       : Stream_Element_Offset;
+      Alignment : Alignment_Type) return Stream_Element_Count;
+   pragma Inline (Padding_Size);
+   --  Return size of padding required to bring buffer position Pos to the
+   --  desired alignment.

-   ------------
-   -- Length --
-   ------------
+   procedure Show (Octets : Zone_Access);
+   --  Display the contents of Octets for debugging purposes.

-   function Length
-     (Buffer : access Buffer_Type)
-     return Stream_Element_Count is
-   begin
-      return Buffer.Length;
-   end Length;
-
    --------------------
-   -- Set_Endianness --
+   -- Align_Position --
    --------------------

-   procedure Set_Endianness
-     (Buffer : access Buffer_Type;
-      E      :        Endianness_Type) is
+   procedure Align_Position
+     (Buffer    : access Buffer_Type;
+      Alignment : Alignment_Type)
+   is
+      Padding : constant Stream_Element_Count :=
+                  Padding_Size (Buffer.CDR_Position, Alignment);
    begin
-      pragma Assert (Buffer.CDR_Position = Buffer.Initial_CDR_Position);
-      Buffer.Endianness := E;
-   end Set_Endianness;
+      pragma Debug
+        (C, O ("Align_Position: pos = "
+            & Stream_Element_Offset'Image (Buffer.CDR_Position)
+            & ", padding by" & Stream_Element_Count'Image (Padding)
+            & " for " & Alignment_Type'Image (Alignment)));

-   ----------------
-   -- Endianness --
-   ----------------
+      pragma Assert
+        (Buffer.CDR_Position + Padding <=
+           Buffer.Initial_CDR_Position + Buffer.Length);

-   function Endianness (Buffer : access Buffer_Type) return Endianness_Type is
-   begin
-      return Buffer.Endianness;
-   end Endianness;
+      --  Advance the CDR position to the new aligned position

-   ----------------------
-   -- Release_Contents --
-   ----------------------
+      Buffer.CDR_Position := Buffer.CDR_Position + Padding;

-   procedure Release_Contents
-     (Buffer : in out Buffer_Type) is
-   begin
-      Release (Buffer.Contents);
-      Buffer_Chunk_Pools.Release (Buffer.Storage'Access);
-      Buffer.CDR_Position         := 0;
-      Buffer.Initial_CDR_Position := 0;
-      Buffer.Endianness           := Host_Order;
-      Buffer.Length               := 0;
-   end Release_Contents;
+      pragma Debug
+        (C, O ("Align_Position: now at"
+                 & Stream_Element_Offset'Image (Buffer.CDR_Position)));
+   end Align_Position;

-   -----------------------
-   -- Initialize_Buffer --
-   -----------------------
+   -------------------------------------
+   -- Allocate_And_Insert_Cooked_Data --
+   -------------------------------------

-   procedure Initialize_Buffer
-     (Buffer               : access Buffer_Type;
-      Size                 :        Stream_Element_Count;
-      Data                 :        Opaque_Pointer;
-      Endianness           :        Endianness_Type;
-      Initial_CDR_Position :        Stream_Element_Offset)
+   procedure Allocate_And_Insert_Cooked_Data
+     (Buffer    : access Buffer_Type;
+      Size      :        Stream_Element_Count;
+      Data      :    out Opaque_Pointer)
    is
-      Data_Iovec : constant Iovec := (Iov_Base => Data,
-                                      Iov_Len  => Storage_Offset (Size));
+      A_Data : Opaque_Pointer;

    begin
-      pragma Assert (True
-        and then Buffer.CDR_Position = 0
-        and then Buffer.Initial_CDR_Position = 0);
+      Grow_Shrink (Buffer.Contents'Access, Size, A_Data);
+      --  First try to grow an existing Iovec.

-      Buffer.Endianness           := Endianness;
-      Buffer.CDR_Position         := Initial_CDR_Position;
-      Buffer.Initial_CDR_Position := Initial_CDR_Position;
+      if Is_Null (A_Data) then
+         declare
+            A_Chunk : Chunk_Access;
+            Data_Iovec : Iovec;
+         begin
+            Allocate (Buffer.Storage'Access, A_Chunk, Size);
+            pragma Assert (A_Chunk /= null and then A_Chunk.Size >= Size);
+            Data_Iovec := (Iov_Base => Chunk_Storage (A_Chunk),
+                           Iov_Len  => Storage_Offset (Size));

-      Append
-        (Iovec_Pool => Buffer.Contents,
-         An_Iovec   => Data_Iovec);
+            A_Data := Chunk_Storage (A_Chunk);
+            Metadata (A_Chunk).all := (Last_Used => Size);
+            Append
+              (Iovec_Pool => Buffer.Contents,
+               An_Iovec   => Data_Iovec,
+               A_Chunk    => A_Chunk);
+            pragma Assert (not Is_Null (A_Data));
+         end;
+      end if;

-      Buffer.Length := Size;
-   end Initialize_Buffer;
+      Data := A_Data;
+      Buffer.CDR_Position := Buffer.CDR_Position + Size;
+      Buffer.Length := Buffer.Length + Size;
+   end Allocate_And_Insert_Cooked_Data;

-   -------------
-   -- Reserve --
-   -------------
+   ------------------
+   -- CDR_Position --
+   ------------------

-   function Reserve
-     (Buffer : access Buffer_Type;
-      Amount :        Stream_Element_Count) return Reservation
-   is
-      Copy_Address     : Opaque_Pointer;
-      Initial_Position : constant Stream_Element_Offset :=
-                           Buffer.CDR_Position;
+   function CDR_Position
+     (Buffer : access Buffer_Type)
+     return Stream_Element_Offset is
    begin
-      Allocate_And_Insert_Cooked_Data
-        (Buffer, Amount, Copy_Address);
+      return Buffer.CDR_Position;
+   end CDR_Position;

-      return Reservation'
-        (Location     => Copy_Address,
-         Endianness   => Buffer.Endianness,
-         CDR_Position => Initial_Position,
-         Length       => Amount);
-   end Reserve;
-
-   ---------------
-   -- Copy_Data --
-   ---------------
-
-   procedure Copy_Data
-     (From : Buffer_Type;
-      Into :    Reservation) is
-   begin
-      pragma Assert (True
-        and then From.Endianness           = Into.Endianness
-        and then From.Initial_CDR_Position = Into.CDR_Position
-        and then From.Length               = Into.Length);
-
-      Iovec_Pools.Dump (From.Contents, Into.Location);
-   end Copy_Data;
-
    ----------
    -- Copy --
    ----------

-   function Copy
-     (Buffer : access Buffer_Type)
-     return Buffer_Access
-   is
+   function Copy (Buffer : access Buffer_Type) return Buffer_Access is
       Into         : constant Buffer_Access := new Buffer_Type;
       Copy_Address : Opaque_Pointer;

@@ -206,115 +180,139 @@ package body PolyORB.Buffers is
       return Into;
    end Copy;

-   -------------
-   -- Release --
-   -------------
+   ---------------
+   -- Copy_Data --
+   ---------------

-   procedure Release
-     (A_Buffer : in out Buffer_Access)
-   is
-      procedure Free is new Ada.Unchecked_Deallocation
-        (Buffer_Type, Buffer_Access);
-
+   procedure Copy_Data
+     (From : Buffer_Type;
+      Into :    Reservation) is
    begin
-      if A_Buffer /= null then
-         Release_Contents (A_Buffer.all);
-         Free (A_Buffer);
-      end if;
-   end Release;
+      pragma Assert (True
+        and then From.Endianness           = Into.Endianness
+        and then From.Initial_CDR_Position = Into.CDR_Position
+        and then From.Length               = Into.Length);

-   -----------------------------
-   -- To_Stream_Element_Array --
-   -----------------------------
+      Iovec_Pools.Dump (From.Contents, Into.Location);
+   end Copy_Data;

-   function To_Stream_Element_Array
-     (Buffer   : access Buffer_Type)
-     return Opaque.Zone_Access
-   is
-      Result : Opaque.Zone_Access;
+   ----------------
+   -- Endianness --
+   ----------------
+
+   function Endianness (Buffer : access Buffer_Type) return Endianness_Type is
    begin
-      pragma Assert (Buffer.Initial_CDR_Position = 0);
-      Result := new Stream_Element_Array (1 .. Length (Buffer));
-      Iovec_Pools.Dump (Buffer.Contents, Result (Result'First)'Address);
-      return Result;
-   end To_Stream_Element_Array;
+      return Buffer.Endianness;
+   end Endianness;

-   function To_Stream_Element_Array
-     (Buffer   : access Buffer_Type)
-     return Stream_Element_Array
+   ------------------
+   -- Extract_Data --
+   ------------------
+
+   procedure Extract_Data
+     (Buffer      : access Buffer_Type;
+      Data        : out Opaque_Pointer;
+      Size        : Stream_Element_Count;
+      Use_Current : Boolean := True;
+      At_Position : Stream_Element_Offset := 0)
    is
-      Contents : Zone_Access := To_Stream_Element_Array (Buffer);
-      Result   : constant Stream_Element_Array := Contents.all;
+      Extracted_Size : Stream_Element_Count := Size;
    begin
-      Free (Contents);
-      return Result;
-   end To_Stream_Element_Array;
+      Partial_Extract_Data (Buffer, Data, Extracted_Size,
+        Use_Current, At_Position, Partial => False);
+      pragma Assert (Extracted_Size = Size);
+   end Extract_Data;

-   ----------
-   -- Peek --
-   ----------
+   ------------
+   -- Length --
+   ------------

-   function Peek
-     (Buffer   : access Buffer_Type;
-      Position :        Ada.Streams.Stream_Element_Offset)
-     return Ada.Streams.Stream_Element is
+   function Length (Buffer : access Buffer_Type) return Stream_Element_Count is
    begin
-      return Iovec_Pools.Peek
-        (Iovec_Pool => Buffer.Contents,
-         Offset     => Position - Buffer.Initial_CDR_Position);
-   end Peek;
+      return Buffer.Length;
+   end Length;

-   ------------------------------
-   -- The CDR view of a buffer --
-   ------------------------------
+   -----------------------
+   -- Initialize_Buffer --
+   -----------------------

-   --------------------------
-   -- Set_Initial_Position --
-   --------------------------
+   procedure Initialize_Buffer
+     (Buffer               : access Buffer_Type;
+      Size                 :        Stream_Element_Count;
+      Data                 :        Opaque_Pointer;
+      Endianness           :        Endianness_Type;
+      Initial_CDR_Position :        Stream_Element_Offset)
+   is
+      Data_Iovec : constant Iovec := (Iov_Base => Data,
+                                      Iov_Len  => Storage_Offset (Size));

-   procedure Set_Initial_Position
-     (Buffer   : access Buffer_Type;
-      Position :        Stream_Element_Offset) is
    begin
-      pragma Assert
-        (Buffer.Initial_CDR_Position = Buffer.CDR_Position);
+      pragma Assert (True
+        and then Buffer.CDR_Position = 0
+        and then Buffer.Initial_CDR_Position = 0);

-      Buffer.Initial_CDR_Position := Position;
-      Buffer.CDR_Position         := Position;
-   end Set_Initial_Position;
+      Buffer.Endianness           := Endianness;
+      Buffer.CDR_Position         := Initial_CDR_Position;
+      Buffer.Initial_CDR_Position := Initial_CDR_Position;

-   Null_Data : aliased Stream_Element_Array (1 .. Alignment_Type'Last - 1)
-     := (1 .. Alignment_Type'Last - 1 => 0);
-   --  Null data used for padding.
+      Append
+        (Iovec_Pool => Buffer.Contents,
+         An_Iovec   => Data_Iovec);

-   Null_Data_Address : constant Opaque_Pointer
-     := Null_Data (Null_Data'First)'Address;
+      Buffer.Length := Size;
+   end Initialize_Buffer;

+   ---------------------
+   -- Insert_Raw_Data --
+   ---------------------
+
+   procedure Insert_Raw_Data
+     (Buffer    : access Buffer_Type;
+      Size      :        Stream_Element_Count;
+      Data      :        Opaque_Pointer)
+   is
+      Data_Iovec : constant Iovec
+        := (Iov_Base => Data, Iov_Len => Storage_Offset (Size));
+   begin
+      pragma Assert (Buffer.Endianness = Host_Order);
+
+      Append (Iovec_Pool => Buffer.Contents, An_Iovec => Data_Iovec);
+      Buffer.CDR_Position := Buffer.CDR_Position + Size;
+      Buffer.Length       := Buffer.Length + Size;
+   end Insert_Raw_Data;
+
    ---------------
    -- Pad_Align --
    ---------------

+   Null_Data : aliased Stream_Element_Array
+                 (1 .. 2 ** Alignment_Type'Pos (Alignment_Type'Last)) :=
+                 (others => 0);
+   --  Null data used for padding
+
+   Null_Data_Address : constant Opaque_Pointer :=
+                         Null_Data (Null_Data'First)'Address;
+
    procedure Pad_Align
      (Buffer    : access Buffer_Type;
       Alignment : Alignment_Type)
    is
       Padding : constant Stream_Element_Count :=
-                  (Alignment - Buffer.CDR_Position) mod Alignment;
+                  Padding_Size (Buffer.CDR_Position, Alignment);
       Padding_Space : Opaque_Pointer;
    begin
+      pragma Debug
+        (C, O ("Pad_Align: pos = "
+            & Stream_Element_Offset'Image (Buffer.CDR_Position)
+            & ", padding by" & Stream_Element_Count'Image (Padding)
+            & " for " & Alignment_Type'Image (Alignment)));
+
       if Padding = 0 then
          --  Buffer is already aligned
+
          return;
       end if;

-      pragma Debug
-        (C, O ("Pad_Align: pos = "
-            & Stream_Element_Offset'Image (Buffer.CDR_Position)));
-      pragma Debug
-        (C, O ("Aligning on" & Alignment_Type'Image (Alignment)));
-      pragma Debug (C, O ("Padding by"
-                       & Stream_Element_Count'Image (Padding)));
-
       --  Try to extend Buffer.Content's last Iovec to provide proper alignment

       Grow_Shrink (Buffer.Contents'Access, Padding, Padding_Space);
@@ -348,143 +346,23 @@ package body PolyORB.Buffers is
       Align_Position (Buffer, Alignment);
    end Pad_Align;

-   --------------------
-   -- Align_Position --
-   --------------------
-
-   procedure Align_Position
-     (Buffer    : access Buffer_Type;
-      Alignment :        Alignment_Type)
-   is
-      Padding : constant Stream_Element_Count
-         := (Alignment - Buffer.CDR_Position) mod Alignment;
-   begin
-      pragma Debug
-        (C, O ("Align_Position: pos = "
-            & Stream_Element_Offset'Image (Buffer.CDR_Position)));
-      pragma Debug
-        (C, O ("Aligning on" & Alignment_Type'Image (Alignment)));
-      pragma Debug
-        (C, O ("Padding by" & Stream_Element_Count'Image (Padding)));
-
-      if Padding = 0 then
-         --  Buffer is already aligned.
-
-         return;
-      end if;
-
-      pragma Assert
-        (Buffer.CDR_Position + Padding
-         <= Buffer.Initial_CDR_Position + Buffer.Length);
-
-      Buffer.CDR_Position := Buffer.CDR_Position + Padding;
-      --  Advance the CDR position to the new alignment.
-
-      pragma Assert (Buffer.CDR_Position mod Alignment = 0);
-      --  Post-condition: the buffer is aligned as requested.
-
-      pragma Debug
-        (C, O ("Align_Position: now at"
-            & Stream_Element_Offset'Image (Buffer.CDR_Position)));
-
-   end Align_Position;
-
-   ---------------------
-   -- Insert_Raw_Data --
-   ---------------------
-
-   procedure Insert_Raw_Data
-     (Buffer    : access Buffer_Type;
-      Size      :        Stream_Element_Count;
-      Data      :        Opaque_Pointer)
-   is
-      Data_Iovec : constant Iovec
-        := (Iov_Base => Data, Iov_Len => Storage_Offset (Size));
-   begin
-      pragma Assert (Buffer.Endianness = Host_Order);
-
-      Append
-        (Iovec_Pool => Buffer.Contents,
-         An_Iovec   => Data_Iovec);
-      Buffer.CDR_Position := Buffer.CDR_Position + Size;
-      Buffer.Length := Buffer.Length + Size;
-   end Insert_Raw_Data;
-
-   -------------------------------------
-   -- Allocate_And_Insert_Cooked_Data --
-   -------------------------------------
-
-   procedure Allocate_And_Insert_Cooked_Data
-     (Buffer    : access Buffer_Type;
-      Size      :        Stream_Element_Count;
-      Data      :    out Opaque_Pointer)
-   is
-      A_Data : Opaque_Pointer;
-
-   begin
-      Grow_Shrink (Buffer.Contents'Access, Size, A_Data);
-      --  First try to grow an existing Iovec.
-
-      if Is_Null (A_Data) then
-         declare
-            A_Chunk : Chunk_Access;
-            Data_Iovec : Iovec;
-         begin
-            Allocate (Buffer.Storage'Access, A_Chunk, Size);
-            pragma Assert (A_Chunk /= null and then A_Chunk.Size >= Size);
-            Data_Iovec := (Iov_Base => Chunk_Storage (A_Chunk),
-                           Iov_Len  => Storage_Offset (Size));
-
-            A_Data := Chunk_Storage (A_Chunk);
-            Metadata (A_Chunk).all := (Last_Used => Size);
-            Append
-              (Iovec_Pool => Buffer.Contents,
-               An_Iovec   => Data_Iovec,
-               A_Chunk    => A_Chunk);
-            pragma Assert (not Is_Null (A_Data));
-         end;
-      end if;
-
-      Data := A_Data;
-      Buffer.CDR_Position := Buffer.CDR_Position + Size;
-      Buffer.Length := Buffer.Length + Size;
-   end Allocate_And_Insert_Cooked_Data;
-
-   ----------------------
-   -- Unuse_Allocation --
-   ----------------------
-
-   procedure Unuse_Allocation
-     (Buffer    : access Buffer_Type;
-      Size      :        Stream_Element_Count)
-   is
-      Data : Opaque_Pointer;
-
-   begin
-      if Size /= 0 then
-         Grow_Shrink (Buffer.Contents'Access, -Size, Data);
-         Buffer.CDR_Position := Buffer.CDR_Position - Size;
-         Buffer.Length := Buffer.Length - Size;
-      end if;
-   end Unuse_Allocation;
-
    ------------------
-   -- Extract_Data --
+   -- Padding_Size --
    ------------------

-   procedure Extract_Data
-     (Buffer      : access Buffer_Type;
-      Data        : out Opaque_Pointer;
-      Size        : Stream_Element_Count;
-      Use_Current : Boolean := True;
-      At_Position : Stream_Element_Offset := 0)
+   function Padding_Size
+     (Pos       : Stream_Element_Offset;
+      Alignment : Alignment_Type) return Stream_Element_Count
    is
-      Extracted_Size : Stream_Element_Count := Size;
+      subtype Alignment_Modular is System.Unsigned_Types.Long_Unsigned;
+
+      Alignment_Mask : constant Alignment_Modular :=
+                         Shift_Left (1, Alignment_Type'Pos (Alignment)) - 1;
+      Padding : constant Alignment_Modular :=
+                  (-Alignment_Modular (Pos)) and Alignment_Mask;
    begin
-      Partial_Extract_Data (Buffer, Data, Extracted_Size,
-        Use_Current, At_Position, Partial => False);
-      pragma Assert (Extracted_Size = Size);
-   end Extract_Data;
+      return Stream_Element_Count (Padding);
+   end Padding_Size;

    --------------------------
    -- Partial_Extract_Data --
@@ -520,38 +398,79 @@ package body PolyORB.Buffers is
       end if;
    end Partial_Extract_Data;

-   ------------------
-   -- CDR_Position --
-   ------------------
+   ----------
+   -- Peek --
+   ----------

-   function CDR_Position
-     (Buffer : access Buffer_Type)
-     return Stream_Element_Offset is
+   function Peek
+     (Buffer   : access Buffer_Type;
+      Position : Ada.Streams.Stream_Element_Offset)
+     return Ada.Streams.Stream_Element
+   is
    begin
-      return Buffer.CDR_Position;
-   end CDR_Position;
+      return Iovec_Pools.Peek
+        (Iovec_Pool => Buffer.Contents,
+         Offset     => Position - Buffer.Initial_CDR_Position);
+   end Peek;

-   ----------------------
-   -- Set_CDR_Position --
-   ----------------------
+   --------------------
+   -- Receive_Buffer --
+   --------------------

-   procedure Set_CDR_Position
+   procedure Receive_Buffer
      (Buffer   : access Buffer_Type;
-      Position :        Stream_Element_Offset) is
+      Max      :        Stream_Element_Count;
+      Received :    out Stream_Element_Count)
+   is
+      V                  : aliased Iovec;
+      Saved_CDR_Position : constant Stream_Element_Offset :=
+                             Buffer.CDR_Position;
+
    begin
-      Buffer.CDR_Position := Position;
-   end Set_CDR_Position;
+      pragma Debug (C, O ("Receive_Buffer: Max =" & Max'Img));

-   ------------
-   -- Rewind --
-   ------------
+      Allocate_And_Insert_Cooked_Data (Buffer, Max, V.Iov_Base);
+      V.Iov_Len := Storage_Offset (Max);
+      Lowlevel_Receive (V'Access);
+      Received := Stream_Element_Offset (V.Iov_Len);

-   procedure Rewind
-     (Buffer : access Buffer_Type) is
+      pragma Debug (C, O ("Receive_Buffer: Received =" & Received'Img));
+      Unuse_Allocation (Buffer, Max - Received);
+      Buffer.CDR_Position := Saved_CDR_Position;
+   end Receive_Buffer;
+
+   -------------
+   -- Release --
+   -------------
+
+   procedure Release
+     (A_Buffer : in out Buffer_Access)
+   is
+      procedure Free is new Ada.Unchecked_Deallocation
+        (Buffer_Type, Buffer_Access);
+
    begin
-      Buffer.CDR_Position := Buffer.Initial_CDR_Position;
-   end Rewind;
+      if A_Buffer /= null then
+         Release_Contents (A_Buffer.all);
+         Free (A_Buffer);
+      end if;
+   end Release;

+   ----------------------
+   -- Release_Contents --
+   ----------------------
+
+   procedure Release_Contents
+     (Buffer : in out Buffer_Type) is
+   begin
+      Release (Buffer.Contents);
+      Buffer_Chunk_Pools.Release (Buffer.Storage'Access);
+      Buffer.CDR_Position         := 0;
+      Buffer.Initial_CDR_Position := 0;
+      Buffer.Endianness           := Host_Order;
+      Buffer.Length               := 0;
+   end Release_Contents;
+
    ---------------
    -- Remaining --
    ---------------
@@ -564,10 +483,38 @@ package body PolyORB.Buffers is
         - Buffer.CDR_Position;
    end Remaining;

-   ---------------------------------------
-   -- The input/output view of a buffer --
-   ---------------------------------------
+   -------------
+   -- Reserve --
+   -------------

+   function Reserve
+     (Buffer : access Buffer_Type;
+      Amount :        Stream_Element_Count) return Reservation
+   is
+      Copy_Address     : Opaque_Pointer;
+      Initial_Position : constant Stream_Element_Offset :=
+                           Buffer.CDR_Position;
+   begin
+      Allocate_And_Insert_Cooked_Data
+        (Buffer, Amount, Copy_Address);
+
+      return Reservation'
+        (Location     => Copy_Address,
+         Endianness   => Buffer.Endianness,
+         CDR_Position => Initial_Position,
+         Length       => Amount);
+   end Reserve;
+
+   ------------
+   -- Rewind --
+   ------------
+
+   procedure Rewind
+     (Buffer : access Buffer_Type) is
+   begin
+      Buffer.CDR_Position := Buffer.Initial_CDR_Position;
+   end Rewind;
+
    -----------------
    -- Send_Buffer --
    -----------------
@@ -579,38 +526,43 @@ package body PolyORB.Buffers is
       Send_Iovec_Pool (Buffer.Contents'Access, Buffer.Length);
    end Send_Buffer;

-   --------------------
-   -- Receive_Buffer --
-   --------------------
+   ----------------------
+   -- Set_CDR_Position --
+   ----------------------

-   procedure Receive_Buffer
+   procedure Set_CDR_Position
      (Buffer   : access Buffer_Type;
-      Max      :        Stream_Element_Count;
-      Received :    out Stream_Element_Count)
-   is
-      V : aliased Iovec;
-      Saved_CDR_Position : constant Stream_Element_Offset
-        := Buffer.CDR_Position;
+      Position :        Stream_Element_Offset) is
+   begin
+      Buffer.CDR_Position := Position;
+   end Set_CDR_Position;

-   begin
-      pragma Debug (C, O ("Receive_Buffer: Max =" & Max'Img));
+   --------------------
+   -- Set_Endianness --
+   --------------------

-      Allocate_And_Insert_Cooked_Data (Buffer, Max, V.Iov_Base);
-      V.Iov_Len := Storage_Offset (Max);
-      Lowlevel_Receive (V'Access);
-      Received := Stream_Element_Offset (V.Iov_Len);
+   procedure Set_Endianness
+     (Buffer : access Buffer_Type;
+      E      :        Endianness_Type) is
+   begin
+      pragma Assert (Buffer.CDR_Position = Buffer.Initial_CDR_Position);
+      Buffer.Endianness := E;
+   end Set_Endianness;

-      pragma Debug (C, O ("Receive_Buffer: Received =" & Received'Img));
-      Unuse_Allocation (Buffer, Max - Received);
-      Buffer.CDR_Position := Saved_CDR_Position;
-   end Receive_Buffer;
+   --------------------------
+   -- Set_Initial_Position --
+   --------------------------

-   -------------------------
-   -- Utility subprograms --
-   -------------------------
+   procedure Set_Initial_Position
+     (Buffer   : access Buffer_Type;
+      Position : Stream_Element_Offset) is
+   begin
+      pragma Assert
+        (Buffer.Initial_CDR_Position = Buffer.CDR_Position);

-   procedure Show (Octets : Zone_Access);
-   --  Display the contents of Octets for debugging purposes.
+      Buffer.Initial_CDR_Position := Position;
+      Buffer.CDR_Position         := Position;
+   end Set_Initial_Position;

    ----------
    -- Show --
@@ -667,6 +619,10 @@ package body PolyORB.Buffers is
       end if;
    end Show;

+   ----------
+   -- Show --
+   ----------
+
    procedure Show (Buffer : access Buffer_Type) is
    begin
       pragma Debug (C2, O2 ("Dumping "
@@ -680,22 +636,68 @@ package body PolyORB.Buffers is
       end if;

       declare
-         Dumped : Zone_Access
-           := To_Stream_Element_Array (Buffer);
+         Dumped : Zone_Access := To_Stream_Element_Array (Buffer);
       begin
          Show (Dumped);
          Free (Dumped);
       end;
    end Show;

-   -------------------------------------------
-   -- Implementation of package Iovec_Pools --
-   -------------------------------------------
+   -----------------------------
+   -- To_Stream_Element_Array --
+   -----------------------------

+   function To_Stream_Element_Array
+     (Buffer : access Buffer_Type) return Opaque.Zone_Access
+   is
+      Result : Opaque.Zone_Access;
+   begin
+      pragma Assert (Buffer.Initial_CDR_Position = 0);
+      Result := new Stream_Element_Array (1 .. Length (Buffer));
+      Iovec_Pools.Dump (Buffer.Contents, Result (Result'First)'Address);
+      return Result;
+   end To_Stream_Element_Array;
+
+   -----------------------------
+   -- To_Stream_Element_Array --
+   -----------------------------
+
+   function To_Stream_Element_Array
+     (Buffer : access Buffer_Type) return Stream_Element_Array
+   is
+      Contents : Zone_Access := To_Stream_Element_Array (Buffer);
+      Result   : constant Stream_Element_Array := Contents.all;
+   begin
+      Free (Contents);
+      return Result;
+   end To_Stream_Element_Array;
+
+   ----------------------
+   -- Unuse_Allocation --
+   ----------------------
+
+   procedure Unuse_Allocation
+     (Buffer    : access Buffer_Type;
+      Size      :        Stream_Element_Count)
+   is
+      Data : Opaque_Pointer;
+
+   begin
+      if Size /= 0 then
+         Grow_Shrink (Buffer.Contents'Access, -Size, Data);
+         Buffer.CDR_Position := Buffer.CDR_Position - Size;
+         Buffer.Length := Buffer.Length - Size;
+      end if;
+   end Unuse_Allocation;
+
+   -----------------
+   -- Iovec_Pools --
+   -----------------
+
    package body Iovec_Pools is

-      procedure Free is new Ada.Unchecked_Deallocation
-        (Iovec_Array, Iovec_Array_Access);
+      procedure Free is
+        new Ada.Unchecked_Deallocation (Iovec_Array, Iovec_Array_Access);

       ----------------------------------------
       -- Utility Subprograms (declarations) --
@@ -722,152 +724,35 @@ package body PolyORB.Buffers is
       procedure Dump (Iovecs : Iovec_Array; Into : Opaque_Pointer);
       --  Dump the content of Iovecs into Into

-      -----------------
-      -- Grow_Shrink --
-      -----------------
-
-      procedure Grow_Shrink
-        (Iovec_Pool   : access Iovec_Pool_Type;
-         Size         : Stream_Element_Offset;
-         Data         : out Opaque_Pointer)
-      is
-
-         -------------------------
-         -- First_Address_After --
-         -------------------------
-
-         function First_Address_After (An_Iovec : Iovec) return Opaque_Pointer;
-         pragma Inline (First_Address_After);
-         --  Return the address of the storage element immediately following
-         --  the last element of An_Iovec.
-
-         function First_Address_After
-           (An_Iovec : Iovec) return Opaque_Pointer
-         is
-         begin
-            return An_Iovec.Iov_Base + An_Iovec.Iov_Len;
-         end First_Address_After;
-
-         -------------
-         -- Do_Grow --
-         -------------
-
-         procedure Do_Grow
-           (Last_Iovec : in out Iovec;
-            Last_Chunk :        Chunk_Access);
-         pragma Inline (Do_Grow);
-
-         procedure Do_Grow
-           (Last_Iovec : in out Iovec;
-            Last_Chunk :        Chunk_Access) is
-         begin
-            if Last_Chunk /= null then
-               declare
-                  Chunk_Metadata : constant Chunk_Metadata_Access
-                    := Metadata (Last_Chunk);
-               begin
-                  if False
-                    or else (Size > 0
-                             and then Chunk_Metadata.Last_Used + Size
-                               <= Last_Chunk.Size)
-                    or else (Size < 0
-                             and then Chunk_Metadata.Last_Used + Size >= 0
-                             and then Last_Iovec.Iov_Len
-                               + Storage_Offset (Size) >= 0)
-                  then
-                     Chunk_Metadata.Last_Used
-                       := Chunk_Metadata.Last_Used + Size;
-                     Data := First_Address_After (Last_Iovec);
-                     Last_Iovec.Iov_Len := Last_Iovec.Iov_Len
-                       + Storage_Offset (Size);
-                  else
-                     --  Cannot grow last chunk: leave Data unchanged.
-
-                     pragma Debug
-                       (C, O ("Cannot satisfy growth request of size"
-                           & Stream_Element_Offset'Image (Size)));
-                     null;
-                  end if;
-               end;
-            end if;
-         end Do_Grow;
-
-      begin
-         Data := System.Null_Address;
-
-         if Iovec_Pool.Last = 0 then
-            --  Empty Iovec pool.
-
-            return;
-         end if;
-
-         if Iovec_Pool.Last <= Iovec_Pool.Prealloc_Array'Last then
-            Do_Grow (Iovec_Pool.Prealloc_Array (Iovec_Pool.Last),
-                     Iovec_Pool.Last_Chunk);
-         else
-            Do_Grow (Iovec_Pool.Dynamic_Array (Iovec_Pool.Last),
-                     Iovec_Pool.Last_Chunk);
-         end if;
-      end Grow_Shrink;
-
-      ----------------
-      -- Is_Dynamic --
-      ----------------
-
-      function Is_Dynamic (Iovec_Pool : Iovec_Pool_Type) return Boolean is
-      begin
-         return Iovec_Pool.Dynamic_Array /= null;
-      end Is_Dynamic;
-
-      --------------------
-      -- Iovecs_Address --
-      --------------------
-
-      function Iovecs_Address
-        (Iovec_Pool : Iovec_Pool_Type) return System.Address
-      is
-      begin
-         if Is_Dynamic (Iovec_Pool) then
-            return Iovec_Pool.Dynamic_Array (1)'Address;
-         else
-            return Iovec_Pool.Prealloc_Array (1)'Address;
-         end if;
-      end Iovecs_Address;
-
       ------------
-      -- Extend --
+      -- Append --
       ------------

-      procedure Extend
+      procedure Append
         (Iovec_Pool : in out Iovec_Pool_Type;
-         Require    :        Natural;
-         Allocate   :        Natural) is
+         An_Iovec   : Iovec;
+         A_Chunk    : Buffer_Chunk_Pools.Chunk_Access := null)
+      is
+         New_Last : constant Natural := Iovec_Pool.Last + 1;
       begin
-         pragma Assert (Allocate >= Require);
+         Extend (Iovec_Pool, New_Last, 2 * Iovec_Pool.Length);

-         if Require > Iovec_Pool.Length then
-            declare
-               New_Array : constant Iovec_Array_Access :=
-                             new Iovec_Array (1 .. Allocate);
+         --  Append new Iovec

-               Old_Array_Address : constant System.Address :=
-                                     Iovecs_Address (Iovec_Pool);
-               Old_Array : Iovec_Array (1 .. Iovec_Pool.Length);
-               for Old_Array'Address use Old_Array_Address;
-               pragma Import (Ada, Old_Array);
-            begin
-               New_Array (1 .. Iovec_Pool.Last) := Old_Array (Old_Array'Range);
+         Iovec_Pool.Last := New_Last;
+         Iovec_Pool.Last_Chunk := A_Chunk;

-               if Is_Dynamic (Iovec_Pool) then
-                  Free (Iovec_Pool.Dynamic_Array);
-               end if;
+         declare
+            Pool_Iovecs_Address : constant System.Address :=
+                                    Iovecs_Address (Iovec_Pool);
+            Pool_Iovecs : Iovec_Array (1 .. Iovec_Pool.Length);
+            for Pool_Iovecs'Address use Pool_Iovecs_Address;
+            pragma Import (Ada, Pool_Iovecs);
+         begin
+            Pool_Iovecs (Iovec_Pool.Last) := An_Iovec;
+         end;
+      end Append;

-               Iovec_Pool.Dynamic_Array := New_Array;
-               Iovec_Pool.Length := New_Array'Length;
-            end;
-         end if;
-      end Extend;
-
       ----------
       -- Dump --
       ----------
@@ -900,77 +785,56 @@ package body PolyORB.Buffers is
          end loop;
       end Dump;

-      -------------------------------------------
-      -- Visible subprograms (implementations) --
-      -------------------------------------------
+      ----------
+      -- Dump --
+      ----------

-      ------------------
-      -- Prepend_Pool --
-      ------------------
-
-      procedure Prepend_Pool
-        (Prefix     : Iovec_Pool_Type;
-         Iovec_Pool : in out Iovec_Pool_Type)
+      procedure Dump
+        (Iovec_Pool : Iovec_Pool_Type;
+         Into       : Opaque_Pointer)
       is
-         New_Last : constant Natural := Iovec_Pool.Last + Prefix.Last;
-
+         Vecs_Address : constant System.Address := Iovecs_Address (Iovec_Pool);
+         Vecs : Iovec_Array (1 .. Iovec_Pool.Last);
+         for Vecs'Address use Vecs_Address;
+         pragma Import (Ada, Vecs);
       begin
-         Extend (Iovec_Pool, New_Last, New_Last + 1);
-         --  An Iovec pool that has been prefixed will likely not be appended
-         --  to anymore.
+         Dump (Vecs, Into);
+      end Dump;

-         declare
-            Prefix_Iovecs_Address : constant System.Address :=
-                                      Iovecs_Address (Prefix);
-            Prefix_Iovecs : Iovec_Array (1 .. Prefix.Length);
-            for Prefix_Iovecs'Address use Prefix_Iovecs_Address;
-            pragma Import (Ada, Prefix_Iovecs);
-
-            Pool_Iovecs_Address : constant System.Address
-              := Iovecs_Address (Iovec_Pool);
-            Pool_Iovecs : Iovec_Array (1 .. Iovec_Pool.Length);
-            for Pool_Iovecs'Address use Pool_Iovecs_Address;
-            pragma Import (Ada, Pool_Iovecs);
-
-         begin
-            --  Append new Iovec
-
-            Pool_Iovecs (1 .. New_Last) :=
-              Prefix_Iovecs (Prefix_Iovecs'Range)
-                & Pool_Iovecs (1 .. Iovec_Pool.Last);
-            Iovec_Pool.Last := New_Last;
-         end;
-      end Prepend_Pool;
-
       ------------
-      -- Append --
+      -- Extend --
       ------------

-      procedure Append
+      procedure Extend
         (Iovec_Pool : in out Iovec_Pool_Type;
-         An_Iovec   : Iovec;
-         A_Chunk    : Buffer_Chunk_Pools.Chunk_Access := null)
-      is
-         New_Last : constant Natural := Iovec_Pool.Last + 1;
+         Require    :        Natural;
+         Allocate   :        Natural) is
       begin
-         Extend (Iovec_Pool, New_Last, 2 * Iovec_Pool.Length);
+         pragma Assert (Allocate >= Require);

-         --  Append new Iovec
+         if Require > Iovec_Pool.Length then
+            declare
+               New_Array : constant Iovec_Array_Access :=
+                             new Iovec_Array (1 .. Allocate);

-         Iovec_Pool.Last := New_Last;
-         Iovec_Pool.Last_Chunk := A_Chunk;
+               Old_Array_Address : constant System.Address :=
+                                     Iovecs_Address (Iovec_Pool);
+               Old_Array : Iovec_Array (1 .. Iovec_Pool.Length);
+               for Old_Array'Address use Old_Array_Address;
+               pragma Import (Ada, Old_Array);
+            begin
+               New_Array (1 .. Iovec_Pool.Last) := Old_Array (Old_Array'Range);

-         declare
-            Pool_Iovecs_Address : constant System.Address :=
-                                    Iovecs_Address (Iovec_Pool);
-            Pool_Iovecs : Iovec_Array (1 .. Iovec_Pool.Length);
-            for Pool_Iovecs'Address use Pool_Iovecs_Address;
-            pragma Import (Ada, Pool_Iovecs);
-         begin
-            Pool_Iovecs (Iovec_Pool.Last) := An_Iovec;
-         end;
-      end Append;
+               if Is_Dynamic (Iovec_Pool) then
+                  Free (Iovec_Pool.Dynamic_Array);
+               end if;

+               Iovec_Pool.Dynamic_Array := New_Array;
+               Iovec_Pool.Length := New_Array'Length;
+            end;
+         end if;
+      end Extend;
+
       ------------------
       -- Extract_Data --
       ------------------
@@ -1028,6 +892,122 @@ package body PolyORB.Buffers is
          end if;
       end Extract_Data;

+      -----------------
+      -- Grow_Shrink --
+      -----------------
+
+      procedure Grow_Shrink
+        (Iovec_Pool   : access Iovec_Pool_Type;
+         Size         : Stream_Element_Offset;
+         Data         : out Opaque_Pointer)
+      is
+
+         function First_Address_After (An_Iovec : Iovec) return Opaque_Pointer;
+         pragma Inline (First_Address_After);
+         --  Return the address of the storage element immediately following
+         --  the last element of An_Iovec.
+
+         procedure Do_Grow
+           (Last_Iovec : in out Iovec;
+            Last_Chunk : Chunk_Access);
+         pragma Inline (Do_Grow);
+         --  ??? comment needed
+
+         -------------
+         -- Do_Grow --
+         -------------
+
+         procedure Do_Grow
+           (Last_Iovec : in out Iovec;
+            Last_Chunk : Chunk_Access)
+         is
+         begin
+            if Last_Chunk /= null then
+               declare
+                  Chunk_Metadata : constant Chunk_Metadata_Access
+                    := Metadata (Last_Chunk);
+               begin
+                  if False
+                    or else (Size > 0
+                             and then Chunk_Metadata.Last_Used + Size
+                               <= Last_Chunk.Size)
+                    or else (Size < 0
+                             and then Chunk_Metadata.Last_Used + Size >= 0
+                             and then Last_Iovec.Iov_Len
+                               + Storage_Offset (Size) >= 0)
+                  then
+                     Chunk_Metadata.Last_Used
+                       := Chunk_Metadata.Last_Used + Size;
+                     Data := First_Address_After (Last_Iovec);
+                     Last_Iovec.Iov_Len := Last_Iovec.Iov_Len
+                       + Storage_Offset (Size);
+                  else
+                     --  Cannot grow last chunk: leave Data unchanged.
+
+                     pragma Debug
+                       (C, O ("Cannot satisfy growth request of size"
+                           & Stream_Element_Offset'Image (Size)));
+                     null;
+                  end if;
+               end;
+            end if;
+         end Do_Grow;
+
+         -------------------------
+         -- First_Address_After --
+         -------------------------
+
+         function First_Address_After
+           (An_Iovec : Iovec) return Opaque_Pointer
+         is
+         begin
+            return An_Iovec.Iov_Base + An_Iovec.Iov_Len;
+         end First_Address_After;
+
+      --  Start of processing for Grow_Shrink
+
+      begin
+         Data := System.Null_Address;
+
+         if Iovec_Pool.Last = 0 then
+            --  Empty Iovec pool.
+
+            return;
+         end if;
+
+         if Iovec_Pool.Last <= Iovec_Pool.Prealloc_Array'Last then
+            Do_Grow (Iovec_Pool.Prealloc_Array (Iovec_Pool.Last),
+                     Iovec_Pool.Last_Chunk);
+         else
+            Do_Grow (Iovec_Pool.Dynamic_Array (Iovec_Pool.Last),
+                     Iovec_Pool.Last_Chunk);
+         end if;
+      end Grow_Shrink;
+
+      --------------------
+      -- Iovecs_Address --
+      --------------------
+
+      function Iovecs_Address
+        (Iovec_Pool : Iovec_Pool_Type) return System.Address
+      is
+      begin
+         if Is_Dynamic (Iovec_Pool) then
+            return Iovec_Pool.Dynamic_Array (1)'Address;
+         else
+            return Iovec_Pool.Prealloc_Array (1)'Address;
+         end if;
+      end Iovecs_Address;
+
+      ----------------
+      -- Is_Dynamic --
+      ----------------
+
+      function Is_Dynamic (Iovec_Pool : Iovec_Pool_Type) return Boolean is
+      begin
+         return Iovec_Pool.Dynamic_Array /= null;
+      end Is_Dynamic;
+
       ----------
       -- Peek --
       ----------
@@ -1067,6 +1047,44 @@ package body PolyORB.Buffers is
          raise Constraint_Error;
       end Peek;

+      ------------------
+      -- Prepend_Pool --
+      ------------------
+
+      procedure Prepend_Pool
+        (Prefix     : Iovec_Pool_Type;
+         Iovec_Pool : in out Iovec_Pool_Type)
+      is
+         New_Last : constant Natural := Iovec_Pool.Last + Prefix.Last;
+
+      begin
+         Extend (Iovec_Pool, New_Last, New_Last + 1);
+         --  An Iovec pool that has been prefixed will likely not be appended
+         --  to anymore.
+
+         declare
+            Prefix_Iovecs_Address : constant System.Address :=
+                                      Iovecs_Address (Prefix);
+            Prefix_Iovecs : Iovec_Array (1 .. Prefix.Length);
+            for Prefix_Iovecs'Address use Prefix_Iovecs_Address;
+            pragma Import (Ada, Prefix_Iovecs);
+
+            Pool_Iovecs_Address : constant System.Address
+              := Iovecs_Address (Iovec_Pool);
+            Pool_Iovecs : Iovec_Array (1 .. Iovec_Pool.Length);
+            for Pool_Iovecs'Address use Pool_Iovecs_Address;
+            pragma Import (Ada, Pool_Iovecs);
+
+         begin
+            --  Append new Iovec
+
+            Pool_Iovecs (1 .. New_Last) :=
+              Prefix_Iovecs (Prefix_Iovecs'Range)
+                & Pool_Iovecs (1 .. Iovec_Pool.Last);
+            Iovec_Pool.Last := New_Last;
+         end;
+      end Prepend_Pool;
+
       -------------
       -- Release --
       -------------
@@ -1126,22 +1144,6 @@ package body PolyORB.Buffers is
          end loop;
       end Send_Iovec_Pool;

-      ----------
-      -- Dump --
-      ----------
-
-      procedure Dump
-        (Iovec_Pool : Iovec_Pool_Type;
-         Into       : Opaque_Pointer)
-      is
-         Vecs_Address : constant System.Address := Iovecs_Address (Iovec_Pool);
-         Vecs : Iovec_Array (1 .. Iovec_Pool.Last);
-         for Vecs'Address use Vecs_Address;
-         pragma Import (Ada, Vecs);
-      begin
-         Dump (Vecs, Into);
-      end Dump;
-
    end Iovec_Pools;

 end PolyORB.Buffers;
============================================================
--- src/polyorb-buffers.ads	11916cf4cd3bbf85ac3f1cec3e3258b3f55cc4e6
+++ src/polyorb-buffers.ads	6bb4bfbd014031a17a72d6fa142448937293608c
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---         Copyright (C) 2001-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2001-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -35,6 +35,7 @@ with Ada.Streams;
 --  Note: Buffers should only be read/written sequentially.

 with Ada.Streams;
+with Ada.Unchecked_Conversion;

 with System.Storage_Elements;

@@ -49,8 +50,21 @@ package PolyORB.Buffers is
    -------------------------

    type Endianness_Type is (Little_Endian, Big_Endian);
-   subtype Alignment_Type is Ada.Streams.Stream_Element_Offset range 1 .. 8;
+   --  Endianness of a buffer

+   type Alignment_Type is (Align_1, Align_2, Align_4, Align_8);
+   for Alignment_Type use
+     (Align_1 => 1,
+      Align_2 => 2,
+      Align_4 => 4,
+      Align_8 => 8);
+   for Alignment_Type'Size use Short_Short_Integer'Size;
+   --  Alignment of a piece of data within a buffer
+   --  It is assumed that <n> = 2 ** Align_<n>'Pos = representation(Align_<n>)
+
+   function Alignment_Of is
+     new Ada.Unchecked_Conversion (Short_Short_Integer, Alignment_Type);
+
    Host_Order : constant Endianness_Type;
    --  The byte order of this host.

@@ -174,7 +188,7 @@ package PolyORB.Buffers is

    procedure Align_Position
      (Buffer    : access Buffer_Type;
-      Alignment :        Alignment_Type);
+      Alignment : Alignment_Type);
    --  Aligns Buffer on specified Alignment before retrieving aligned data

    --  After execution of either of the two above operations, the current CDR
============================================================
--- src/polyorb-exceptions.adb	f8d2de11d4615d84e490265229949ca430326d08
+++ src/polyorb-exceptions.adb	90bb51d2a7ccd0f01ef210908cb23ef82c4373f1
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2002-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2002-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -155,7 +155,7 @@ package body PolyORB.Exceptions is
    begin
       O ("Dump_All_Occurrences:");

-      if Exc_Occ_List = Empty then
+      if Is_Empty (Exc_Occ_List) then
          O ("No stored exceptions.");
          return;
       end if;
============================================================
--- src/polyorb-if_descriptors.ads	0cef5e8b1268b6c299d0ba1658baf3067ac8e5a2
+++ src/polyorb-if_descriptors.ads	661166cb263715f320bc96025a8eee327938f480
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---            Copyright (C) 2002 Free Software Foundation, Inc.             --
+--         Copyright (C) 2002-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -16,12 +16,12 @@
 -- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
 -- License  for more details.  You should have received  a copy of the GNU  --
 -- General Public License distributed with PolyORB; see file COPYING. If    --
--- not, write to the Free Software Foundation, 59 Temple Place - Suite 330, --
--- Boston, MA 02111-1307, USA.                                              --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth    --
+-- Floor, Boston, MA 02111-1301, USA.                                       --
 --                                                                          --
 --                                                                          --
---                PolyORB is maintained by ACT Europe.                      --
---                    (email: sales@act-europe.fr)                          --
+--                  PolyORB is maintained by AdaCore                        --
+--                     (email: sales@adacore.com)                           --
 --                                                                          --
 ------------------------------------------------------------------------------

@@ -35,7 +35,7 @@ package PolyORB.If_Descriptors is

 package PolyORB.If_Descriptors is

-   type If_Descriptor is abstract new Smart_Pointers.Entity
+   type If_Descriptor is abstract new Smart_Pointers.Non_Controlled_Entity
      with private;
    type If_Descriptor_Access is access all If_Descriptor'Class;

@@ -58,7 +58,7 @@ private

 private

-   type If_Descriptor is abstract new Smart_Pointers.Entity
+   type If_Descriptor is abstract new Smart_Pointers.Non_Controlled_Entity
      with null record;

 end PolyORB.If_Descriptors;
============================================================
--- src/polyorb-jobs.adb	f0697ad1b8affcbf53bef6b435a6955a84f3952a
+++ src/polyorb-jobs.adb	1dce24e40213573ef364c6467a2c67839b3e324b
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2001-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2001-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -86,7 +86,7 @@ package body PolyORB.Jobs is
    is
       use type Job_Queues.List;
    begin
-      return Q.Contents = Job_Queues.Empty;
+      return Job_Queues.Is_Empty (Q.Contents);
    end Is_Empty;

    ---------------
============================================================
--- src/polyorb-minimal_servant.ads	471788336df2a4fb10b2178852cb392718a154ef
+++ src/polyorb-minimal_servant.ads	70ea2db2756739d89e673e6ec54b6c3bec4ed874
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---         Copyright (C) 2002-2007, Free Software Foundation, Inc.          --
+--         Copyright (C) 2002-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -40,13 +40,14 @@ with PolyORB.Smart_Pointers;
 with PolyORB.Components;
 with PolyORB.Servants;
 with PolyORB.Smart_Pointers;
+with PolyORB.Smart_Pointers.Controlled_Entities;
 with PolyORB.Requests;

 package PolyORB.Minimal_Servant is

    pragma Elaborate_Body;

-   type Servant is abstract new PolyORB.Smart_Pointers.Entity
+   type Servant is abstract new Smart_Pointers.Controlled_Entities.Entity
      with private;

    type Servant_Acc is access all Servant;
@@ -72,7 +73,8 @@ private
      (Self : not null access Implementation;
       Msg  : Components.Message'Class) return Components.Message'Class;

-   type Servant is abstract new PolyORB.Smart_Pointers.Entity with record
+   type Servant is abstract new Smart_Pointers.Controlled_Entities.Entity
+   with record
       Neutral_View : aliased Implementation (Servant'Access);
       --  The PolyORB (personality-neutral) view of this servant.
       --  This instance of the multiple views idiom allows the
============================================================
--- src/polyorb-opaque-chunk_pools.adb	e192a5d0143eaa35a83187111175b88350421734
+++ src/polyorb-opaque-chunk_pools.adb	70261eaec2aee40c52b3c7e7634dba38401d035a
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2001-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2001-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -62,10 +62,9 @@ package body PolyORB.Opaque.Chunk_Pools
       else
          New_Chunk := new Chunk (Size => Allocation_Size);
          New_Chunk.Metadata := Null_Metadata;
+         Append (Pool.Dynamic_Chunks, New_Chunk);
       end if;

-      Append (Pool.Chunks, New_Chunk);
-
       A_Chunk := New_Chunk;
    end Allocate;

@@ -79,38 +78,48 @@ package body PolyORB.Opaque.Chunk_Pools
       return A_Chunk.Data (A_Chunk.Data'First)'Address;
    end Chunk_Storage;

+   ----------
+   -- Link --
+   ----------
+
+   function Link
+     (C     : access Chunk;
+      Which : Utils.Ilists.Link_Type) return access Chunk_Access
+   is
+      use Utils.Ilists;
+   begin
+      pragma Assert (Which = Next);
+      return C.Next'Unchecked_Access;
+   end Link;
+
+   --------------
+   -- Metadata --
+   --------------
+
+   function Metadata
+     (A_Chunk : Chunk_Access) return Metadata_Access is
+   begin
+      return A_Chunk.Metadata'Access;
+   end Metadata;
+
    -------------
    -- Release --
    -------------

    procedure Release (Pool : access Pool_Type) is
       procedure Free is new Ada.Unchecked_Deallocation (Chunk, Chunk_Access);
-      It : Chunk_Lists.Iterator := First (Pool.Chunks);
+      It : Chunk_Lists.Iterator := First (Pool.Dynamic_Chunks);
    begin
       while not Last (It) loop
          declare
             use type System.Address;
-            This : Chunk_Access renames Value (It).all;
+            This : Chunk_Access := Value (It);
          begin
-            if This.all'Address /= Pool.Prealloc'Address then
-               Free (This);
-            end if;
+            Remove (Pool.Dynamic_Chunks, It);
+            Free (This);
          end;
-         Next (It);
       end loop;
-
-      Deallocate (Pool.Chunks);
       Pool.Prealloc_Used := False;
    end Release;

-   --------------
-   -- Metadata --
-   --------------
-
-   function Metadata
-     (A_Chunk : Chunk_Access) return Metadata_Access is
-   begin
-      return A_Chunk.Metadata'Access;
-   end Metadata;
-
 end PolyORB.Opaque.Chunk_Pools;
============================================================
--- src/polyorb-opaque-chunk_pools.ads	19d09d4d795d8e83a12682a9aa30e32d62663d57
+++ src/polyorb-opaque-chunk_pools.ads	a4f3ca205b2d723e8fc53876da9e538ef2d81dbb
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---         Copyright (C) 2001-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2001-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -27,15 +27,15 @@

 --  Pools of memory chunks, with associated client metadata.

-with PolyORB.Utils.Chained_Lists;
+pragma Ada_2005;

-generic
+with PolyORB.Utils.Ilists;

+generic
    type Chunk_Metadata is private;
    --  The metadata associated with each storage chunk.

    Null_Metadata : Chunk_Metadata;
-
 package PolyORB.Opaque.Chunk_Pools is

    pragma Preelaborate;
@@ -65,14 +65,11 @@ package PolyORB.Opaque.Chunk_Pools is
      (A_Chunk : Chunk_Access) return Opaque.Opaque_Pointer;
    --  Return a pointer to a chunk's storage space.

-   procedure Release
-     (Pool : access Pool_Type);
+   procedure Release (Pool : access Pool_Type);
    --  Signals that Pool will not be used anymore.
    --  The associated storage is returned to the system.

-   function Metadata
-     (A_Chunk : Chunk_Access)
-     return Metadata_Access;
+   function Metadata (A_Chunk : Chunk_Access) return Metadata_Access;
    --  Returns an access to the metadata associated
    --  with A_Chunk by the client of the Chunk_Pool
    --  package.
@@ -84,26 +81,37 @@ private
    --  A chunk pool is managed as a linked list
    --  of chunks.

-   type Chunk (Size : Ada.Streams.Stream_Element_Count) is
-     tagged limited record
-        Metadata : aliased Chunk_Metadata;
-         --  Metadata associated by a client to this chunk.
+   type Chunk (Size : Ada.Streams.Stream_Element_Count) is limited record
+      Next     : aliased Chunk_Access;
+      --  Used to link Chunk on pool's dynamic chunks list

-        Data     : aliased Ada.Streams.Stream_Element_Array (1 .. Size);
-         --  The storage space of the chunk.
-     end record;
+      Metadata : aliased Chunk_Metadata;
+      --  Metadata associated by a client to this chunk.

-   package Chunk_Lists is new Utils.Chained_Lists (Chunk_Access);
+      Data     : aliased Ada.Streams.Stream_Element_Array (1 .. Size);
+      --  The storage space of the chunk.
+   end record;

+   function Link
+     (C     : access Chunk;
+      Which : Utils.Ilists.Link_Type) return access Chunk_Access;
+   pragma Inline (Link);
+   --  Accessor for Next
+
+   package Chunk_Lists is new Utils.Ilists.Lists
+     (T             => Chunk,
+      T_Acc         => Chunk_Access,
+      Doubly_Linked => False);
+
    type Pool_Type is limited record
       Prealloc : aliased Chunk (Default_Chunk_Size);
-      --  A pre-allocated chunk.
+      --  A pre-allocated chunk

       Prealloc_Used : Boolean := False;
-      --  The pre-allocated chunk has been used.
+      --  The pre-allocated chunk has been used

-      Chunks   : Chunk_Lists.List;
-      --  The list of all dynamically allocated chunks in this pool.
+      Dynamic_Chunks   : Chunk_Lists.List;
+      --  The list of all dynamically allocated chunks in this pool
    end record;

 end PolyORB.Opaque.Chunk_Pools;
============================================================
--- src/polyorb-orb.adb	38549bf735dccbffb71e5c8d6a9a5da27f217dcc
+++ src/polyorb-orb.adb	31cea568c888e0588e64562740702d4a72381d1a
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2001-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2001-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -139,7 +139,7 @@ package body PolyORB.ORB is
       Pro : Binding_Data.Profile_Access;
       QoS : PolyORB.QoS.QoS_Parameters) return Smart_Pointers.Ref
    is
-      use BO_Lists;
+      use PBOL;

       It     : Iterator;
       Result : Smart_Pointers.Ref;
@@ -160,18 +160,13 @@ package body PolyORB.ORB is
       while not Last (It) loop

          declare
-            BO_Acc : Binding_Object_Access renames Value (It).all;
-            End_Iterator : BO_Lists.Iterator;
+            BO_Acc : Binding_Object_Access renames Value (It);
          begin
             if not Valid (BO_Acc) then

-               --  Mark binding object as not referenced anymore
+               --  Mark binding object as not referenced anymore and purge

-               Register_Reference_Information
-                 (BO_Acc, Component_Access (ORB), End_Iterator);
-
-               --  Now we can safely purge it from the list
-
+               Set_Referenced (BO_Acc, Referenced => False);
                Remove (ORB.Binding_Objects, It);

             elsif Get_Profile (BO_Acc) /= null then
@@ -646,40 +641,24 @@ package body PolyORB.ORB is
       declare
          BO_Acc : constant Binding_Object_Access :=
                     Binding_Object_Access (Smart_Pointers.Entity_Of (BO));
-         It     : BO_Lists.Iterator;
-
       begin
          Enter_ORB_Critical_Section (ORB.ORB_Controller);

          --  Register BO in the Binding_Objects list of ORB

-         BO_Lists.Prepend (ORB.Binding_Objects, BO_Acc);
+         PBOL.Prepend (ORB.Binding_Objects, BO_Acc);
+         Set_Referenced (BO_Acc, Referenced => True);

-         --  Save the position
+         Leave_ORB_Critical_Section (ORB.ORB_Controller);

-         It := BO_Lists.First (ORB.Binding_Objects);
-
-         --  Record in BO a reference to its position on the list so that it
-         --  can remove itself properly at finalization.
-
-         Register_Reference_Information
-                                 (BO => BO_Acc,
-                                  Referenced_In => Component_Access (ORB),
-                                  Referenced_At => It);
-
-         Leave_ORB_Critical_Section (ORB.ORB_Controller);
+         Emit_No_Reply
+           (Component_Access (TE),
+            Filters.Iface.Set_Server'
+              (Server         => Component_Access (ORB),
+               Binding_Object => BO_Acc));
       end;

-      Emit_No_Reply
-        (Component_Access (TE),
-         Filters.Iface.Set_Server'
-         (Server         => Component_Access (ORB),
-          Binding_Object =>
-            Binding_Objects.Binding_Object_Access
-          (Smart_Pointers.Entity_Of (BO))));
-
       if New_AES /= null then
-
          --  This is not a write only Endpoint

          declare
@@ -687,7 +666,6 @@ package body PolyORB.ORB is
                      Handler (New_AES.all);
             TE_H : TE_AES_Event_Handler renames TE_AES_Event_Handler (H.all);
          begin
-
             --  Register link from AES to TE

             H.AES    := New_AES;
@@ -725,25 +703,20 @@ package body PolyORB.ORB is
    -------------------------------

    procedure Unregister_Binding_Object
-     (ORB : Components.Component_Access;
+     (ORB : access ORB_Type;
       BO  : Binding_Object_Access)
    is
       ORB_Acc : constant ORB_Access := ORB_Access (ORB);
-      It      : BO_Lists.Iterator;
    begin
       pragma Debug (C, O ("Unregister_Binding_Object: enter"));
       Enter_ORB_Critical_Section (ORB_Acc.ORB_Controller);

-      --  Obtain position of BO in Binding_Objects within critical section,
-      --  as it might be changed by Find_Reusable_Binding_Object.
-
-      It := Get_Referenced_At (BO);
-
       --  If BO is still referenced, remove it now

-      if not BO_Lists.Last (It) then
+      if Referenced (BO) then
          pragma Debug (C, O ("removing binding object"));
-         BO_Lists.Remove (ORB_Acc.Binding_Objects, It);
+         Set_Referenced (BO, Referenced => False);
+         PBOL.Remove_Element (ORB_Acc.Binding_Objects, BO);
       end if;

       Leave_ORB_Critical_Section (ORB_Acc.ORB_Controller);
@@ -762,10 +735,8 @@ package body PolyORB.ORB is

    begin
       Enter_ORB_Critical_Section (ORB.ORB_Controller);
-
       pragma Assert (ORB.Obj_Adapter = null);
       ORB.Obj_Adapter := OA;
-
       Leave_ORB_Critical_Section (ORB.ORB_Controller);
    end Set_Object_Adapter;

@@ -809,9 +780,9 @@ package body PolyORB.ORB is
             --  Try to register the source to an existing monitor

             Disable_Polling (ORB.ORB_Controller, Monitors (J));
-
             Register_Source (Monitors (J), AES, Success);
             Enable_Polling (ORB.ORB_Controller, Monitors (J));
+
             if Success then
                Notify_Event (ORB.ORB_Controller,
                              Event'(Kind           => Event_Sources_Added,
@@ -915,7 +886,6 @@ package body PolyORB.ORB is
       when E : others =>
          pragma Debug (C, O ("Run: Got exception "
                           & Ada.Exceptions.Exception_Information (E)));
-
          Free (AJ);
          raise;
    end Run;
@@ -980,7 +950,6 @@ package body PolyORB.ORB is
             use PolyORB.Errors;

             Error : Error_Container;
-
          begin
             References.Binding.Bind
               (Req.Target,
@@ -1283,10 +1252,10 @@ package body PolyORB.ORB is
    function Get_Binding_Objects (ORB : access ORB_Type)
      return BO_Ref_List
    is
-      use BO_Lists;
+      use PBOL;
       use Smart_Pointers;

-      It : BO_Lists.Iterator;
+      It : PBOL.Iterator;
       Result : BO_Ref_List;
    begin
       Enter_ORB_Critical_Section (ORB.ORB_Controller);
@@ -1298,7 +1267,7 @@ package body PolyORB.ORB is
          declare
             Ref : Smart_Pointers.Ref;
          begin
-            Smart_Pointers.Set (Ref, Entity_Ptr (Value (It).all));
+            Smart_Pointers.Set (Ref, Entity_Ptr (Value (It)));
             BO_Ref_Lists.Prepend (Result, Ref);
          end;

============================================================
--- src/polyorb-orb.ads	5a5f09d08b9fae81db8d56a85367fb1859f328db
+++ src/polyorb-orb.ads	90b4dfe13639558e244d2467e77c19faa20376cf
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---         Copyright (C) 2001-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2001-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -34,6 +34,7 @@ with PolyORB.Binding_Objects;
 with PolyORB.Asynch_Ev;
 with PolyORB.Binding_Data;
 with PolyORB.Binding_Objects;
+with PolyORB.Binding_Objects.Lists;
 with PolyORB.Components;
 with PolyORB.Filters;
 with PolyORB.Jobs;
@@ -51,15 +52,16 @@ package PolyORB.ORB is

 package PolyORB.ORB is

-   package PAE renames PolyORB.Asynch_Ev;
-   package PBD renames PolyORB.Binding_Data;
-   package PBO renames PolyORB.Binding_Objects;
-   package PC  renames PolyORB.Components;
-   package PF  renames PolyORB.Filters;
-   package PJ  renames PolyORB.Jobs;
-   package POC renames PolyORB.ORB_Controller;
-   package PT  renames PolyORB.Transport;
-   package PTI renames PolyORB.Task_Info;
+   package PAE  renames PolyORB.Asynch_Ev;
+   package PBD  renames PolyORB.Binding_Data;
+   package PBO  renames PolyORB.Binding_Objects;
+   package PBOL renames PolyORB.Binding_Objects.Lists;
+   package PC   renames PolyORB.Components;
+   package PF   renames PolyORB.Filters;
+   package PJ   renames PolyORB.Jobs;
+   package POC  renames PolyORB.ORB_Controller;
+   package PT   renames PolyORB.Transport;
+   package PTI  renames PolyORB.Task_Info;

    ----------------------------------
    -- Abstract tasking policy type --
@@ -234,7 +236,7 @@ package PolyORB.ORB is
    --  A filter chain is instantiated using Chain, and associated with TE.

    procedure Unregister_Binding_Object
-     (ORB : Components.Component_Access;
+     (ORB : access ORB_Type;
       BO  : Binding_Objects.Binding_Object_Access);
    --  Unregister a Binding Object from the ORB

@@ -312,7 +314,7 @@ private
       Transport_Access_Points : TAP_List;
       --  The set of transport access points managed by this ORB

-      Binding_Objects : PBO.BO_List;
+      Binding_Objects : PBOL.List;
       --  The set of binding objects managed by this ORB

       Obj_Adapter : Obj_Adapters.Obj_Adapter_Access;
============================================================
--- src/polyorb-poa_manager-basic_manager.adb	940803f7bb53121ccbcb29fcdf823c3e6002dfed
+++ src/polyorb-poa_manager-basic_manager.adb	e56aff07f963a6e027a5af5a60da3ac83c5f1c6e
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2001-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2001-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -233,7 +233,7 @@ package body PolyORB.POA_Manager.Basic_M
       pragma Debug (C, O ("Create a new Basic_POA_Manager"));

       Create (M.Lock);
-      pragma Assert (M.Held_Requests = Empty);
+      pragma Assert (Is_Empty (M.Held_Requests));
       M.Current_State := HOLDING;
    end Create;

@@ -373,7 +373,7 @@ package body PolyORB.POA_Manager.Basic_M

       Deallocate (Self.Managed_POAs);

-      while Self.Held_Requests /= Requests_Queues.Empty loop
+      while not Is_Empty (Self.Held_Requests) loop
          Extract_First (Self.Held_Requests, R);
          Destroy_Request (R);
       end loop;
============================================================
--- src/polyorb-poa_manager-basic_manager.ads	0b176448e4d191aba4e02ada3a87930c88ef20c5
+++ src/polyorb-poa_manager-basic_manager.ads	495d1b41846642501703b3499bdf8923f15c7169
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---         Copyright (C) 2001-2007, Free Software Foundation, Inc.          --
+--         Copyright (C) 2001-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -129,7 +129,7 @@ private
       PM_Hold_Servant : Hold_Servant_Access := null;
       --  Reference to the holding servant

-      Held_Requests : Requests_Queue := Requests_Queues.Empty;
+      Held_Requests : Requests_Queue;
       --  List of requests held by the POAManager
    end record;

============================================================
--- src/polyorb-poa_manager.ads	ec3001c5983cae39e4a8a27947074ca89edc2487
+++ src/polyorb-poa_manager.ads	0edcbce66c9b8473930fb97977ceb221d5389d69
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---         Copyright (C) 2001-2005 Free Software Foundation, Inc.           --
+--         Copyright (C) 2001-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -16,8 +16,8 @@
 -- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
 -- License  for more details.  You should have received  a copy of the GNU  --
 -- General Public License distributed with PolyORB; see file COPYING. If    --
--- not, write to the Free Software Foundation, 59 Temple Place - Suite 330, --
--- Boston, MA 02111-1307, USA.                                              --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth    --
+-- Floor, Boston, MA 02111-1301, USA.                                       --
 --                                                                          --
 --                                                                          --
 --                  PolyORB is maintained by AdaCore                        --
@@ -43,7 +43,8 @@ package PolyORB.POA_Manager is

    type Ref is new Smart_Pointers.Ref with private;

-   type POAManager is abstract new Smart_Pointers.Entity with private;
+   type POAManager is abstract new Smart_Pointers.Non_Controlled_Entity
+     with private;

    type POAManager_Access is access all POAManager'Class;

@@ -102,6 +103,7 @@ private

    type Ref is new Smart_Pointers.Ref with null record;

-   type POAManager is abstract new Smart_Pointers.Entity with null record;
+   type POAManager is abstract new Smart_Pointers.Non_Controlled_Entity
+      with null record;

 end PolyORB.POA_Manager;
============================================================
--- src/polyorb-references-ior.adb	b6f075b931047ade3517564aa0cc5e3a11dd5931
+++ src/polyorb-references-ior.adb	afcb63f6a912e58bd8b3cc6df55a66cb9e7d41ce
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2002-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2002-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -210,7 +210,7 @@ package body PolyORB.References.IOR is
             PolyORB.Types.RepositoryId'
               (To_PolyORB_String (Type_Id_Of (Value))));

-         Pad_Align (Buffer, 4);
+         Pad_Align (Buffer, Align_4);

          declare
             Profs     : constant Profile_Array := Profiles_Of (Value);
============================================================
--- src/polyorb-references-uri.adb	7dad7b907947ed7bc935ca68bb9f95df1f8d9a47
+++ src/polyorb-references-uri.adb	fe956470c0137830c5614681388d2f088cdafec9
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2003-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2003-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -45,7 +45,7 @@ package body PolyORB.References.URI is

    type Profile_Record is record
       Tag                    : PolyORB.Binding_Data.Profile_Tag;
-      Proto_Ident            : Types.String;
+      Proto_Ident            : String_Ptr;
       Profile_To_String_Body : Profile_To_String_Body_Type;
       String_To_Profile_Body : String_To_Profile_Body_Type;
    end record;
@@ -165,6 +165,7 @@ package body PolyORB.References.URI is
      (Obj_Addr : String) return Binding_Data.Profile_Access
    is
       use PolyORB.Types;
+      use PolyORB.Utils;

       Iter : Iterator := First (Callbacks);
    begin
@@ -172,17 +173,12 @@ package body PolyORB.References.URI is
                        & Obj_Addr));

       while not Last (Iter) loop
-         declare
-            Ident : String renames To_String (Value (Iter).Proto_Ident);
-         begin
-            if Obj_Addr'Length > Ident'Length
-              and then Obj_Addr (Ident'Range) = Ident then
-               pragma Debug
-                 (C, O ("Try to unmarshall profile with profile factory tag "
-                     & Profile_Tag'Image (Value (Iter).Tag)));
-               return Value (Iter).String_To_Profile_Body (Obj_Addr);
-            end if;
-         end;
+         if Has_Prefix (Obj_Addr, Prefix => Value (Iter).Proto_Ident.all) then
+            pragma Debug
+              (C, O ("Try to unmarshall profile with profile factory tag "
+                  & Profile_Tag'Image (Value (Iter).Tag)));
+            return Value (Iter).String_To_Profile_Body (Obj_Addr);
+         end if;

          Next (Iter);
       end loop;
@@ -282,9 +278,11 @@ package body PolyORB.References.URI is
       Profile_To_String_Body : Profile_To_String_Body_Type;
       String_To_Profile_Body : String_To_Profile_Body_Type) is
    begin
+      pragma Debug (C, O ("Register URI cb: prefix=" & Proto_Ident
+                            & " tag=" & Tag'Img));
       Append (Callbacks,
               Profile_Record'(Tag,
-                              Types.To_PolyORB_String (Proto_Ident),
+                              new String'(Proto_Ident),
                               Profile_To_String_Body,
                               String_To_Profile_Body));
    end Register;
@@ -311,8 +309,7 @@ package body PolyORB.References.URI is
    begin
       while not Last (Iter) loop
          Register_String_To_Object
-           (PolyORB.Types.To_String (Value (Iter).Proto_Ident),
-            String_To_Object'Access);
+           (Value (Iter).Proto_Ident.all, String_To_Object'Access);
          Next (Iter);
       end loop;
    end Initialize;
============================================================
--- src/polyorb-references.ads	8a58554d26800bf6018f8b1344eda091ce400cb7
+++ src/polyorb-references.ads	a94899add6bdf8fd2d9b5baece4c4d9363ca1520
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---         Copyright (C) 2001-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2001-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -141,6 +141,7 @@ private
    procedure Share_Binding_Info
      (Dest   : Ref'Class;
       Source : Ref'Class);
+   --  Needs comment???

    Nil_Ref : constant Ref := (PolyORB.Smart_Pointers.Ref with null record);

============================================================
--- src/polyorb-representations-cdr-common.adb	48e55eecf86e8a6a03230e58bbcbeed493a550a0
+++ src/polyorb-representations-cdr-common.adb	b45c3ab99826439f45747d57c55aae41b4e131e9
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2002-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2002-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -182,12 +182,18 @@ package body PolyORB.Representations.CDR
    begin
       pragma Debug (C, O ("Marshall (Octet) : enter"));
       Align_Marshall_Copy (Buffer, (1 => Stream_Element
-                           (PolyORB.Types.Octet'(Data))), 1);
+                           (PolyORB.Types.Octet'(Data))), Align_1);
       pragma Debug (C, O ("Marshall (Octet) : end"));
    end Marshall;

    --  Transfer of elementary integer types

+   function Swapped (X : Types.Octet) return Types.Octet;
+   pragma Inline (Swapped);
+   --  Identity function!
+   package CDR_Octet is
+     new Align_Transfer_Elementary (T => PolyORB.Types.Octet);
+
    function Swapped is
      new GNAT.Byte_Swapping.Swapped2 (PolyORB.Types.Unsigned_Short);
    package CDR_Unsigned_Short is
@@ -565,8 +571,7 @@ package body PolyORB.Representations.CDR
    ------------------------------------

    function Unmarshall
-     (Buffer : access Buffer_Type)
-     return PolyORB.Types.Boolean
+     (Buffer : access Buffer_Type) return PolyORB.Types.Boolean
    is
    begin
       pragma Debug (C, O ("Unmarshall (Boolean) : enter & end"));
@@ -575,8 +580,7 @@ package body PolyORB.Representations.CDR
    end Unmarshall;

    function Unmarshall_Latin_1_Char
-     (Buffer : access Buffer_Type)
-     return PolyORB.Types.Char
+     (Buffer : access Buffer_Type) return PolyORB.Types.Char
    is
    begin
       pragma Debug (C, O ("Unmarshall (Char) : enter & end"));
@@ -586,13 +590,7 @@ package body PolyORB.Representations.CDR

    function Unmarshall
      (Buffer : access Buffer_Type) return PolyORB.Types.Octet
-   is
-      Result : Stream_Element_Array (1 .. 1);
-   begin
-      Align_Unmarshall_Copy (Buffer, 1, Result);
-      pragma Debug (C, O ("Unmarshall (Octet) : enter & end"));
-      return PolyORB.Types.Octet (Result (1));
-   end Unmarshall;
+     renames CDR_Octet.Unmarshall;

    function Unmarshall
      (Buffer : access Buffer_Type) return PolyORB.Types.Unsigned_Short
@@ -815,7 +813,7 @@ package body PolyORB.Representations.CDR
          Data   : F)
       is
       begin
-         Align_Marshall_Copy (Buffer, Fixed_To_Octets (Data), 1);
+         Align_Marshall_Copy (Buffer, Fixed_To_Octets (Data), Align_1);
       end Marshall;

       ----------------
@@ -883,4 +881,9 @@ package body PolyORB.Representations.CDR

    end Fixed_Point;

+   function Swapped (X : Types.Octet) return Types.Octet is
+   begin
+      return X;
+   end Swapped;
+
 end PolyORB.Representations.CDR.Common;
============================================================
--- src/polyorb-representations-cdr.adb	7633553de55e337f04a5dcc0b32aa7ed80d4a61f
+++ src/polyorb-representations-cdr.adb	7c492bb499c601870f0e050aa1551acc15df28ab
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2002-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2002-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -331,7 +331,8 @@ package body PolyORB.Representations.CDR
             end if;

             Aggregate_Data      := Unchecked_Get_V (ACC);
-            Aggregate_Alignment := Alignment_Type (El_Size);
+            Aggregate_Alignment :=
+              Alignment_Of (Short_Short_Integer (El_Size));
             Aggregate_Size      := Stream_Element_Count (El_Count * El_Size);

             pragma Debug (C, O ("Fast_Path_Get_Info:"
============================================================
--- src/polyorb-representations-test.adb	28e5b72ba24ed33e43f94feff17c6833c26763e4
+++ src/polyorb-representations-test.adb	d4a331920c3897ca7e830454d2e0ef7cac07f1be
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2001-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2001-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -65,7 +65,7 @@ package body PolyORB.Representations.Tes
    is
       A : Stream_Element_Array (1 .. 1);
    begin
-      Align_Unmarshall_Copy (B, 1, A);
+      Align_Unmarshall_Copy (B, Align_1, A);
       return Character'Val (A (1));
    end Unmarshall_Char;

============================================================
--- src/polyorb-servants-group_servants.adb	5264d5f908feab5a73078a495447b562d0ee2991
+++ src/polyorb-servants-group_servants.adb	d55fa9ec95d15c9f932a1a4155cf6c82ec690130
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2002-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2002-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -411,7 +411,7 @@ package body PolyORB.Servants.Group_Serv

    procedure Unregister
      (Self : access Group_Servant;
-      Ref  :        PolyORB.References.Ref)
+      Ref  : References.Ref)
    is
       use PolyORB.References;

@@ -422,7 +422,7 @@ package body PolyORB.Servants.Group_Serv

       Enter (Self.Group_Lock);

-      TPL.Remove (Self.Target_List, Ref);
+      TPL.Remove_Occurrences (Self.Target_List, Ref);
       pragma Debug (C, O ("Group size:" & TPL.Length (Self.Target_List)'Img));

       Leave (Self.Group_Lock);
============================================================
--- src/polyorb-smart_pointers-initialization.adb	d558c5f480a1242d4e18b47efe56d30afa37d08f
+++ src/polyorb-smart_pointers-initialization.adb	4d77d7353e67ed63fcde10ef4daa36ce35c98721
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2004-2007, Free Software Foundation, Inc.          --
+--         Copyright (C) 2004-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -31,7 +31,6 @@ with PolyORB.Initialization;

 with PolyORB.Initialization;

-with PolyORB.Tasking.Mutexes;
 with PolyORB.Utils.Strings;

 package body PolyORB.Smart_Pointers.Initialization is
@@ -40,24 +39,24 @@ package body PolyORB.Smart_Pointers.Init
    -- Debugging hooks implementation --
    ------------------------------------

-   function Entity_External_Tag
-     (X : Unsafe_Entity'Class)
-      return String;
-   function Ref_External_Tag
-     (X : Ref'Class)
-      return String;
+   function Entity_External_Tag (X : Unsafe_Entity'Class) return String;
+   function Ref_External_Tag (X : Ref'Class) return String;
    --  Return the external representation of X'Tag.

-   function Entity_External_Tag
-     (X : Unsafe_Entity'Class)
-      return String is
+   -------------------------
+   -- Entity_External_Tag --
+   -------------------------
+
+   function Entity_External_Tag (X : Unsafe_Entity'Class) return String is
    begin
       return Ada.Tags.External_Tag (X'Tag);
    end Entity_External_Tag;

-   function Ref_External_Tag
-     (X : Ref'Class)
-      return String is
+   ----------------------
+   -- Ref_External_Tag --
+   ----------------------
+
+   function Ref_External_Tag (X : Ref'Class) return String is
    begin
       return Ada.Tags.External_Tag (X'Tag);
    end Ref_External_Tag;
@@ -67,13 +66,14 @@ package body PolyORB.Smart_Pointers.Init
    ----------------

    procedure Initialize;
+   --  Initialize Smart_Pointers module

    procedure Initialize is
    begin
-      Tasking.Mutexes.Create (Counter_Lock);
-      Smart_Pointers.Entity_External_Tag := Entity_External_Tag'Access;
-      Smart_Pointers.Ref_External_Tag    := Ref_External_Tag'Access;
-      Smart_Pointers.Default_Trace       := Get_Trace ("default");
+      Smart_Pointers.Initialize
+        (The_Entity_External_Tag => Entity_External_Tag'Access,
+         The_Ref_External_Tag    => Ref_External_Tag'Access,
+         The_Default_Trace       => Get_Trace ("default"));
    end Initialize;

    use PolyORB.Initialization;
============================================================
--- src/polyorb-smart_pointers.adb	3708a49832a6b36abcebe143d72dc127b80bfc15
+++ src/polyorb-smart_pointers.adb	5771db48ee89af79eda56325f590f17302e7ba72
@@ -29,6 +29,7 @@ with PolyORB.Parameters;

 with PolyORB.Log;
 with PolyORB.Parameters;
+with PolyORB.Tasking.Mutexes;

 package body PolyORB.Smart_Pointers is

@@ -41,6 +42,9 @@ package body PolyORB.Smart_Pointers is
    function C (Level : Log_Level := Debug) return Boolean
      renames L.Enabled;

+   Counter_Lock : Mutex_Access;
+   --  Global lock used to protect concurrent accesses to reference counters
+
    procedure Unchecked_Inc_Usage (Obj : Entity_Ptr);
    --  Internal procedure to increment Obj's usage counter. This must be
    --  called with the proper lock held.
@@ -53,6 +57,13 @@ package body PolyORB.Smart_Pointers is
       Obj        : Entity_Ptr);
    --  Produce debugging trace for the indicated event on Obj, if applicable

+   Entity_External_Tag : Entity_External_Tag_Hook := null;
+   Ref_External_Tag    : Ref_External_Tag_Hook := null;
+   --  Debugging hooks, set at initialization
+
+   Default_Trace : Boolean := True;
+   --  needs comment???
+
    ------------
    -- Adjust --
    ------------
@@ -90,7 +101,7 @@ package body PolyORB.Smart_Pointers is
       pragma Assert (Counter_Lock /= null);
       Entity_Lock (Obj.all);

-      pragma Debug (Trace_Event (Dec_Usage, Obj));
+      pragma Debug (C, Trace_Event (Dec_Usage, Obj));
       Obj.Counter := Obj.Counter - 1;

       if Obj.Counter = 0 then
@@ -102,7 +113,7 @@ package body PolyORB.Smart_Pointers is
          --  Releasing Obj lock at this stage is sufficient to ensure
          --  that only one task finalizes Obj.all and frees Obj.

-         if Obj.all not in Entity'Class then
+         if not Is_Controlled (Obj.all) then
             --  This entity is not controlled: finalize it ourselves

             Finalize (Obj.all);
@@ -193,15 +204,6 @@ package body PolyORB.Smart_Pointers is
    -- Finalize --
    --------------

-   procedure Finalize (X : in out Entity_Controller) is
-   begin
-      Finalize (X.E.all);
-   end Finalize;
-
-   --------------
-   -- Finalize --
-   --------------
-
    procedure Finalize (The_Ref : in out Ref) is

       function Return_Ref_External_Tag return String;
@@ -279,27 +281,26 @@ package body PolyORB.Smart_Pointers is
    ----------------

    procedure Initialize
-     (X : in out Entity_Controller) is
+     (The_Entity_External_Tag : Entity_External_Tag_Hook;
+      The_Ref_External_Tag    : Ref_External_Tag_Hook;
+      The_Default_Trace       : Boolean)
+   is
    begin
-      pragma Debug (C, O ("Initializing Entity"));
-      Initialize (X.E.all);
+      Create (Counter_Lock);
+      Entity_External_Tag := The_Entity_External_Tag;
+      Ref_External_Tag    := The_Ref_External_Tag;
+      Default_Trace       := The_Default_Trace;
    end Initialize;

-   ----------------
-   -- Initialize --
-   ----------------
+   -------------------
+   -- Is_Controlled --
+   -------------------

-   procedure Initialize
-     (X : in out Entity)
-   is
-      pragma Warnings (Off);
+   function Is_Controlled (X : Unsafe_Entity) return Boolean is
       pragma Unreferenced (X);
-      pragma Warnings (On);
-
    begin
-      pragma Assert (Counter_Lock /= null);
-      null;
-   end Initialize;
+      return False;
+   end Is_Controlled;

    ------------
    -- Is_Nil --
@@ -388,7 +389,7 @@ package body PolyORB.Smart_Pointers is
    procedure Unchecked_Inc_Usage (Obj : Entity_Ptr) is
    begin
       pragma Assert (Obj.Counter /= -1);
-      pragma Debug (Trace_Event (Inc_Usage, Obj));
+      pragma Debug (C, Trace_Event (Inc_Usage, Obj));
       Obj.Counter := Obj.Counter + 1;
    end Unchecked_Inc_Usage;

============================================================
--- src/polyorb-smart_pointers.ads	d8438c6adc9f3ea8a6420257ccf0b9785f35dd27
+++ src/polyorb-smart_pointers.ads	ea54c240d3278d0be12d2936d3582b0fb3a3a200
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---         Copyright (C) 2001-2007, Free Software Foundation, Inc.          --
+--         Copyright (C) 2001-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -27,8 +27,6 @@ with Ada.Finalization;

 with Ada.Finalization;

-with PolyORB.Tasking.Mutexes;
-
 package PolyORB.Smart_Pointers is

    pragma Preelaborate;
@@ -37,18 +35,11 @@ package PolyORB.Smart_Pointers is
    -- Task-unsafe entity --
    ------------------------

-   type Unsafe_Entity is abstract tagged limited record
-      Counter : Integer := 0;
-      --  Reference counter.
-      --  If set to -1, no reference counting is performed for this entity:
-      --  Inc_Usage and Dec_Usage are both no-ops in that case.
+   type Unsafe_Entity is abstract tagged limited private;

-      --  ???
-      --  It is strictly forbidden to access this component from outside
-      --  this unit, however we can't make it private due to G412-018.
+   function Is_Controlled (X : Unsafe_Entity) return Boolean;
+   --  False expect for derived type from Smart_Pointers.Controlled_Entities

-   end record;
-
    procedure Finalize (X : in out Unsafe_Entity);
    --  Unsafe_Entity is the base type of all objects that can be referenced.
    --  It contains a Counter, which is the number of references to this
@@ -82,7 +73,7 @@ package PolyORB.Smart_Pointers is
    -- Task-safe entity --
    ----------------------

-   type Non_Controlled_Entity is abstract new Unsafe_Entity with null record;
+   type Non_Controlled_Entity is abstract new Unsafe_Entity with private;
    --  Same as Unsafe_Entity, but accesses to the reference counter are
    --  made task safe through calls to the Entity_Lock and Entity_Unlock
    --  operations.
@@ -91,17 +82,6 @@ package PolyORB.Smart_Pointers is
    procedure Entity_Unlock (X : in out Non_Controlled_Entity);
    --  Mutex operations

-   ---------------------------------
-   -- Controlled task-safe entity --
-   ---------------------------------
-
-   type Entity is abstract new Non_Controlled_Entity with private;
-
-   procedure Initialize (X : in out Entity);
-   --  An entity that is a controlled object. Contrary to
-   --  Non_Controlled_Entity, the Finalize operation is called whenever the
-   --  entity is finalized.
-
    ---------
    -- Ref --
    ---------
@@ -157,28 +137,15 @@ private

 private

-   ----------------------
-   -- Task-safe entity --
-   ----------------------
+   type Unsafe_Entity is abstract tagged limited record
+      Counter : Integer := 0;
+      --  Reference counter.
+      --  If set to -1, no reference counting is performed for this entity:
+      --  Inc_Usage and Dec_Usage are both no-ops in that case.
+   end record;

-   Counter_Lock : Tasking.Mutexes.Mutex_Access;
-   --  Global mutex used to guarantee consistency of concurrent accesses to
-   --  entity reference counters. To be created by a child unit during
-   --  PolyORB initialization.
+   type Non_Controlled_Entity is abstract new Unsafe_Entity with null record;

-   type Entity_Controller (E : access Entity'Class)
-      is new Ada.Finalization.Limited_Controlled with null record;
-
-   procedure Initialize (X : in out Entity_Controller);
-   procedure Finalize   (X : in out Entity_Controller);
-
-   type Entity is abstract new Non_Controlled_Entity with record
-      Controller : Entity_Controller (Entity'Access);
-      --  Controller component used to trigger a call to the Entity's
-      --  Finalize primitive operation when it is Finalized (note that
-      --  Entity itself is not a controlled type).
-   end record;
-
    type Ref is new Ada.Finalization.Controlled with record
       A_Ref : Entity_Ptr := null;
       --  The entity designated by this reference
@@ -202,9 +169,12 @@ private
      function (X : Ref'Class) return String;
    --  A function returning External_Tag (Entity_Of (X)'Tag)

-   Entity_External_Tag : Entity_External_Tag_Hook := null;
-   Ref_External_Tag    : Ref_External_Tag_Hook := null;
-   --  Hooks to be set up by a child unit during PolyORB initialization
+   procedure Initialize
+     (The_Entity_External_Tag : Entity_External_Tag_Hook;
+      The_Ref_External_Tag    : Ref_External_Tag_Hook;
+      The_Default_Trace       : Boolean);
+   --  Initialize internal structures and set debugging hooks (to be called by
+   --  child elaboration package)

    --  Determination of whether to trace smart pointers event for a specific
    --  entity type: in [smart_pointers] section, whether type T is traced
@@ -214,8 +184,6 @@ private
    Trace_Section : constant String := "smart_pointers";
    Trace_Suffix  : constant String := ".trace";

-   Default_Trace : Boolean := True;
-
    function Get_Trace (Entity_Type : String) return Boolean;
    --  Return indication of whether to trace events for the given entity type

============================================================
--- src/polyorb-task_info.adb	40d2a3dafe9bf04f8e9983b4d15dcda48a96f615
+++ src/polyorb-task_info.adb	e6beed64fd8ee5c7a2e438ed52d4508e9f1d779f
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2001-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2001-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -91,13 +91,13 @@ package body PolyORB.Task_Info is
    -----------------

    procedure List_Attach
-     (TI   : Task_Info_Access;
-      List : in out Task_Lists.List)
+     (TI   : access Task_Info;
+      List : in out Task_List)
    is
-      pragma Assert (Task_Lists.Last (TI.Position));
+      pragma Assert (not TI.On_List);
    begin
-      Task_Lists.Prepend (List, TI);
-      TI.Position := Task_Lists.First (List);
+      Prepend (List, TI);
+      TI.On_List := True;
    end List_Attach;

    -----------------
@@ -105,16 +105,25 @@ package body PolyORB.Task_Info is
    -----------------

    procedure List_Detach
-     (TI   : in out Task_Info;
-      List : in out Task_Lists.List)
+     (TI   : access Task_Info;
+      List : in out Task_List)
    is
    begin
-      if not Task_Lists.Last (TI.Position) then
-         Task_Lists.Remove (List, TI.Position);
-         TI.Position := Task_Lists.Last (List);
+      if TI.On_List then
+         Remove_Element (List, TI);
+         TI.On_List := False;
       end if;
    end List_Detach;

+   ----------------
+   -- List_First --
+   ----------------
+
+   function List_First (List : Task_List) return access Task_Info is
+   begin
+      return Task_Lists.Value (First (List));
+   end List_First;
+
    --------------
    -- May_Exit --
    --------------
@@ -227,6 +236,18 @@ package body PolyORB.Task_Info is
       return TI.Exit_Condition /= null and then TI.Exit_Condition.all;
    end Exit_Condition;

+   ----------
+   -- Link --
+   ----------
+
+   function Link
+     (S     : access Task_Info;
+      Which : Utils.Ilists.Link_Type) return access Task_Info_Access
+   is
+   begin
+      return S.Links (Which)'Unchecked_Access;
+   end Link;
+
    -----------
    -- Mutex --
    -----------
@@ -334,6 +355,15 @@ package body PolyORB.Task_Info is
       return TI.Id;
    end Id;

+   --------------
+   -- Is_Empty --
+   --------------
+
+   function Is_Empty (List : Task_List) return Boolean is
+   begin
+      return Task_Lists.Is_Empty (Task_Lists.List (List));
+   end Is_Empty;
+
    ---------
    -- Job --
    ---------
============================================================
--- src/polyorb-task_info.ads	dee96975701f64f4d10311d2aa03202083463067
+++ src/polyorb-task_info.ads	495f627cd43ac04822c4a2bf8164a6e53551aed7
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---         Copyright (C) 2001-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2001-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -28,13 +28,15 @@
 --  This package provides a facility for associating information with each
 --  task executing the ORB main loop.

+pragma Ada_2005;
+
 with PolyORB.Asynch_Ev;
 with PolyORB.Jobs;
 with PolyORB.Tasking.Condition_Variables;
 with PolyORB.Tasking.Mutexes;
 with PolyORB.Tasking.Threads;
 with PolyORB.Types;
-with PolyORB.Utils.Chained_Lists;
+with PolyORB.Utils.Ilists;

 package PolyORB.Task_Info is

@@ -65,15 +67,12 @@ package PolyORB.Task_Info is
    --  A Terminated task has been notified its exit condition is true.

    type Task_Info (Kind : Task_Kind) is limited private;
+   type Task_Info_Access is access all Task_Info;
    --  Task Info holds information on tasks that run ORB.Run

    function Kind_Match (TI : Task_Info; Kind : Any_Task_Kind) return Boolean;
    --  True if Kind matches TI's Kind (Any matches any kind)

-   type Task_Info_Access is access all Task_Info;
-   package Task_Lists is new PolyORB.Utils.Chained_Lists
-     (Task_Info_Access, Doubly_Chained => True);
-
    type Task_Summary is limited private;
    --  Summary information: counter of registered tasks and of how many tasks
    --  of each kind are in each state.
@@ -177,22 +176,34 @@ package PolyORB.Task_Info is
    function Job (TI : Task_Info) return Jobs.Job_Access;
    --  Return job associated to TI

+   type Task_List is private;
+   --  A list of tasks
+
+   function Is_Empty (List : Task_List) return Boolean;
+   --  True when List has no elements
+
+   function List_First (List : Task_List) return access Task_Info;
+   --  Return the first element of List
+
    procedure List_Attach
-     (TI   : Task_Info_Access;
-      List : in out Task_Lists.List);
+     (TI   : access Task_Info;
+      List : in out Task_List);
    --  Attach TI to the List. It must not already be on a list. Order of
    --  attachment and detachment is arbitrary.

    procedure List_Detach
-     (TI   : in out Task_Info;
-      List : in out Task_Lists.List);
-   --  Remove TI from the list it was attached to (if any).
+     (TI   : access Task_Info;
+      List : in out Task_List);
+   --  Remove TI from the list it was attached to (if any)

    function Image (TI : Task_Info) return String;
    --  For debug purposes

 private

+   type Links_Type is
+     array (Utils.Ilists.Link_Type) of aliased Task_Info_Access;
+
    type Task_Info (Kind : Task_Kind) is limited record
       Id : PolyORB.Tasking.Threads.Thread_Id;
       --  Task referred by Task_Info record
@@ -231,11 +242,27 @@ private
       --  Mutex used by the Task referred by TI when blocking;
       --  meaningful only when State is Idle.

-      Position : Task_Lists.Iterator;
-      --  Iterator designating the position of this task on a list (allowing
-      --  removal of the task from the list).
+      Links : Links_Type;
+      --  Pointers allowing the task to be attached to a (single) task list
+
+      On_List : Boolean := False;
+      --  True when task is attached to a task list
    end record;

+   function Link
+     (S     : access Task_Info;
+      Which : Utils.Ilists.Link_Type) return access Task_Info_Access;
+   pragma Inline (Link);
+   --  Accessor for Links
+
+   package Task_Lists is
+     new Utils.Ilists.Lists
+       (T             => Task_Info,
+        T_Acc         => Task_Info_Access,
+        Doubly_Linked => True);
+
+   type Task_List is new Task_Lists.List;
+
    type Task_Counters is array (Any_Task_Kind, Any_Task_State) of Natural;

    type Task_Summary is limited record
============================================================
--- src/polyorb-tasking-idle_tasks_managers.adb	8bec7f54f4ba680c1029647f7a5bff52eb16a18a
+++ src/polyorb-tasking-idle_tasks_managers.adb	5fe13723243c0c248132b75c15a8d62aaf09339e
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2004-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2004-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -45,8 +45,7 @@ package body PolyORB.Tasking.Idle_Tasks_
    --  Awake one idle task of the specified Kind; there must be at least one

    function Allocate_CV
-     (ITM : access Idle_Tasks_Manager)
-     return PTCV.Condition_Access;
+     (ITM : access Idle_Tasks_Manager) return PTCV.Condition_Access;
    pragma Inline (Allocate_CV);
    --  Return one condition variable

@@ -55,16 +54,13 @@ package body PolyORB.Tasking.Idle_Tasks_
    -----------------

    function Allocate_CV
-     (ITM : access Idle_Tasks_Manager)
-     return Condition_Access
+     (ITM : access Idle_Tasks_Manager) return Condition_Access
    is
       use type CV_Lists.List;
-
       Result : Condition_Access;

    begin
-      if ITM.Free_CV /= CV_Lists.Empty then
-
+      if not CV_Lists.Is_Empty (ITM.Free_CV) then
          --  Use an existing CV, from Free_CV list

          CV_Lists.Extract_First (ITM.Free_CV, Result);
@@ -86,14 +82,14 @@ package body PolyORB.Tasking.Idle_Tasks_
      (ITM : access Idle_Tasks_Manager; Kind : Task_Kind)
    is
       pragma Debug (C, O ("Awake one idle task"));
-      pragma Assert (not Task_Lists.Is_Empty (ITM.Idle_Task_Lists (Kind)));
+      pragma Assert (not Is_Empty (ITM.Idle_Task_Lists (Kind)));

-      Task_To_Awake : constant Task_Info_Access :=
-        Task_Lists.Value (Task_Lists.First (ITM.Idle_Task_Lists (Kind))).all;
+      Task_To_Awake : constant access PTI.Task_Info :=
+                        List_First (ITM.Idle_Task_Lists (Kind));
    begin
       --  Signal one idle task, and put its CV in Free_CV list

-      List_Detach (Task_To_Awake.all, ITM.Idle_Task_Lists (Kind));
+      List_Detach (Task_To_Awake, ITM.Idle_Task_Lists (Kind));
       Signal (Condition (Task_To_Awake.all));
       CV_Lists.Append (ITM.Free_CV, Condition (Task_To_Awake.all));
    end Awake_One_Idle_Task;
@@ -111,12 +107,12 @@ package body PolyORB.Tasking.Idle_Tasks_
       --  False. It's simplest to pick the first Permanent one, unless there is
       --  none, in which case we try Transient.

-      if not Task_Lists.Is_Empty (ITM.Idle_Task_Lists (Permanent)) then
+      if not Is_Empty (ITM.Idle_Task_Lists (Permanent)) then
          Awake_One_Idle_Task (ITM, Permanent);
          return True;

       elsif Allow_Transient
-        and then not Task_Lists.Is_Empty (ITM.Idle_Task_Lists (Transient))
+        and then not Is_Empty (ITM.Idle_Task_Lists (Transient))
       then
          Awake_One_Idle_Task (ITM, Transient);
          return True;
@@ -136,7 +132,7 @@ package body PolyORB.Tasking.Idle_Tasks_
       --  Awaken tasks, looping until both Kind lists are empty

       for Kind in Task_Kind loop
-         while not Task_Lists.Is_Empty (ITM.Idle_Task_Lists (Kind)) loop
+         while not Is_Empty (ITM.Idle_Task_Lists (Kind)) loop
             Awake_One_Idle_Task (ITM, Kind);
          end loop;
       end loop;
@@ -151,7 +147,7 @@ package body PolyORB.Tasking.Idle_Tasks_
       TI  :        PTI.Task_Info_Access)
    is
    begin
-      List_Detach (TI.all, ITM.Idle_Task_Lists (TI.Kind));
+      List_Detach (TI, ITM.Idle_Task_Lists (TI.Kind));
    end Remove_Idle_Task;

    ----------------------
============================================================
--- src/polyorb-tasking-idle_tasks_managers.ads	8b897e243e52b9626988dbc58c1b4d16a7b4da8f
+++ src/polyorb-tasking-idle_tasks_managers.ads	db0cc938ccab4dda1c7526d113498ebd35179bb3
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---         Copyright (C) 2004-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2004-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -66,12 +66,10 @@ private
    pragma Inline (Remove_Idle_Task);
    pragma Inline (Insert_Idle_Task);

-   package Task_Lists renames PTI.Task_Lists;
-
    package CV_Lists is
      new PolyORB.Utils.Chained_Lists (PTCV.Condition_Access, PTCV."=");

-   type Task_List_Array is array (PTI.Task_Kind) of Task_Lists.List;
+   type Task_List_Array is array (PTI.Task_Kind) of PTI.Task_List;

    type Idle_Tasks_Manager is limited record
       Idle_Task_Lists : Task_List_Array;
============================================================
--- src/polyorb-transport-connected.adb	3625a040566158bcb053b7d0844ab228a4d8e9ef
+++ src/polyorb-transport-connected.adb	cf4467f233df06d8f65c885b5f5647fa41a49267
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2003-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2003-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -70,7 +70,8 @@ package body PolyORB.Transport.Connected
          --  Build a binding object based on the newly-created endpoint

          Binding_Objects.Setup_Binding_Object
-           (TE      => New_TE,
+           (ORB     => Components.Component_Access (H.ORB),
+            TE      => New_TE,
             FFC     => H.Filter_Factory_Chain.all,
             BO_Ref  => New_TE.Dependent_Binding_Object,
             Pro     => null);
============================================================
--- src/polyorb-transport-datagram.adb	92e3e05f69961d0e557fd1dddaa2750f50e4ad2f
+++ src/polyorb-transport-datagram.adb	80f7c7a5307dfcf448ab9c92d3a21ad774739e09
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2003-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2003-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -81,7 +81,8 @@ package body PolyORB.Transport.Datagram
          pragma Debug (C, O ("Create and register endpoint"));

          Binding_Objects.Setup_Binding_Object
-           (TE      => New_TE,
+           (ORB     => Components.Component_Access (H.ORB),
+            TE      => New_TE,
             FFC     => H.Filter_Factory_Chain.all,
             BO_Ref  => New_TE.Dependent_Binding_Object,
             Pro     => null);
============================================================
--- src/polyorb-utils-buffers.adb	8e4f6bde700d063df06afa6a6787084cee31e3bc
+++ src/polyorb-utils-buffers.adb	826754f2c8dbc423f07d699a11ac19f2ddb967c6
@@ -38,6 +38,7 @@ package body PolyORB.Utils.Buffers is
    package body Align_Transfer_Elementary is

       subtype SEA is Stream_Element_Array (1 .. T'Size / 8);
+      Alignment_Of_T : constant Alignment_Type := Alignment_Of (T'Size / 8);

       --------------
       -- Marshall --
@@ -51,14 +52,11 @@ package body PolyORB.Utils.Buffers is
          Data_Address : Opaque_Pointer;
          Item_Swapped : aliased T;
       begin
-         if With_Alignment then
-            Pad_Align (Buffer, T'Size / 8);
+         if Alignment_Of_T /= Align_1 and then With_Alignment then
+            Pad_Align (Buffer, Alignment_Of_T);
          end if;

-         Allocate_And_Insert_Cooked_Data
-           (Buffer,
-            T'Size / 8,
-            Data_Address);
+         Allocate_And_Insert_Cooked_Data (Buffer, T'Size / 8, Data_Address);

          --  Note: we can't just have a T object at Data_Address and assign
          --  it with Item / Swapped (Item) because Data_Address may not be
@@ -71,7 +69,7 @@ package body PolyORB.Utils.Buffers is
             for Z'Address use Z_Addr;
             pragma Import (Ada, Z);
          begin
-            if Endianness (Buffer) /= Host_Order then
+            if Item'Size > 8 and then Endianness (Buffer) /= Host_Order then
                Item_Swapped := Swapped (Item);
                Item_Address := Item_Swapped'Address;
             end if;
@@ -93,8 +91,8 @@ package body PolyORB.Utils.Buffers is
       function Unmarshall (Buffer : access Buffer_Type) return T is
          Data_Address : Opaque_Pointer;
       begin
-         if With_Alignment then
-            Align_Position (Buffer, T'Size / 8);
+         if Alignment_Of_T /= Align_1 and then With_Alignment then
+            Align_Position (Buffer, Alignment_Of_T);
          end if;
          Extract_Data (Buffer, Data_Address, T'Size / 8);

@@ -114,7 +112,7 @@ package body PolyORB.Utils.Buffers is
          begin
             Item_Storage := Z;

-            if Endianness (Buffer) = Host_Order then
+            if Item'Size > 8 and then Endianness (Buffer) = Host_Order then
                return Item;
             else
                return Swapped (Item);
@@ -130,7 +128,7 @@ package body PolyORB.Utils.Buffers is
    procedure Align_Marshall_Copy
      (Buffer    : access Buffer_Type;
       Octets    : Stream_Element_Array;
-      Alignment : Alignment_Type := 1)
+      Alignment : Alignment_Type := Align_1)
    is
       Data_Address : Opaque_Pointer;
    begin
@@ -156,7 +154,7 @@ package body PolyORB.Utils.Buffers is

    procedure Align_Unmarshall_Copy
      (Buffer    : access Buffer_Type;
-      Alignment : Alignment_Type := 1;
+      Alignment : Alignment_Type := Align_1;
       Data      : out Stream_Element_Array)
    is
       Index : Stream_Element_Offset := Data'First;
============================================================
--- src/polyorb-utils-buffers.ads	b6d97a5c47d26f4402779fca18486d336149d8e6
+++ src/polyorb-utils-buffers.ads	f063effab0ba0700f2654c1d5290e712535e20e3
@@ -68,12 +68,12 @@ package PolyORB.Utils.Buffers is
    procedure Align_Marshall_Copy
      (Buffer    : access Buffer_Type;
       Octets    : Stream_Element_Array;
-      Alignment : Alignment_Type := 1);
+      Alignment : Alignment_Type := Align_1);
    --  Align Buffer on Alignment, then marshall a copy of Octets into it, as is

    procedure Align_Unmarshall_Copy
      (Buffer    : access Buffer_Type;
-      Alignment : Alignment_Type := 1;
+      Alignment : Alignment_Type := Align_1;
       Data      : out Stream_Element_Array);
    --  Align Buffer on Alignment, then fill Data by extracting Data'Length
    --  bytes at the current position. The data need not be contiguous in the
============================================================
--- src/polyorb-utils-chained_lists.adb	4288c17d13e173020ecab1f5cf84d6806021f5bc
+++ src/polyorb-utils-chained_lists.adb	b65e335a75cb213285f7fb891b1f5384e2050c4a
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2001-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2001-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -31,24 +31,37 @@ package body PolyORB.Utils.Chained_Lists

 package body PolyORB.Utils.Chained_Lists is

-   --  Local declarations
+   procedure Free is new Ada.Unchecked_Deallocation (Node, Node_Access);

-   procedure Remove
-     (L        : in out List;
-      Item     : Node_Access;
-      Previous : Node_Access);
-   --  Remove Item from L, where Previous is the previous item
+   ---------
+   -- "+" --
+   ---------

-   procedure Free is new Ada.Unchecked_Deallocation (Node, Node_Access);
+   function "+" (I : T) return List is
+   begin
+      return Result : List do
+         Append (Result, Node_Access'(new Node'(Value => I, others => <>)));
+      end return;
+   end "+";

+   ---------
+   -- "&" --
+   ---------
+
+   function "&" (L : List; I : T) return List is
+   begin
+      return LL : List := L do
+         Append (LL, I);
+      end return;
+   end "&";
+
    ------------
    -- Append --
    ------------

    procedure Append (L : in out List; I : T) is
-      L_Last : Iterator := Last (L);
    begin
-      Insert (L, I, Before => L_Last);
+      Append (L, Node_Access'(new Node'(Value => I, others => <>)));
    end Append;

    ----------------
@@ -56,16 +69,11 @@ package body PolyORB.Utils.Chained_Lists
    ----------------

    procedure Deallocate (L : in out List) is
-      Current, Next : Node_Access;
+      It : Iterator := First (L);
    begin
-      Current := L.First;
-      while Current /= null loop
-         Next := Current.Chain (Next_Node);
-         Free (Current);
-         Current := Next;
+      while not Last (It) loop
+         Remove (L, It);
       end loop;
-      L.First := null;
-      L.Last  := null;
    end Deallocate;

    ---------------
@@ -73,38 +81,17 @@ package body PolyORB.Utils.Chained_Lists
    ---------------

    function Duplicate (L : List) return List is
-      D : List        := Empty;
+      D : List;
       --  New list

-      N : Node_Access := L.First;
+      It : Iterator := First (L);
       --  Iterator on original list
-
-      P : Node_Access;
-      --  Iterator on new list
-
    begin
-      if N = null then
-         return D;
-      end if;
-      P := new Node;
-      P.Value := N.Value;
-      P.Chain (Next_Node)  := null;
-      if Doubly_Chained then
-         P.Chain (Prev_Node)  := null;
-      end if;
-      D.First := P;
-      loop
-         N := N.Chain (Next_Node);
-         exit when N = null;
-         P.Chain (Next_Node) := new Node;
-         P.Chain (Next_Node).Value := N.Value;
-         P.Chain (Next_Node).Chain (Next_Node) := null;
-         if Doubly_Chained then
-            P.Chain (Next_Node).Chain (Prev_Node) := P;
-         end if;
-         P := P.Chain (Next_Node);
+      while not Last (It) loop
+         Append (D, Node_Access'(new Node'(Value  => Value (It).Value,
+                                           others => <>)));
+         Next (It);
       end loop;
-      D.Last := P;
       return D;
    end Duplicate;

@@ -113,30 +100,41 @@ package body PolyORB.Utils.Chained_Lists
    -------------

    function Element (L : List; Index : Natural) return Element_Access is
-      N : Node_Access := L.First;
-      C : Natural := 0;
+      It : Iterator := First (L);
+      C  : Natural  := 0;
    begin
-      while N /= null loop
+      while not Last (It) loop
          if C = Index then
-            return N.Value'Access;
+            return Value (It).Value'Access;
          end if;
          C := C + 1;
-         N := N.Chain (Next_Node);
+         Next (It);
       end loop;
       raise Constraint_Error;
    end Element;

+   -----------
+   -- Empty --
+   -----------
+
+   function Empty return List is
+      Empty_List : List;
+   begin
+      return Empty_List;
+   end Empty;
+
    -------------------
    -- Extract_First --
    -------------------

    procedure Extract_First (L : in out List; Result : out T) is
+      It : Iterator := First (L);
    begin
-      if Is_Empty (L) then
+      if Last (It) then
          raise Constraint_Error;
       end if;
-      Result := L.First.Value;
-      Remove (L, Item => L.First, Previous => null);
+      Result := Value (It).Value;
+      Remove (L, It);
    end Extract_First;

    -----------
@@ -145,78 +143,16 @@ package body PolyORB.Utils.Chained_Lists

    function First (L : List) return Iterator is
    begin
-      return Iterator'(Current => L.First);
+      return Iterator (First (Node_Lists.List (L)));
    end First;

-   ------------
-   -- Insert --
-   ------------
-
-   procedure Insert (L : in out List; I : T; Before : in out Iterator) is
-      N : Node_Access;
-   begin
-      pragma Assert ((L.First = null) = (L.Last = null));
-      N := new Node;
-      N.Value := I;
-      N.Chain (Next_Node) := Before.Current;
-      if Doubly_Chained then
-         N.Chain (Prev_Node) := null;
-      end if;
-
-      if Before.Current = L.First then
-
-         --  Insert at first position
-
-         L.First := N;
-
-      elsif Before.Current = null then
-
-         --  Insert at end of a non-empty list
-
-         L.Last.Chain (Next_Node) := N;
-
-      elsif Doubly_Chained then
-
-         --  Insert in the middle of a doubly-chained list
-
-         Before.Current.Chain (Prev_Node).Chain (Next_Node) := N;
-
-      else
-
-         --  Inserts in the middle of a list are only possible for
-         --  doubly-chained lists.
-
-         raise Program_Error;
-      end if;
-
-      if Before.Current = null then
-
-         --  Inserting at tail of list: update Last and N's Prev pointer
-
-         if Doubly_Chained then
-            N.Chain (Prev_Node) := L.Last;
-         end if;
-         L.Last := N;
-
-      elsif Doubly_Chained then
-
-         --  Inserting at head (of non-empty list) or in the middle of
-         --  the list: update this and the next nodes' Prev pointer.
-
-         N.Chain (Prev_Node) := Before.Current.Chain (Prev_Node);
-         Before.Current.Chain (Prev_Node) := N;
-      end if;
-
-      pragma Assert ((L.First = null) = (L.Last = null));
-   end Insert;
-
    --------------
    -- Is_Empty --
    --------------

    function Is_Empty (L : List) return Boolean is
    begin
-      return L.First = null;
+      return Node_Lists.Is_Empty (Node_Lists.List (L));
    end Is_Empty;

    ----------
@@ -224,9 +160,8 @@ package body PolyORB.Utils.Chained_Lists
    ----------

    function Last (L : List) return Iterator is
-      pragma Unreferenced (L);
    begin
-      return Iterator'(Current => null);
+      return Iterator (Node_Lists.Last (Node_Lists.List (L)));
    end Last;

    ----------
@@ -235,7 +170,7 @@ package body PolyORB.Utils.Chained_Lists

    function Last (I : Iterator) return Boolean is
    begin
-      return I.Current = null;
+      return Node_Lists.Last (Node_Lists.Iterator (I));
    end Last;

    ------------
@@ -243,23 +178,29 @@ package body PolyORB.Utils.Chained_Lists
    ------------

    function Length (L : List) return Natural is
-      N : Node_Access := L.First;
-      C : Natural := 0;
    begin
-      while N /= null loop
-         C := C + 1;
-         N := N.Chain (Next_Node);
-      end loop;
-      return C;
+      return Node_Lists.Length (Node_Lists.List (L));
    end Length;

    ----------
+   -- Link --
+   ----------
+
+   function Link
+     (N     : access Node;
+      Which : Ilists.Link_Type) return access Node_Access
+   is
+   begin
+      return N.Links (Which)'Unchecked_Access;
+   end Link;
+
+   ----------
    -- Next --
    ----------

    procedure Next (I : in out Iterator) is
    begin
-      I.Current := I.Current.Chain (Next_Node);
+      Node_Lists.Next (Node_Lists.Iterator (I));
    end Next;

    -------------
@@ -267,9 +208,8 @@ package body PolyORB.Utils.Chained_Lists
    -------------

    procedure Prepend (L : in out List; I : T) is
-      L_First : Iterator := First (L);
    begin
-      Insert (L, I, Before => L_First);
+      Prepend (L, Node_Access'(new Node'(Value => I, others => <>)));
    end Prepend;

    --------------
@@ -277,20 +217,25 @@ package body PolyORB.Utils.Chained_Lists
    --------------

    procedure Remove_G (L : in out List; All_Occurrences : Boolean := True) is
-      Item : Node_Access := L.First;
-      Prev : Node_Access := null;
-      Next : Node_Access;
+      Item, Prev_Item : Node_Access;
+      Iter : Iterator;
    begin
+      Iter := First (L);
+      Prev_Item := null;
+
       All_Items :
-      while Item /= null loop
-         Next := Item.Chain (Next_Node);
+      while not Last (Iter) loop
+         Item := Value (Iter);
          if Predicate (Item.Value) then
-            Remove (L, Item, Prev);
+            Next (Iter);
+            Remove_Element (L, Item, Prev_Item);
+            Free (Item);
             exit All_Items when not All_Occurrences;
+
          else
-            Prev := Item;
+            Prev_Item := Value (Iter);
+            Next (Iter);
          end if;
-         Item := Next;
       end loop All_Items;
    end Remove_G;

@@ -298,7 +243,19 @@ package body PolyORB.Utils.Chained_Lists
    -- Remove --
    ------------

-   procedure Remove (L : in out List; I : T; All_Occurrences : Boolean := True)
+   procedure Remove (L : in out List; I : in out Iterator) is
+      N : Node_Access := Value (I);
+   begin
+      Node_Lists.Remove (Node_Lists.List (L), Node_Lists.Iterator (I));
+      Free (N);
+   end Remove;
+
+   ------------------------
+   -- Remove_Occurrences --
+   ------------------------
+
+   procedure Remove_Occurrences
+     (L : in out List; I : T; All_Occurrences : Boolean := True)
    is
       function Equality (X : T) return Boolean;
       --  True iff X = I
@@ -312,85 +269,15 @@ package body PolyORB.Utils.Chained_Lists

    begin
       Remove (L, All_Occurrences);
-   end Remove;
+   end Remove_Occurrences;

-   ------------
-   -- Remove --
-   ------------
-
-   procedure Remove
-     (L        : in out List;
-      Item     : Node_Access;
-      Previous : Node_Access)
-   is
-      Current : Node_Access := Item;
-   begin
-      if Previous = null then
-         L.First := Current.Chain (Next_Node);
-      else
-         Previous.Chain (Next_Node) := Current.Chain (Next_Node);
-      end if;
-
-      if L.Last = Current then
-         L.Last := Previous;
-      end if;
-
-      if Doubly_Chained then
-         if Current.Chain (Next_Node) /= null then
-            Current.Chain (Next_Node).Chain (Prev_Node) := Previous;
-         end if;
-      end if;
-      Free (Current);
-   end Remove;
-
-   ------------
-   -- Remove --
-   ------------
-
-   procedure Remove (L : in out List; I : in out Iterator) is
-      Next : constant Node_Access := I.Current.Chain (Next_Node);
-   begin
-      if Doubly_Chained then
-         Remove (L, I.Current, I.Current.Chain (Prev_Node));
-         I.Current := Next;
-      else
-         raise Program_Error;
-      end if;
-   end Remove;
-
    -----------
    -- Value --
    -----------

    function Value (I : Iterator) return Element_Access is
    begin
-      return I.Current.Value'Access;
+      return Value (I).Value'Unchecked_Access;
    end Value;

-   ---------
-   -- "+" --
-   ---------
-
-   function "+" (I : T) return List is
-      N : constant Node_Access := new Node;
-   begin
-      N.Value := I;
-      N.Chain (Next_Node) := null;
-      if Doubly_Chained then
-         N.Chain (Prev_Node) := null;
-      end if;
-      return List'(First => N, Last => N);
-   end "+";
-
-   ---------
-   -- "&" --
-   ---------
-
-   function "&" (L : List; I : T) return List is
-      LL : List := L;
-   begin
-      Append (LL, I);
-      return LL;
-   end "&";
-
 end PolyORB.Utils.Chained_Lists;
============================================================
--- src/polyorb-utils-chained_lists.ads	efce85573b6d5a9c12869744965bc776fcc5da9a
+++ src/polyorb-utils-chained_lists.ads	93d0b2a36e20196781d22547eccd5b2642eeb3c7
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---         Copyright (C) 2001-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2001-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -25,8 +25,12 @@
 --                                                                          --
 ------------------------------------------------------------------------------

---  Generic chained list
+--  Generic chained list of nonlimited values with dynamic allocation

+pragma Ada_2005;
+
+with PolyORB.Utils.Ilists;
+
 generic
    type T is private;
    with function "=" (X, Y : T) return Boolean is <>;
@@ -54,16 +58,15 @@ package PolyORB.Utils.Chained_Lists is
    --  Return an iterator on L positioned at L's first element. If L is empty,
    --  returns the same value as Last (L).

+   function Last (L : List) return Iterator;
+   --  Return an iterator on L positioned past L's last element
+
    function Value (I : Iterator) return Element_Access;
    --  Return an access to the value of the element designated by I

    procedure Next (I : in out Iterator);
    --  Move I to the next element in the list

-   function Last (L : List) return Iterator;
-   --  Return an iterator position at the end of L (i.e. immediately after the
-   --  last element in L; this iterator has no associated value).
-
    function Last (I : Iterator) return Boolean;
    --  True when I is positioned at the end of L (i.e. after the last element)

@@ -73,11 +76,6 @@ package PolyORB.Utils.Chained_Lists is
    procedure Append (L : in out List; I : T);
    --  Append value I at the end of L

-   procedure Insert (L : in out List; I : T; Before : in out Iterator);
-   --  Insert I into L before the designated position.
-   --  If Before is not either First (L) or Last (L), then the list must be
-   --  be doubly linked (else Program_Error is raised).
-
    procedure Remove (L : in out List; I : in out Iterator);
    --  Remove the item designated by I from L, and advance I to the next item
    --  in L. This procedure can be used only if Doubly_Chained is True (else
@@ -89,19 +87,13 @@ package PolyORB.Utils.Chained_Lists is
    --  Remove from L items for which Predicate is True. If All_Occurrences is
    --  True, remove all such items, else only the first such item (if any).

-   procedure Remove
+   procedure Remove_Occurrences
      (L : in out List; I : T; All_Occurrences : Boolean := True);
    --  Remove first/all occurences of value I from list L

    function Is_Empty (L : List) return Boolean;
    --  True iff L contains no elements

-   Empty : constant List;
-   --  A list that contains no elements
-
-   --  NOTE: No guarantee is made that a list for which Is_Empty is true is
-   --  equal to Empty.
-
    function "+" (I : T) return List;
    --  Make a list with I as its only element

@@ -114,6 +106,8 @@ package PolyORB.Utils.Chained_Lists is
    procedure Deallocate (L : in out List);
    --  Release the storage associated with L

+   function Empty return List;
+
 private
    pragma Inline (First);
    pragma Inline (Value);
@@ -121,7 +115,8 @@ private
    pragma Inline (Next);
    pragma Inline (Prepend);
    pragma Inline (Append);
-   pragma Inline (Insert);
+   pragma Inline (Empty);
+   pragma Inline (Remove);
    pragma Inline ("+");
    pragma Inline ("&");

@@ -131,33 +126,36 @@ private
    --  For simply chained lists, we only have one Next pointer in each node;
    --  for doubly chained lists, we have Next and Prev.

-   type Node_Chain is array (False .. Doubly_Chained) of Node_Access;
-   pragma Suppress (Index_Check, Node_Chain);
-   --  No index checks are required for accesses to Node_Chain, because all
-   --  all cases of access to Node_Chain (Prev) are correctly protected by an
-   --  'if Doubly_Chained' condition.
+   Links_Type_Low : constant array (Boolean) of Ilists.Link_Type :=
+                      (False => Ilists.Next,
+                       True  => Ilists.Prev);

-   Next_Node : constant Boolean := False;
-   Prev_Node : constant Boolean := True;
+   type Links_Type is
+     array (Ilists.Link_Type range Links_Type_Low (Doubly_Chained)
+                                                     .. Ilists.Next)
+       of aliased Node_Access;
+   --  If Doubly_Chained, Links_Type has indices Prev and Next, else just Next

    type Node is limited record
       Value : aliased T;
       --  Value associated with this list node

-      Chain : Node_Chain;
-      --  Next and optional Prev nodes.
-      --  Note that all accesses to Chain (Prev_Node) must be protected by an
-      --  'if Doubly_Chained' conditition.
+      Links : Links_Type;
+      --  Next and (optional) Prev nodes.
    end record;

-   type Iterator is record
-     Current : Node_Access;
-   end record;
+   function Link
+     (N     : access Node;
+      Which : Ilists.Link_Type) return access Node_Access;
+   pragma Inline (Link);
+   --  Accessor for Links

-   type List is record
-      First, Last : Node_Access;
-   end record;
+   package Node_Lists is new Ilists.Lists
+     (T             => Node,
+      T_Acc         => Node_Access,
+      Doubly_Linked => Doubly_Chained);

-   Empty : constant List := (null, null);
+   type List is new Node_Lists.List;
+   type Iterator is new Node_Lists.Iterator;

 end PolyORB.Utils.Chained_Lists;
============================================================
--- src/polyorb-utils-strings-lists.adb	bde08790b56512ed4d51264b0ac4a7ee768ea518
+++ src/polyorb-utils-strings-lists.adb	7c0f7bb784ea2b89ded586c2006e0583df0f9da6
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2002-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2002-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -34,8 +34,9 @@ package body PolyORB.Utils.Strings.Lists
    -----------

    function Empty return List is
+      Empty_List : List;
    begin
-      return List (String_Ptr_Lists.Empty);
+      return Empty_List;
    end Empty;

    -----------
============================================================
--- src/security/polyorb-qos-clients_security.adb	dc536343faa741e0586c0a549d6c8a5a36662d42
+++ src/security/polyorb-qos-clients_security.adb	a5b8097c048f53ec67d293affa646056e616e59e
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2005-2006, Free Software Foundation, Inc.          --
+--         Copyright (C) 2005-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -147,7 +147,7 @@ package body PolyORB.QoS.Clients_Securit
          Result := Result or Establish_Trust_In_Client;
       end if;

-      if Mechanism.Authorities /= Client_Authority_Mechanism_Lists.Empty
+      if not Is_Empty (Mechanism.Authorities)
         and then Mechanism.Delegation_Supported
         and then Mechanism.Delegation_Required
       then
@@ -180,7 +180,7 @@ package body PolyORB.QoS.Clients_Securit
          Result := Result or Identity_Assertion;
       end if;

-      if Mechanism.Authorities /= Client_Authority_Mechanism_Lists.Empty
+      if not Is_Empty (Mechanism.Authorities)
         and then Mechanism.Delegation_Supported
       then
          Result := Result or Delegation_By_Client;
============================================================
--- src/security/polyorb-qos-targets_security.adb	dcd0bae565732fb5fcadc3f256ad7d20428a1505
+++ src/security/polyorb-qos-targets_security.adb	f706fecc1da5a21ac786730448a77dc61a75fa9a
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2005-2006, Free Software Foundation, Inc.          --
+--         Copyright (C) 2005-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -153,7 +153,7 @@ package body PolyORB.QoS.Targets_Securit
          Result := Result or Establish_Trust_In_Client;
       end if;

-      if Mechanism.Authorities /= Target_Authority_Mechanism_Lists.Empty
+      if not Is_Empty (Mechanism.Authorities)
         and then Mechanism.Forward_Trust_Evaluator /= null
         and then Mechanism.Delegation_Required
       then
@@ -188,7 +188,7 @@ package body PolyORB.QoS.Targets_Securit
          Result := Result or Identity_Assertion;
       end if;

-      if Mechanism.Authorities /= Target_Authority_Mechanism_Lists.Empty
+      if not Is_Empty (Mechanism.Authorities)
         and then Mechanism.Forward_Trust_Evaluator /= null
       then
          Result := Result or Delegation_By_Client;
============================================================
--- src/security/tls/polyorb-asynch_ev-sockets-tls.adb	3272658453d24b5f2aaa70360da38fa939a164de
+++ src/security/tls/polyorb-asynch_ev-sockets-tls.adb	1ca9e598c949f9de49b5ed232182d202326de8b3
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2005-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2005-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -76,20 +76,19 @@ package body PolyORB.Asynch_Ev.Sockets.T

       declare
          Iter : Iterator := First (AEM.Sources);
-
       begin
          while not Source_Lists.Last (Iter) loop
-            if TLS_Event_Source (Value (Iter).all.all).TLS_Socket
+            if TLS_Event_Source (Value (Iter).all).TLS_Socket
                  /= No_TLS_Socket
               and then Pending_Length
-                (TLS_Event_Source (Value (Iter).all.all).TLS_Socket) /= 0
+                (TLS_Event_Source (Value (Iter).all).TLS_Socket) /= 0
             then
                Last := Last + 1;
-               Result (Last) := Value (Iter).all;
+               Result (Last) := Asynch_Ev_Source_Access (Value (Iter));

                Clear
                  (AEM.Monitored_Set,
-                  TLS_Event_Source (Value (Iter).all.all).Socket);
+                  TLS_Event_Source (Value (Iter).all).Socket);
                Remove (AEM.Sources, Iter);

             else
@@ -170,7 +169,7 @@ package body PolyORB.Asynch_Ev.Sockets.T
       end if;

       Set (AEM.Monitored_Set, TLS_Event_Source (AES.all).Socket);
-      Source_Lists.Append (AEM.Sources, AES);
+      Source_Lists.Append (AEM.Sources, Socket_Event_Source (AES.all)'Access);
       pragma Debug (C, O ("Register_Source: Sources'Length:="
                        & Integer'Image (Source_Lists.Length (AEM.Sources))));
       AES.Monitor := Asynch_Ev_Monitor_Access (AEM);
============================================================
--- src/security/tls/polyorb-security-transport_mechanisms-tls.adb	0d34f7286180c9cb1ede376858e9cf50d0f3fac9
+++ src/security/tls/polyorb-security-transport_mechanisms-tls.adb	c0a4bd7044a9f6db6ea07d418f806726e22b37ed
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2005-2006, Free Software Foundation, Inc.          --
+--         Copyright (C) 2005-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -137,9 +137,9 @@ package body PolyORB.Security.Transport_
       return PolyORB.Security.Types.OID_Lists.List
    is
       pragma Unreferenced (Mechanism);
-
+      Empty_List : Security.Types.OID_Lists.List;
    begin
-      return PolyORB.Security.Types.OID_Lists.Empty;
+      return Empty_List;
    end Supported_Naming_Mechanisms;

    ---------------------
============================================================
--- src/soap/polyorb-binding_data-soap.adb	0f898e423a529f609f9be06a0435e8475498c831
+++ src/soap/polyorb-binding_data-soap.adb	fea803d3c7eec1b07d1ed3bfea3882394ae263dc
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2001-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2001-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -141,7 +141,8 @@ package body PolyORB.Binding_Data.SOAP i
       Create (Socket_Endpoint (TE.all), Sock);

       Binding_Objects.Setup_Binding_Object
-        (TE,
+        (The_ORB,
+         TE,
          SOAP_Factories,
          BO_Ref,
          Profile_Access (Profile));
============================================================
--- src/soap/polyorb-utils-text_buffers.adb	da7062608c898021cd3b1cec585d364dd4431a70
+++ src/soap/polyorb-utils-text_buffers.adb	231e9ec0057873a4c275763840e2b7f4b5565938
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2001-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2001-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -53,7 +53,7 @@ package body PolyORB.Utils.Text_Buffers
    is
       A : Stream_Element_Array (1 .. 1);
    begin
-      Align_Unmarshall_Copy (B, 1, A);
+      Align_Unmarshall_Copy (B, Align_1, A);
       return Character'Val (A (1));
    end Unmarshall_Char;

@@ -86,7 +86,7 @@ package body PolyORB.Utils.Text_Buffers
       for A'Address use S'Address;
       pragma Import (Ada, A);
    begin
-      Align_Unmarshall_Copy (B, 1, A);
+      Align_Unmarshall_Copy (B, Align_1, A);
    end Unmarshall_String;

 end PolyORB.Utils.Text_Buffers;
============================================================
--- src/srp/polyorb-binding_data-srp.adb	7dbbcf796fb1f1733c7a1591d5bfe88d84abffc6
+++ src/srp/polyorb-binding_data-srp.adb	35304b2805ad939440e0c942c8e6675598bc7035
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2002-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2002-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -100,7 +100,8 @@ package body PolyORB.Binding_Data.SRP is
       --  Create (P'Access, Filters.Filter_Access (Session));

       Binding_Objects.Setup_Binding_Object
-        (TE,
+        (The_ORB,
+         TE,
          SRP_Factories,
          BO_Ref,
          Profile_Access (Profile));
============================================================
--- src/srp/polyorb-representations-srp.adb	ffb2ecc945201b06e0a1ff987baade4ddd3bd23c
+++ src/srp/polyorb-representations-srp.adb	4136f14bc72279e85b45e63b72aea51fb6fc46ef
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2002-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2002-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -375,7 +375,7 @@ package body PolyORB.Representations.SRP
    is
       Result : Stream_Element_Array (1 .. 1);
    begin
-      Align_Unmarshall_Copy (Buffer, 1, Result);
+      Align_Unmarshall_Copy (Buffer, Align_1, Result);
       pragma Debug (C, O ("Unmarshall (Octet): enter & end"));
       return PolyORB.Types.Octet (Result (Result'First));
    end Unmarshall;
@@ -918,7 +918,7 @@ package body PolyORB.Representations.SRP
    begin
       pragma Debug (C, O ("Marshall (Octet): enter"));
       Align_Marshall_Copy (Buffer, (1 => Stream_Element
-                           (PolyORB.Types.Octet'(Data))), 1);
+                           (PolyORB.Types.Octet'(Data))), Align_1);
       pragma Debug (C, O ("Marshall (Octet): end"));
    end Marshall;

@@ -2138,7 +2138,7 @@ package body PolyORB.Representations.SRP
    is
       A : Stream_Element_Array (1 .. 1);
    begin
-      Align_Unmarshall_Copy (B, 1, A);
+      Align_Unmarshall_Copy (B, Align_1, A);
       return Character'Val (A (A'First));
    end Unmarshall_Char;

============================================================
--- src/ssl/polyorb-asynch_ev-sockets-ssl.adb	2f34a5aea0b70844f3e9539d97b2bce1947f0c71
+++ src/ssl/polyorb-asynch_ev-sockets-ssl.adb	22de5a147f68869f9d531922a3a445058f136ae7
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---         Copyright (C) 2005-2008, Free Software Foundation, Inc.          --
+--         Copyright (C) 2005-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -110,7 +110,7 @@ package body PolyORB.Asynch_Ev.Sockets.S
       end if;

       Set (AEM.Monitored_Set, SSL_Event_Source (AES.all).Socket);
-      Source_Lists.Append (AEM.Sources, AES);
+      Source_Lists.Append (AEM.Sources, Socket_Event_Source (AES.all)'Access);
       pragma Debug (C, O ("Register_Source: Sources'Length:="
                        & Integer'Image (Source_Lists.Length (AEM.Sources))));
       AES.Monitor := Asynch_Ev_Monitor_Access (AEM);
@@ -144,17 +144,17 @@ package body PolyORB.Asynch_Ev.Sockets.S

       begin
          while not Source_Lists.Last (Iter) loop
-            if SSL_Event_Source (Value (Iter).all.all).SSL_Socket
+            if SSL_Event_Source (Value (Iter).all).SSL_Socket
                  /= No_SSL_Socket
               and then Pending_Length
-                (SSL_Event_Source (Value (Iter).all.all).SSL_Socket) /= 0
+                (SSL_Event_Source (Value (Iter).all).SSL_Socket) /= 0
             then
                Last := Last + 1;
-               Result (Last) := Value (Iter).all;
+               Result (Last) := Value (Iter).all'Access;

                Clear
                  (AEM.Monitored_Set,
-                  SSL_Event_Source (Value (Iter).all.all).Socket);
+                  SSL_Event_Source (Value (Iter).all).Socket);
                Remove (AEM.Sources, Iter);

             else
============================================================
--- testsuite/core/chained_lists/test000.adb	5ac857885260c83aaa4105b68c972cd4c7c5dfd7
+++ testsuite/core/chained_lists/test000.adb	877b4ec21f7109cff7a170f7fe0d9a5b543d3155
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---            Copyright (C) 2008, Free Software Foundation, Inc.            --
+--         Copyright (C) 2008-2009, Free Software Foundation, Inc.          --
 --                                                                          --
 -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
 -- under terms of the  GNU General Public License as published by the  Free --
@@ -16,12 +16,12 @@
 -- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
 -- License  for more details.  You should have received  a copy of the GNU  --
 -- General Public License distributed with PolyORB; see file COPYING. If    --
--- not, write to the Free Software Foundation, 59 Temple Place - Suite 330, --
--- Boston, MA 02111-1307, USA.                                              --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth    --
+-- Floor, Boston, MA 02111-1301, USA.                                       --
 --                                                                          --
 --                                                                          --
---                PolyORB is maintained by ACT Europe.                      --
---                    (email: sales@act-europe.fr)                          --
+--                  PolyORB is maintained by AdaCore                        --
+--                     (email: sales@adacore.com)                           --
 --                                                                          --
 ------------------------------------------------------------------------------

@@ -56,7 +56,8 @@ procedure Test000 is
    end To_Array;

    L1, L2, L3, L4 : List;
-   It : Iterator;
+   Int : Integer;
+   It  : Iterator;
 begin
    Output ("empty", To_Array (L1)'Length = 0);
    Append (L1, 123);
@@ -67,9 +68,11 @@ begin
    Prepend (L1, 666);
    Output ("double L1", To_Array (L1) = (1 => 666, 2 => 123));
    Append (L2, 789);
-   Output ("double L1", To_Array (L2) = (1 => 456, 2 => 789));
+   Output ("double L2", To_Array (L2) = (1 => 456, 2 => 789));

    L3 := L1 & 999 & 456 & 789;
+   --  L3 is now a copy of L1
+
    Output ("concat", To_Array (L3) = (666, 123, 999, 456, 789));

    It := First (L3);
@@ -79,17 +82,21 @@ begin

    Output ("scan", Value (It).all = 999);
    Remove (L3, It);
+   --  Note, L1 now has dangling pointers
+
    Output ("remove", To_Array (L3) = (666, 123, 456, 789));
    Output ("remove iterator", Value (It).all = 456);

-   Insert (L3, 444, Before => It);
-   Output ("insert", To_Array (L3) = (666, 123, 444, 456, 789));
-
    L4 := Duplicate (L3);
    Element (L4, 1).all := 321;
    Append (L4, 555);
-   Output ("duplicate", To_Array (L3) = (666, 123, 444, 456, 789)
-               and then To_Array (L4) = (666, 321, 444, 456, 789, 555));
+   Output ("duplicate", To_Array (L3) = (666, 123, 456, 789)
+               and then To_Array (L4) = (666, 321, 456, 789, 555));
+
+   Extract_First (L4, Int);
+   Output ("extract first",
+     Int = 666 and then To_Array (L4) = (321, 456, 789, 555));
+
    declare
       function Range_400_499 (X : Integer) return Boolean;
       function Range_400_499 (X : Integer) return Boolean is
@@ -102,5 +109,11 @@ begin
       Output ("remove multiple", To_Array (L3) = (666, 123, 789));
    end;

+   --  Deallocate (L1);
+   --  Copied into L3, and then elements removed from L3
+
+   Deallocate (L2);
+   Deallocate (L3);
+   Deallocate (L4);
    End_Report;
 end Test000;