[lldb/Symbol] Fix column breakpoint `move_to_nearest_code` match
authorMed Ismail Bennani <medismail.bennani@gmail.com>
Wed, 5 May 2021 04:28:28 +0000 (04:28 +0000)
committerMed Ismail Bennani <medismail.bennani@gmail.com>
Wed, 5 May 2021 05:07:50 +0000 (05:07 +0000)
commit35ecfda01ccd19e1222c065056f68bbd2575e4ac
treeafd4b5dede2e612d74e65f54ba6d789c67039633
parent72cefd50e552ce4e44f98d44779b326191204143
[lldb/Symbol] Fix column breakpoint `move_to_nearest_code` match

This patch fixes the column symbol resolution when creating a breakpoint
with the `move_to_nearest_code` flag set.

In order to achieve this, the patch adds column information handling in
the `LineTable`'s `LineEntry` finder. After experimenting a little, it
turns out the most natural approach in case of an inaccurate column match,
is to move backward and match the previous `LineEntry` rather than going
forward like we do with simple line breakpoints.

The patch also reflows the function to reduce code duplication.

Finally, it updates the `BreakpointResolver` heuristic to align it with
the `LineTable` method.

rdar://73218201

Differential Revision: https://reviews.llvm.org/D101221

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
lldb/include/lldb/Symbol/LineTable.h
lldb/source/Breakpoint/BreakpointResolver.cpp
lldb/source/Symbol/LineTable.cpp
lldb/test/API/functionalities/breakpoint/breakpoint_by_line_and_column/Makefile
lldb/test/API/functionalities/breakpoint/breakpoint_by_line_and_column/TestBreakpointByLineAndColumn.py
lldb/test/API/functionalities/breakpoint/breakpoint_by_line_and_column/main.c [deleted file]
lldb/test/API/functionalities/breakpoint/breakpoint_by_line_and_column/main.cpp [new file with mode: 0644]