PATCH: Initialize prev_line in add_line_info

H.J. Lu hongjiu.lu@intel.com
Tue Jul 6 21:17:00 GMT 2010


Hi,

I have a big testcase where linker read uninitialized prev_line:

==14103== Conditional jump or move depends on uninitialised value(s)
==14103==    at 0x4454FC: add_line_info (dwarf2.c:1128)
==14103==    by 0x446928: decode_line_info (dwarf2.c:1591)
==14103==    by 0x447107: comp_unit_find_nearest_line (dwarf2.c:2511)
==14103==    by 0x448871: find_line (dwarf2.c:3449)
==14103==    by 0x448A96: _bfd_dwarf2_find_nearest_line (dwarf2.c:3484)
==14103==    by 0x454E79: _bfd_elf_find_nearest_line (elf.c:7259)
==14103==    by 0x419DD7: vfinfo (ldmisc.c:300)
==14103==    by 0x41A609: einfo (ldmisc.c:438)
==14103==    by 0x414DC1: undefined_symbol (ldmain.c:1243)
==14103==    by 0x44B2A8: elf64_x86_64_relocate_section (elf64-x86-64.c:2681)
==14103==    by 0x46E5E6: bfd_elf_final_link (elflink.c:9536)
==14103==    by 0x4170B0: ldwrite (ldwrite.c:568)
==14103==
==14103== Conditional jump or move depends on uninitialised value(s)
==14103==    at 0x44565E: add_line_info (dwarf2.c:1143)
==14103==    by 0x446928: decode_line_info (dwarf2.c:1591)
==14103==    by 0x447107: comp_unit_find_nearest_line (dwarf2.c:2511)
==14103==    by 0x448871: find_line (dwarf2.c:3449)
==14103==    by 0x448A96: _bfd_dwarf2_find_nearest_line (dwarf2.c:3484)
==14103==    by 0x454E79: _bfd_elf_find_nearest_line (elf.c:7259)
==14103==    by 0x419DD7: vfinfo (ldmisc.c:300)
==14103==    by 0x41A609: einfo (ldmisc.c:438)
==14103==    by 0x414DC1: undefined_symbol (ldmain.c:1243)
==14103==    by 0x44B2A8: elf64_x86_64_relocate_section (elf64-x86-64.c:2681)
==14103==    by 0x46E5E6: bfd_elf_final_link (elflink.c:9536)
==14103==    by 0x4170B0: ldwrite (ldwrite.c:568)
==14103==

Depending on the value of prev_line, linker may crash. I checked in
this patch as an obvious fix.


H.J.
---
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index ade0511..ea86440 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,7 @@
+2010-07-06  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* dwarf2.c (add_line_info): Initialize prev_line.
+
 2010-07-06  Alan Modra  <amodra@gmail.com>
 
 	* elf32-ppc.c (ppc_elf_relax_section): Insert branch around
diff --git a/bfd/dwarf2.c b/bfd/dwarf2.c
index ffe1108..6983a1c 100644
--- a/bfd/dwarf2.c
+++ b/bfd/dwarf2.c
@@ -1058,6 +1058,7 @@ add_line_info (struct line_info_table *table,
     return FALSE;
 
   /* Set member data of 'info'.  */
+  info->prev_line = NULL;
   info->address = address;
   info->op_index = op_index;
   info->line = line;



More information about the Binutils mailing list