This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [RFA] Accept compiler internal use of memcpy/bcopy for structs


Fred Fish wrote:
> 
> For cases where the compiler uses memcpy/bcopy to copy structs around,
> and those calls are found in a library for which debugging line number
> information is available, attempting to step into a function where a
> large struct is passed by value will first stop at the memcpy/bcopy
> call that the compiler calls prior to the user function.
> 
> The comment in step-test.exp says that "opinion is bitterly divided
> about whether this is the right behavior for GDB or not".  Regardless
> of which opinion you have, you would probably have to agree that gdb
> is currently behaving as designed, in the absence of additional
> code to not stop in functions used internally by the compiler.  Thus
> I believe the correct behavior of the test suite is to accept the
> cases where gdb stops in memcpy/bcopy.
> 
> Here is a patch to fix the testsuite.

Fred, 

Would you please try the attached modification of your patch, 
and let me know if it is acceptable?

> 2002-01-08  Fred Fish  <fnf@redhat.com>
> 
>         * gdb.base/step-test.exp: Accept stopping in memcpy/bcopy when we
>         have debugging info for those functions and the compiler uses them
>         internally to copy structs around.


Index: step-test.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.base/step-test.exp,v
retrieving revision 1.3
diff -c -3 -p -r1.3 step-test.exp
*** step-test.exp       2001/03/06 08:21:51     1.3
--- step-test.exp       2002/01/10 23:58:15
*************** gdb_test \
*** 212,220 ****
  gdb_test "continue" \
           ".*Breakpoint ${decimal},.*large_struct_by_value.*" \
         "run to pass large struct"
! gdb_test "step" \
!          ".*step-test.exp: arrive here 1.*" \
!          "large struct by value"
  
  gdb_continue_to_end "step-test.exp"
  
--- 212,235 ----
  gdb_test "continue" \
           ".*Breakpoint ${decimal},.*large_struct_by_value.*" \
         "run to pass large struct"
! send_gdb "step\n"
! gdb_expect {
!     -re ".*step-test.exp: arrive here 1.*$gdb_prompt $" {
!       pass "large struct by value"
!     }
!     -re ".*(memcpy|bcopy).*$gdb_prompt $" {
!       send_gdb "finish\n" ; gdb_expect -re "$gdb_prompt $"
!       send_gdb "step\n"
!       exp_continue
!       }
!     }
!     -re ".*$gdb_prompt $" {
!       fail "large struct by value"
!     }
!     timeout {
!       fail "large struct by value (timeout)"
!     }
! }
  
  gdb_continue_to_end "step-test.exp"


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]