From 4f48a490f9af51f22946af72d908777af1c1f148 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Fri, 20 Jun 2014 14:24:18 +0000 Subject: indent --- symbols.c | 276 ++++++++++++++++++++++++++------------------------------------ 1 file changed, 117 insertions(+), 159 deletions(-) (limited to 'symbols.c') diff --git a/symbols.c b/symbols.c index e4e58a3..62dc73b 100644 --- a/symbols.c +++ b/symbols.c @@ -3,7 +3,7 @@ * File: symbols.c * * Symbols functions. This file has functions for symbols mgmt - * (such as translating addresses to function names with + * (such as translating addresses to function names with * addr2line) and also connectivity matrix functions to keep * the function call trace counts. * @@ -12,197 +12,155 @@ */ #include -#include #include #include #include "stack.h" #include "symbols.h" -func_t functions[MAX_FUNCTIONS]; +func_t functions[MAX_FUNCTIONS]; unsigned int totals[MAX_FUNCTIONS]; unsigned int calls[MAX_FUNCTIONS][MAX_FUNCTIONS]; - char imageName[50]; -void initSymbol( char *image ) +void +initSymbol(char *image) { - int from, to; - - strlcpy( imageName, image, sizeof(imageName) ); - - for ( from = 0 ; from < MAX_FUNCTIONS ; from++ ) { - - functions[from].address = 0; - functions[from].funcName[0] = 0; - totals[from] = 0; + int from, to; - for ( to = 0 ; to < MAX_FUNCTIONS ; to++ ) { + strlcpy(imageName, image, sizeof(imageName)); - calls[from][to] = 0; + for (from = 0; from < MAX_FUNCTIONS; from++) { + functions[from].address = 0; + functions[from].funcName[0] = 0; + totals[from] = 0; - } - - } - - return; + for (to = 0; to < MAX_FUNCTIONS; to++) + calls[from][to] = 0; + } } - -int lookupSymbol( unsigned int address ) +int +lookupSymbol(unsigned int address) { - int index; - - for (index = 0 ; index < MAX_FUNCTIONS ; index++) { + int index; - if (functions[index].address == 0) break; + for (index = 0; index < MAX_FUNCTIONS; index++) { + if (functions[index].address == 0) + break; - if (functions[index].address == address) return index; + if (functions[index].address == address) + return index; + } - } - - assert(0); - - return 0; + return 0; } - -int translateFunctionFromSymbol( unsigned int address, char *func ) +int +translateFunctionFromSymbol(unsigned int address, char *func) { - FILE *p; - char line[100]; - int len, i; - - snprintf( line, sizeof(line), "addr2line -e %s -f -s 0x%x", imageName, address ); - - p = popen( line, "r" ); - - if (p == NULL) return 0; - else { - - len = fread( line, 99, 1, p ); - - i = 0; - while ( i < strlen(line) ) { - - if ((line[i] == 0x0d) || (line[i] == 0x0a)) { - func[i] = 0; - break; - } else { - func[i] = line[i]; - } - - i++; - - } - - pclose(p); - - } - - return 1; + FILE *p; + char line[100]; + int len, i; + + snprintf(line, sizeof(line), "addr2line -e %s -f -s 0x%x", imageName, address); + + p = popen(line, "r"); + + if (p == NULL) + return 0; + else { + len = fread(line, 99, 1, p); + + for (i = 0; i < strlen(line); i++) { + if ((line[i] == 0x0d) || (line[i] == 0x0a)) { + func[i] = 0; + break; + } else { + func[i] = line[i]; + } + } + pclose(p); + } + + return 1; } - -void addSymbol( unsigned int address ) +void +addSymbol(unsigned int address) { - int index; - - for (index = 0 ; index < MAX_FUNCTIONS ; index++) { - - if (functions[index].address == address) return; - - if (functions[index].address == 0) break; - - } - - if (index < MAX_FUNCTIONS) { - - functions[index].address = address; - - translateFunctionFromSymbol( address, functions[index].funcName ); + int index; - } else { + for (index = 0; index < MAX_FUNCTIONS; index++) { + if (functions[index].address == address) + return; - assert( 0 ); + if (functions[index].address == 0) + break; + } - } - - return; + if (index < MAX_FUNCTIONS) { + functions[index].address = address; + translateFunctionFromSymbol(address, functions[index].funcName); + } } - -void addCallTrace( unsigned int address ) +void +addCallTrace(unsigned int address) { - if (stackNumElems()) { - calls[lookupSymbol(stackTop())][lookupSymbol(address)]++; - } - - return; + if (stackNumElems()) + calls[lookupSymbol(stackTop())][lookupSymbol(address)]++; } - -void emitSymbols( void ) +void +emitSymbols(void) { - int from, to; - FILE *fp; - - fp = fopen("graph.dot", "w"); - if (fp == NULL) { - printf("Couldn't open graph.dot\n"); - exit(0); - } - - fprintf(fp, "digraph %s {\n\n", imageName ); - - /* Identify node shapes */ - for (from = 0 ; from < MAX_FUNCTIONS ; from++) { - - if (functions[from].address == 0) break; - - for (to = 0 ; to < MAX_FUNCTIONS ; to++) { - - if (functions[to].address == 0) break; - - if (calls[from][to]) totals[from]++; - - } - - if (totals[from]) { - - fprintf( fp, " %s [shape=rectangle]\n", functions[from].funcName ); - - } else { - - fprintf( fp, " %s [shape=ellipse]\n", functions[from].funcName ); - - } - - } - - /* Emit call graph */ - for (from = 0 ; from < MAX_FUNCTIONS ; from++) { - - if (functions[from].address == 0) break; - - for (to = 0 ; to < MAX_FUNCTIONS ; to++) { - - if (calls[from][to]) { - fprintf( fp, " %s -> %s [label=\"%d call%s\" fontsize=\"10\"]\n", - functions[from].funcName, functions[to].funcName, - calls[from][to], calls[from][to] > 1 ? "s" : "" ); - } - - if (functions[to].address == 0) break; - - } - - } - - fprintf( fp, "\n}\n" ); - - fclose(fp); - - return; + int from, to; + FILE *fp; + + fp = fopen("graph.dot", "w"); + if (fp == NULL) { + printf("Couldn't open graph.dot\n"); + exit(0); + } + fprintf(fp, "digraph %s {\n\n", imageName); + + /* Identify node shapes */ + for (from = 0; from < MAX_FUNCTIONS; from++) { + if (functions[from].address == 0) + break; + + for (to = 0; to < MAX_FUNCTIONS; to++) { + if (functions[to].address == 0) + break; + + if (calls[from][to]) + totals[from]++; + } + + if (totals[from]) + fprintf(fp, " %s [shape=rectangle]\n", functions[from].funcName); + else + fprintf(fp, " %s [shape=ellipse]\n", functions[from].funcName); + } + + /* Emit call graph */ + for (from = 0; from < MAX_FUNCTIONS; from++) { + if (functions[from].address == 0) + break; + + for (to = 0; to < MAX_FUNCTIONS; to++) { + if (calls[from][to]) { + fprintf(fp, " %s -> %s [label=\"%d call%s\" fontsize=\"10\"]\n", + functions[from].funcName, functions[to].funcName, + calls[from][to], calls[from][to] > 1 ? "s" : ""); + } + if (functions[to].address == 0) + break; + } + } + + fprintf(fp, "\n}\n"); + + fclose(fp); } - -- cgit v1.2.3