From 03cf27011fa85a21112cf21ac0765ce472b561af Mon Sep 17 00:00:00 2001 From: Sanjoy Das Date: Thu, 6 Sep 2012 04:52:28 +0530 Subject: [PATCH 1/3] Fix segfault when unwinding JIT frames using a custom reader. Issue http://sourceware.org/bugzilla/show_bug.cgi?id=14550 --- gdb/ChangeLog | 7 +++++++ gdb/jit.c | 14 ++++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index d9a2e45..b619953 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2012-01-14 Sanjoy Das + + PR gdb/14550 + + * jit.c (finalize_symtab): Ensure that only the global block has a + NULL superblock. + 2013-01-13 Jan Kratochvil * parse.c (parse_exp_in_context): New variable inner_chain. Call diff --git a/gdb/jit.c b/gdb/jit.c index a930f74..f542f9e 100644 --- a/gdb/jit.c +++ b/gdb/jit.c @@ -724,8 +724,18 @@ finalize_symtab (struct gdb_symtab *stab, struct objfile *objfile) gdb_block_iter = gdb_block_iter->next) { if (gdb_block_iter->parent != NULL) - BLOCK_SUPERBLOCK (gdb_block_iter->real_block) = - gdb_block_iter->parent->real_block; + { + /* If the plugin specifically mentioned a parent block, we + use that. */ + BLOCK_SUPERBLOCK (gdb_block_iter->real_block) = + gdb_block_iter->parent->real_block; + } + else + { + /* And if not, we set a default parent block. */ + BLOCK_SUPERBLOCK (gdb_block_iter->real_block) = + BLOCKVECTOR_BLOCK (symtab->blockvector, STATIC_BLOCK); + } } /* Free memory. */ -- 1.7.10.4