[RFA/RFC Prec] Add Linux AMD64 process record support second version, (64 bits system call support) 2/3

Michael Snyder msnyder@vmware.com
Mon Jul 13 02:26:00 GMT 2009


Hui Zhu wrote:
> The old linux-record.c just support 32 bits system call and some other
> problem.  This patch fix them all.
> 
> 2009-07-07  Hui Zhu  <teawater@gmail.com>
> 
>         Add process record Linux system call 64 bits support.
> 
>         * linux-record.h (linux_record_tdep): Add size_pointer,
>         size_size_t, size_iovec and arg6.
>         * i386-linux-tdep.c (i386_linux_init_abi): Ditto.
>         (i386_linux_intx80_sysenter_record): Add a check for system
>         call number.
>         * linux-record.c (record_linux_system_call): Make this
>         function support 64 bits.

Again, preliminary, mostly whitespace formatting comments.

> @@ -371,8 +371,15 @@ i386_linux_intx80_sysenter_record (struc
> 
>    regcache_raw_read (regcache, I386_EAX_REGNUM, (gdb_byte *)&tmpu32);
> 
> +  if (tmpu32 > 499)
> +    {
> +      printf_unfiltered (_("Process record and replay target doesn't "
> +                           "support syscall number %u\n"), tmpu32);
> +      return -1;
> +    }
> +
>    ret = record_linux_system_call (tmpu32, regcache,
> -                                 &i386_linux_record_tdep);
> +                                  &i386_linux_record_tdep);

This line is just a change between spaces and tabs.
We like to have whitespace-only changes submitted separately.

Just add -w and/or -b to your diff flags, and these will disappear.

> @@ -481,6 +488,7 @@ i386_linux_init_abi (struct gdbarch_info
>    /* Initialize the i386_linux_record_tdep.  */
>    /* These values are the size of the type that will be used in a system
>       call.  They are obtained from Linux Kernel source.  */
> +  i386_linux_record_tdep.size_pointer = 4;

Can't you use gdbarch_ptr_bit(gdbarch) for this?
Just trying to avoid duplication.

> +
> +  a = alloca (tdep->size_int);
> +
> +  if (record_arch_list_add_mem ((CORE_ADDR)len, tdep->size_int))
> +    return -1;
> +
> +  /* Get the addrlen.  */
> +  if (target_read_memory ((CORE_ADDR)len, a, tdep->size_int))

Space after cast.  There are a whole lot like this in this file.

> +    {
> +      if (record_debug)
> +        fprintf_unfiltered (gdb_stdlog,
> +                            "Process record: error reading "
> +                            "memory at addr = 0x%s len = %d.\n",
> +                            phex_nz (len, tdep->size_pointer),
> +                            tdep->size_int);
> +        return -1;
> +    }
> +  addrlen = (int)extract_unsigned_integer(a, tdep->size_int, byte_order);

Space after function name.  And after cast.
Search for "extract_unsigned_integer", there are several like this.





More information about the Gdb-patches mailing list