[all-commits] [llvm/llvm-project] 8d7ca0: [libc] Update siginfo_t to match kernel definition...

Mikhail R. Gadelha via All-commits all-commits at lists.llvm.org
Thu Sep 21 07:59:16 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 8d7ca08b9f5bf5ab6c5a0c5e68dd5643036544cb
      https://github.com/llvm/llvm-project/commit/8d7ca08b9f5bf5ab6c5a0c5e68dd5643036544cb
  Author: Mikhail R. Gadelha <mikhail at igalia.com>
  Date:   2023-09-21 (Thu, 21 Sep 2023)

  Changed paths:
    M libc/include/llvm-libc-types/CMakeLists.txt
    M libc/include/llvm-libc-types/siginfo_t.h

  Log Message:
  -----------
  [libc] Update siginfo_t to match kernel definition (#66560)

This patch updates the siginfo_t struct definition to match the
definition from the kernel here:

https://github.com/torvalds/linux/blob/master/include/uapi/asm-generic/siginfo.h

In particular, there are two main changes:

1. swap position of si_code and si_errno: si_code show come after
si_errno in all systems except MIPS. Since we don't MIPS, the order is
fixed for now, but can be easily \#ifdef'd if MIPS support is
implemented in the future.

2. We add a union of structs that are filled depending on the signal
raised.

This change was required for the fork and spawn integration tests in
rv32, since they fork/clone the running process, call
wait/waitid/waitpid, and read the status, which was wrong in rv32
because wait/waitid/waitpid are implemented in rv32 using SYS_waitid.

SYS_waitid takes a pointer to a siginfo_t and fills the proper fields in
the struct. The previous siginfo_t definition was being incorrectly
filled due to not taking into account the signal raised.




More information about the All-commits mailing list