Updated/consolidated type definitions
[dyninst.git] / common / h / Types.h
1 /*
2  * Copyright (c) 1996 Barton P. Miller
3  * 
4  * We provide the Paradyn Parallel Performance Tools (below
5  * described as Paradyn") on an AS IS basis, and do not warrant its
6  * validity or performance.  We reserve the right to update, modify,
7  * or discontinue this software at any time.  We shall have no
8  * obligation to supply such updates or modifications or any other
9  * form of support to you.
10  * 
11  * This license is for research uses.  For such uses, there is no
12  * charge. We define "research use" to mean you may freely use it
13  * inside your organization for whatever purposes you see fit. But you
14  * may not re-distribute Paradyn or parts of Paradyn, in any form
15  * source or binary (including derivatives), electronic or otherwise,
16  * to any other organization or entity without our permission.
17  * 
18  * (for other uses, please contact us at paradyn@cs.wisc.edu)
19  * 
20  * All warranties, including without limitation, any warranty of
21  * merchantability or fitness for a particular purpose, are hereby
22  * excluded.
23  * 
24  * By your use of Paradyn, you understand and agree that we (or any
25  * other person or entity with proprietary rights in Paradyn) are
26  * under no obligation to provide either maintenance services,
27  * update services, notices of latent defects, or correction of
28  * defects for Paradyn.
29  * 
30  * Even if advised of the possibility of such damages, under no
31  * circumstances shall we (or any other person or entity with
32  * proprietary rights in the software licensed hereunder) be liable
33  * to you or any third party for direct, indirect, or consequential
34  * damages of any character regardless of type of action, including,
35  * without limitation, loss of profits, loss of use, loss of good
36  * will, or computer failure or malfunction.  You agree to indemnify
37  * us (and any other person or entity with proprietary rights in the
38  * software licensed hereunder) for any and all liability it may
39  * incur to third parties resulting from your use of Paradyn.
40  */
41
42 /************************************************************************
43  * $Id: Types.h,v 1.8 1999/11/11 00:51:49 wylie Exp $
44  * Types.h: commonly used types (used by runtime libs and other modules)
45 ************************************************************************/
46
47 #if !defined(_Types_h_)
48 #define _Types_h_
49
50 /* This file is now included by the rtinst library also, so all
51    C++ constructs need to be in #ifdef _cplusplus... 7/9/99 -bhs */
52
53 /* typedef appropriate definitions for ISO C9X standard integer types
54    if these currently aren't provided in <sys/types.h> */
55 #if defined(i386_unknown_nt4_0)
56 typedef __int64 int64_t;
57 typedef __int32 int32_t;
58 typedef unsigned __int64 uint64_t;
59 typedef unsigned __int32 uint32_t;
60 #elif defined(alpha_dec_osf4_0) || \
61       (defined(rs6000_ibm_aix4_1) && !defined(_H_INTTYPES))
62 typedef int int32_t;
63 typedef long long int64_t;
64 typedef unsigned int uint32_t;
65 typedef unsigned long long uint64_t;
66 #else
67 #include <sys/types.h>
68 /* Includes
69              int32_t   uint32_t    int64_t      uint64_t
70 Solaris      yes       yes         yes          yes
71 Linux        yes       no?         yes          no?
72 Irix         yes       yes         yes          yes
73 Osf          no        no          no           no
74 Aix4.1       no        no          no           no
75 Aix4.3       yes       yes         yes          yes
76 WindowsNT    no        no          no           no
77 */
78 #endif
79
80 typedef int64_t time64;
81
82 typedef long unsigned int Address;
83 /* Note the inherent assumption that the size of a "long" integer matches
84    that of an address (void*) on every supported Paradyn/Dyninst system!
85    (This can be checked with Address_chk().)
86 */
87
88 typedef unsigned int Word;
89
90 typedef long int RegValue;      /* register content */
91 /* This needs to be an int since it is sometimes used to pass offsets
92    to the code generator (i.e. if-statement) - jkh 5/24/99 */
93 typedef unsigned int Register;  /* a register number, e.g., [0..31]  */
94 static const Register Null_Register = (Register)(-1);   /* '255' */
95
96 #ifdef __cplusplus
97
98 extern void Address_chk ();
99 extern char *Address_str (Address addr);
100
101 // NB: this is probably inappropriate for 64-bit addresses!
102 inline unsigned hash_address(const Address& addr) {
103     return (addr >> 2);
104 }
105 #endif /* __cplusplus */
106
107 #endif /* !defined(_Types_h_) */
108
109
110