[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