aboutsummaryrefslogtreecommitdiff
path: root/gdb/xcoffread.c
diff options
context:
space:
mode:
authorJohn Gilmore <gnu@cygnus>1992-06-04 05:23:08 +0000
committerJohn Gilmore <gnu@cygnus>1992-06-04 05:23:08 +0000
commit2795260c9ea7176b33a947d3414d1b3fc771127a (patch)
treee5a4ca706672d9c76da9345beccc83d50a06e422 /gdb/xcoffread.c
parent72754842fc5897eb86df018a7c67c5bd762804ca (diff)
downloadgdb-2795260c9ea7176b33a947d3414d1b3fc771127a.zip
gdb-2795260c9ea7176b33a947d3414d1b3fc771127a.tar.gz
gdb-2795260c9ea7176b33a947d3414d1b3fc771127a.tar.bz2
* 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. (Imported from progressive.)
Diffstat (limited to 'gdb/xcoffread.c')
-rw-r--r--gdb/xcoffread.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/gdb/xcoffread.c b/gdb/xcoffread.c
index addb5cf..3513fe1 100644
--- a/gdb/xcoffread.c
+++ b/gdb/xcoffread.c
@@ -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;