Build identifier class
[dyninst.git] / pdutil / src / Object.C
1 #include "util/h/Object.h"
2 #include "util/h/Dictionary.h"
3
4 ostream & relocationEntry::operator<< (ostream &s) const {
5     s << "target_addr_ = " << target_addr_ << endl;
6     s << "rel_addr_ = " << rel_addr_ << endl;
7     s << "name_ = " << name_ << endl;
8     return s; 
9 }
10
11 ostream &operator<<(ostream &os, relocationEntry &q) {
12     return q.operator<<(os);
13 }
14
15 bool AObject::needs_function_binding() const {
16     return false;
17 }
18
19 bool AObject::get_func_binding_table(vector<relocationEntry> &) const {
20     return false;
21 }
22
23 bool AObject::get_func_binding_table_ptr(const vector<relocationEntry> *&) const {
24     return false;
25 }
26
27 /**************************************************
28  *
29  *  Stream based debuggering output - for regreesion testing.
30  *  Dump info on state of object *this....
31  *
32 **************************************************/
33
34 const ostream &AObject::dump_state_info(ostream &s) {
35
36     // key and value for distc hash iter.... 
37     string str;
38     Symbol sym;
39     dictionary_hash_iter<string, Symbol> symbols_iter(symbols_);
40
41     s << "Debugging Info for AObject (address) : " << this << endl;
42
43     s << " file_ = " << file_ << endl;
44     s << " symbols_ = " << endl;
45
46     // and loop over all the symbols, printing symbol name and data....
47     //  or try at least....
48     symbols_iter.reset();
49     while (symbols_iter.next(str, sym)) {
50       s << "  key = " << str << " val " << sym << endl;
51     }
52
53     s << " code_ptr_ = " << code_ptr_ << endl;
54     s << " code_off_ = " << code_off_ << endl;
55     s << " code_len_ = " << code_len_ << endl;
56     s << " data_ptr_ = " << data_ptr_ << endl;
57     s << " data_off_ = " << data_off_ << endl;
58     s << " data_len_ = " << data_len_ << endl;
59     return s;
60 }
61
62
63
64
65