[lldb-dev] RFC: siginfo reading/writing support
Ted Woodward via lldb-dev
lldb-dev at lists.llvm.org
Tue Jan 11 07:48:35 PST 2022
You should use Hg for this instead of Hc. Hc is used for step/continue, while Hg is used for everything else.
> -----Original Message-----
> From: lldb-dev <lldb-dev-bounces at lists.llvm.org> On Behalf Of Michal Górny
> via lldb-dev
> Sent: Tuesday, January 11, 2022 6:38 AM
> To: lldb-dev at lists.llvm.org
> Subject: [lldb-dev] RFC: siginfo reading/writing support
>
> Hello,
>
> TL;DR: I'd like to implement at least partial support for reading/writing siginfo
> via LLDB. I can't think of a better approach than copying the GDB's idea of
> "magical" $_siginfo variable that works through the expression evaluator. I'd
> like to know your opinion/ideas.
>
>
> POSIX defines a siginfo_t structure that is used to pass additional signal
> information -- such as more detailed signal code, faulting memory address in
> case of SIGSEGV or PID of the child process in case of SIGCHLD. LLDB already
> uses ptrace(2) to obtain this information and use it internally but it doesn't
> expose it to the user.
>
> The GDB Remote Serial protocol provides the ability to read/write siginfo via
> qXfer:siginfo:... packets [1]. GDB exposes this information to the user via a
> special $_siginfo variable [2].
>
> A few things to note:
>
> 1. Some targets (e.g. Linux, NetBSD) support overwriting siginfo, some (e.g.
> FreeBSD) only reading.
>
> 2. Siginfo is generally associated with a single thread, so the packets should
> be combined with respective thread selection (Hg or Hc?).
>
> 3. The exact type of siginfo_t differs per platform (POSIX specifies a minimal
> subset).
>
>
> My rough idea right now is to follow GDB here. While using "$_siginfo"
> may seem hacky, it has the nice advantage that it can easily support all
> different siginfo_t structures used by various platforms.
>
> The plan would be to:
>
> 1. Implement the qXfer:siginfo:... packets in lldb-server, and add tests to
> them.
>
> 2. Implement support for "$_siginfo" in the client (I suppose this means
> hacking on expression evaluator).
>
> 3. (Optionally) implement hardcoded siginfo_t definitions for common
> platforms to make things work without debug info.
>
> WDYT?
>
>
> [1]
> https://www.sourceware.org/gdb/onlinedocs/gdb/General-Query-
> Packets.html#qXfer-siginfo-read
> [2] https://sourceware.org/gdb/current/onlinedocs/gdb.html#Signals
>
>
> --
> Best regards,
> Michał Górny
>
>
> _______________________________________________
> lldb-dev mailing list
> lldb-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
More information about the lldb-dev
mailing list