This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Re: PATCH: Re: ld's --no-undefined-version and '*' in pattern
On Tue, Oct 21, 2003 at 04:45:00PM -0700, H. J. Lu wrote:
> On Fri, Oct 17, 2003 at 03:36:00PM +0200, Jakub Jelinek wrote:
> > On Fri, Oct 17, 2003 at 08:32:11AM -0700, H. J. Lu wrote:
> > > On Fri, Oct 17, 2003 at 10:13:59AM +0200, Jan Beulich wrote:
> > > > Thank you, that was fast. An additional note, though: While in most
> > > > cases (high-level languages) assuming * and certain other characters are
> > > > invalid for symbol names, this assumption does not generally hold, which
> > > > is why I'd recommend removing the other occasion of the check for that
> > > > character, too: The Intel IA64 assembler, as an example, permits using
> > > > any character in symbol names through their .alias directive. Again,
> > > > thanks for the quick reaction, Jan
> > > >
> > >
> > > I forgot about .alias :-). BTW, the GNU ia64 assembler should support
> > > .alias now. Let me know if it is not working.
> > >
> > > I will check in this patch shortly.
> > >
> > >
> > > H.J.
> > > ----
> > > 2003-10-17 H.J. Lu <hongjiu.lu@intel.com>
> > >
> > > * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Don't skip
> > > symbols with '*'.
> >
> > This looks wrong.
> > d->pattern is a glob pattern, not necessarily a symbol name.
> > In glob patterns, * is special. If you want to export
> > foo*bar symbol, you can write foo\*bar, foo[*]bar or something similar
> > in pattern. But in that case the size_dynamic_sections code doesn't
> > work properly anyway.
> > See my patch from yesterday and comments about it.
> >
>
> I think we need something different from wildcardp, which can handle
> "foo\*bar", for setting the new wildcard bit. We can modify it after
> your patch is checked in.
>
I am thinking about instead of adding
unsigned int wildcard : 1;
we add
const char *symbol;
If
const char *pattern;
is a wildcard, symbol will be NULL. Otherwise, symbol will point to
pattern if pattern has no backslash or point to a copy of pattern
with backslashes removed. size_dynamic_sections will lookup symbol
like
if (!d->symver && d->symbol != NULL)
{
...
elf_link_hash_lookup
...
}
H.J.