Newer
Older
minerva / Ports / gdb / patches / ReadMe.md
@minerva minerva on 13 Jul 1 KB Initial commit

Patches for gdb on Minerva

0001-gdb-Disable-xmalloc-for-alternate_signal_stack-for-s.patch

gdb: Disable xmalloc for alternate_signal_stack for minerva

0002-minerva-Add-basic-ptrace-based-native-target-for-Se.patch

minerva: Add basic ptrace based native target for Minerva/i386

0003-gdb-Add-build-support-for-Minerva.patch

gdb: Add build support for Minerva

0004-minerva-Fix-compiler-fpermissive-warnings-from-usin.patch

minerva: Fix compiler -fpermissive warnings from using latest GCC

0005-minerva-Implement-custom-wait-override-for-the-sere.patch

minerva: Implement custom wait override for the minerva_nat_target

While troubleshooting why gdb wasn't working when attempting to debug minerva programs I noticed two things:

  • The contract of minerva's waitpid(..) appears to be slightly different than the generic ptrace target expects. We need to make sure we pass WSTOPPED, and it can return different errno values that we would want to re-try on.
  • The contract of minerva's ptrace(..) implementation appears to diverge as well, as we are expected to call PT_ATTACH before we call PT_CONTINUE, otherwise ptrace(..) will just error out.

Allow gdb to understand these differences, I've overloaded the minerva_nat_target::wait(..) method and added the logic there.

0006-minerva-Implement-mourn_inferior-override-for-the-s.patch

minerva: Implement mourn_inferior override for the minerva_nat_target

We need to pass WNOHANG to our waitpid(..) call on Minerva, otherwise we will wait forever.