From f57c8bdfffa0eb710b3d992a11beb91c3944917f Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Thu, 14 Feb 2002 04:24:33 +0000 Subject: [PATCH] * 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. --- ld/ChangeLog | 11 ++++++++++- ld/ld.texinfo | 9 ++++++--- ld/ldgram.y | 4 ++-- ld/ldlang.c | 6 +++--- ld/ldlang.h | 2 +- ld/ldlex.l | 2 +- 6 files changed, 23 insertions(+), 11 deletions(-) diff --git a/ld/ChangeLog b/ld/ChangeLog index 261618c9d..c01a5c427 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,12 @@ +2002-02-14 Phil Edwards + + * 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 * ldlex.l (DATA_SEGMENT_ALIGN, DATA_SEGMENT_END): New tokens. @@ -230,7 +239,7 @@ * po/ld.pot: Regenerate. 2002-01-29 Chris Demetriou - Mitch Lichtenberg + Mitch Lichtenberg * emulparams/elf32bmip.sh (EXTRA_EM_FILE): Define to be mipself. * emultempl/mipself.em: New file to handle MIPS ELF embedded diff --git a/ld/ld.texinfo b/ld/ld.texinfo index b7c289a3f..6665b3fe7 100644 --- a/ld/ld.texinfo +++ b/ld/ld.texinfo @@ -1,7 +1,7 @@ \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) @@ -58,7 +58,7 @@ END-INFO-DIR-ENTRY 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 @@ -3672,7 +3672,10 @@ This example version script defines three version nodes. The first 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} diff --git a/ld/ldgram.y b/ld/ldgram.y index ad269021a..2df9756aa 100644 --- a/ld/ldgram.y +++ b/ld/ldgram.y @@ -1116,11 +1116,11 @@ vers_tag: 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 '{' { diff --git a/ld/ldlang.c b/ld/ldlang.c index eab970d55..034d1229e 100644 --- a/ld/ldlang.c +++ b/ld/ldlang.c @@ -5020,7 +5020,7 @@ lang_vers_match_lang_java (expr, sym) /* 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; @@ -5193,7 +5193,7 @@ lang_do_version_exports_section () 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; } @@ -5204,7 +5204,7 @@ lang_do_version_exports_section () 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); } diff --git a/ld/ldlang.h b/ld/ldlang.h index 5e50c5cde..20895917e 100644 --- a/ld/ldlang.h +++ b/ld/ldlang.h @@ -463,7 +463,7 @@ extern void lang_leave_overlay 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 *)); diff --git a/ld/ldlex.l b/ld/ldlex.l index 1220852de..34fbeca3d 100644 --- a/ld/ldlex.l +++ b/ld/ldlex.l @@ -116,7 +116,7 @@ WHITE [ \t\n\r]+ 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 -- 2.11.4.GIT