This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: [PATCH, RFA] Fix basename bug in symtab.c
- To: Mark Kettenis <kettenis at wins dot uva dot nl>
- Subject: Re: [PATCH, RFA] Fix basename bug in symtab.c
- From: Elena Zannoni <ezannoni at cygnus dot com>
- Date: Mon, 14 May 2001 09:41:53 -0400
- Cc: gdb-patches at sources dot redhat dot com, jimb at cygnus dot com, ezannoni at cygnus dot com
- References: <200105132045.f4DKjpm03579@delius.kettenis.local>
Mark Kettenis writes:
> [Jim, Elena, sorry I keep saying cygnus instead of redhat :-(]
>
> Here is a patch that fixes the problems discussed on the discussion
> list. Eli pretty much convinced me that this is the right approach.
> We can still discuss the other uses of basename() in GDB, but since
> this fixes a rather serious bug on FreeBSD (and I suppose other
> systems as well), I'd like to get this in ASAP.
>
> Mark
>
Yes, go ahead. I think this qualifies pretty much as an obvious fix.
Should you include libiberty.h ?
Thanks
Elena
>
> Index: ChangeLog
> from Mark Kettenis <kettenis@gnu.org>
>
> * symtab.c (lookup_symtab_1): Use lbasename (NAME) instead of
> basename (NAME). The FreeBSD basename returns a pointer to a
> static buffer, even if it's simply returning a string identical to
> its argument.
> (lookup_partial_symtab): Likewise.
>
> Index: symtab.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/symtab.c,v
> retrieving revision 1.37
> diff -u -p -r1.37 symtab.c
> --- symtab.c 2001/05/11 17:48:31 1.37
> +++ symtab.c 2001/05/13 19:37:21
> @@ -154,7 +154,7 @@ got_symtab:
>
> /* Now, search for a matching tail (only if name doesn't have any dirs) */
>
> - if (basename (name) == name)
> + if (lbasename (name) == name)
> ALL_SYMTABS (objfile, s)
> {
> if (FILENAME_CMP (basename (s->filename), name) == 0)
> @@ -244,7 +244,7 @@ lookup_partial_symtab (char *name)
>
> /* Now, search for a matching tail (only if name doesn't have any dirs) */
>
> - if (basename (name) == name)
> + if (lbasename (name) == name)
> ALL_PSYMTABS (objfile, pst)
> {
> if (FILENAME_CMP (basename (pst->filename), name) == 0)
>