Overview
Comment: | Make usage of several _Unwind_* functions optional
This removes the special casing for Itanium and makes compilation on |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
879e69dd3df06ea24264ff973d3f6607 |
User & Date: | js on 2018-04-08 18:18:16 |
Other Links: | manifest | tags |
Context
2018-04-08
| ||
18:56 | configure: Also check for _Unwind_* in libc++ check-in: c16de18443 user: js tags: trunk | |
18:18 | Make usage of several _Unwind_* functions optional check-in: 879e69dd3d user: js tags: trunk | |
16:09 | Use -integrated-as on OpenBSD/SPARC64 with Clang check-in: 3a831de131 user: js tags: trunk | |
Changes
Modified configure.ac from [2541cd5bb5] to [e4bc8d17f8].
︙ | |||
467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 | 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 | + + + + | esac AC_MSG_RESULT($exception_type) ], [ AC_MSG_RESULT(exceptions unavailable!) AC_MSG_ERROR([Exceptions not accepted by compiler!]) ]) AC_CHECK_FUNCS(_Unwind_GetDataRelBase _Unwind_GetTextRelBase) ;; "Apple runtime") AC_DEFINE(OF_APPLE_RUNTIME, 1, [Whether we use the Apple ObjC runtime]) AC_CHECK_LIB(objc, objc_msgSend, [ AC_SUBST(RUNTIME_LIBS, "-lobjc") AC_SUBST(RUNTIME_FRAMEWORK_LIBS, "-lobjc") ], [ AC_MSG_ERROR([libobjc not found!]) ]) ;; esac AC_CHECK_FUNCS(_Unwind_Backtrace) AC_CHECK_FUNC(objc_constructInstance, [], [ AC_SUBST(INSTANCE_M, "instance.m") ]) AC_CHECK_FUNC(objc_autoreleasePoolPush, [], [ AC_SUBST(AUTORELEASE_M, "autorelease.m") |
︙ |
Modified src/exceptions/OFException.m from [4b731d03ec] to [7a9ee871b5].
︙ | |||
39 40 41 42 43 44 45 | 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | - - - - - - - - - - - - - - - - - - - + + - + - + - | # import "threading.h" #endif #if defined(OF_WINDOWS) && defined(OF_HAVE_SOCKETS) # include <winerror.h> #endif |
︙ | |||
221 222 223 224 225 226 227 | 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 | - + | } # endif #endif return ret; } |
︙ | |||
249 250 251 252 253 254 255 | 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 | - + | @implementation OFException + (instancetype)exception { return [[[self alloc] init] autorelease]; } |
︙ | |||
272 273 274 275 276 277 278 | 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 | - + | { return [OFString stringWithFormat: @"An exception of type %@ occurred!", [self class]]; } - (OFArray OF_GENERIC(OFString *) *)backtrace { |
︙ |
Modified src/runtime/exception.m from [2f76cd89bc] to [dc5760d5ce].
︙ | |||
167 168 169 170 171 172 173 | 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 | - + + + - - + | 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 *); |
︙ | |||
290 291 292 293 294 295 296 | 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 | - + - - + + + + | 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); |
︙ |