*** empty log message ***
[dyninst.git] / dyninstAPI / src / sharedobject.C
1 #include "dyninstAPI/src/sharedobject.h"
2
3 // TODO: this should probably not be a shared_object method, but since
4 // for now it is only used by shared_objects it is
5 // from a string that is a complete path name to a function in a module
6 // (ie. "/usr/lib/libc.so.1/write") return a string with the function
7 // part removed.  return 0 on error
8 char *shared_object::getModulePart(string &full_path_name) {
9
10     char *whole_name = P_strdup(full_path_name.string_of());
11     char *next=0;
12     char *last=next;
13     if((last = P_strrchr(whole_name, '/'))){
14         next = whole_name;
15         for(u_int i=0;(next!=last)&&(i<full_path_name.length()); i++){
16             next++;
17             if(next == last){
18                 u_int size = i+2;
19                 char *temp_str = new char[size];
20                 if(P_strncpy(temp_str,whole_name,size-1)){
21                     temp_str[size-1] = '\0';
22                     delete whole_name;
23                     return temp_str;
24                     temp_str = 0;
25             } }
26         }
27     }
28     delete whole_name;
29     return 0;
30 }
31
32
33 #ifndef BPATCH_LIBRARY
34 // returns all the functions not excluded by exclude_lib or exclude_func
35 // mdl option
36 vector<pd_Function *> *shared_object::getSomeFunctions(){
37     if(objs_image) {
38
39         if(some_funcs) return some_funcs;
40         // return (&(objs_image->mdlNormal));
41         // check to see if this module occurs in the list of modules from
42         // exclude_funcs mdl option...if it does then we need to check
43         // function by function
44         some_funcs = new vector<pd_Function *>;
45
46         vector<pd_Function *> temp = *(getAllFunctions());
47
48         if (filter_excluded_functions(temp, *some_funcs, name) == FALSE) {
49             // WRONG!!!!  Leads to memory leak!!!!
50             //  some_funcs = 0;
51             // correct :
52             delete some_funcs;
53             some_funcs = NULL;
54             return NULL;
55         }
56         return some_funcs;
57     }
58     return NULL;    
59
60 #endif /* BPATCH_LIBRARY */
61
62
63
64
65
66