The following flowchart shows call tree in GNU cflow.
Recursive calls are marked with (R). Clicking on this marker will bring you to the call that caused recursion. Such calls are marked with text (recursive, see LINE). Again, clicking on this marker will bring you back to the recursion root call.
A marker [see LINE] indicates that the expansion of the current
node is available on line LINE
. These markers are clickable as well.
Enjoy!
1 main() <int main (int argc,char **argv) at main.c:627>: 2 register_output() <int register_output (const char *name,int (*handler)(cflow_output_command cmd,FILE *outfile,int line,void *data,void *handler_data),void *handler_data) at output.c:74>: 3 abort() 4 strdup() 5 handler() 6 gnu_output_handler() <int gnu_output_handler (cflow_output_command cmd,FILE *outfile,int line,void *data,void *handler_data) at gnu.c:63>: 7 fprintf() 8 posix_output_handler() <int posix_output_handler (cflow_output_command cmd,FILE *outfile,int line,void *data,void *handler_data) at posix.c:74>: 9 fprintf() 10 xstrdup() 11 sourcerc() <void sourcerc (int *argc_ptr,char ***argv_ptr) at rc.c:86>: 12 xmalloc() 13 getenv() 14 argcv_get() 15 free() 16 parse_rc() <void parse_rc (int *argc_ptr,char ***argv_ptr,char *name) at rc.c:43>: 17 malloc() 18 error() 19 fopen() 20 fread() 21 fclose() 22 strtok() 23 argcv_get() 24 free() 25 strlen() 26 malloc() 27 strcpy() 28 argp_parse() 29 exit() 30 error() 31 init() <void init () at main.c:611>: 32 init_lex() <void init_lex (int debug_level) at c.l:186>: 33 xmalloc() 34 free() 35 install() <Symbol *install (char *name) at symbol.c:52>: 36 xmalloc() 37 memset() 38 strcmp() 39 hash_initialize() 40 hash_insert() 41 xalloc_die() <void xalloc_die (void) at main.c:605>: 42 error() 43 free() 44 init_parse() <void init_parse () at parser.c:212>: 45 xmalloc() 46 free() 47 clearstack() <void clearstack () at parser.c:167>: 48 pp_option() <void pp_option (const char *arg) at c.l:246>: 49 xmalloc() 50 free() 51 strlen() 52 memcpy() 53 source() <int source (char *name) at c.l:318>: 54 fopen() 55 error() 56 fclose() 57 strlen() 58 memcpy() 59 yyrestart() <void yyrestart (FILE *input_file) at c.c:1620>: 60 yy_create_buffer() <YY_BUFFER_STATE yy_create_buffer (FILE *file,int size) at c.c:1678>: 61 yy_init_buffer() <void yy_init_buffer (YY_BUFFER_STATE b,FILE *file) at c.c:1735>: 62 yy_flush_buffer() <void yy_flush_buffer (YY_BUFFER_STATE b) at c.c:1762>: 63 yy_load_buffer_state() <void yy_load_buffer_state (void) at c.c:1665>: 64 isatty() 65 fileno() 66 yy_init_buffer() <void yy_init_buffer (YY_BUFFER_STATE b,FILE *file) at c.c:1735>: [see 61] 67 yy_load_buffer_state() <void yy_load_buffer_state (void) at c.c:1665>: [see 63] 68 yyparse() <int yyparse () at parser.c:286>: 69 clearstack() <void clearstack () at parser.c:167>: [see 47] 70 nexttoken() <int nexttoken () at parser.c:184>: 71 yylex() <int yylex (void) at c.c:749>: 72 yy_create_buffer() <YY_BUFFER_STATE yy_create_buffer (FILE *file,int size) at c.c:1678>: [see 60] 73 yy_load_buffer_state() <void yy_load_buffer_state (void) at c.c:1665>: [see 63] 74 fprintf() 75 ident() <int ident () at c.l:218>: 76 lookup() <Symbol *lookup (char *name) at symbol.c:42>: 77 hash_lookup() 78 memcpy() 79 memcpy() 80 error_at_line() 81 yywrap() <int yywrap () at c.l:309>: 82 delete_statics() <void delete_statics () at symbol.c:121>: 83 globals_only() <int globals_only () at main.c:573>: 84 included_char() <int included_char (int c) at main.c:566>: 85 strchr() 86 hash_do_for_each() 87 yyrestart() <void yyrestart (FILE *input_file) at c.c:1620>: [see 59] 88 tokpush() <void tokpush (int type,int line,char *token) at parser.c:142>: 89 xrealloc() 90 parse_typedef() <void parse_typedef () at parser.c:654>: 91 nexttoken() <int nexttoken () at parser.c:184>: [see 70] 92 fake_struct() <int fake_struct (Ident *ident) at parser.c:437>: 93 mark() <void mark (Stackpos pos) at parser.c:128>: 94 ident() <int ident () at c.l:218>: [see 75] 95 nexttoken() <int nexttoken () at parser.c:184>: [see 70] 96 putback() <int putback () at parser.c:198>: 97 error() 98 skip_struct() <void skip_struct () at parser.c:625>: 99 nexttoken() <int nexttoken () at parser.c:184>: [see 70] 100 restore() <void restore (Stackpos pos) at parser.c:134>: 101 tokpush() <void tokpush (int type,int line,char *token) at parser.c:142>: [see 88] 102 putback() <int putback () at parser.c:198>: [see 96] 103 dcl() <int dcl (Ident *idptr) at parser.c:692> (R) 104 nexttoken() <int nexttoken () at parser.c:184>: [see 70] 105 putback() <int putback () at parser.c:198>: [see 96] 106 dirdcl() <int dirdcl (Ident *idptr) at parser.c:720> (R) 107 dcl() <int dcl (Ident *idptr) at parser.c:692> (recursive: see 103) [see 103] 108 nexttoken() <int nexttoken () at parser.c:184>: [see 70] 109 putback() <int putback () at parser.c:198>: [see 96] 110 skip_to() <void skip_to (int c) at parser.c:277>: 111 nexttoken() <int nexttoken () at parser.c:184>: [see 70] 112 maybe_parm_list() <void maybe_parm_list (int *parm_cnt_return) at parser.c:786> (R) 113 nexttoken() <int nexttoken () at parser.c:184>: [see 70] 114 putback() <int putback () at parser.c:198>: [see 96] 115 parmdcl() <int parmdcl (Ident *idptr) at parser.c:761> (R) 116 nexttoken() <int nexttoken () at parser.c:184>: [see 70] 117 putback() <int putback () at parser.c:198>: [see 96] 118 dirdcl() <int dirdcl (Ident *idptr) at parser.c:720> (recursive: see 106) [see 106] 119 declare_type() <void declare_type (Ident *ident) at parser.c:905>: 120 finish_save() <void finish_save () at parser.c:270>: 121 lookup() <Symbol *lookup (char *name) at symbol.c:42>: [see 76] 122 ident() <int ident () at c.l:218>: [see 75] 123 install() <Symbol *install (char *name) at symbol.c:52>: [see 35] 124 printf() 125 parse_declaration() <void parse_declaration (Ident *ident) at parser.c:341> (R) 126 parse_function_declaration() <void parse_function_declaration (Ident *ident) at parser.c:412> (R) 127 ident() <int ident () at c.l:218>: [see 75] 128 parse_knr_dcl() <void parse_knr_dcl (Ident *ident) at parser.c:568>: 129 ident() <int ident () at c.l:218>: [see 75] 130 parse_dcl() <void parse_dcl (Ident *ident) at parser.c:679>: 131 ident() <int ident () at c.l:218>: [see 75] 132 putback() <int putback () at parser.c:198>: [see 96] 133 dcl() <int dcl (Ident *idptr) at parser.c:692> (R): [see 103] 134 save_stack() <void save_stack () at parser.c:260>: 135 save_token() <void save_token (TOKSTK *tokptr) at parser.c:220>: 136 strlen() 137 memcpy() 138 declare() <void declare (Ident *ident) at parser.c:857>: 139 finish_save() <void finish_save () at parser.c:270>: [see 120] 140 ident() <int ident () at c.l:218>: [see 75] 141 install() <Symbol *install (char *name) at symbol.c:52>: [see 35] 142 get_symbol() <Symbol *get_symbol (char *name) at parser.c:929>: 143 lookup() <Symbol *lookup (char *name) at symbol.c:42>: [see 76] 144 strcmp() 145 install() <Symbol *install (char *name) at symbol.c:52>: [see 35] 146 error_at_line() 147 printf() 148 mark() <void mark (Stackpos pos) at parser.c:128>: [see 93] 149 nexttoken() <int nexttoken () at parser.c:184>: [see 70] 150 putback() <int putback () at parser.c:198>: [see 96] 151 dcl() <int dcl (Ident *idptr) at parser.c:692> (R): [see 103] 152 restore() <void restore (Stackpos pos) at parser.c:134>: [see 100] 153 lookup() <Symbol *lookup (char *name) at symbol.c:42>: [see 76] 154 func_body() <void func_body () at parser.c:808> (R) 155 cleanup_stack() <void cleanup_stack () at parser.c:155>: 156 memmove() 157 nexttoken() <int nexttoken () at parser.c:184>: [see 70] 158 expression() <void expression () at parser.c:351>: 159 putback() <int putback () at parser.c:198>: [see 96] 160 nexttoken() <int nexttoken () at parser.c:184>: [see 70] 161 call() <void call (char *name,int line) at parser.c:971>: 162 add_reference() <Symbol *add_reference (char *name,int line) at parser.c:955>: 163 get_symbol() <Symbol *get_symbol (char *name) at parser.c:929>: [see 142] 164 xmalloc() 165 append_to_list() <Consptr append_to_list (Consptr *root_ptr,void *car) at symbol.c:283>: 166 alloc_cons() <Consptr alloc_cons () at symbol.c:260>: 167 alloc_cons_from_bucket() <Consptr alloc_cons_from_bucket () at symbol.c:252>: 168 alloc_new_bucket() <void alloc_new_bucket () at symbol.c:234>: 169 malloc() 170 error() 171 symbol_in_list() <int symbol_in_list (Symbol *sym,Consptr list) at symbol.c:306>: 172 append_to_list() <Consptr append_to_list (Consptr *root_ptr,void *car) at symbol.c:283>: [see 165] 173 reference() <void reference (char *name,int line) at parser.c:989>: 174 add_reference() <Symbol *add_reference (char *name,int line) at parser.c:955>: [see 162] 175 symbol_in_list() <int symbol_in_list (Symbol *sym,Consptr list) at symbol.c:306>: [see 171] 176 append_to_list() <Consptr append_to_list (Consptr *root_ptr,void *car) at symbol.c:283>: [see 165] 177 skip_to() <void skip_to (int c) at parser.c:277>: [see 110] 178 parse_variable_declaration() <void parse_variable_declaration (Ident *ident) at parser.c:472> (R) 179 mark() <void mark (Stackpos pos) at parser.c:128>: [see 93] 180 ident() <int ident () at c.l:218>: [see 75] 181 nexttoken() <int nexttoken () at parser.c:184>: [see 70] 182 putback() <int putback () at parser.c:198>: [see 96] 183 skip_struct() <void skip_struct () at parser.c:625>: [see 98] 184 restore() <void restore (Stackpos pos) at parser.c:134>: [see 100] 185 tokpush() <void tokpush (int type,int line,char *token) at parser.c:142>: [see 88] 186 parse_dcl() <void parse_dcl (Ident *ident) at parser.c:679>: [see 130] 187 initializer_list() <void initializer_list () at parser.c:538>: 188 nexttoken() <int nexttoken () at parser.c:184>: [see 70] 189 expression() <void expression () at parser.c:351>: [see 158] 190 expression() <void expression () at parser.c:351>: [see 158] 191 func_body() <void func_body () at parser.c:808> (recursive: see 154) [see 154] 192 parse_declaration() <void parse_declaration (Ident *ident) at parser.c:341> (recursive: see 125) [see 125] 193 delete_autos() <void delete_autos (int level) at symbol.c:142>: 194 hash_do_for_each() 195 auto_processor() <_Bool auto_processor (void *data,void *proc_data) at symbol.c:130>: 196 ident() <int ident () at c.l:218>: [see 75] 197 parse_variable_declaration() <void parse_variable_declaration (Ident *ident) at parser.c:472> (R): [see (R) 198 cleanup_stack() <void cleanup_stack () at parser.c:155>: [see 155] 199 cleanup() <void cleanup () at symbol.c:178>: 200 hash_do_for_each() 201 output() <void output () at output.c:393>: 202 strcmp() 203 fopen() 204 error() 205 xmalloc() 206 xref_output() <void xref_output () at output.c:230>: 207 collect_symbols() <int collect_symbols (Symbol ***return_sym,int (*sel)(Symbol *p)) at symbol.c:205>: 208 hash_do_for_each() 209 calloc() 210 xalloc_die() <void xalloc_die (void) at main.c:605>: [see 41] 211 qsort() 212 free() 213 fclose()
Return to the GNU Project home page.
Please send FSF & GNU inquiries to gnu@gnu.org. There are also other ways to contact the FSF.
Please send broken links and other corrections (or suggestions) to bug-cflow@gnu.org.
Please see the Translations README for information on coordinating and submitting translations of this article.
Copyright © 2001, 2003, 2004, 2005, 2006 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
Verbatim copying and distribution of this entire article is permitted worldwide without royalty in any medium provided this notice is preserved.
Updated: $Date: 2019/10/24 12:26:51 $ $Author: th_g $