Differences From Artifact [a50325ba8b]:
- File
src/exceptions/OFException.h
— part of check-in
[a889f21180]
at
2013-05-22 20:36:31
on branch trunk
— Don't depened on execinfo.h for backtraces.
Instead, __builtin_return_address() is used now. This makes backtraces
available on many platforms, it even works if dladdr is missing (it does
not show symbol names then, though). (user: js, size: 1897) [annotate] [blame] [check-ins using]
To Artifact [3edc7f9b6e]:
- File
src/exceptions/OFException.h
— part of check-in
[f2a8bdf254]
at
2013-05-25 11:40:28
on branch trunk
— Switch back to backtrace().
The reason is that __builtin_frame_address(n) for n > 0 seems to just
crash on most platforms when -fomit-stack-pointer is specified, which
seems to be the default for many platforms on -O2. The documentation
says that __builtin_frame_address() should return NULL in case it can't
get the frame, but it seems to crash instead.Therefore, this commit reverts to using backtrace() from execinfo.h, if
available. However, as __builtin_frame_address() seems to always work on
PPC (even with -fomit-frame-pointer) and seems to be the only way to get
a backtrace on the Wii, this is still used if backtrace() is unavailable
and __ppc__ defined. (user: js, size: 1912) [annotate] [blame] [check-ins using]
︙ | |||
25 26 27 28 29 30 31 | 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | - + + | * * The OFException class is the base class for all exceptions in ObjFW, except * the OFAllocFailedException. */ @interface OFException: OFObject { Class _inClass; |
︙ |