* dwarfread.c (new_symbol): Use SYMBOL_VALUE_ADDRESS, instead of
authorFred Fish <fnf@specifix.com>
Tue, 17 Jun 1997 14:01:37 +0000 (14:01 +0000)
committerFred Fish <fnf@specifix.com>
Tue, 17 Jun 1997 14:01:37 +0000 (14:01 +0000)
SYMBOL_VALUE, to set the value of LOC_STATIC symbols.

gdb/ChangeLog
gdb/dwarfread.c

index 4c10b85..0cd0468 100644 (file)
@@ -1,3 +1,8 @@
+Tue Jun 17 06:52:47 1997  Fred Fish  <fnf@cygnus.com>
+
+       * 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  <marka@cygnus.com>
 
        * infrun.c (wait_for_inferior): Mark registers as invalid when
index 529f01b..3315c3a 100644 (file)
@@ -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: