Skip to content
  • Matthew Pickering's avatar
    Add -finfo-table-map which maps info tables to source positions · 4b297979
    Matthew Pickering authored
    This new flag embeds a lookup table from the address of an info table
    to information about that info table.
    
    The main interface for consulting the map is the `lookupIPE` C function
    
    > InfoProvEnt * lookupIPE(StgInfoTable *info)
    
    The `InfoProvEnt` has the following structure:
    
    > typedef struct InfoProv_{
    >     char * table_name;
    >     char * closure_desc;
    >     char * ty_desc;
    >     char * label;
    >     char * module;
    >     char * srcloc;
    > } InfoProv;
    >
    > typedef struct InfoProvEnt_ {
    >     StgInfoTable * info;
    >     InfoProv prov;
    >     struct InfoProvEnt_ *link;
    > } InfoProvEnt;
    
    The source positions are approximated in a similar way to the source
    positions for DWARF debugging information. They are only approximate but
    in our experience provide a good enough hint about where the problem
    might be. It is therefore recommended to use this flag in conjunction
    with `-g<n>` for more accurate locations.
    
    The lookup table is also emitted into the eventlog when it is available
    as it is intended to be used with the `-hi` profiling mode.
    
    Using this flag will significantly increase the size of the resulting
    object file but only by a factor of 2-3x in our experience.
    4b297979