X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=include%2Flibfirm%2Fdbginfo.h;h=9778aea9e461659c059ed06675f15db001dc7754;hb=0578be52ff08bd852fee2b596dec194c031a79ee;hp=16cb1184d35396f72b295c66eb3364d5eaae6833;hpb=c021732d2f0c04113e6afd153a7a9be38e40ca6f;p=libfirm diff --git a/include/libfirm/dbginfo.h b/include/libfirm/dbginfo.h index 16cb1184d..9778aea9e 100644 --- a/include/libfirm/dbginfo.h +++ b/include/libfirm/dbginfo.h @@ -22,15 +22,6 @@ * @brief Implements the Firm interface to debug information. * @author Goetz Lindenmaier, Michael Beck * @date 2001 - * @version $Id$ - * @brief - * Firm requires a debugging module fulfilling this interface, else no - * debugging information is passed to the backend. - * The interface requires a datatype representing the debugging - * information. Firm supports administrating a reference to the debug - * information in every Firm node. Further Firm optimizations call - * routines to propagate debug information from old nodes to new nodes - * if the optimization replaces the old ones by the new ones. */ #ifndef FIRM_DEBUG_DBGINFO_H #define FIRM_DEBUG_DBGINFO_H @@ -41,8 +32,14 @@ #include "begin.h" /** - * @defgroup debug The Firm interface to debugging support. - * + * @defgroup dbg_info Source References + * Firm requires a debugging module fulfilling this interface, else no + * debugging information is passed to the backend. + * The interface requires a datatype representing the debugging + * information. Firm supports administrating a reference to the debug + * information in every Firm node. Further Firm optimizations call + * routines to propagate debug information from old nodes to new nodes + * if the optimization replaces the old ones by the new ones. * @{ */ @@ -81,7 +78,7 @@ typedef enum { dbg_read_a_const, /**< A Firm subgraph was replaced because of a read a constant optimization. */ dbg_rem_poly_call, /**< Remove polymorphic call. */ - dbg_dead_code, /**< Removing unreachable code, I.e. blocks that are never executed. */ + dbg_dead_code, /**< Removing unreachable code, i.e. blocks that are never executed. */ dbg_opt_confirm, /**< A Firm subgraph was replace because of a Confirmation. */ dbg_gvn_pre, /**< A Firm node was replace because of the GVN-PRE algorithm. */ dbg_combo, /**< A Firm node was replace because of the combo algorithm. */ @@ -95,7 +92,7 @@ typedef enum { * * @param a the debug action */ -FIRM_DLL const char *dbg_action_2_str(dbg_action a); +FIRM_API const char *dbg_action_2_str(dbg_action a); /** * The type of the debug info merge function. @@ -144,25 +141,31 @@ typedef void merge_sets_func(ir_node **new_node_array, int new_num_entries, ir_n * Further both functions pass an enumeration indicating the action * performed by the transformation, e.g. the kind of optimization performed. */ -FIRM_DLL void dbg_init(merge_pair_func *dbg_info_merge_pair, +FIRM_API void dbg_init(merge_pair_func *dbg_info_merge_pair, merge_sets_func *dbg_info_merge_sets); -/** @} */ +/** A sourcecode location */ +typedef struct src_loc_t { + char const *file; /**< the name of the source (usually a file) */ + unsigned line; /**< line number (starting at 1; 0 if unknown) */ + unsigned column; /**< column number (starting at 1; 0 if unknown) */ +} src_loc_t; /** * The type of the debug info retriever function. - * When given a dbg_info returns the name (usually the filename) of the - * compilation unit defining it. @p line is set to the line number of the - * definition. + * When given a dbg_info returns the name (usually the filename), line number + * and column number of the definition. + * Any part of the returned information may be NULL/0, which means it is not + * available. */ -typedef const char *(*retrieve_dbg_func)(const dbg_info *dbg, unsigned *line); +typedef src_loc_t (*retrieve_dbg_func)(dbg_info const *dbg); /** * Sets a debug info retriever. * * @param func the debug retriever function. */ -FIRM_DLL void ir_set_debug_retrieve(retrieve_dbg_func func); +FIRM_API void ir_set_debug_retrieve(retrieve_dbg_func func); /** * The type of the type debug info retrieve function. @@ -173,21 +176,23 @@ typedef void (*retrieve_type_dbg_func)(char *buffer, size_t buffer_size, const type_dbg_info *tdbgi); /** - * Set global print_type_dbg_info function in firm + * Sets global print_type_dbg_info function in firm */ -FIRM_DLL void ir_set_type_debug_retrieve(retrieve_type_dbg_func func); +FIRM_API void ir_set_type_debug_retrieve(retrieve_type_dbg_func func); /** * Retrieve the debug info. */ -FIRM_DLL const char *ir_retrieve_dbg_info(const dbg_info *dbg, unsigned *line); +FIRM_API src_loc_t ir_retrieve_dbg_info(dbg_info const *dbg); /** * Retrieve type debug info */ -FIRM_DLL void ir_retrieve_type_dbg_info(char *buffer, size_t buffer_size, +FIRM_API void ir_retrieve_type_dbg_info(char *buffer, size_t buffer_size, const type_dbg_info *tdbgi); +/** @} */ + #include "end.h" #endif