diff options
author | Pedro Alves <palves@redhat.com> | 2011-02-16 12:59:05 +0000 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2011-02-16 12:59:05 +0000 |
commit | 08807d5afd29a5dba40d31cd28a78af64e4fae15 (patch) | |
tree | 10e476c3c3af128b54a77341cec87444a5fab9fd | |
parent | fb68ae733b393f6a6b1b9b92f2118f55908e7171 (diff) | |
download | gdb-08807d5afd29a5dba40d31cd28a78af64e4fae15.zip gdb-08807d5afd29a5dba40d31cd28a78af64e4fae15.tar.gz gdb-08807d5afd29a5dba40d31cd28a78af64e4fae15.tar.bz2 |
2011-02-16 Pedro Alves <pedro@codesourcery.com>
Jan Kratochvil <jan.kratochvil@redhat.com>
gdb/
* tracepoint.c (memrange_sortmerge): Fix list A's end calculation.
2011-02-16 Pedro Alves <pedro@codesourcery.com>
gdb/testsuite/
* collection.c (globalarr2): New global.
(main): Initialize it before collecting, and and clear it
afterwards.
* collection.exp (gdb_collect_globals_test): Test collecting
overlapping memory ranges.
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 8 | ||||
-rw-r--r-- | gdb/testsuite/gdb.trace/collection.c | 6 | ||||
-rw-r--r-- | gdb/testsuite/gdb.trace/collection.exp | 24 | ||||
-rw-r--r-- | gdb/tracepoint.c | 3 |
5 files changed, 45 insertions, 2 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 2ba8ef0..6b92f5d 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,6 +1,12 @@ 2011-02-16 Pedro Alves <pedro@codesourcery.com> Jan Kratochvil <jan.kratochvil@redhat.com> + gdb/ + * tracepoint.c (memrange_sortmerge): Fix list A's end calculation. + +2011-02-16 Pedro Alves <pedro@codesourcery.com> + Jan Kratochvil <jan.kratochvil@redhat.com> + * value.c (value_contents_copy_raw): Extend describing comment. Assert that the destination contents we're overwriting are wholly available. diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 8f79acd..ecec229 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2011-02-16 Pedro Alves <pedro@codesourcery.com> + + * collection.c (globalarr2): New global. + (main): Initialize it before collecting, and and clear it + afterwards. + * collection.exp (gdb_collect_globals_test): Test collecting + overlapping memory ranges. + 2011-02-15 Michael Snyder <msnyder@vmware.com> * gdb.base/default.exp: Add tests for thread commands. diff --git a/gdb/testsuite/gdb.trace/collection.c b/gdb/testsuite/gdb.trace/collection.c index 4a58170..422b737 100644 --- a/gdb/testsuite/gdb.trace/collection.c +++ b/gdb/testsuite/gdb.trace/collection.c @@ -26,6 +26,7 @@ double globald; test_struct globalstruct; test_struct *globalp; int globalarr[16]; +int globalarr2[4]; struct global_pieces { unsigned int a; @@ -237,6 +238,9 @@ main (argc, argv, envp) for (i = 0; i < 15; i++) globalarr[i] = i; + for (i = 0; i < 4; i++) + globalarr2[i] = i; + mystruct.memberc = 101; mystruct.memberi = 102; mystruct.memberf = 103.3; @@ -283,6 +287,8 @@ main (argc, argv, envp) globalp = 0; for (i = 0; i < 15; i++) globalarr[i] = 0; + for (i = 0; i < 4; i++) + globalarr2[i] = 0; end (); return 0; diff --git a/gdb/testsuite/gdb.trace/collection.exp b/gdb/testsuite/gdb.trace/collection.exp index 4e0a30d..c966f2f 100644 --- a/gdb/testsuite/gdb.trace/collection.exp +++ b/gdb/testsuite/gdb.trace/collection.exp @@ -457,13 +457,29 @@ proc gdb_collect_globals_test { } { } } + # Use use this to test collecting overlapping memory ranges + # (making use of UNOP_MEMVAL, as objects don't usually overlap + # other objects). Note that globalarr2 should not be collected in + # any other way so that a regression test below can be effective. + + set globalarr2_addr "" + set test "get address of globalarr2" + gdb_test_multiple "p /x &globalarr2" $test { + -re " = (0x\[0-9a-f\]+)\r\n$gdb_prompt $" { + set globalarr2_addr $expect_out(1,string) + pass $test + } + } + gdb_test "trace $testline" \ "Tracepoint \[0-9\]+ at .*" \ "collect globals: set tracepoint" gdb_trace_setactions "collect globals: define actions" \ "" \ "collect globalc, globali, globalf, globald" "^$" \ - "collect globalstruct, globalp, globalarr" "^$" + "collect globalstruct, globalp, globalarr" "^$" \ + "collect \{int \[4\]\}$globalarr2_addr" "^$" \ + "collect \{int \[2\]\}$globalarr2_addr" "^$" # Begin the test. run_trace_experiment "globals" globals_test_func @@ -508,6 +524,12 @@ proc gdb_collect_globals_test { } { "\\$\[0-9\]+ = 3$cr" \ "collect globals: collected global array element #3" + # Check that we didn't mess up sort&merging memory ranges to + # collect. + gdb_test "print globalarr2" \ + "\\$\[0-9\]+ = \\{0, 1, 2, 3\\}$cr" \ + "collect globals: collected global array 2" + gdb_test "tfind none" \ "#0 end .*" \ "collect globals: cease trace debugging" diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c index 4389f12..2d675ce 100644 --- a/gdb/tracepoint.c +++ b/gdb/tracepoint.c @@ -846,7 +846,8 @@ memrange_sortmerge (struct collection_list *memranges) if (memranges->list[a].type == memranges->list[b].type && memranges->list[b].start <= memranges->list[a].end) { - memranges->list[a].end = memranges->list[b].end; + if (memranges->list[b].end > memranges->list[a].end) + memranges->list[a].end = memranges->list[b].end; continue; /* next b, same a */ } a++; /* next a */ |