From 401a96283c526ea54856e754359cdf546c774ed5 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Mon, 2 Mar 2009 13:49:22 +0000 Subject: [PATCH] backport 2009-01-14 Alan Modra --- bfd/ChangeLog | 5 +++++ bfd/syms.c | 9 +++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index d623ea59121..831b3960ddf 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,5 +1,10 @@ 2009-03-02 Alan Modra + 2009-01-14 Alan Modra + PR 9735 + * syms.c (_bfd_stab_section_find_nearest_line): Don't free + saved filename, use bfd_alloc rather than bfd_malloc for it. + 2009-01-11 Jan Kratochvil * elflink.c (_bfd_elf_section_already_linked): Handle g++-3.4 relocations in `.gnu.linkonce.r.*' referencing its `.gnu.linkonce.t.*'. diff --git a/bfd/syms.c b/bfd/syms.c index 371916b9404..60d9af9aaf4 100644 --- a/bfd/syms.c +++ b/bfd/syms.c @@ -1,6 +1,6 @@ /* Generic symbol-table support for the BFD library. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004, 2007 + 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009 Free Software Foundation, Inc. Written by Cygnus Support. @@ -1379,10 +1379,11 @@ _bfd_stab_section_find_nearest_line (bfd *abfd, { size_t len; - if (info->filename != NULL) - free (info->filename); + /* Don't free info->filename here. objdump and other + apps keep a copy of a previously returned file name + pointer. */ len = strlen (file_name) + 1; - info->filename = bfd_malloc (dirlen + len); + info->filename = bfd_alloc (abfd, dirlen + len); if (info->filename == NULL) return FALSE; memcpy (info->filename, directory_name, dirlen); -- 2.47.2