diff --git a/gdb/jit.c b/gdb/jit.c index 39c17a5ab98..9736f84cf87 100644 --- a/gdb/jit.c +++ b/gdb/jit.c @@ -665,6 +665,8 @@ jit_object_close_impl (struct gdb_symbol_callbacks *cb, objfile *objfile = objfile::make (nullptr, current_program_space, objfile_name.c_str (), OBJF_NOT_FILENAME); + objfile->section_offsets.push_back (0); + objfile->sect_index_text = 0; objfile->per_bfd->gdbarch = priv_data->gdbarch; for (gdb_symtab &symtab : obj->symtabs) diff --git a/gdb/testsuite/gdb.base/jit-reader.c b/gdb/testsuite/gdb.base/jit-reader.c index 414be072a67..78117f04179 100644 --- a/gdb/testsuite/gdb.base/jit-reader.c +++ b/gdb/testsuite/gdb.base/jit-reader.c @@ -62,6 +62,18 @@ read_debug_info (struct gdb_reader_funcs *self, (GDB_CORE_ADDR) symfile->function_stack_mangle.end, "jit_function_stack_mangle"); + /* Add some line table information. This ensures that GDB can handle + accepting this information, and can scan the table. However, this + information is constructed such that none of the tests actually hit any + of these line entries. */ + struct gdb_line_mapping mangle_lines[] = + { + { 1, (GDB_CORE_ADDR) symfile->function_stack_mangle.begin + 0 }, + { 0, (GDB_CORE_ADDR) symfile->function_stack_mangle.begin + 1 }, + }; + int mangle_nlines = sizeof (mangle_lines) / sizeof (mangle_lines[0]); + cbs->line_mapping_add (cbs, symtab, mangle_nlines, mangle_lines); + cbs->block_open (cbs, symtab, NULL, (GDB_CORE_ADDR) symfile->function_add.begin, (GDB_CORE_ADDR) symfile->function_add.end,