David Mosberger <davidm@hpl.hp.com>
authorRichard Henderson <rth@redhat.com>
Sat, 26 Jun 1999 15:48:47 +0000 (15:48 +0000)
committerRichard Henderson <rth@redhat.com>
Sat, 26 Jun 1999 15:48:47 +0000 (15:48 +0000)
        * dwarf2.c (struct dwarf2_debug): Add member dwarf_line_buffer.
        (decode_line_info): Add variable STASH and initialize it to point
        to the per-bfd dwarf2_debug info.  Remove static variable
        dwarf_line_buffer and use stash->dwarf_line_buffer in its place.

bfd/ChangeLog
bfd/dwarf2.c

index df85e980c01a60cae0d8a9dd812efe7463174f72..405f110734e663a26fbd1b52307d114a40ce6396 100644 (file)
@@ -1,3 +1,10 @@
+1999-06-26  David Mosberger  <davidm@hpl.hp.com>
+
+       * dwarf2.c (struct dwarf2_debug): Add member dwarf_line_buffer.
+       (decode_line_info): Add variable STASH and initialize it to point
+       to the per-bfd dwarf2_debug info.  Remove static variable
+       dwarf_line_buffer and use stash->dwarf_line_buffer in its place.
+
 1999-06-26  Ian Lance Taylor  <ian@zembu.com>
 
        * elflink.h (elf_link_output_extsym): It's OK for a -Bsymbolic
index 010d049618fa0cb9ef620bf7ee8fadefa2e9476e..57f5482e735f9fb883b9e0838999dc9fe4b4b7c5 100644 (file)
@@ -99,6 +99,9 @@ struct dwarf2_debug {
 
   /* Length of the loaded .debug_abbrev section. */
   unsigned long dwarf_abbrev_size;
+
+  /* Buffer for decode_line_info.  */
+  char *dwarf_line_buffer;
 };
 
 
@@ -710,7 +713,7 @@ decode_line_info (unit)
 {
   bfd *abfd = unit->abfd;
 
-  static char* dwarf_line_buffer = 0;
+  struct dwarf2_debug *stash;
 
   struct line_info_table* table;
 
@@ -727,7 +730,9 @@ decode_line_info (unit)
   bfd_vma hi_pc = 0, lo_pc = ~ (bfd_vma) 0;
 #endif
 
-  if (! dwarf_line_buffer)
+  stash = elf_tdata (abfd)->dwarf2_find_line_info;
+
+  if (! stash->dwarf_line_buffer)
     {
       asection *msec;
       unsigned long size;
@@ -741,7 +746,7 @@ decode_line_info (unit)
        }
       
       size = bfd_get_section_size_before_reloc (msec);
-      dwarf_line_buffer = (char*) bfd_alloc (abfd, size);
+      stash->dwarf_line_buffer = (char *) bfd_alloc (abfd, size);
       if (! dwarf_line_buffer)
        return 0;
 
@@ -768,7 +773,7 @@ decode_line_info (unit)
   table->files = NULL;
   table->last_line = NULL;
 
-  line_ptr = dwarf_line_buffer + unit->line_offset;
+  line_ptr = stash->dwarf_line_buffer + unit->line_offset;
 
   /* read in the prologue */
   lh.total_length = read_4_bytes (abfd, line_ptr);