Sorry I forget the patch. On Tue, May 5, 2009 at 21:07, Hui Zhu wrote: > Hi guys, > > This patch will make linux-record can check if the sys_brk will > release the memory or not.  If memory will be released, gdb will query > to user. > > For example: > cat m.c > #include > #include > #include > #include > #include > #include > #include > #include > #include > > int > main(int argc,char *argv[],char *envp[]) > { >        sbrk (10); >        sbrk (-10); > >        return (0); > } > > gdb m > GNU gdb (GDB) 6.8.50.20090505-cvs > Copyright (C) 2009 Free Software Foundation, Inc. > License GPLv3+: GNU GPL version 3 or later > This is free software: you are free to change and redistribute it. > There is NO WARRANTY, to the extent permitted by law.  Type "show copying" > and "show warranty" for details. > This GDB was configured as "i686-pc-linux-gnu". > For bug reporting instructions, please see: > ... > (gdb) start > Temporary breakpoint 1 at 0x8048385: file m.c, line 14. > Starting program: /home/teawater/gdb/m > > Temporary breakpoint 1, main (argc=, argv= optimized out>, >    envp=) at m.c:14 > 14              sbrk (10); > (gdb) record > (gdb) n > 15              sbrk (-10); > (gdb) > The next instruction is syscall brk.  It will release the memory that > will cause process record target get error.  Do you want to stop the > inferior?([y] or n) > Process record: inferior program stopped. > > Program received signal SIGTRAP, Trace/breakpoint trap. > 0xb7fe3405 in __kernel_vsyscall () > > > 2009-05-05  Hui Zhu   > >        Add a architecture process record and replay reset interface >        and i386 and i386-linux record and replay reset functions. > >        * gdbarch.sh (process_record_reset): This interface point to >        the function that reset the architecture process record and >        replay. >        * record.c (record_open): Call process_record_reset. >        * i386-tdep.c (i386_linux_record_reset): New function. Call >        tdep interface "i386_record_reset". >        (i386_gdbarch_init): Set "i386_linux_record_reset" to GDBARCH >        "process_record_reset" interface. >        * i386-tdep.h (gdbarch_tdep): New function pointer >        i386_record_reset that point to the function that can reset >        the process record. >        * i386-linux-tdep.c (i386_linux_record_reset): New function. >        Call record_linux_reset. >        (i386_linux_init_abi): Set "i386_linux_record_reset" to >        "i386_record_reset". > >        Check Linux sys_brk release memory in process record >        and replay. > >        * linux-record.c (record_top_of_heap): New variable. >        The current top of heap of inferior. >        (record_linux_reset): New function.  The reset function of >        Linux process record and replay.  It will reset the value >        of record_top_of_heap. >        (record_linux_system_call): Add the sys_brk check code. >        If this sys_brk will release the memory, query to user. >        * linux-record.h (record_linux_reset): New function extern. > > > Thanks, > Hui >