summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorDan Albert <danalbert@google.com>2014-10-13 21:01:30 +0000
committerDan Albert <danalbert@google.com>2014-10-13 21:01:30 +0000
commit3a67a2df19e40f60ca7ad772766d246866985360 (patch)
treee3c39524ceeca9bae594502e740fe125352f6787 /include
parent5660f752e7eebc1b2cfd62ed1c1c12da75efc727 (diff)
Correctly export _Unwind_[GS]et(GR|IP) for EHABI.
These need to have normal linkage instead of being static inline as many libraries expect to be able to declare these and have the linker find them rather than needing to include the header. http://mentorembedded.github.io/cxx-abi/abi-eh.html Also clean up some warnings while I'm here. Reviewers: jroelofs, kledzik Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D5754 git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@219629 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r--include/unwind.h26
1 files changed, 1 insertions, 25 deletions
diff --git a/include/unwind.h b/include/unwind.h
index dd82bc9..1e517b6 100644
--- a/include/unwind.h
+++ b/include/unwind.h
@@ -206,37 +206,13 @@ extern _Unwind_VRS_Result
_Unwind_VRS_Pop(_Unwind_Context *context, _Unwind_VRS_RegClass regclass,
uint32_t discriminator,
_Unwind_VRS_DataRepresentation representation);
+#endif
-static inline uintptr_t _Unwind_GetGR(struct _Unwind_Context* context,
- int index) {
- uintptr_t value = 0;
- _Unwind_VRS_Get(context, _UVRSC_CORE, (uint32_t)index, _UVRSD_UINT32, &value);
- return value;
-}
-
-static inline void _Unwind_SetGR(struct _Unwind_Context* context, int index,
- uintptr_t new_value) {
- _Unwind_VRS_Set(context, _UVRSC_CORE, (uint32_t)index,
- _UVRSD_UINT32, &new_value);
-}
-
-static inline uintptr_t _Unwind_GetIP(struct _Unwind_Context* context) {
- // remove the thumb-bit before returning
- return (_Unwind_GetGR(context, 15) & (~(uintptr_t)0x1));
-}
-
-static inline void _Unwind_SetIP(struct _Unwind_Context* context,
- uintptr_t new_value) {
- uintptr_t thumb_bit = _Unwind_GetGR(context, 15) & ((uintptr_t)0x1);
- _Unwind_SetGR(context, 15, new_value | thumb_bit);
-}
-#else
extern uintptr_t _Unwind_GetGR(struct _Unwind_Context *context, int index);
extern void _Unwind_SetGR(struct _Unwind_Context *context, int index,
uintptr_t new_value);
extern uintptr_t _Unwind_GetIP(struct _Unwind_Context *context);
extern void _Unwind_SetIP(struct _Unwind_Context *, uintptr_t new_value);
-#endif
extern uintptr_t _Unwind_GetRegionStart(struct _Unwind_Context *context);
extern uintptr_t