| Index: src/platform-freebsd.cc
|
| diff --git a/src/platform-freebsd.cc b/src/platform-freebsd.cc
|
| index 210ccb1796155f4b04bf96fab4a8b735813913dd..c771cd3be029aea168a1333a57a5481690354518 100644
|
| --- a/src/platform-freebsd.cc
|
| +++ b/src/platform-freebsd.cc
|
| @@ -196,27 +196,7 @@ void OS::DebugBreak() {
|
|
|
|
|
| void OS::DumpBacktrace() {
|
| - void* trace[100];
|
| - int size = backtrace(trace, ARRAY_SIZE(trace));
|
| - char** symbols = backtrace_symbols(trace, size);
|
| - fprintf(stderr, "\n==== C stack trace ===============================\n\n");
|
| - if (size == 0) {
|
| - fprintf(stderr, "(empty)\n");
|
| - } else if (symbols == NULL) {
|
| - fprintf(stderr, "(no symbols)\n");
|
| - } else {
|
| - for (int i = 1; i < size; ++i) {
|
| - fprintf(stderr, "%2d: ", i);
|
| - char mangled[201];
|
| - if (sscanf(symbols[i], "%*[^(]%*[(]%200[^)+]", mangled) == 1) { // NOLINT
|
| - fprintf(stderr, "%s\n", mangled);
|
| - } else {
|
| - fprintf(stderr, "??\n");
|
| - }
|
| - }
|
| - }
|
| - fflush(stderr);
|
| - free(symbols);
|
| + POSIXBacktraceHelper<backtrace, backtrace_symbols>::DumpBacktrace();
|
| }
|
|
|
|
|
| @@ -318,30 +298,7 @@ void OS::SignalCodeMovingGC() {
|
|
|
|
|
| int OS::StackWalk(Vector<OS::StackFrame> frames) {
|
| - int frames_size = frames.length();
|
| - ScopedVector<void*> addresses(frames_size);
|
| -
|
| - int frames_count = backtrace(addresses.start(), frames_size);
|
| -
|
| - char** symbols = backtrace_symbols(addresses.start(), frames_count);
|
| - if (symbols == NULL) {
|
| - return kStackWalkError;
|
| - }
|
| -
|
| - for (int i = 0; i < frames_count; i++) {
|
| - frames[i].address = addresses[i];
|
| - // Format a text representation of the frame based on the information
|
| - // available.
|
| - SNPrintF(MutableCStrVector(frames[i].text, kStackWalkMaxTextLen),
|
| - "%s",
|
| - symbols[i]);
|
| - // Make sure line termination is in place.
|
| - frames[i].text[kStackWalkMaxTextLen - 1] = '\0';
|
| - }
|
| -
|
| - free(symbols);
|
| -
|
| - return frames_count;
|
| + return POSIXBacktraceHelper<backtrace, backtrace_symbols>::StackWalk(frames);
|
| }
|
|
|
|
|
|
|