summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNed Ludd <solar@gentoo.org>2006-01-16 15:19:32 +0000
committerNed Ludd <solar@gentoo.org>2006-01-16 15:19:32 +0000
commit575ebda1aacbbd77aa0cf3d8896e182f762afd75 (patch)
tree56ac5560ece1297e9d3d8283b23da49da0ba71ae /sys-devel/gdb
parent* bump (diff)
downloadgentoo-2-575ebda1aacbbd77aa0cf3d8896e182f762afd75.tar.gz
gentoo-2-575ebda1aacbbd77aa0cf3d8896e182f762afd75.tar.bz2
gentoo-2-575ebda1aacbbd77aa0cf3d8896e182f762afd75.zip
- scanmem patch updates from the PaX Team. Fixed compilation warnings and clean up the control flow a bit (one less level of indentation) and I also added tab completion for 'scanmem'.
(Portage version: 2.1_pre1)
Diffstat (limited to 'sys-devel/gdb')
-rw-r--r--sys-devel/gdb/ChangeLog9
-rw-r--r--sys-devel/gdb/Manifest14
-rw-r--r--sys-devel/gdb/files/gdb-6.4-scanmem.patch365
3 files changed, 186 insertions, 202 deletions
diff --git a/sys-devel/gdb/ChangeLog b/sys-devel/gdb/ChangeLog
index 9ab14c16efbe..f2fd34cc1638 100644
--- a/sys-devel/gdb/ChangeLog
+++ b/sys-devel/gdb/ChangeLog
@@ -1,6 +1,11 @@
# ChangeLog for sys-devel/gdb
-# Copyright 1999-2005 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/sys-devel/gdb/ChangeLog,v 1.82 2005/12/09 04:48:35 solar Exp $
+# Copyright 1999-2006 Gentoo Foundation; Distributed under the GPL v2
+# $Header: /var/cvsroot/gentoo-x86/sys-devel/gdb/ChangeLog,v 1.83 2006/01/16 15:19:32 solar Exp $
+
+ 16 Jan 2006; <solar@gentoo.org> files/gdb-6.4-scanmem.patch:
+ - scanmem patch updates from the PaX Team. Fixed compilation warnings and
+ clean up the control flow a bit (one less level of indentation) and I also
+ added tab completion for 'scanmem'.
*gdb-6.4-r1 (08 Dec 2005)
diff --git a/sys-devel/gdb/Manifest b/sys-devel/gdb/Manifest
index 34270e785316..87452fa39e5e 100644
--- a/sys-devel/gdb/Manifest
+++ b/sys-devel/gdb/Manifest
@@ -1,7 +1,4 @@
------BEGIN PGP SIGNED MESSAGE-----
-Hash: SHA1
-
-MD5 818a63a042ed9604c80ce3331c44e668 ChangeLog 11985
+MD5 d3a0c5ca1085ae60aa1f4059ff9e9940 ChangeLog 12240
MD5 d3ab2683d88b3cbecb8a9faa439703a1 files/bfd-malloc-wrap.patch 782
MD5 460629563df21e6a68b8941c07d4f30b files/digest-gdb-6.1 131
MD5 b3790be989db97b22c599572afbce109 files/digest-gdb-6.2.1 133
@@ -25,7 +22,7 @@ MD5 2657b597618d0c35b48f47e3f808d171 files/gdb-6.3-relative-paths.patch 3286
MD5 a4610ec65e88f73e0b00b525467a5372 files/gdb-6.3-scanmem.patch 6652
MD5 8b7f5c46b8dabbc9239c37f52278b971 files/gdb-6.3-uclibc.patch 8221
MD5 8323dafe6749f0da44b8e11ebbbc96c4 files/gdb-6.4-relative-paths.patch 3147
-MD5 c8fced1c2241b098eae50b1f8c8ef463 files/gdb-6.4-scanmem.patch 6692
+MD5 2eb930fae4af7203dc929220ce68096c files/gdb-6.4-scanmem.patch 6176
MD5 ec7f411b90047b1ea848513ee5676072 files/gdb-6.4-sse2-register-display.patch 1533
MD5 78d8fa43c0e2e339346b3bc7aa10c2d9 files/gdb-6.4-uclibc.patch 2435
MD5 7ea8f83bb7b0d70e7e6d6c8cf42292d3 files/gdb-6.x-crash.patch 678
@@ -35,10 +32,3 @@ MD5 20334b11833489b3bcc13c0fea645a1d gdb-6.3-r4.ebuild 2983
MD5 abe5b46c3552ca8670ffb68c048d4ffd gdb-6.4-r1.ebuild 3009
MD5 f5428a658b66b60aeaa511d39cc450b3 gdb-6.4.ebuild 2996
MD5 567094e03359ffc1c95af7356395228d metadata.xml 162
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.4.2 (GNU/Linux)
-
-iD8DBQFDoi+12+ySkm8kpY0RAjxNAKCX5q+1FY9gNL5Pff3qLfSCWPm/JACeNeDA
-DQD0r+lZ2ZhNUBGB40y5Tg4=
-=ALbN
------END PGP SIGNATURE-----
diff --git a/sys-devel/gdb/files/gdb-6.4-scanmem.patch b/sys-devel/gdb/files/gdb-6.4-scanmem.patch
index 899977dda137..df3e06461486 100644
--- a/sys-devel/gdb/files/gdb-6.4-scanmem.patch
+++ b/sys-devel/gdb/files/gdb-6.4-scanmem.patch
@@ -1,223 +1,212 @@
-diff -Nrup gdb-6.4.orig/gdb/printcmd.c gdb-6.4/gdb/printcmd.c
---- gdb-6.4.orig/gdb/printcmd.c 2005-02-24 08:51:34.000000000 -0500
-+++ gdb-6.4/gdb/printcmd.c 2005-12-08 23:17:09.000000000 -0500
-@@ -942,6 +942,195 @@ print_command (char *exp, int from_tty)
+--- gdb-6.4-old/gdb/printcmd.c 2005-02-24 14:51:34.000000000 +0100
++++ gdb-6.4/gdb/printcmd.c 2005-12-11 01:38:27.000000000 +0100
+@@ -942,6 +942,187 @@ print_command (char *exp, int from_tty)
print_command_1 (exp, 0, 1);
}
++int partial_memory_read (CORE_ADDR memaddr, char *myaddr, int len, int *errnoptr);
++
+static void
+scanmem_command(char *exp, int from_tty)
+{
-+ struct expression *expr;
-+ struct value *val;
-+ struct format_data fmt;
-+ CORE_ADDR addr;
-+ unsigned char *data;
-+ unsigned char *size;
-+ unsigned char *pattern;
-+ unsigned char typ;
-+ unsigned char typc;
-+ unsigned char my_buf[4];
-+ unsigned int nfetch;
-+ unsigned int len = 10;
-+ unsigned int memsize;
-+ unsigned int i;
-+ int typi;
-+ int errcode;
-+
-+ if (exp && *exp) {
-+ struct type *type;
-+ char *str_num = NULL;
-+ char *string_to_seek = NULL;
-+ char *tmp = strdup(exp);
-+ char *c;
-+
-+ c = tmp;
-+ if (*c == ' ')
-+ while (*c && *c == ' ')
-+ c++;
-+
-+ while (*c && *c != ' ')
-+ c++;
-+
-+ *c = '\0';
++ struct expression *expr;
++ struct value *val;
++ struct format_data fmt;
++ CORE_ADDR addr;
++ unsigned char *data;
++ unsigned char *size;
++ unsigned char *pattern;
++ unsigned char typ;
++ unsigned int typc;
++ unsigned char my_buf[4];
++ unsigned int nfetch;
++ unsigned int len = 10;
++ unsigned int memsize;
++ unsigned int i;
++ int typi;
++ int errcode;
++ struct type *type;
++ char *str_num = NULL;
++ char *string_to_seek = NULL;
++ char *tmp = strdup(exp);
++ char *c;
++
++ if (!exp && !*exp)
++ return;
++
++ c = tmp;
++ if (*c == ' ')
++ while (*c && *c == ' ')
+ c++;
+
-+ while (*c && *c == ' ')
-+ c++;
++ while (*c && *c != ' ')
++ c++;
+
-+ size = c;
++ *c = '\0';
++ c++;
+
-+ while (*c && *c != ' ')
-+ c++;
++ while (*c && *c == ' ')
++ c++;
+
-+ *c = '\0';
-+ c++;
++ size = c;
+
-+ while (*c && *c == ' ')
-+ c++;
++ while (*c && *c != ' ')
++ c++;
+
-+ typ = *c;
-+ c++;
++ *c = '\0';
++ c++;
+
-+ *c = '\0';
-+ c++;
++ while (*c && *c == ' ')
++ c++;
++
++ typ = *c;
++ c++;
++
++ *c = '\0';
++ c++;
+
-+ while (*c && *c == ' ')
-+ c++;
-+ pattern = c;
++ while (*c && *c == ' ')
++ c++;
++ pattern = c;
+
-+ printf_filtered(">>addr %s: size %s: type:%c pattern:%s<< \n",
-+ tmp, size, typ, pattern);
++ printf_filtered(">>addr %s: size %s: type:%c pattern:%s<< \n", tmp, size, typ, pattern);
+
-+ expr = parse_expression(tmp);
-+ val = evaluate_expression(expr);
++ expr = parse_expression(tmp);
++ val = evaluate_expression(expr);
+
-+ if (TYPE_CODE(value_type(val)) == TYPE_CODE_REF)
-+ val = value_ind(val);
++ if (TYPE_CODE(value_type(val)) == TYPE_CODE_REF)
++ val = value_ind(val);
+
-+ if (TYPE_CODE(value_type(val)) == TYPE_CODE_FUNC
-+ && VALUE_LVAL(val) == lval_memory)
-+ addr = VALUE_ADDRESS(val);
++ if (TYPE_CODE(value_type(val)) == TYPE_CODE_FUNC && VALUE_LVAL(val) == lval_memory)
++ addr = VALUE_ADDRESS(val);
++ else
++ addr = value_as_address(val);
++
++ len = atoi(size);
++ data = xmalloc(len);
++ nfetch = partial_memory_read(addr, data, len, &errcode);
++
++ if (nfetch != len)
++ printf_filtered("we can read only %i bytes\n", nfetch);
++
++ switch (typ) {
++ case 's':
++ memsize = strlen(pattern);
++ if (nfetch < memsize) {
++ printf_filtered("we read only %i bytes and we seek for a pattern of %i bytes\n",
++ nfetch, memsize);
++ break;
++ }
++ for (i = 0; i <= (nfetch - memsize); i++, addr++) {
++ if (memcmp(data + i, pattern, memsize) == 0) {
++ printf_filtered("pattern match at ");
++ deprecated_print_address_numeric(addr, 1, gdb_stdout);
++ printf_filtered("\n");
++ }
++ }
++ break;
++
++ case 'i':
++ memsize = sizeof(int);
++ typi = atoi(pattern);
++
++ if (nfetch < memsize) {
++ printf_filtered("we read only %i bytes and we seek for a pattern of %i bytes\n",
++ nfetch, memsize);
++ break;
++ }
++ for (i = 0; i <= (nfetch - memsize); i++, addr++) {
++ int *pint;
++ pint = (unsigned int *) (data + i);
++ if (*pint == typi) {
++ printf_filtered("pattern match at ");
++ deprecated_print_address_numeric(addr, 1, gdb_stdout);
++ printf_filtered("\n");
++ }
++ }
++ break;
++
++ case 'a':
++ memsize = sizeof(unsigned long);
++ if (sscanf(pattern, "0x%x", &i) == 0) {
++ printf_filtered("cant convert to hexa %s\n", pattern);
++ break;
++ }
++ my_buf[0] = (unsigned char) ((i & 0x000000FF));
++ my_buf[1] = (unsigned char) ((i & 0x0000FF00) >> 8);
++ my_buf[2] = (unsigned char) ((i & 0x00FF0000) >> 16);
++ my_buf[3] = (unsigned char) ((i & 0xFF000000) >> 24);
++ if (nfetch < memsize) {
++ printf_filtered("we read only %i bytes and we seek for a pattern of %i bytes\n",
++ nfetch, memsize);
++ break;
++ }
++ for (i = 0; i <= (nfetch - memsize); i++, addr++) {
++ if (memcmp(data + i, my_buf, memsize) == 0) {
++ printf_filtered("pattern match at ");
++ deprecated_print_address_numeric(addr, 1, gdb_stdout);
++ printf_filtered("\n");
++ }
++ }
++ break;
++
++ case 'b':
++ case 'c':
++ memsize = sizeof(char);
++ if (typ == 'c')
++ typc = *pattern;
++ else {
++ if (strncmp("0x", pattern, 2) == 0)
++ sscanf(pattern, "0x%02x", &typc);
+ else
-+ addr = value_as_address(val);
-+
-+ len = atoi(size);
-+ data = xmalloc(len);
-+ nfetch = partial_memory_read(addr, data, len, &errcode);
-+
-+ if (nfetch != len)
-+ printf_filtered("we can read only %i bytes\n", nfetch);
-+
-+ switch (typ) {
-+ case 's':
-+ memsize = strlen(pattern);
-+ if (nfetch < memsize) {
-+ printf_filtered
-+ ("we read only %i bytes and we seek for a pattern of %i bytes\n",
-+ nfetch, memsize);
-+ free(data);
-+ free(tmp);
-+ return;
-+ }
-+ for (i = 0; i <= (nfetch - memsize); i++, addr++) {
-+ if (memcmp(data + i, pattern, memsize) == 0) {
-+ printf_filtered("pattern match at ");
-+ deprecated_print_address_numeric((addr), 1, gdb_stdout);
-+ printf_filtered("\n");
-+ }
-+ }
-+ break;
-+ case 'i':
-+ memsize = sizeof(int);
-+ typi = atoi(pattern);
-+
-+ if (nfetch < memsize) {
-+ printf_filtered
-+ ("we read only %i bytes and we seek for a pattern of %i bytes\n",
-+ nfetch, memsize);
-+ free(data);
-+ free(tmp);
-+ return;
-+ }
-+ for (i = 0; i <= (nfetch - memsize); i++, addr++) {
-+ int *pint;
-+ pint = (unsigned char *) (data + i);
-+ if (*pint == typi) {
-+ printf_filtered("pattern match at ");
-+ deprecated_print_address_numeric((addr), 1, gdb_stdout);
-+ printf_filtered("\n");
-+ }
-+ }
-+ break;
-+ case 'a':
-+ memsize = sizeof(unsigned long);
-+ if (sscanf(pattern, "0x%x", &i) == 0) {
-+ printf_filtered("cant convert to hexa %s\n", pattern);
-+ break;
-+ }
-+ my_buf[0] = (unsigned char) ((i & 0x000000FF));
-+ my_buf[1] = (unsigned char) ((i & 0x0000FF00) >> 8);
-+ my_buf[2] = (unsigned char) ((i & 0x00FF0000) >> 16);
-+ my_buf[3] = (unsigned char) ((i & 0xFF000000) >> 24);
-+ if (nfetch < memsize) {
-+ printf_filtered
-+ ("we read only %i bytes and we seek for a pattern of %i bytes\n",
-+ nfetch, memsize);
-+ free(data);
-+ free(tmp);
-+ return;
-+ }
-+ for (i = 0; i <= (nfetch - memsize); i++, addr++) {
-+ if (memcmp((data + i), my_buf, memsize) == 0) {
-+ printf_filtered("pattern match at ");
-+ deprecated_print_address_numeric((addr), 1, gdb_stdout);
-+ printf_filtered("\n");
-+ }
-+ }
-+ break;
-+ case 'b':
-+ case 'c':
-+ memsize = sizeof(char);
-+ if (typ == 'c')
-+ typc = *pattern;
-+ else {
-+ if (strncmp("0x", pattern, 2) == 0) {
-+ sscanf(pattern, "0x%02x", &typc);
-+ } else
-+ typc = (unsigned char)atoi(pattern);
-+ }
-+ printf_filtered(">>>%0x2\n", (int) typc);
-+ if (nfetch < memsize) {
-+ printf_filtered
-+ ("we read only %i bytes and we seek for a pattern of %i bytes\n",
-+ nfetch, memsize);
-+ free(data);
-+ free(tmp);
-+ return;
-+ }
-+ for (i = 0; i <= (nfetch - memsize); i++, addr++) {
-+ if (*(data + i) == typc) {
-+ printf_filtered("pattern match at ");
-+ deprecated_print_address_numeric((addr), 1, gdb_stdout);
-+ printf_filtered("\n");
-+ }
-+ }
-+ break;
-+ default:
-+ printf_filtered("'%c' is not a valid type\n", typ);
-+ break;
++ typc = (unsigned char)atoi(pattern);
++ }
++ printf_filtered(">>>%0x2\n", typc);
++ if (nfetch < memsize) {
++ printf_filtered("we read only %i bytes and we seek for a pattern of %i bytes\n",
++ nfetch, memsize);
++ break;
++ }
++ for (i = 0; i <= (nfetch - memsize); i++, addr++) {
++ if (data[i] == typc) {
++ printf_filtered("pattern match at ");
++ deprecated_print_address_numeric(addr, 1, gdb_stdout);
++ printf_filtered("\n");
+ }
-+ free(data);
-+ free(tmp);
-+ return;
-+ }
++ }
++ break;
++
++ default:
++ printf_filtered("'%c' is not a valid type\n", typ);
++ break;
++ }
++ free(data);
++ free(tmp);
++ return;
+}
+
/* Same as print, except in epoch, it gets its own window */
static void
inspect_command (char *exp, int from_tty)
-@@ -2138,6 +2327,17 @@ EXP may be preceded with /FMT, where FMT
+@@ -2138,6 +2319,16 @@ EXP may be preceded with /FMT, where FMT
but no count or size letter (see \"x\" command)."));
set_cmd_completer (c, location_completer);
add_com_alias ("p", "print", class_vars, 1);
-+ c =
-+ add_com ("scanmem", class_vars, scanmem_command,
-+ "scanmem <addr> <num> <type> <string>\n"
-+ "example: scanmem $esp 100 a 0x8048434\n"
-+ " scan for this addr into the stack\n\n"
-+ " scanmem 0x08048434 100 s fsck\n"
-+ " seek for a string\n"
-+ " scanmem 0x8048434 100 b 0x75\n"
-+ " scan for the char 0x75\n"
-+ " a = address c = char b = byte i = int s = string\n"
-+ "\n"); /* antilove@zolo.freelsd.net */
++ c = add_com ("scanmem", class_vars, scanmem_command, _("\
++scanmem <addr> <num> <type> <string>\n\
++example: scanmem $esp 100 a 0x8048434\n\
++ scan for this addr on the stack\n\n\
++ scanmem 0x08048434 100 s fsck\n\
++ seek for a string\n\
++ scanmem 0x8048434 100 b 0x75\n\
++ scan for the char 0x75\n\
++ a = address c = char b = byte i = int s = string")); /* antilove@zolo.freelsd.net */
++ set_cmd_completer (c, location_completer);
c = add_com ("inspect", class_vars, inspect_command, _("\
Same as \"print\" command, except that if you are running in the epoch\n\
-diff -Nrup gdb-6.4.orig/gdb/valprint.c gdb-6.4/gdb/valprint.c
---- gdb-6.4.orig/gdb/valprint.c 2005-10-09 21:03:59.000000000 -0400
-+++ gdb-6.4/gdb/valprint.c 2005-12-08 23:17:09.000000000 -0500
+--- gdb-6.4-old/gdb/valprint.c 2005-10-10 03:03:59.000000000 +0200
++++ gdb-6.4/gdb/valprint.c 2005-12-10 13:22:40.000000000 +0100
@@ -39,7 +39,7 @@
/* Prototypes for local functions */