summaryrefslogtreecommitdiff
path: root/TAO/IIOP/docs/README.apm
blob: e46f894bb2c172a8424b70b9113e4882273fea28 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
This document outlines the changes that have been made at APM by the following
people:

Owen Rees <rtor@ansa.co.uk>
Guangxing Li <gxl@ansa.co.uk>
Mike Beasley <mdrb@ansa.co.uk>

Note that the email address <iiop-impl@ansa.co.uk> will reach everyone at APM
currently interested in this code.

PLATFORMS
---------

We have got the software to work on the following platforms, with interworking
between them, compiling with g++ 2.6.3 on all:

 - HP 9000/7xx running HP-UX 9.01
 - DEC Alpha running OSF1 3.0
 - Sun 4 running SunOS 4.1.1
 - HP 9000/3xx running HP-UX 8.00
 - DECstation running Ultrix 4.2

The port to Alpha (with 64-bit pointers and longs) has necessitated many
changes; many occurrences of 'long' and 'unsigned long' have been changed to
'CORBA2::Long' and 'CORBA2::ULong' respectively.

The mixed endianness has revealed some problems which we have fixed.

We define an appropriate type for pointer arithmetic as ptr_arith_t; the exact
definition depends on the size of a pointer and of the various unsigned
integral types.

LONG DOUBLE
-----------

One of the problems that has been fixed is the handling of the 'long double'
type. CORBA requires this to be 16 bytes long, whereas g++ on many platforms
implements long double as double, and on Motorola 68000 series hardware
(e.g. HP9000/300 series and Sun3) long double is 12 bytes.

Unfortunately IEEE floating point is defined such that floating point numbers
of different lengths have different exponent sizes (unlike the format used on
IBM and ICL mainframes). This makes conversion between a CORBA long double and
a double a little tricky. An implementation using bitfields should be
available soon, but meanwhile:

1)  If native 'long double' is 16 bytes, use it.

2)  Otherwise define CORBA 'long double' as a structure containing an array of
    16 unsigned chars.

BOOL
----

We exploit the builtin 'bool' type when available (g++).

USE OF GNU AUTOCONF
-------------------

The hardware/OS-dependent ifdefs have been rationalised. If you are running on
any sort of Unix, just run 'configure' and then make/gmake, and it should all
build. On non-Unix systems noconfig.h will be included instead of config.h.

EXTRA TEST PROGRAM
------------------

There is an 'echo' client and server, based on 'test1', where values are
echoed back rather than being cubed, bitwise inverted or whatever.

There is extra code in 'test1_clnt.cc' to output the results of failing tests.

EXTRA DEBUGGING
---------------

The function 'dmsg_opaque_full' is added. This will dump a given array of
unsigned chars in hex and as characters.

6 Jun 1995

Mike Beasley, ICL, ANSA project
c/o APM, Poseidon House, Castle Park, Cambridge CB3 0RD, UK
Tel: +44 1223 568931  Fax: +44 1223 359779  Email: mdrb@ansa.co.uk