Overview
Comment: | Don't use _Unwind_Get{Data,Text}RelBase on IA64
DW_EH_PE_datarel can be handled via _Unwind_GetGR on GR 1, while |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
60ce701c5c37b4e8a886b7caf3553dcf |
User & Date: | js on 2017-09-06 00:49:10 |
Other Links: | manifest | tags |
Context
2017-09-06
| ||
00:52 | PLATFORMS.md: Add Itanium to Linux check-in: a7c20c5ca7 user: js tags: trunk | |
00:49 | Don't use _Unwind_Get{Data,Text}RelBase on IA64 check-in: 60ce701c5c user: js tags: trunk | |
00:40 | Add OF_ITANIUM to platform.h check-in: 1cb9c8455a user: js tags: trunk | |
Changes
Modified src/runtime/exception.m from [11649a75a7] to [ba1f5e6f08].
︙ | ︙ | |||
166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 | const uint8_t *callsites, *actiontable; }; extern _Unwind_Reason_Code _Unwind_RaiseException(struct _Unwind_Exception *); extern void _Unwind_DeleteException(struct _Unwind_Exception *); extern void *_Unwind_GetLanguageSpecificData(struct _Unwind_Context *); extern uintptr_t _Unwind_GetRegionStart(struct _Unwind_Context *); extern uintptr_t _Unwind_GetDataRelBase(struct _Unwind_Context *); extern uintptr_t _Unwind_GetTextRelBase(struct _Unwind_Context *); #ifndef HAVE_ARM_EHABI_EXCEPTIONS # define CONTINUE_UNWIND return _URC_CONTINUE_UNWIND extern uintptr_t _Unwind_GetIP(struct _Unwind_Context *); extern void _Unwind_SetIP(struct _Unwind_Context *, uintptr_t); extern void _Unwind_SetGR(struct _Unwind_Context *, int, uintptr_t); | > > > > | 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 | const uint8_t *callsites, *actiontable; }; extern _Unwind_Reason_Code _Unwind_RaiseException(struct _Unwind_Exception *); extern void _Unwind_DeleteException(struct _Unwind_Exception *); extern void *_Unwind_GetLanguageSpecificData(struct _Unwind_Context *); extern uintptr_t _Unwind_GetRegionStart(struct _Unwind_Context *); #ifndef OF_ITANIUM extern uintptr_t _Unwind_GetDataRelBase(struct _Unwind_Context *); extern uintptr_t _Unwind_GetTextRelBase(struct _Unwind_Context *); #else extern uintptr_t _Unwind_GetGR(struct _Unwind_Context *, int); #endif #ifndef HAVE_ARM_EHABI_EXCEPTIONS # define CONTINUE_UNWIND return _URC_CONTINUE_UNWIND extern uintptr_t _Unwind_GetIP(struct _Unwind_Context *); extern void _Unwind_SetIP(struct _Unwind_Context *, uintptr_t); extern void _Unwind_SetGR(struct _Unwind_Context *, int, uintptr_t); |
︙ | ︙ | |||
285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 | switch (enc & 0x70) { case DW_EH_PE_absptr: case DW_EH_PE_pcrel: case DW_EH_PE_aligned: return 0; case DW_EH_PE_funcrel: return _Unwind_GetRegionStart(ctx); case DW_EH_PE_datarel: return _Unwind_GetDataRelBase(ctx); case DW_EH_PE_textrel: return _Unwind_GetTextRelBase(ctx); } OBJC_ERROR("Unknown encoding!") } static size_t size_for_encoding(uint8_t enc) | > > > > > | 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 | switch (enc & 0x70) { case DW_EH_PE_absptr: case DW_EH_PE_pcrel: case DW_EH_PE_aligned: return 0; case DW_EH_PE_funcrel: return _Unwind_GetRegionStart(ctx); #ifndef OF_ITANIUM case DW_EH_PE_datarel: return _Unwind_GetDataRelBase(ctx); case DW_EH_PE_textrel: return _Unwind_GetTextRelBase(ctx); #else case DW_EH_PE_datarel: return _Unwind_GetGR(ctx, 1); #endif } OBJC_ERROR("Unknown encoding!") } static size_t size_for_encoding(uint8_t enc) |
︙ | ︙ |