aboutsummaryrefslogtreecommitdiff
path: root/ld/emultempl
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2008-11-26 01:04:17 +0000
committerAlan Modra <amodra@gmail.com>2008-11-26 01:04:17 +0000
commitae5a359786fb21bf95678a4e9eebf2ff90114c7a (patch)
tree553563478a9db484d0305122e3f15748073bfb1d /ld/emultempl
parent6cf7d91b7e79070a10ad6012559ac9adac60499a (diff)
downloadfsf-binutils-gdb-ae5a359786fb21bf95678a4e9eebf2ff90114c7a.zip
fsf-binutils-gdb-ae5a359786fb21bf95678a4e9eebf2ff90114c7a.tar.gz
fsf-binutils-gdb-ae5a359786fb21bf95678a4e9eebf2ff90114c7a.tar.bz2
include/
PR 7047 * bfdlink.h (struct bfd_elf_version_expr): Delete "symbol". Add "literal". bfd/ PR 7047 * configure.in: Bump version. * configure: Regenerate. * elflink.c (_bfd_elf_link_assign_sym_version): Continue matching against version nodes when a global match is a wildcard. Similarly continue matching on local wildcard matches, rather than only continuing for "*". Have any global wildcard match override a local wildcard match. Correct logic hiding unversioned symbol. (bfd_elf_size_dynamic_sections): Update for changes to struct bfd_elf_version_expr. ld/ PR 7047 * emultempl/ppc64elf.em (gld${EMULATION_NAME}_new_vers_pattern): Update for changes to struct bfd_elf_version_expr. * ldlang.c (lang_vers_match, version_expr_head_hash): Likewise. (version_expr_head_eq, lang_finalize_version_expr_head): Likewise. (lang_register_vers_node): Likewise. (lang_new_vers_pattern): Likewise. Ensure "literal" is set when no glob chars found in "pattern". (realsymbol): Correct backslash quote logic. * ld.texinfo (VERSION): Warn about global wildcards.
Diffstat (limited to 'ld/emultempl')
-rw-r--r--ld/emultempl/ppc64elf.em25
1 files changed, 7 insertions, 18 deletions
diff --git a/ld/emultempl/ppc64elf.em b/ld/emultempl/ppc64elf.em
index 9a49fa5..eff8dff 100644
--- a/ld/emultempl/ppc64elf.em
+++ b/ld/emultempl/ppc64elf.em
@@ -416,29 +416,18 @@ gld${EMULATION_NAME}_new_vers_pattern (struct bfd_elf_version_expr *entry)
char *dot_pat;
if (!dotsyms
- || (entry->pattern != NULL
- && (entry->pattern[0] == '*' || entry->pattern[0] == '.')))
+ || entry->pattern[0] == '.'
+ || (!entry->literal && entry->pattern[0] == '*'))
return entry;
dot_entry = xmalloc (sizeof *dot_entry);
*dot_entry = *entry;
dot_entry->next = entry;
- if (entry->pattern != NULL)
- {
- 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;
- }
- if (entry->symbol != NULL)
- {
- len = strlen (entry->symbol) + 2;
- dot_pat = xmalloc (len);
- dot_pat[0] = '.';
- memcpy (dot_pat + 1, entry->symbol, len - 1);
- dot_entry->symbol = dot_pat;
- }
+ 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;
return dot_entry;
}