~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/tools/perf/util/dwarf-aux.h

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /tools/perf/util/dwarf-aux.h (Version linux-6.11.5) and /tools/perf/util/dwarf-aux.h (Version linux-5.10.223)


** Warning: Cannot open xref database.

  1 /* SPDX-License-Identifier: GPL-2.0-or-later *      1 
  2 #ifndef _DWARF_AUX_H                              
  3 #define _DWARF_AUX_H                              
  4 /*                                                
  5  * dwarf-aux.h : libdw auxiliary interfaces       
  6  */                                               
  7                                                   
  8 #include <dwarf.h>                                
  9 #include <elfutils/libdw.h>                       
 10 #include <elfutils/libdwfl.h>                     
 11 #include <elfutils/version.h>                     
 12                                                   
 13 struct strbuf;                                    
 14                                                   
 15 /* Find the realpath of the target file */        
 16 const char *cu_find_realpath(Dwarf_Die *cu_die    
 17                                                   
 18 /* Get DW_AT_comp_dir (should be NULL with old    
 19 const char *cu_get_comp_dir(Dwarf_Die *cu_die)    
 20                                                   
 21 /* Get a line number and file name for given a    
 22 int cu_find_lineinfo(Dwarf_Die *cudie, Dwarf_A    
 23                      const char **fname, int *    
 24                                                   
 25 /* Walk on functions at given address */          
 26 int cu_walk_functions_at(Dwarf_Die *cu_die, Dw    
 27                          int (*callback)(Dwarf    
 28                                                   
 29 /* Get DW_AT_linkage_name (should be NULL for     
 30 const char *die_get_linkage_name(Dwarf_Die *dw    
 31                                                   
 32 /* Get the lowest PC in DIE (including range l    
 33 int die_entrypc(Dwarf_Die *dw_die, Dwarf_Addr     
 34                                                   
 35 /* Ensure that this DIE is a subprogram and de    
 36 bool die_is_func_def(Dwarf_Die *dw_die);          
 37                                                   
 38 /* Ensure that this DIE is an instance of a su    
 39 bool die_is_func_instance(Dwarf_Die *dw_die);     
 40                                                   
 41 /* Compare diename and tname */                   
 42 bool die_compare_name(Dwarf_Die *dw_die, const    
 43                                                   
 44 /* Matching diename with glob pattern */          
 45 bool die_match_name(Dwarf_Die *dw_die, const c    
 46                                                   
 47 /* Get callsite line number of inline-function    
 48 int die_get_call_lineno(Dwarf_Die *in_die);       
 49                                                   
 50 /* Get callsite file name of inlined function     
 51 const char *die_get_call_file(Dwarf_Die *in_di    
 52                                                   
 53 /* Get declared file name of a DIE */             
 54 const char *die_get_decl_file(Dwarf_Die *dw_di    
 55                                                   
 56 /* Get type die */                                
 57 Dwarf_Die *die_get_type(Dwarf_Die *vr_die, Dwa    
 58                                                   
 59 /* Get a type die, but skip qualifiers and typ    
 60 Dwarf_Die *die_get_real_type(Dwarf_Die *vr_die    
 61                                                   
 62 /* Check whether the DIE is signed or not */      
 63 bool die_is_signed_type(Dwarf_Die *tp_die);       
 64                                                   
 65 /* Get data_member_location offset */             
 66 int die_get_data_member_location(Dwarf_Die *mb    
 67                                                   
 68 /* Return values for die_find_child() callback    
 69 enum {                                            
 70         DIE_FIND_CB_END = 0,            /* End    
 71         DIE_FIND_CB_CHILD = 1,          /* Sea    
 72         DIE_FIND_CB_SIBLING = 2,        /* Sea    
 73         DIE_FIND_CB_CONTINUE = 3,       /* Sea    
 74 };                                                
 75                                                   
 76 /* Search child DIEs */                           
 77 Dwarf_Die *die_find_child(Dwarf_Die *rt_die,      
 78                          int (*callback)(Dwarf    
 79                          void *data, Dwarf_Die    
 80                                                   
 81 /* Search a non-inlined function including giv    
 82 Dwarf_Die *die_find_realfunc(Dwarf_Die *cu_die    
 83                              Dwarf_Die *die_me    
 84                                                   
 85 /* Search a non-inlined function with tail cal    
 86 Dwarf_Die *die_find_tailfunc(Dwarf_Die *cu_die    
 87                                     Dwarf_Die     
 88                                                   
 89 /* Search the top inlined function including g    
 90 Dwarf_Die *die_find_top_inlinefunc(Dwarf_Die *    
 91                                    Dwarf_Die *    
 92                                                   
 93 /* Search the deepest inlined function includi    
 94 Dwarf_Die *die_find_inlinefunc(Dwarf_Die *sp_d    
 95                                Dwarf_Die *die_    
 96                                                   
 97 /* Search a non-inlined function by name and r    
 98 Dwarf_Die *die_find_func_rettype(Dwarf_Die *sp    
 99                                  Dwarf_Die *di    
100                                                   
101 /* Walk on the instances of given DIE */          
102 int die_walk_instances(Dwarf_Die *in_die,         
103                        int (*callback)(Dwarf_D    
104                                                   
105 /* Walker on lines (Note: line number will not    
106 typedef int (* line_walk_callback_t) (const ch    
107                                       Dwarf_Ad    
108                                                   
109 /*                                                
110  * Walk on lines inside given DIE. If the DIE     
111  * the lines inside the subprogram, otherwise     
112  */                                               
113 int die_walk_lines(Dwarf_Die *rt_die, line_wal    
114                                                   
115 /* Find a variable called 'name' at given addr    
116 Dwarf_Die *die_find_variable_at(Dwarf_Die *sp_    
117                                 Dwarf_Addr add    
118                                                   
119 /* Find a member called 'name' */                 
120 Dwarf_Die *die_find_member(Dwarf_Die *st_die,     
121                            Dwarf_Die *die_mem)    
122                                                   
123 /* Get the name of given type DIE */              
124 int die_get_typename_from_type(Dwarf_Die *type    
125                                                   
126 /* Get the name of given variable DIE */          
127 int die_get_typename(Dwarf_Die *vr_die, struct    
128                                                   
129 /* Get the name and type of given variable DIE    
130 int die_get_varname(Dwarf_Die *vr_die, struct     
131                                                   
132 /* Check if target program is compiled with op    
133 bool die_is_optimized_target(Dwarf_Die *cu_die    
134                                                   
135 /* Use next address after prologue as probe lo    
136 void die_skip_prologue(Dwarf_Die *sp_die, Dwar    
137                        Dwarf_Addr *entrypc);      
138                                                   
139 /* Get the list of including scopes */            
140 int die_get_scopes(Dwarf_Die *cu_die, Dwarf_Ad    
141                                                   
142 /* Variable type information */                   
143 struct die_var_type {                             
144         struct die_var_type *next;                
145         u64 die_off;                              
146         u64 addr;                                 
147         int reg;                                  
148         int offset;                               
149 };                                                
150                                                   
151 /* Return type info of a member at offset */      
152 Dwarf_Die *die_get_member_type(Dwarf_Die *type    
153                                                   
154 /* Return type info where the pointer and offs    
155 Dwarf_Die *die_deref_ptr_type(Dwarf_Die *ptr_d    
156                                                   
157 #ifdef HAVE_DWARF_GETLOCATIONS_SUPPORT            
158                                                   
159 /* Get byte offset range of given variable DIE    
160 int die_get_var_range(Dwarf_Die *sp_die, Dwarf    
161                                                   
162 /* Find a variable saved in the 'reg' at given    
163 Dwarf_Die *die_find_variable_by_reg(Dwarf_Die     
164                                     int *poffs    
165                                     Dwarf_Die     
166                                                   
167 /* Find a (global) variable located in the 'ad    
168 Dwarf_Die *die_find_variable_by_addr(Dwarf_Die    
169                                      Dwarf_Die    
170                                                   
171 /* Save all variables and parameters in this s    
172 void die_collect_vars(Dwarf_Die *sc_die, struc    
173                                                   
174 /* Save all global variables in this CU */        
175 void die_collect_global_vars(Dwarf_Die *cu_die    
176                                                   
177 #else /*  HAVE_DWARF_GETLOCATIONS_SUPPORT */      
178                                                   
179 static inline int die_get_var_range(Dwarf_Die     
180                                     Dwarf_Die     
181                                     struct str    
182 {                                                 
183         return -ENOTSUP;                          
184 }                                                 
185                                                   
186 static inline Dwarf_Die *die_find_variable_by_    
187                                                   
188                                                   
189                                                   
190                                                   
191                                                   
192 {                                                 
193         return NULL;                              
194 }                                                 
195                                                   
196 static inline Dwarf_Die *die_find_variable_by_    
197                                                   
198                                                   
199                                                   
200 {                                                 
201         return NULL;                              
202 }                                                 
203                                                   
204 static inline void die_collect_vars(Dwarf_Die     
205                                     struct die    
206 {                                                 
207 }                                                 
208                                                   
209 static inline void die_collect_global_vars(Dwa    
210                                            str    
211 {                                                 
212 }                                                 
213                                                   
214 #endif /* HAVE_DWARF_GETLOCATIONS_SUPPORT */      
215                                                   
216 #ifdef HAVE_DWARF_CFI_SUPPORT                     
217                                                   
218 /* Get the frame base information from CFA */     
219 int die_get_cfa(Dwarf *dwarf, u64 pc, int *pre    
220                                                   
221 #else /* HAVE_DWARF_CFI_SUPPORT */                
222                                                   
223 static inline int die_get_cfa(Dwarf *dwarf __m    
224                               int *preg __mayb    
225 {                                                 
226         return -1;                                
227 }                                                 
228                                                   
229 #endif /* HAVE_DWARF_CFI_SUPPORT */               
230                                                   
231 #endif /* _DWARF_AUX_H */                         
232                                                   

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php