llvm-project/lldb/include/lldb
Pavel Labath c3c721222d Fix backtrace of noreturn functions situated at the end of a module
Summary:
When a call instruction is the last instruction in a function, the
backtrace PC will point past the end of the function. We already had
special code to handle that, but we did not handle the case where the PC
ends up outside of the bounds of the module containing the function,
which is a situation that occured in TestNoreturnUnwind on android for
some arch/compiler combinations.

I fix this by adding an argument to Address resolution code which states
that we are ok with addresses pointing to the end of a module/section to
resolve to that module/section.

I create a reproducible test case for this situation by hand-crafting an
executable which has a noreturn function at the end of a module.

Reviewers: jasonmolenda, jingham

Subscribers: lldb-commits

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

llvm-svn: 304976
2017-06-08 13:26:35 +00:00
..
API Added new API to SBStructuredData class 2017-05-29 08:25:46 +00:00
Breakpoint Update StructuredData::String to return StringRefs. 2017-05-12 05:49:54 +00:00
Core Fix backtrace of noreturn functions situated at the end of a module 2017-06-08 13:26:35 +00:00
DataFormatters Rename Error -> Status. 2017-05-12 04:51:55 +00:00
Expression Rename Error -> Status. 2017-05-12 04:51:55 +00:00
Host cmake: Put PROCESS_VM_READV detection results into Config.h 2017-06-02 12:29:08 +00:00
Initialization *** This commit represents a complete reformatting of the LLDB source code 2016-09-06 20:57:50 +00:00
Interpreter Rename Error -> Status. 2017-05-12 04:51:55 +00:00
Symbol [Expression parser] Look up module symbols before hunting globally 2017-05-16 23:46:13 +00:00
Target Fix backtrace of noreturn functions situated at the end of a module 2017-06-08 13:26:35 +00:00
Utility Switch TaskMapOverInt to llvm::function_ref 2017-06-07 16:28:08 +00:00
lldb-defines.h Actually use = delete to mark constructors and operators we want to not exist. Just declaring them as private works, but it can confuse certain tools as it doesn't actually declare intent, and the C++11 way is more expressive anyway, so this is pure win 2016-10-26 18:12:52 +00:00
lldb-enumerations.h Added new API to SBStructuredData class 2017-05-29 08:25:46 +00:00
lldb-forward.h Rename Error -> Status. 2017-05-12 04:51:55 +00:00
lldb-private-defines.h *** This commit represents a complete reformatting of the LLDB source code 2016-09-06 20:57:50 +00:00
lldb-private-enumerations.h Rename Error -> Status. 2017-05-12 04:51:55 +00:00
lldb-private-forward.h *** This commit represents a complete reformatting of the LLDB source code 2016-09-06 20:57:50 +00:00
lldb-private-interfaces.h Rename Error -> Status. 2017-05-12 04:51:55 +00:00
lldb-private-types.h Rename Error -> Status. 2017-05-12 04:51:55 +00:00
lldb-private.h *** This commit represents a complete reformatting of the LLDB source code 2016-09-06 20:57:50 +00:00
lldb-public.h *** This commit represents a complete reformatting of the LLDB source code 2016-09-06 20:57:50 +00:00
lldb-types.h *** This commit represents a complete reformatting of the LLDB source code 2016-09-06 20:57:50 +00:00
lldb-versioning.h *** This commit represents a complete reformatting of the LLDB source code 2016-09-06 20:57:50 +00:00