1 Index: include/elf/ChangeLog
2 ===================================================================
3 RCS file: /cvs/src/src/include/elf/ChangeLog,v
4 retrieving revision 1.121
5 diff -u -u -p -r1.121 ChangeLog
6 --- include/elf/ChangeLog 13 Feb 2002 18:14:48 -0000 1.121
7 +++ include/elf/ChangeLog 12 Apr 2002 19:50:31 -0000
9 +2002-04-12 Martin Baulig <martin@gnome.org>
11 + * dwarf2.h (DW_AT_end_scope): Added as GNU extension.
13 2002-02-13 Matt Fredette <fredette@netbsd.org>
15 * m68k.h (EF_M68000): Define.
16 Index: include/elf/dwarf2.h
17 ===================================================================
18 RCS file: /cvs/src/src/include/elf/dwarf2.h,v
19 retrieving revision 1.8
20 diff -u -u -p -r1.8 dwarf2.h
21 --- include/elf/dwarf2.h 28 Jan 2002 23:26:53 -0000 1.8
22 +++ include/elf/dwarf2.h 12 Apr 2002 19:50:32 -0000
23 @@ -328,6 +328,8 @@ enum dwarf_attribute
24 DW_AT_src_coords = 0x2104,
25 DW_AT_body_begin = 0x2105,
26 DW_AT_body_end = 0x2106,
27 + DW_AT_end_scope = 0x2121,
30 DW_AT_VMS_rtnbeg_pd_address = 0x2201
33 ===================================================================
34 RCS file: /cvs/src/src/gdb/ChangeLog,v
35 retrieving revision 1.2421
36 diff -u -u -p -r1.2421 ChangeLog
37 --- gdb/ChangeLog 12 Apr 2002 07:37:17 -0000 1.2421
38 +++ gdb/ChangeLog 12 Apr 2002 19:50:38 -0000
40 +2002-04-12 Martin Baulig <martin@gnome.org>
42 + * dwarf2read.c (new_symbol): If DW_AT_start_scope and DW_AT_end_scope
43 + are specified, set SYMBOL_RANGES().
45 + * findvar.c (read_var_value): Check whether the current PC is within
46 + the SYMBOL_RANGES(), return NULL if not.
48 + * stack.c (print_block_frame_locals): Only print vars if the current PC
49 + is in their SYMBOL_RANGES().
51 2002-04-12 Kevin Buettner <kevinb@redhat.com>
53 From Jimi X <jimix@watson.ibm.com>:
54 Index: gdb/dwarf2read.c
55 ===================================================================
56 RCS file: /cvs/src/src/gdb/dwarf2read.c,v
57 retrieving revision 1.52
58 diff -u -u -p -r1.52 dwarf2read.c
59 --- gdb/dwarf2read.c 4 Apr 2002 22:26:43 -0000 1.52
60 +++ gdb/dwarf2read.c 12 Apr 2002 19:50:44 -0000
61 @@ -4394,6 +4394,19 @@ new_symbol (struct die_info *die, struct
62 add_symbol_to_list (sym, list_in_scope);
65 + attr = dwarf_attr (die, DW_AT_start_scope);
66 + attr2 = dwarf_attr (die, DW_AT_end_scope);
69 + struct range_list *r = (struct range_list *)
70 + obstack_alloc (&objfile->type_obstack,
71 + sizeof (struct range_list));
73 + r->start = DW_ADDR (attr);
74 + r->end = DW_ADDR (attr2);
76 + SYMBOL_RANGES (sym) = r;
78 attr = dwarf_attr (die, DW_AT_location);
82 ===================================================================
83 RCS file: /cvs/src/src/gdb/findvar.c,v
84 retrieving revision 1.31
85 diff -u -u -p -r1.31 findvar.c
86 --- gdb/findvar.c 9 Apr 2002 03:06:13 -0000 1.31
87 +++ gdb/findvar.c 12 Apr 2002 19:50:45 -0000
88 @@ -417,9 +417,11 @@ struct value *
89 read_var_value (register struct symbol *var, struct frame_info *frame)
91 register struct value *v;
92 + register struct range_list *r;
93 struct type *type = SYMBOL_TYPE (var);
98 v = allocate_value (type);
99 VALUE_LVAL (v) = lval_memory; /* The most likely possibility. */
100 @@ -429,6 +431,23 @@ read_var_value (register struct symbol *
103 frame = selected_frame;
105 + if (!SYMBOL_RANGES (var))
109 + for (r = SYMBOL_RANGES (var); r; r = r->next)
111 + if (r->start <= frame->pc && r->end > frame->pc)
122 switch (SYMBOL_CLASS (var))
125 ===================================================================
126 RCS file: /cvs/src/src/gdb/stack.c,v
127 retrieving revision 1.33
128 diff -u -u -p -r1.33 stack.c
129 --- gdb/stack.c 10 Apr 2002 23:32:33 -0000 1.33
130 +++ gdb/stack.c 12 Apr 2002 19:50:47 -0000
131 @@ -1173,14 +1173,36 @@ print_block_frame_locals (struct block *
135 - values_printed = 1;
136 - for (j = 0; j < num_tabs; j++)
137 - fputs_filtered ("\t", stream);
138 - fputs_filtered (SYMBOL_SOURCE_NAME (sym), stream);
139 - fputs_filtered (" = ", stream);
140 - print_variable_value (sym, fi, stream);
141 - fprintf_filtered (stream, "\n");
144 + struct range_list *r;
147 + if (!SYMBOL_RANGES (sym))
151 + for (r = SYMBOL_RANGES (sym); r; r = r->next)
153 + if (r->start <= fi->pc && r->end > fi->pc)
163 + values_printed = 1;
164 + for (j = 0; j < num_tabs; j++)
165 + fputs_filtered ("\t", stream);
166 + fputs_filtered (SYMBOL_SOURCE_NAME (sym), stream);
167 + fputs_filtered (" = ", stream);
168 + print_variable_value (sym, fi, stream);
169 + fprintf_filtered (stream, "\n");
175 /* Ignore symbols which are not locals. */