From: Fred Fish <fnf@fred.ninemoons.com>
To: gdb-patches@sources.redhat.com
Cc: fnf@redhat.com
Subject: [RFA] Accept compiler internal use of memcpy/bcopy for structs
Date: Tue, 08 Jan 2002 09:00:00 -0000 [thread overview]
Message-ID: <200201081658.g08Gwae25774@fred.ninemoons.com> (raw)
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
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: gdb.base/step-test.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.base/step-test.exp,v
retrieving revision 1.3
diff -c -p -r1.3 step-test.exp
*** step-test.exp 2001/03/06 08:21:51 1.3
--- step-test.exp 2002/01/08 16:51:30
*************** 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,244 ----
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"
! gdb_expect {
! -re ".*step-test.exp: arrive here 1.*$gdb_prompt $" {
! pass "large struct by value"
! }
! -re ".*$gdb_prompt $" {
! fail "large struct by value"
! }
! timeout {
! fail "large struct by value (timeout)"
! }
! }
! }
! -re ".*$gdb_prompt $" {
! fail "large struct by value"
! }
! timeout {
! fail "large struct by value (timeout)"
! }
! }
gdb_continue_to_end "step-test.exp"
next reply other threads:[~2002-01-08 17:00 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-01-08 9:00 Fred Fish [this message]
2002-01-08 15:15 ` Michael Snyder
2002-01-10 16:03 ` Michael Snyder
2002-03-25 19:22 ` Fred Fish
2002-03-26 14:46 ` Michael Snyder
2002-03-26 15:24 ` Fernando Nasser
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200201081658.g08Gwae25774@fred.ninemoons.com \
--to=fnf@fred.ninemoons.com \
--cc=fnf@redhat.com \
--cc=gdb-patches@sources.redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox