CVSROOT: /sources/qemu Module name: qemu Changes by: Paul Brook <pbrook> 06/06/17 18:30:42
Modified files: . : gdbstub.c linux-user : flatload.c main.c qemu.h Log message: Respond to qOffsets gdb packet (for debugging bFLT binaries). CVSWeb URLs: http://cvs.savannah.gnu.org/viewcvs/qemu/gdbstub.c?cvsroot=qemu&r1=1.37&r2=1.38 http://cvs.savannah.gnu.org/viewcvs/qemu/linux-user/flatload.c?cvsroot=qemu&r1=1.1&r2=1.2 http://cvs.savannah.gnu.org/viewcvs/qemu/linux-user/main.c?cvsroot=qemu&r1=1.85&r2=1.86 http://cvs.savannah.gnu.org/viewcvs/qemu/linux-user/qemu.h?cvsroot=qemu&r1=1.27&r2=1.28 Patches: Index: gdbstub.c =================================================================== RCS file: /sources/qemu/qemu/gdbstub.c,v retrieving revision 1.37 retrieving revision 1.38 diff -u -b -r1.37 -r1.38 --- gdbstub.c 14 Jun 2006 15:21:14 -0000 1.37 +++ gdbstub.c 17 Jun 2006 18:30:42 -0000 1.38 @@ -17,6 +17,7 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include "config.h" #ifdef CONFIG_USER_ONLY #include <stdlib.h> #include <stdio.h> @@ -24,6 +25,7 @@ #include <string.h> #include <errno.h> #include <unistd.h> +#include <fcntl.h> #include "qemu.h" #else @@ -680,6 +682,18 @@ goto breakpoint_error; } break; +#ifdef CONFIG_USER_ONLY + case 'q': + if (strncmp(p, "Offsets", 7) == 0) { + TaskState *ts = env->opaque; + + sprintf(buf, "Text=%x;Data=%x;Bss=%x", ts->info->code_offset, + ts->info->data_offset, ts->info->data_offset); + put_packet(s, buf); + break; + } + /* Fall through. */ +#endif default: // unknown_command: /* put empty packet */ Index: linux-user/flatload.c =================================================================== RCS file: /sources/qemu/qemu/linux-user/flatload.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -b -r1.1 -r1.2 --- linux-user/flatload.c 11 Jun 2006 13:32:59 -0000 1.1 +++ linux-user/flatload.c 17 Jun 2006 18:30:42 -0000 1.2 @@ -783,6 +783,9 @@ info->start_brk = libinfo[0].start_brk; info->start_stack = sp; info->entry = start_addr; + info->code_offset = info->start_code; + info->data_offset = info->start_data - libinfo[0].text_len; + DBG_FLT("start_thread(entry=0x%x, start_stack=0x%x)\n", (int)info->entry, (int)info->start_stack); Index: linux-user/main.c =================================================================== RCS file: /sources/qemu/qemu/linux-user/main.c,v retrieving revision 1.85 retrieving revision 1.86 diff -u -b -r1.85 -r1.86 --- linux-user/main.c 14 Jun 2006 13:37:55 -0000 1.85 +++ linux-user/main.c 17 Jun 2006 18:30:42 -0000 1.86 @@ -1541,6 +1541,7 @@ memset(ts, 0, sizeof(TaskState)); env->opaque = ts; ts->used = 1; + ts->info = info; env->user_mode_only = 1; #if defined(TARGET_I386) Index: linux-user/qemu.h =================================================================== RCS file: /sources/qemu/qemu/linux-user/qemu.h,v retrieving revision 1.27 retrieving revision 1.28 diff -u -b -r1.27 -r1.28 --- linux-user/qemu.h 11 Jun 2006 13:32:59 -0000 1.27 +++ linux-user/qemu.h 17 Jun 2006 18:30:42 -0000 1.28 @@ -27,6 +27,8 @@ unsigned long rss; unsigned long start_stack; unsigned long entry; + target_ulong code_offset; + target_ulong data_offset; int personality; }; @@ -73,6 +75,7 @@ uint32_t v86mask; #endif int used; /* non zero if used */ + struct image_info *info; uint8_t stack[0]; } __attribute__((aligned(16))) TaskState; _______________________________________________ Qemu-devel mailing list Qemu-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/qemu-devel