Commit 8f447cc753ac5f095be3cd9c404bf590319bc696
1 parent
eda9b09b
gdb stub for win32
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1972 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
2 changed files
with
20 additions
and
11 deletions
configure
gdbstub.c
... | ... | @@ -30,10 +30,18 @@ |
30 | 30 | #include "vl.h" |
31 | 31 | #endif |
32 | 32 | |
33 | -#include <sys/socket.h> | |
34 | -#include <netinet/in.h> | |
35 | -#include <netinet/tcp.h> | |
33 | +#include "qemu_socket.h" | |
34 | +#ifdef _WIN32 | |
35 | +/* XXX: these constants may be independent of the host ones even for Unix */ | |
36 | +#ifndef SIGTRAP | |
37 | +#define SIGTRAP 5 | |
38 | +#endif | |
39 | +#ifndef SIGINT | |
40 | +#define SIGINT 2 | |
41 | +#endif | |
42 | +#else | |
36 | 43 | #include <signal.h> |
44 | +#endif | |
37 | 45 | |
38 | 46 | //#define DEBUG_GDB |
39 | 47 | |
... | ... | @@ -69,7 +77,7 @@ static int get_char(GDBState *s) |
69 | 77 | int ret; |
70 | 78 | |
71 | 79 | for(;;) { |
72 | - ret = read(s->fd, &ch, 1); | |
80 | + ret = recv(s->fd, &ch, 1, 0); | |
73 | 81 | if (ret < 0) { |
74 | 82 | if (errno != EINTR && errno != EAGAIN) |
75 | 83 | return -1; |
... | ... | @@ -87,7 +95,7 @@ static void put_buffer(GDBState *s, const uint8_t *buf, int len) |
87 | 95 | int ret; |
88 | 96 | |
89 | 97 | while (len > 0) { |
90 | - ret = write(s->fd, buf, len); | |
98 | + ret = send(s->fd, buf, len, 0); | |
91 | 99 | if (ret < 0) { |
92 | 100 | if (errno != EINTR && errno != EAGAIN) |
93 | 101 | return; |
... | ... | @@ -829,7 +837,7 @@ static void gdb_read(void *opaque) |
829 | 837 | int i, size; |
830 | 838 | uint8_t buf[4096]; |
831 | 839 | |
832 | - size = read(s->fd, buf, sizeof(buf)); | |
840 | + size = recv(s->fd, buf, sizeof(buf), 0); | |
833 | 841 | if (size < 0) |
834 | 842 | return; |
835 | 843 | if (size == 0) { |
... | ... | @@ -866,7 +874,7 @@ static void gdb_accept(void *opaque) |
866 | 874 | |
867 | 875 | /* set short latency */ |
868 | 876 | val = 1; |
869 | - setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &val, sizeof(val)); | |
877 | + setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, (char *)&val, sizeof(val)); | |
870 | 878 | |
871 | 879 | #ifdef CONFIG_USER_ONLY |
872 | 880 | s = &gdbserver_state; |
... | ... | @@ -881,9 +889,11 @@ static void gdb_accept(void *opaque) |
881 | 889 | s->env = first_cpu; /* XXX: allow to change CPU */ |
882 | 890 | s->fd = fd; |
883 | 891 | |
892 | +#ifdef CONFIG_USER_ONLY | |
884 | 893 | fcntl(fd, F_SETFL, O_NONBLOCK); |
894 | +#else | |
895 | + socket_set_nonblock(fd); | |
885 | 896 | |
886 | -#ifndef CONFIG_USER_ONLY | |
887 | 897 | /* stop the VM */ |
888 | 898 | vm_stop(EXCP_INTERRUPT); |
889 | 899 | |
... | ... | @@ -907,7 +917,7 @@ static int gdbserver_open(int port) |
907 | 917 | |
908 | 918 | /* allow fast reuse */ |
909 | 919 | val = 1; |
910 | - setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val)); | |
920 | + setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (char *)&val, sizeof(val)); | |
911 | 921 | |
912 | 922 | sockaddr.sin_family = AF_INET; |
913 | 923 | sockaddr.sin_port = htons(port); |
... | ... | @@ -923,7 +933,7 @@ static int gdbserver_open(int port) |
923 | 933 | return -1; |
924 | 934 | } |
925 | 935 | #ifndef CONFIG_USER_ONLY |
926 | - fcntl(fd, F_SETFL, O_NONBLOCK); | |
936 | + socket_set_nonblock(fd); | |
927 | 937 | #endif |
928 | 938 | return fd; |
929 | 939 | } | ... | ... |