From: Tom Tromey Date: Wed, 4 Nov 2009 23:06:50 +0000 (+0000) Subject: * symfile.c (add_psymbol_to_bcache): Don't copy name. Make X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8c2963fbcf62669f67a72fd06c48792f6c83c85f;p=binutils-gdb.git * symfile.c (add_psymbol_to_bcache): Don't copy name. Make 'psymbol' non-static. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index b84e5533b0b..ff7fa7083bf 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2009-11-04 Tom Tromey + + * symfile.c (add_psymbol_to_bcache): Don't copy name. Make + 'psymbol' non-static. + 2009-11-03 Paul Pluzhnikov * linux-thread-db.c (disable_thread_event_reporting): Adjust. diff --git a/gdb/symfile.c b/gdb/symfile.c index 1e57c69ebde..c55cb0395bf 100644 --- a/gdb/symfile.c +++ b/gdb/symfile.c @@ -3106,19 +3106,9 @@ add_psymbol_to_bcache (char *name, int namelength, domain_enum domain, enum language language, struct objfile *objfile, int *added) { - char *buf = name; - /* psymbol is static so that there will be no uninitialized gaps in the - structure which might contain random data, causing cache misses in - bcache. */ - static struct partial_symbol psymbol; - - if (name[namelength] != '\0') - { - buf = alloca (namelength + 1); - /* Create local copy of the partial symbol */ - memcpy (buf, name, namelength); - buf[namelength] = '\0'; - } + struct partial_symbol psymbol; + + memset (&psymbol, 0, sizeof (struct partial_symbol)); /* val and coreaddr are mutually exclusive, one of them *will* be zero */ if (val != 0) { @@ -3133,7 +3123,7 @@ add_psymbol_to_bcache (char *name, int namelength, domain_enum domain, PSYMBOL_DOMAIN (&psymbol) = domain; PSYMBOL_CLASS (&psymbol) = class; - SYMBOL_SET_NAMES (&psymbol, buf, namelength, objfile); + SYMBOL_SET_NAMES (&psymbol, name, namelength, objfile); /* Stash the partial symbol away in the cache */ return bcache_full (&psymbol, sizeof (struct partial_symbol),