Blob Blame Raw
From 38ce1e9087067fa3fbb132d943b35d3a995408a5 Mon Sep 17 00:00:00 2001
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Date: Sun, 10 Mar 2013 18:36:39 +0100
Subject: [PATCH 202/364] 	Adjust types in gdb module to have intended
 unsigned shifts rather than 	signed divisions.

---
 ChangeLog                   | 5 +++++
 grub-core/gdb/cstub.c       | 4 ++--
 grub-core/gdb/i386/signal.c | 2 +-
 include/grub/gdb.h          | 2 +-
 4 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 931ae8e..51bc363 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2013-03-10  Vladimir Serbinenko  <phcoder@gmail.com>
 
+	Adjust types in gdb module to have intended unsigned shifts rather than
+	signed divisions.
+
+2013-03-10  Vladimir Serbinenko  <phcoder@gmail.com>
+
 	* grub-core/fs/hfs.c (grub_hfs_read_file): Avoid divmod64 since the
 	maximum size is 4G - 1 on hfs
 
diff --git a/grub-core/gdb/cstub.c b/grub-core/gdb/cstub.c
index a5c0c43..3c89c19 100644
--- a/grub-core/gdb/cstub.c
+++ b/grub-core/gdb/cstub.c
@@ -204,7 +204,7 @@ grub_gdb_hex2int (char **ptr, grub_uint64_t *int_value)
 void
 grub_gdb_trap (int trap_no)
 {
-  int sig_no;
+  unsigned int sig_no;
   int stepping;
   grub_uint64_t addr;
   grub_uint64_t length;
@@ -264,7 +264,7 @@ grub_gdb_trap (int trap_no)
 	case '?':
 	  grub_gdb_outbuf[0] = 'S';
 	  grub_gdb_outbuf[1] = hexchars[sig_no >> 4];
-	  grub_gdb_outbuf[2] = hexchars[sig_no % 16];
+	  grub_gdb_outbuf[2] = hexchars[sig_no & 0xf];
 	  grub_gdb_outbuf[3] = 0;
 	  break;
 
diff --git a/grub-core/gdb/i386/signal.c b/grub-core/gdb/i386/signal.c
index 23b7c35..1ac3bbd 100644
--- a/grub-core/gdb/i386/signal.c
+++ b/grub-core/gdb/i386/signal.c
@@ -24,7 +24,7 @@
 
 /* Converting CPU trap number to UNIX signal number as
    described in System V ABI i386 Processor Supplement, 3-25.  */
-int
+unsigned int
 grub_gdb_trap2sig (int trap_no)
 {
   const int signals[] = {
diff --git a/include/grub/gdb.h b/include/grub/gdb.h
index 59fd456..e73d135 100644
--- a/include/grub/gdb.h
+++ b/include/grub/gdb.h
@@ -33,7 +33,7 @@ struct grub_serial_port;
 extern struct grub_serial_port *grub_gdb_port;
 
 void grub_gdb_breakpoint (void);
-int grub_gdb_trap2sig (int);
+unsigned int grub_gdb_trap2sig (int);
 
 #endif /* ! GRUB_GDB_HEADER */
 
-- 
1.8.1.4