aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDoug Evans <dje@google.com>2012-06-18 20:31:26 +0000
committerDoug Evans <dje@google.com>2012-06-18 20:31:26 +0000
commit6ac9ef80f54f5364a49ad11fe7d6bd8cb97a54a6 (patch)
tree0cc2bdb7bc327283de29fde7a7538b65caa4f17d
parent4cd182151a5fab5b5ac3a14460534c059ed5e22c (diff)
downloadfsf-binutils-gdb-6ac9ef80f54f5364a49ad11fe7d6bd8cb97a54a6.zip
fsf-binutils-gdb-6ac9ef80f54f5364a49ad11fe7d6bd8cb97a54a6.tar.gz
fsf-binutils-gdb-6ac9ef80f54f5364a49ad11fe7d6bd8cb97a54a6.tar.bz2
* block.c (find_block_in_blockvector): Make explicit the fact that we
ignore GLOBAL_BLOCK.
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/block.c11
2 files changed, 13 insertions, 3 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 2eea104..821c8d0 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2012-06-18 Doug Evans <dje@google.com>
+
+ * block.c (find_block_in_blockvector): Make explicit the fact that we
+ ignore GLOBAL_BLOCK.
+
2012-06-18 Tom Tromey <tromey@redhat.com>
* c-exp.y (operator): Remove trailing space after "delete" and
diff --git a/gdb/block.c b/gdb/block.c
index 1503730..a0f82ec 100644
--- a/gdb/block.c
+++ b/gdb/block.c
@@ -118,8 +118,13 @@ find_block_in_blockvector (struct blockvector *bl, CORE_ADDR pc)
return addrmap_find (BLOCKVECTOR_MAP (bl), pc);
/* Otherwise, use binary search to find the last block that starts
- before PC. */
- bot = 0;
+ before PC.
+ Note: GLOBAL_BLOCK is block 0, STATIC_BLOCK is block 1.
+ They both have the same START,END values.
+ Historically this code would choose STATIC_BLOCK over GLOBAL_BLOCK but the
+ fact that this choice was made was subtle, now we make it explicit. */
+ gdb_assert (BLOCKVECTOR_NBLOCKS (bl) >= 2);
+ bot = STATIC_BLOCK;
top = BLOCKVECTOR_NBLOCKS (bl);
while (top - bot > 1)
@@ -134,7 +139,7 @@ find_block_in_blockvector (struct blockvector *bl, CORE_ADDR pc)
/* Now search backward for a block that ends after PC. */
- while (bot >= 0)
+ while (bot >= STATIC_BLOCK)
{
b = BLOCKVECTOR_BLOCK (bl, bot);
if (BLOCK_END (b) > pc)