Index: bfd/elf-bfd.h =================================================================== RCS file: /cvs/src/src/bfd/elf-bfd.h,v retrieving revision 1.329 diff -u -p -r1.329 elf-bfd.h --- bfd/elf-bfd.h 17 Aug 2011 00:39:38 -0000 1.329 +++ bfd/elf-bfd.h 5 Dec 2011 20:15:49 -0000 @@ -198,6 +198,8 @@ struct elf_link_hash_entry unsigned int pointer_equality_needed : 1; /* Symbol is a unique global symbol. */ unsigned int unique_global : 1; + /* Symbol should not be versioned. It is part of the ABI */ + unsigned int no_sym_version : 1; /* String table index in .dynstr if this is a dynamic symbol. */ unsigned long dynstr_index; Index: bfd/elflink.c =================================================================== RCS file: /cvs/src/src/bfd/elflink.c,v retrieving revision 1.430 diff -u -p -r1.430 elflink.c --- bfd/elflink.c 15 Nov 2011 11:33:57 -0000 1.430 +++ bfd/elflink.c 5 Dec 2011 20:15:50 -0000 @@ -1946,6 +1946,9 @@ _bfd_elf_link_assign_sym_version (struct if (!h->def_regular) return TRUE; + if (h->no_sym_version) + return TRUE; + bed = get_elf_backend_data (info->output_bfd); p = strchr (h->root.root.string, ELF_VER_CHR); if (p != NULL && h->verinfo.vertree == NULL) Index: bfd/elfxx-mips.c =================================================================== RCS file: /cvs/src/src/bfd/elfxx-mips.c,v retrieving revision 1.296 diff -u -p -r1.296 elfxx-mips.c --- bfd/elfxx-mips.c 29 Nov 2011 20:28:54 -0000 1.296 +++ bfd/elfxx-mips.c 5 Dec 2011 20:15:50 -0000 @@ -7260,6 +7260,7 @@ _bfd_mips_elf_create_dynamic_sections (b h = (struct elf_link_hash_entry *) bh; h->non_elf = 0; h->def_regular = 1; + h->no_sym_version = 1; h->type = STT_OBJECT; if (! bfd_elf_link_record_dynamic_symbol (info, h))