From 015e113cfecf56f8ecf33b17adba765aadbb29d0 Mon Sep 17 00:00:00 2001 From: Fred Fish Date: Tue, 17 Jun 1997 14:01:37 +0000 Subject: [PATCH] * dwarfread.c (new_symbol): Use SYMBOL_VALUE_ADDRESS, instead of SYMBOL_VALUE, to set the value of LOC_STATIC symbols. --- gdb/ChangeLog | 5 +++++ gdb/dwarfread.c | 15 ++++++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 4c10b85..0cd0468 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +Tue Jun 17 06:52:47 1997 Fred Fish + + * dwarfread.c (new_symbol): Use SYMBOL_VALUE_ADDRESS, instead of + SYMBOL_VALUE, to set the value of LOC_STATIC symbols. + Mon Jun 16 18:38:28 1997 Mark Alexander * infrun.c (wait_for_inferior): Mark registers as invalid when diff --git a/gdb/dwarfread.c b/gdb/dwarfread.c index 529f01b..3315c3a 100644 --- a/gdb/dwarfread.c +++ b/gdb/dwarfread.c @@ -2972,7 +2972,7 @@ new_symbol (dip, objfile) case TAG_global_variable: if (dip -> at_location != NULL) { - SYMBOL_VALUE (sym) = locval (dip -> at_location); + SYMBOL_VALUE_ADDRESS (sym) = locval (dip -> at_location); add_symbol_to_list (sym, &global_symbols); SYMBOL_CLASS (sym) = LOC_STATIC; SYMBOL_VALUE (sym) += baseaddr; @@ -2981,8 +2981,6 @@ new_symbol (dip, objfile) case TAG_local_variable: if (dip -> at_location != NULL) { - SYMBOL_VALUE (sym) = locval (dip -> at_location); - add_symbol_to_list (sym, list_in_scope); if (optimized_out) { SYMBOL_CLASS (sym) = LOC_OPTIMIZED_OUT; @@ -3001,6 +2999,17 @@ new_symbol (dip, objfile) SYMBOL_CLASS (sym) = LOC_STATIC; SYMBOL_VALUE (sym) += baseaddr; } + if (SYMBOL_CLASS (sym) == LOC_STATIC) + { + /* LOC_STATIC address class MUST use SYMBOL_VALUE_ADDRESS, + which may store to a bigger location than SYMBOL_VALUE. */ + SYMBOL_VALUE_ADDRESS (sym) = locval (dip -> at_location); + } + else + { + SYMBOL_VALUE (sym) = locval (dip -> at_location); + } + add_symbol_to_list (sym, list_in_scope); } break; case TAG_formal_parameter: -- 2.7.4