diff --git a/dwarf_loader.c b/dwarf_loader.c index 187ab56..5dff68d 100644 --- a/dwarf_loader.c +++ b/dwarf_loader.c @@ -372,10 +372,17 @@ static Dwarf_Off attr_offset(Dwarf_Die *die, const uint32_t name) static const char *attr_string(Dwarf_Die *die, uint32_t name, struct conf_load *conf __maybe_unused) { + const char *str = NULL; Dwarf_Attribute attr; - if (dwarf_attr(die, name, &attr) != NULL) - return dwarf_formstring(&attr); - return NULL; + + if (dwarf_attr(die, name, &attr) != NULL) { + str = dwarf_formstring(&attr); + + if (conf && conf->kabi_prefix && str && strncmp(str, conf->kabi_prefix, conf->kabi_prefix_len) == 0) + return conf->kabi_prefix; + } + + return str; } static struct dwarf_off_ref attr_type(Dwarf_Die *die, uint32_t attr_name) diff --git a/dwarves.h b/dwarves.h index db2c524..557442c 100644 --- a/dwarves.h +++ b/dwarves.h @@ -48,10 +48,12 @@ struct conf_load { struct conf_load *conf); void *cookie; char *format_path; + int nr_jobs; bool extra_dbg_info; bool fixup_silly_bitfields; bool get_addr_info; - int nr_jobs; + uint16_t kabi_prefix_len; + const char *kabi_prefix; struct btf *base_btf; struct conf_fprintf *conf_fprintf; };