-
Notifications
You must be signed in to change notification settings - Fork 588
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
Added dynamic TargetDescription
#3780
Added dynamic TargetDescription
#3780
Conversation
a571187
to
c276f0e
Compare
@rocallahan || @khuey |
Prior to this patch, I have no idea how RR informed GDB on |
src/GdbServerConnection.cc
Outdated
@@ -111,7 +112,8 @@ unique_ptr<GdbServerConnection> GdbServerConnection::await_connection( | |||
Task* t, ScopedFd& listen_fd, const GdbServerConnection::Features& features) { | |||
auto dbg = unique_ptr<GdbServerConnection>( | |||
new GdbServerConnection(t->thread_group()->tguid(), features)); | |||
dbg->set_cpu_features(get_cpu_features(t->arch())); | |||
const auto arch = t->arch(); | |||
dbg->set_cpu_features(arch, get_cpu_features(arch)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You can just drop this hunk.
src/TargetDescription.cc
Outdated
} | ||
} | ||
|
||
static constexpr auto Header = R"(<?xml version="1.0"?> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Don't need to make this constexpr
or auto
. Also, name should be header
or possibly HEADER
. E.g. use
static const char header[] = ...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
... or else just write it inline, that's fine
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Changed it to header
, but refrained from inlining it directly as raw string literals make code look weird, though that's a personal taste though, and I'll gladly change if it you like.
Also, it looks like tests are failing in CI on x86-64? |
Where can I see these tests? It says "All checks have passed" here. |
#include "TargetDescription.h" | ||
#include "GdbServerConnection.h" | ||
#include "kernel_abi.h" | ||
#include <sstream> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Order #includes like our other files: first TargetDescription.h
, then the C++ library headers, then the rr headers.
Yep, that looks good! |
@theIDinside as far as I understood the review that's nearly finished and only needs minor tweaks. It would be nice if this could be finished as it is specified as a dependency of #3776 which (after rebase including these changes) is a real nice addition. |
TargetDescription dynamically generates the "master" target description contents (target.xml), so that we only have to manage the individual concrete CPU features (like foo-sse.xml, for instance). TargetDescription will generate the xml contents that includes the used features. Removed combinatorial target.xml files These are now handled by `TargetDescription` instead. This unblocks the rr-debugger#3776 PR (AVX512 support) from getting pulled in, though that PR will need to take this PR into account.
I don't even know how we have sent this before or why this hasn't been a bug prior to this.
b194918
to
1155d34
Compare
I'm on it |
I fixed the final nits, squshed and merged: f7f4c29 Thanks!!! |
currently this is in a separate branch only... the referenced #3776 needs to be rebased on this (and likely still target the master) |
Oops I pushed to the wrong branch. Fixed. |
TargetDescription dynamically generates the "master" target description contents (target.xml), so that we only have to manage the individual concrete CPU features (like foo-sse.xml, for instance). TargetDescription will generate the xml contents that includes the used features.
Removed combinatorial target.xml files
These are now handled by
TargetDescription
instead.This unblocks the #3776 PR (AVX512 support) from getting pulled in, though that PR will need to take this PR into account.
Note:
The
GdbServerRegister
should probably be rewritten/removed and then rely on aTargetDescription
that provides a "static" array ofGdbServerValue
since once we know the target description, it won't change during a replay, so dynamically allocating like we do now (indispatch_regs_request
) is not really necessary. But these are just loose thoughts I have, I haven't really verified that this would be a better approach.