Index: source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp =================================================================== --- source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp +++ source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp @@ -1897,6 +1897,16 @@ uint32_t flags = symbol.st_other << 8 | symbol.st_info | additional_flags; bool is_mangled = symbol_name ? (symbol_name[0] == '_' && symbol_name[1] == 'Z') : false; + // ELF symbol names can contain version specifications, in the form 'name@VERSION'. + // Default symbols have a '@@VERSION' suffix. Here we strip the default version + // specifications, so the symbols can be found with a 'name' lookup on the symbol table. + std::string symbol_name_str; + if (const char *version = strstr(symbol_name, "@@")) + { + symbol_name_str.assign (symbol_name, version-symbol_name); + symbol_name = symbol_name_str.c_str(); + } + Symbol dc_symbol( i + start_id, // ID is the original symbol table index. symbol_name, // Symbol name.