]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
gdb/jit: fix jit-reader linetable integrity
authorYang Liu <liuyang22@iscas.ac.cn>
Sun, 22 Dec 2024 16:33:30 +0000 (00:33 +0800)
committerAndrew Burgess <aburgess@redhat.com>
Tue, 14 Jan 2025 18:02:19 +0000 (18:02 +0000)
commitd3685ec080cc5bfb9646cdc1f5ddda0c3da92b76
tree3aefc3df027f534959927f4e5f7bccf1c5641802
parent39c219c58c2937b8c78335f46eb0b12c77c3188a
gdb/jit: fix jit-reader linetable integrity

The custom linetable functionality in GDB's JIT Interface has been broken
since commit 1acc9dca423f78e44553928f0de839b618c13766.

In that commit, linetables were made independent from the objfile, which
requires objfile->section_offsets to be initialized. However, section_offsets
were never initialized in objfiles generated by GDB's JIT Interface
with custom jit-readers, leading to GDB crashes when stepping into JITed code
blocks with the following command already executed:

  jit-reader-load libmygdbjitreader.so

This patch fixes the issue by initializing the minimum section_offsets required
for linetable parsing procedures.

A minimal test is included.  The test sets up some very simple line
table information, which is enough to trigger the bug.  However, the
line table information is crafted such that none of the line table
entries will end up being displayed in GDB's output when the test is
run, as such, none of the expected output actually changes.

It might be nice in the future to extend some of the jit tests to
actually test hitting line table entries added via the jit reader.

Approved-By: Tom Tromey <tom@tromey.com>
gdb/jit.c
gdb/testsuite/gdb.base/jit-reader.c