commit | f6717c26e1069fbc0894fe8b98022580e875dad1 | [log] [tgz] |
---|---|---|
author | Momchil Velikov <momchil.velikov@arm.com> | Mon Jul 24 09:19:32 2017 +0000 |
committer | Momchil Velikov <momchil.velikov@arm.com> | Mon Jul 24 09:19:32 2017 +0000 |
tree | 1b44bdeec92e363806fab3d0c77c6d8447e005b4 | |
parent | 82c7974db48aeaa36b51e364ba5a5cd25b3f4f54 [diff] |
[libunwind] Handle .ARM.exidx tables without sentinel last entry UnwindCursor<A, R>::getInfoFromEHABISection assumes the last entry in the index table never corresponds to a real function. Indeed, GNU ld always inserts an EXIDX_CANTUNWIND entry, containing the end of the .text section. However, the EHABI specification (http://infocenter.arm.com/help/topic/com.arm.doc.ihi0038b/IHI0038B_ehabi.pdf) does not seem to contain text that requires the presence of a sentinel entry. In that sense the libunwind implementation isn't compliant with the specification. This patch makes getInfoFromEHABISection examine the last entry in the index table if upper_bound returns the end iterator. Fixes https://bugs.llvm.org/show_bug.cgi?id=31091 Differential revision: https://reviews.llvm.org/D35265 git-svn-id: https://llvm.org/svn/llvm-project/libunwind/trunk@308871 91177308-0d34-0410-b5e6-96231b3b80d8