- {
- case RECORD_SYS_SOCKET:
- case RECORD_SYS_BIND:
- case RECORD_SYS_CONNECT:
- case RECORD_SYS_LISTEN:
- break;
- case RECORD_SYS_ACCEPT:
- case RECORD_SYS_GETSOCKNAME:
- case RECORD_SYS_GETPEERNAME:
- {
- regcache_raw_read_unsigned (regcache, tdep->arg2,
- &tmpulongest);
- if (tmpulongest)
- {
- gdb_byte *a = alloca (tdep->size_ulong * 2);
- ULONGEST len;
-
- tmpulongest += tdep->size_ulong;
- if (target_read_memory ((CORE_ADDR) tmpulongest, a,
- tdep->size_ulong * 2))
- {
- if (record_debug)
- fprintf_unfiltered (gdb_stdlog,
- "Process record: error reading "
- "memory at addr = 0x%s len = %d.\n",
- OUTPUT_REG (tmpulongest, tdep->arg2),
- tdep->size_ulong * 2);
- return -1;
- }
- tmpulongest = extract_unsigned_integer (a,
- tdep->size_ulong,
- byte_order);
- len = extract_unsigned_integer (a + tdep->size_ulong,
- tdep->size_ulong, byte_order);
- if (record_linux_sockaddr (regcache, tdep, tmpulongest, len))
- return -1;
- }
- }
- break;
-
- case RECORD_SYS_SOCKETPAIR:
- {
- gdb_byte *a = alloca (tdep->size_ulong);
-
- regcache_raw_read_unsigned (regcache, tdep->arg2,
- &tmpulongest);
- if (tmpulongest)
- {
- tmpulongest += tdep->size_ulong * 3;
- if (target_read_memory ((CORE_ADDR) tmpulongest, a,
- tdep->size_ulong))
- {
- if (record_debug)
- fprintf_unfiltered (gdb_stdlog,
- "Process record: error reading "
- "memory at addr = 0x%s len = %d.\n",
- OUTPUT_REG (tmpulongest, tdep->arg2),
- tdep->size_ulong);
- return -1;
- }
- tmpaddr
- = (CORE_ADDR) extract_unsigned_integer (a, tdep->size_ulong,
- byte_order);
- if (record_arch_list_add_mem (tmpaddr, tdep->size_int))
- return -1;
- }
- }
- break;
- case RECORD_SYS_SEND:
- case RECORD_SYS_SENDTO:
- break;
- case RECORD_SYS_RECVFROM:
- regcache_raw_read_unsigned (regcache, tdep->arg2,
- &tmpulongest);
- if (tmpulongest)
- {
- gdb_byte *a = alloca (tdep->size_ulong * 2);
- ULONGEST len;
-
- tmpulongest += tdep->size_ulong * 4;
- if (target_read_memory ((CORE_ADDR) tmpulongest, a,
- tdep->size_ulong * 2))
- {
- if (record_debug)
- fprintf_unfiltered (gdb_stdlog,
- "Process record: error reading "
- "memory at addr = 0x%s len = %d.\n",
- OUTPUT_REG (tmpulongest, tdep->arg2),
- tdep->size_ulong * 2);
- return -1;
- }
- tmpulongest = extract_unsigned_integer (a, tdep->size_ulong,
- byte_order);
- len = extract_unsigned_integer (a + tdep->size_ulong,
- tdep->size_ulong, byte_order);
- if (record_linux_sockaddr (regcache, tdep, tmpulongest, len))
- return -1;
- }
- case RECORD_SYS_RECV:
- regcache_raw_read_unsigned (regcache, tdep->arg2,
- &tmpulongest);
- if (tmpulongest)
- {
- gdb_byte *a = alloca (tdep->size_ulong * 2);
-
- tmpulongest += tdep->size_ulong;
- if (target_read_memory ((CORE_ADDR) tmpulongest, a,
- tdep->size_ulong))
- {
- if (record_debug)
- fprintf_unfiltered (gdb_stdlog,
- "Process record: error reading "
- "memory at addr = 0x%s len = %d.\n",
- OUTPUT_REG (tmpulongest, tdep->arg2),
- tdep->size_ulong);
- return -1;
- }
- tmpulongest = extract_unsigned_integer (a, tdep->size_ulong,
- byte_order);
- if (tmpulongest)
- {
- a += tdep->size_ulong;
- tmpint = (int) extract_unsigned_integer (a, tdep->size_ulong,
- byte_order);
- if (record_arch_list_add_mem ((CORE_ADDR) tmpulongest,
- tmpint))
- return -1;
- }
- }
- break;
- case RECORD_SYS_SHUTDOWN:
- case RECORD_SYS_SETSOCKOPT:
- break;
- case RECORD_SYS_GETSOCKOPT:
- {
- gdb_byte *a = alloca (tdep->size_ulong * 2);
- gdb_byte *av = alloca (tdep->size_int);
-
- regcache_raw_read_unsigned (regcache, tdep->arg2,
- &tmpulongest);
- if (tmpulongest)
- {
- tmpulongest += tdep->size_ulong * 3;
- if (target_read_memory ((CORE_ADDR) tmpulongest, a,
- tdep->size_ulong * 2))
- {
- if (record_debug)
- fprintf_unfiltered (gdb_stdlog,
- "Process record: error reading "
- "memory at addr = 0x%s len = %d.\n",
- OUTPUT_REG (tmpulongest, tdep->arg2),
- tdep->size_ulong * 2);
- return -1;
- }
- tmpulongest = extract_unsigned_integer (a + tdep->size_ulong,
- tdep->size_ulong,
- byte_order);
- if (tmpulongest)
- {
- if (target_read_memory ((CORE_ADDR) tmpulongest, av,
- tdep->size_int))
- {
- if (record_debug)
- fprintf_unfiltered (gdb_stdlog,
- "Process record: error reading "
- "memory at addr = 0x%s "
- "len = %d.\n",
- phex_nz (tmpulongest,
- tdep->size_ulong),
- tdep->size_int);
- return -1;
- }
- tmpaddr
- = (CORE_ADDR) extract_unsigned_integer (a,
- tdep->size_ulong,
- byte_order);
- tmpint = (int) extract_unsigned_integer (av,
- tdep->size_int,
- byte_order);
- if (record_arch_list_add_mem (tmpaddr, tmpint))
- return -1;
- a += tdep->size_ulong;
- tmpaddr
- = (CORE_ADDR) extract_unsigned_integer (a,
- tdep->size_ulong,
- byte_order);
- if (record_arch_list_add_mem (tmpaddr, tdep->size_int))
- return -1;
- }
- }
- }
- break;
- case RECORD_SYS_SENDMSG:
- break;
- case RECORD_SYS_RECVMSG:
- {
- gdb_byte *a = alloca (tdep->size_ulong);
-
- regcache_raw_read_unsigned (regcache, tdep->arg2,
- &tmpulongest);
- if (tmpulongest)
- {
- tmpulongest += tdep->size_ulong;
- if (target_read_memory ((CORE_ADDR) tmpulongest, a,
- tdep->size_ulong))
- {
- if (record_debug)
- fprintf_unfiltered (gdb_stdlog,
- "Process record: error reading "
- "memory at addr = 0x%s len = %d.\n",
- OUTPUT_REG (tmpulongest, tdep->arg2),
- tdep->size_ulong);
- return -1;
- }
- tmpulongest = extract_unsigned_integer (a, tdep->size_ulong,
- byte_order);
- if (record_linux_msghdr (regcache, tdep, tmpulongest))
- return -1;
- }
- }
- break;
- default:
- printf_unfiltered (_("Process record and replay target "
- "doesn't support socketcall call 0x%s\n"),
- OUTPUT_REG (tmpulongest, tdep->arg1));
- return -1;
- break;
- }
+ {
+ case RECORD_SYS_SOCKET:
+ case RECORD_SYS_BIND:
+ case RECORD_SYS_CONNECT:
+ case RECORD_SYS_LISTEN:
+ break;
+ case RECORD_SYS_ACCEPT:
+ case RECORD_SYS_GETSOCKNAME:
+ case RECORD_SYS_GETPEERNAME:
+ {
+ regcache_raw_read_unsigned (regcache, tdep->arg2,
+ &tmpulongest);
+ if (tmpulongest)
+ {
+ gdb_byte *a = (gdb_byte *) alloca (tdep->size_ulong * 2);
+ ULONGEST len;
+
+ tmpulongest += tdep->size_ulong;
+ if (target_read_memory ((CORE_ADDR) tmpulongest, a,
+ tdep->size_ulong * 2))
+ {
+ if (record_debug)
+ fprintf_unfiltered (gdb_stdlog,
+ "Process record: error reading "
+ "memory at addr = 0x%s len = %d.\n",
+ OUTPUT_REG (tmpulongest, tdep->arg2),
+ tdep->size_ulong * 2);
+ return -1;
+ }
+ tmpulongest = extract_unsigned_integer (a,
+ tdep->size_ulong,
+ byte_order);
+ len = extract_unsigned_integer (a + tdep->size_ulong,
+ tdep->size_ulong, byte_order);
+ if (record_linux_sockaddr (regcache, tdep, tmpulongest, len))
+ return -1;
+ }
+ }
+ break;
+
+ case RECORD_SYS_SOCKETPAIR:
+ {
+ gdb_byte *a = (gdb_byte *) alloca (tdep->size_ulong);
+
+ regcache_raw_read_unsigned (regcache, tdep->arg2,
+ &tmpulongest);
+ if (tmpulongest)
+ {
+ tmpulongest += tdep->size_ulong * 3;
+ if (target_read_memory ((CORE_ADDR) tmpulongest, a,
+ tdep->size_ulong))
+ {
+ if (record_debug)
+ fprintf_unfiltered (gdb_stdlog,
+ "Process record: error reading "
+ "memory at addr = 0x%s len = %d.\n",
+ OUTPUT_REG (tmpulongest, tdep->arg2),
+ tdep->size_ulong);
+ return -1;
+ }
+ tmpaddr
+ = (CORE_ADDR) extract_unsigned_integer (a, tdep->size_ulong,
+ byte_order);
+ if (record_full_arch_list_add_mem (tmpaddr, tdep->size_int))
+ return -1;
+ }
+ }
+ break;
+ case RECORD_SYS_SEND:
+ case RECORD_SYS_SENDTO:
+ break;
+ case RECORD_SYS_RECVFROM:
+ regcache_raw_read_unsigned (regcache, tdep->arg2,
+ &tmpulongest);
+ if (tmpulongest)
+ {
+ gdb_byte *a = (gdb_byte *) alloca (tdep->size_ulong * 2);
+ ULONGEST len;
+
+ tmpulongest += tdep->size_ulong * 4;
+ if (target_read_memory ((CORE_ADDR) tmpulongest, a,
+ tdep->size_ulong * 2))
+ {
+ if (record_debug)
+ fprintf_unfiltered (gdb_stdlog,
+ "Process record: error reading "
+ "memory at addr = 0x%s len = %d.\n",
+ OUTPUT_REG (tmpulongest, tdep->arg2),
+ tdep->size_ulong * 2);
+ return -1;
+ }
+ tmpulongest = extract_unsigned_integer (a, tdep->size_ulong,
+ byte_order);
+ len = extract_unsigned_integer (a + tdep->size_ulong,
+ tdep->size_ulong, byte_order);
+ if (record_linux_sockaddr (regcache, tdep, tmpulongest, len))
+ return -1;
+ }
+ break;
+ case RECORD_SYS_RECV:
+ regcache_raw_read_unsigned (regcache, tdep->arg2,
+ &tmpulongest);
+ if (tmpulongest)
+ {
+ gdb_byte *a = (gdb_byte *) alloca (tdep->size_ulong * 2);
+
+ tmpulongest += tdep->size_ulong;
+ if (target_read_memory ((CORE_ADDR) tmpulongest, a,
+ tdep->size_ulong))
+ {
+ if (record_debug)
+ fprintf_unfiltered (gdb_stdlog,
+ "Process record: error reading "
+ "memory at addr = 0x%s len = %d.\n",
+ OUTPUT_REG (tmpulongest, tdep->arg2),
+ tdep->size_ulong);
+ return -1;
+ }
+ tmpulongest = extract_unsigned_integer (a, tdep->size_ulong,
+ byte_order);
+ if (tmpulongest)
+ {
+ a += tdep->size_ulong;
+ tmpint = (int) extract_unsigned_integer (a, tdep->size_ulong,
+ byte_order);
+ if (record_full_arch_list_add_mem ((CORE_ADDR) tmpulongest,
+ tmpint))
+ return -1;
+ }
+ }
+ break;
+ case RECORD_SYS_SHUTDOWN:
+ case RECORD_SYS_SETSOCKOPT:
+ break;
+ case RECORD_SYS_GETSOCKOPT:
+ {
+ gdb_byte *a = (gdb_byte *) alloca (tdep->size_ulong * 2);
+ gdb_byte *av = (gdb_byte *) alloca (tdep->size_int);
+
+ regcache_raw_read_unsigned (regcache, tdep->arg2,
+ &tmpulongest);
+ if (tmpulongest)
+ {
+ tmpulongest += tdep->size_ulong * 3;
+ if (target_read_memory ((CORE_ADDR) tmpulongest, a,
+ tdep->size_ulong * 2))
+ {
+ if (record_debug)
+ fprintf_unfiltered (gdb_stdlog,
+ "Process record: error reading "
+ "memory at addr = 0x%s len = %d.\n",
+ OUTPUT_REG (tmpulongest, tdep->arg2),
+ tdep->size_ulong * 2);
+ return -1;
+ }
+ tmpulongest = extract_unsigned_integer (a + tdep->size_ulong,
+ tdep->size_ulong,
+ byte_order);
+ if (tmpulongest)
+ {
+ if (target_read_memory ((CORE_ADDR) tmpulongest, av,
+ tdep->size_int))
+ {
+ if (record_debug)
+ fprintf_unfiltered (gdb_stdlog,
+ "Process record: error reading "
+ "memory at addr = 0x%s "
+ "len = %d.\n",
+ phex_nz (tmpulongest,
+ tdep->size_ulong),
+ tdep->size_int);
+ return -1;
+ }
+ tmpaddr
+ = (CORE_ADDR) extract_unsigned_integer (a,
+ tdep->size_ulong,
+ byte_order);
+ tmpint = (int) extract_unsigned_integer (av,
+ tdep->size_int,
+ byte_order);
+ if (record_full_arch_list_add_mem (tmpaddr, tmpint))
+ return -1;
+ a += tdep->size_ulong;
+ tmpaddr
+ = (CORE_ADDR) extract_unsigned_integer (a,
+ tdep->size_ulong,
+ byte_order);
+ if (record_full_arch_list_add_mem (tmpaddr,
+ tdep->size_int))
+ return -1;
+ }
+ }
+ }
+ break;
+ case RECORD_SYS_SENDMSG:
+ break;
+ case RECORD_SYS_RECVMSG:
+ {
+ gdb_byte *a = (gdb_byte *) alloca (tdep->size_ulong);
+
+ regcache_raw_read_unsigned (regcache, tdep->arg2,
+ &tmpulongest);
+ if (tmpulongest)
+ {
+ tmpulongest += tdep->size_ulong;
+ if (target_read_memory ((CORE_ADDR) tmpulongest, a,
+ tdep->size_ulong))
+ {
+ if (record_debug)
+ fprintf_unfiltered (gdb_stdlog,
+ "Process record: error reading "
+ "memory at addr = 0x%s len = %d.\n",
+ OUTPUT_REG (tmpulongest, tdep->arg2),
+ tdep->size_ulong);
+ return -1;
+ }
+ tmpulongest = extract_unsigned_integer (a, tdep->size_ulong,
+ byte_order);
+ if (record_linux_msghdr (regcache, tdep, tmpulongest))
+ return -1;
+ }
+ }
+ break;
+ default:
+ printf_unfiltered (_("Process record and replay target "
+ "doesn't support socketcall call 0x%s\n"),
+ OUTPUT_REG (tmpulongest, tdep->arg1));
+ return -1;
+ break;
+ }