diff options
author | Jakub Jelinek <jakub@redhat.com> | 2003-10-22 06:58:17 +0000 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2003-10-22 06:58:17 +0000 |
commit | 108ba30509ad6169d0f2e06b755fa39a2c28a946 (patch) | |
tree | f08f61aaf06d9e7ba1789b24f137c266bb6fc80e /ld/emultempl/ppc64elf.em | |
parent | a9b7fca23b894846cfca99db5bb1c9d06ea75a89 (diff) | |
download | gdb-108ba30509ad6169d0f2e06b755fa39a2c28a946.zip gdb-108ba30509ad6169d0f2e06b755fa39a2c28a946.tar.gz gdb-108ba30509ad6169d0f2e06b755fa39a2c28a946.tar.bz2 |
bfd/
* elflink.c (_bfd_elf_export_symbol): Adjust for globals and locals
field changes.
(_bfd_elf_link_assign_sym_version): Likewise.
* elflink.h (size_dynamic_sections): Likewise.
include/
* bfdlink.h (struct bfd_elf_version_expr): Remove match field.
Add wildcard and mask fields.
(BFD_ELF_VERSION_C_TYPE): Define.
(BFD_ELF_VERSION_CXX_TYPE): Likewise.
(BFD_ELF_VERSION_JAVA_TYPE): Likewise.
(struct bfd_elf_version_expr_head): New.
(struct bfd_elf_version_tree): Add match field.
Change type of globals and locals fields
to struct bfd_elf_version_expr_head.
ld/
* ldlang.c: Include hashtab.h.
(lang_vers_match_lang_c, lang_vers_match_lang_cplusplus,
lang_vers_match_lang_java): Remove.
(lang_vers_match): New function.
(lang_new_vers_pattern): Initialize wildcard and mask
fields, don't initialize match.
(lang_new_vers_node): Use xcalloc. Adjust for globals and
locals field type changes. Set match field.
(version_expr_head_hash, version_expr_head_eq): New functions.
(lang_finalize_version_expr_head): New function.
(lang_register_vers_node): Call lang_finalize_version_expr_head.
Search in hash table if not wildcard when looking for duplicates.
* emultempl/ppc64elf.em (new_vers_pattern): Don't bother with
duplicate checking. Initialize all fields of dot_entry from entry
with the exception of pattern and next.
Diffstat (limited to 'ld/emultempl/ppc64elf.em')
-rw-r--r-- | ld/emultempl/ppc64elf.em | 33 |
1 files changed, 2 insertions, 31 deletions
diff --git a/ld/emultempl/ppc64elf.em b/ld/emultempl/ppc64elf.em index b1b3f9e..1ed49e5 100644 --- a/ld/emultempl/ppc64elf.em +++ b/ld/emultempl/ppc64elf.em @@ -405,46 +405,17 @@ gld${EMULATION_NAME}_new_vers_pattern (struct bfd_elf_version_expr *entry) unsigned int len; char *dot_pat; - if (!dotsyms || entry->pattern[0] == '*') + if (!dotsyms || entry->pattern[0] == '*' || entry->pattern[0] == '.') return entry; - /* Is the script adding ".foo" explicitly? */ - if (entry->pattern[0] == '.') - { - /* We may have added this pattern automatically. Don't add it - again. Quadratic behaviour here is acceptable as the list - may be traversed for each input bfd symbol. */ - for (next = entry->next; next != NULL; next = next->next) - { - if (strcmp (next->pattern, entry->pattern) == 0 - && next->match == entry->match) - { - next = entry->next; - free ((char *) entry->pattern); - free (entry); - return next; - } - } - return entry; - } - - /* Don't add ".foo" if the script has already done so. */ - for (next = entry->next; next != NULL; next = next->next) - { - if (next->pattern[0] == '.' - && strcmp (next->pattern + 1, entry->pattern) == 0 - && next->match == entry->match) - return entry; - } - dot_entry = xmalloc (sizeof *dot_entry); + *dot_entry = *entry; dot_entry->next = entry; len = strlen (entry->pattern) + 2; dot_pat = xmalloc (len); dot_pat[0] = '.'; memcpy (dot_pat + 1, entry->pattern, len - 1); dot_entry->pattern = dot_pat; - dot_entry->match = entry->match; return dot_entry; } |