Enforce detection of libiberty (#1099)
[dyninst.git] / common / src / Types.C
1 /*
2  * See the dyninst/COPYRIGHT file for copyright information.
3  * 
4  * We provide the Paradyn Tools (below described as "Paradyn")
5  * on an AS IS basis, and do not warrant its validity or performance.
6  * We reserve the right to update, modify, or discontinue this
7  * software at any time.  We shall have no obligation to supply such
8  * updates or modifications or any other form of support to you.
9  * 
10  * By your use of Paradyn, you understand and agree that we (or any
11  * other person or entity with proprietary rights in Paradyn) are
12  * under no obligation to provide either maintenance services,
13  * update services, notices of latent defects, or correction of
14  * defects for Paradyn.
15  * 
16  * This library is free software; you can redistribute it and/or
17  * modify it under the terms of the GNU Lesser General Public
18  * License as published by the Free Software Foundation; either
19  * version 2.1 of the License, or (at your option) any later version.
20  * 
21  * This library is distributed in the hope that it will be useful,
22  * but WITHOUT ANY WARRANTY; without even the implied warranty of
23  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
24  * Lesser General Public License for more details.
25  * 
26  * You should have received a copy of the GNU Lesser General Public
27  * License along with this library; if not, write to the Free Software
28  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
29  */
30
31 /************************************************************************
32  * $Id: Types.C,v 1.7 2007/05/30 19:20:17 legendre Exp $
33  * Types.C: commonly used type-handling functions.
34 ************************************************************************/
35
36 #include "common/src/Types.h"
37 #include <stdio.h>
38 #include <assert.h>
39
40 // verify the size of the defined Address type
41 void Address_chk ()
42 {
43     assert (sizeof(Address) == sizeof(void*));
44 }
45
46 static const unsigned int _numaddrstrs=8;
47                         // maximum number of addresses per outstanding printf!
48 static char _addrstr[_numaddrstrs][19]; // "0x"+16+'\0'
49
50 // Format an address string according to the size of the Address type.
51 // Note that "%x" outputs incorrect/incomplete addresses, and that "%lx"
52 // or system-dependent "%p" (generally also requiring a typecast to (void*))
53 // must be used instead!
54 char *Address_str (Address addr)
55 {
56     static int i=0;
57     i=(i+1)%_numaddrstrs;
58     if (sizeof(Address) == sizeof(int))
59         snprintf(_addrstr[i],19,"0x%08X",(unsigned int)addr);
60     else
61         snprintf(_addrstr[i],19,"0x%016lX",(unsigned long)addr);
62     return (_addrstr[i]);
63 }
64
65
66 int ThrIDToTid(Dyninst::THR_ID id)
67 {
68 #if defined(os_windows)
69         // This is vista-only; for the time being, we'll return the handle as a dword
70         //   return GetThreadId(id);
71         return (unsigned long) id;
72 #else
73    return (int) id;
74 #endif
75 }