nm.c free_lineno_cache

Message ID Z1p1QHjYqihG9R9K@squeak.grove.modra.org
State New
Headers
Series nm.c free_lineno_cache |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_binutils_build--master-arm fail Patch failed to apply
linaro-tcwg-bot/tcwg_binutils_build--master-aarch64 fail Patch failed to apply

Commit Message

Alan Modra Dec. 12, 2024, 5:31 a.m. UTC
  free_lineno_cache frees symbol and relocation data used when displaying
line number info for symbols (nm -l).  Currently that is done when
closing the bfd, but that's not ideal for archives since that results
in two bfds worth of memory in use.

	* nm.c (display_rel_file): Call free_lineno_cache here..
	(display_archive, display_file): ..not here.
  

Patch

diff --git a/binutils/nm.c b/binutils/nm.c
index 2546dc5105f..87e8305b3f8 100644
--- a/binutils/nm.c
+++ b/binutils/nm.c
@@ -1498,8 +1498,8 @@  display_rel_file (bfd *abfd, bfd *archive_bfd)
   else
     print_size_symbols (abfd, dynamic, symsizes, symcount, archive_bfd);
 
-  if (synthsyms)
-    free (synthsyms);
+  free_lineno_cache (abfd);
+  free (synthsyms);
   free (minisyms);
   free (symsizes);
 }
@@ -1602,7 +1602,6 @@  display_archive (bfd *file)
 
       if (last_arfile != NULL)
 	{
-	  free_lineno_cache (last_arfile);
 	  bfd_close (last_arfile);
 	  if (arfile == last_arfile)
 	    return;
@@ -1611,10 +1610,7 @@  display_archive (bfd *file)
     }
 
   if (last_arfile != NULL)
-    {
-      free_lineno_cache (last_arfile);
-      bfd_close (last_arfile);
-    }
+    bfd_close (last_arfile);
 }
 
 static bool
@@ -1656,7 +1652,6 @@  display_file (char *filename)
       retval = false;
     }
 
-  free_lineno_cache (file);
   if (!bfd_close (file))
     retval = false;