This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]