Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LibC+Ports: Add initial GDB 11.1 port #11278

Merged
merged 7 commits into from Dec 29, 2021
Merged

Conversation

bgianfo
Copy link
Member

@bgianfo bgianfo commented Dec 16, 2021

This port now compiles, and has a gdb target that can now launch programs.
The programs get launched suspended, but if you resume them manually the programs run to completion under gdb.

image

Anyway, this seemed like a good place to checkpoint and get the work merged.
Let me know what you think!

@BertalanD
Copy link
Member

BertalanD commented Dec 16, 2021

Two issues have been addressed on my branch:

  • 64 worker threads being spawned, which made the kernel unhappy
  • A crash in free due to the use of malloc for alternate signal stacks instead of mmap (thanks for the help, @IdanHo)

With these changes, we can now get to the GDB prompt. Note that it can't be used for debugging yet, as GDB needs to know how to run SerenityOS programs.

@bgianfo
Copy link
Member Author

bgianfo commented Dec 16, 2021

Nice!

@bgianfo
Copy link
Member Author

bgianfo commented Dec 22, 2021

FYI, @BertalanD & @IdanHo, I pulled your commits into my branch.

If you want to send the Kernel one separately, that works for me too.

bgianfo and others added 7 commits December 28, 2021 01:54
They are required for gdb to build.
... instead of returning the maximum number of Processor objects that we
can allocate.

Some ports (e.g. gdb) rely on this information to determine the number
of worker threads to spawn. When gdb spawned 64 threads, the kernel
could not cope with generating backtraces for it, which prevented us
from debugging it properly.

This commit also removes the confusingly named
`Processor::processor_count` function so that this mistake can't happen
again.
This builds and runs, but crashes when you attempt to try to debug
something at the moment.
Stack regions can't be made volatile, which makes it impossible for
malloc to manage memory that's used for `sigaltstack()`. Let's use mmap
instead.

Co-authored-by: Idan Horowitz <idan.horowitz@gmail.com>
This allows the gdb port to compile with our `regs.h`.
These are compilation errors coming form upstream gdb.
This patch adds a ptrace based gdb backend, which is then enlightended
to known how to read the serenity i386 registers via ptrace.

This is just a basic implementation to get the port bootstrapped.
@bgianfo bgianfo marked this pull request as ready for review December 28, 2021 13:09
@bgianfo bgianfo merged commit e308536 into SerenityOS:master Dec 29, 2021
@bgianfo bgianfo deleted the gdb-port branch December 29, 2021 11:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants