.. | ||
0001-gdb-Disable-xmalloc-for-alternate_signal_stack-for-s.patch | ||
0002-serenity-Add-basic-ptrace-based-native-target-for-Se.patch | ||
0003-gdb-Add-build-support-for-SerenityOS.patch | ||
0004-serenity-Fix-compiler-fpermissive-warnings-from-usin.patch | ||
0005-serenity-Implement-custom-wait-override-for-the-sere.patch | ||
0006-serenity-Implement-mourn_inferior-override-for-the-s.patch | ||
ReadMe.md |
Patches for gdb on SerenityOS
0001-gdb-Disable-xmalloc-for-alternate_signal_stack-for-s.patch
gdb: Disable xmalloc for alternate_signal_stack for serenity
0002-serenity-Add-basic-ptrace-based-native-target-for-Se.patch
serenity: Add basic ptrace based native target for SerenityOS/i386
0003-gdb-Add-build-support-for-SerenityOS.patch
gdb: Add build support for SerenityOS
0004-serenity-Fix-compiler-fpermissive-warnings-from-usin.patch
serenity: Fix compiler -fpermissive warnings from using latest GCC
0005-serenity-Implement-custom-wait-override-for-the-sere.patch
serenity: Implement custom wait override for the serenity_nat_target
While troubleshooting why gdb wasn't working when attempting to debug serenity programs I noticed two things:
-
The contract of serenity's
waitpid(..)
appears to be slightly different than the generic ptrace target expects. We need to make sure we passWSTOPPED
, and it can return different errno values that we would want to re-try on. -
The contract of serenity's
ptrace(..)
implementation appears to diverge as well, as we are expected to callPT_ATTACH
before we callPT_CONTINUE
, otherwiseptrace(..)
will just error out.
Allow gdb to understand these differences, I've overloaded the serenity_nat_target::wait(..) method and added the logic there.
0006-serenity-Implement-mourn_inferior-override-for-the-s.patch
serenity: Implement mourn_inferior override for the serenity_nat_target
We need to pass WNOHANG
to our waitpid(..)
call on SerenityOS,
otherwise we will wait forever.