Duplicate DW_AT_call_file leak

Message ID ZCF9NGTTWGGN5wkG@squeak.grove.modra.org
State Repeat Merge
Headers
Series Duplicate DW_AT_call_file leak |

Checks

Context Check Description
snail/binutils-gdb-check warning Git am fail log

Commit Message

Alan Modra March 27, 2023, 11:25 a.m. UTC
  From 10626d8e35a00e26dec4abb276052ed197545cc6 Mon Sep 17 00:00:00 2001
From: Alan Modra <amodra@gmail.com>
Date: Sun, 26 Mar 2023 18:49:13 +1030
Subject: 

When given two or more DW_AT_call_file for a given function we
currently leak the concat memory.

	* dwarf2.c (scan_unit_for_symbols): Don't leak on duplicate
	DW_AT_call_file.
  

Patch

diff --git a/bfd/dwarf2.c b/bfd/dwarf2.c
index 15862dc2037..d99508a96c7 100644
--- a/bfd/dwarf2.c
+++ b/bfd/dwarf2.c
@@ -4083,8 +4083,11 @@  scan_unit_for_symbols (struct comp_unit *unit)
 		{
 		case DW_AT_call_file:
 		  if (is_int_form (&attr))
-		    func->caller_file = concat_filename (unit->line_table,
-							 attr.u.val);
+		    {
+		      free (func->caller_file);
+		      func->caller_file = concat_filename (unit->line_table,
+							   attr.u.val);
+		    }
 		  break;
 
 		case DW_AT_call_line: