aboutsummaryrefslogtreecommitdiff
path: root/gas/dwarf2dbg.c
diff options
context:
space:
mode:
Diffstat (limited to 'gas/dwarf2dbg.c')
-rw-r--r--gas/dwarf2dbg.c20
1 files changed, 2 insertions, 18 deletions
diff --git a/gas/dwarf2dbg.c b/gas/dwarf2dbg.c
index 5cc4662..3067b8c 100644
--- a/gas/dwarf2dbg.c
+++ b/gas/dwarf2dbg.c
@@ -186,9 +186,6 @@ struct line_seg {
/* Collects data for all line table entries during assembly. */
static struct line_seg *all_segs;
-/* Hash used to quickly lookup a segment by name, avoiding the need to search
- through the all_segs list. */
-static struct hash_control *all_segs_hash;
static struct line_seg **last_seg_ptr;
struct file_entry {
@@ -248,17 +245,9 @@ generic_dwarf2_emit_offset (symbolS *symbol, unsigned int size)
static struct line_subseg *
get_line_subseg (segT seg, subsegT subseg, bfd_boolean create_p)
{
- static segT last_seg;
- static subsegT last_subseg;
- static struct line_subseg *last_line_subseg;
-
- struct line_seg *s;
+ struct line_seg *s = seg_info (seg)->dwarf2_line_seg;
struct line_subseg **pss, *lss;
- if (seg == last_seg && subseg == last_subseg)
- return last_line_subseg;
-
- s = (struct line_seg *) hash_find (all_segs_hash, seg->name);
if (s == NULL)
{
if (!create_p)
@@ -270,7 +259,7 @@ get_line_subseg (segT seg, subsegT subseg, bfd_boolean create_p)
s->head = NULL;
*last_seg_ptr = s;
last_seg_ptr = &s->next;
- hash_insert (all_segs_hash, seg->name, s);
+ seg_info (seg)->dwarf2_line_seg = s;
}
gas_assert (seg == s->seg);
@@ -291,10 +280,6 @@ get_line_subseg (segT seg, subsegT subseg, bfd_boolean create_p)
*pss = lss;
found_subseg:
- last_seg = seg;
- last_subseg = subseg;
- last_line_subseg = lss;
-
return lss;
}
@@ -1847,7 +1832,6 @@ out_debug_info (segT info_seg, segT abbrev_seg, segT line_seg, segT ranges_seg)
void
dwarf2_init (void)
{
- all_segs_hash = hash_new ();
last_seg_ptr = &all_segs;
}