+2002-02-14 Phil Edwards <pme@gcc.gnu.org>
+
+ * ld.texinfo (VERSION scripts): Symbol names are globbing patterns.
+ * ldgram.y (lang_new_vers_regex): Rename to lang_new_vers_pattern;
+ the pattern in question is not a regexp.
+ * ldlang.c: Likewise.
+ * ldlang.h: Likewise.
+ * ldlex.l (V_IDENTIFIER): Allow '[', ']', '-', '!', and '^' also.
+
2002-02-12 Jakub Jelinek <jakub@redhat.com>
* ldlex.l (DATA_SEGMENT_ALIGN, DATA_SEGMENT_END): New tokens.
* po/ld.pot: Regenerate.
2002-01-29 Chris Demetriou <cgd@broadcom.com>
- Mitch Lichtenberg <mpl@broadcom.com>
+ Mitch Lichtenberg <mpl@broadcom.com>
* emulparams/elf32bmip.sh (EXTRA_EM_FILE): Define to be mipself.
* emultempl/mipself.em: New file to handle MIPS ELF embedded
\input texinfo
@setfilename ld.info
@c Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-@c 2001 Free Software Foundation, Inc.
+@c 2001, 2002 Free Software Foundation, Inc.
@syncodeindex ky cp
@include configdoc.texi
@c (configdoc.texi is generated by the Makefile)
This file documents the @sc{gnu} linker LD version @value{VERSION}.
Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000,
-2001 Free Software Foundation, Inc.
+2001, 2002 Free Software Foundation, Inc.
@ignore
version node defined is @samp{VERS_1.1}; it has no other dependencies.
The script binds the symbol @samp{foo1} to @samp{VERS_1.1}. It reduces
a number of symbols to local scope so that they are not visible outside
-of the shared library.
+of the shared library; this is done using wildcard patterns, so that any
+symbol whose name begins with @samp{old}, @samp{original}, or @samp{new}
+is matched. The wildcard patterns available are the same as those used
+in the shell when matching filenames (also known as ``globbing'').
Next, the version script defines node @samp{VERS_1.2}. This node
depends upon @samp{VERS_1.1}. The script binds the symbol @samp{foo2}
vers_defns:
VERS_IDENTIFIER
{
- $$ = lang_new_vers_regex (NULL, $1, ldgram_vers_current_lang);
+ $$ = lang_new_vers_pattern (NULL, $1, ldgram_vers_current_lang);
}
| vers_defns ';' VERS_IDENTIFIER
{
- $$ = lang_new_vers_regex ($1, $3, ldgram_vers_current_lang);
+ $$ = lang_new_vers_pattern ($1, $3, ldgram_vers_current_lang);
}
| EXTERN NAME '{'
{
/* This is called for each variable name or match expression. */
struct bfd_elf_version_expr *
-lang_new_vers_regex (orig, new, lang)
+lang_new_vers_pattern (orig, new, lang)
struct bfd_elf_version_expr *orig;
const char *new;
const char *lang;
p = contents;
while (p < contents + len)
{
- greg = lang_new_vers_regex (greg, p, NULL);
+ greg = lang_new_vers_pattern (greg, p, NULL);
p = strchr (p, '\0') + 1;
}
bfd_get_section_flags (is->the_bfd, sec) | SEC_EXCLUDE);
}
- lreg = lang_new_vers_regex (NULL, "*", NULL);
+ lreg = lang_new_vers_pattern (NULL, "*", NULL);
lang_register_vers_node (command_line.version_exports_section,
lang_new_vers_node (greg, lreg), NULL);
}
extern struct bfd_elf_version_tree *lang_elf_version_info;
-extern struct bfd_elf_version_expr *lang_new_vers_regex
+extern struct bfd_elf_version_expr *lang_new_vers_pattern
PARAMS ((struct bfd_elf_version_expr *, const char *, const char *));
extern struct bfd_elf_version_tree *lang_new_vers_node
PARAMS ((struct bfd_elf_version_expr *, struct bfd_elf_version_expr *));
NOCFILENAMECHAR [_a-zA-Z0-9\/\.\-\_\+\$\:\[\]\\\~]
V_TAG [.$_a-zA-Z][._a-zA-Z0-9]*
-V_IDENTIFIER [*?.$_a-zA-Z]([*?.$_a-zA-Z0-9]|::)*
+V_IDENTIFIER [*?.$_a-zA-Z\[\]\-\!\^]([*?.$_a-zA-Z0-9\[\]\-\!\^]|::)*
%s SCRIPT
%s EXPRESSION