* xcoffread.c (read_xcoff_symtab): Set c_sclass from n_sclass
authorJohn Gilmore <gnu@cygnus>
Thu, 4 Jun 1992 05:23:08 +0000 (05:23 +0000)
committerJohn Gilmore <gnu@cygnus>
Thu, 4 Jun 1992 05:23:08 +0000 (05:23 +0000)
without masking, since it is signed and will later be compared
against signed quantities.  The right fix is probably to make
it all unsigned, but this is a small, safe fix for this release.
FIXME -- make the real change sometime soon.

(Imported from progressive.)

gdb/ChangeLog
gdb/xcoffread.c

index f299166e5aafe8bc779f4485789b7dd1ef89c783..6d39a50e24df3dab7c0313f7e9018d396faf20a5 100644 (file)
@@ -1,3 +1,11 @@
+Wed Jun  3 17:48:04 1992  John Gilmore  (gnu@pluto)
+
+       * xcoffread.c (read_xcoff_symtab):  Set c_sclass from n_sclass
+       without masking, since it is signed and will later be compared
+       against signed quantities.  The right fix is probably to make
+       it all unsigned, but this is a small, safe fix for this release.
+       FIXME -- make the real change sometime soon.
+
 Mon Jun  1 16:16:12 1992  Michael Tiemann  (tiemann@cygnus.com)
 
        * remote-vx.c (vx_load_command,add_symbol_stub): Default READNOW
index addb5cf303c5a33dc7013cf7a0d3483327faf56a..3513fe15fc19d2b66863230a6ce83bd83755ce34 100644 (file)
@@ -1092,7 +1092,13 @@ read_xcoff_symtab (objfile, nsyms)
        symname_alloced = 1;
       }
       cs->c_value = symbol->n_value;
-      cs->c_sclass = symbol->n_sclass & 0xff;
+      /* n_sclass is signed (FIXME), so we had better not mask off any
+        high bits it contains, since the values we will be comparing
+        it to are also signed (FIXME).  Defined in <coff/internal.h>.
+        At this point (3Jun92, gnu@cygnus.com) I think the fix is to
+        make the fields and values unsigned chars, but changing the next
+        line is a simple patch late in the release cycle, for now.  */
+      cs->c_sclass = symbol->n_sclass /* & 0xff */;
       cs->c_secnum = symbol->n_scnum;
       cs->c_type = (unsigned)symbol->n_type;