In MachineStackMarker.cpp there's a number of #ifdef blocks that follow this pattern: #if OS(DARWIN) /* ... */ #elif OS(WINDOWS) /* ... */ #elif defined(__GLIBC__) /* ... */ #elif OS(FREEBSD) /* ... */ #else #error Need a way to get the frame pointer for another thread on this platform #endif This works fine in most cases except in glibc-based FreeBSD systems (Debian GNU/kFreeBSD): Source/JavaScriptCore/heap/MachineStackMarker.cpp: In member function 'void* JSC::MachineThreads::Thread::Registers::stackPointer() const': Source/JavaScriptCore/heap/MachineStackMarker.cpp:554:68: error: 'const struct mcontext_t' has no member named 'gregs' return reinterpret_cast<void*>((uintptr_t) regs.machineContext.gregs[REG_RSP]); These systems should use the code inside the OS(FREEBSD) block, so this problem can be trivially solved by swapping the last two #elif blocks.
Created attachment 276313 [details] Patch
Committed r199458: <http://trac.webkit.org/changeset/199458>