Skip to content

Commit 60ab304

Browse files
author
Stephen Barber
committed
Add support for SIGSYS in signalfd
Linux 4.18 added support for SIGSYS info in signalfd. Add the new fields to signalfd_siginfo. While the kernel has support for these new fields now, no libc has shipped a release with the new signalfd fields.
1 parent 9c5e70a commit 60ab304

File tree

6 files changed

+40
-10
lines changed

6 files changed

+40
-10
lines changed

libc-test/build.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -841,7 +841,13 @@ fn main() {
841841
// musl seems to define this as an *anonymous* bitfield
842842
(musl && struct_ == "statvfs" && field == "__f_unused") ||
843843
// sigev_notify_thread_id is actually part of a sigev_un union
844-
(struct_ == "sigevent" && field == "sigev_notify_thread_id")
844+
(struct_ == "sigevent" && field == "sigev_notify_thread_id") ||
845+
// signalfd had SIGSYS fields added in Linux 4.18, but no libc release has them yet.
846+
(struct_ == "signalfd_siginfo" && (field == "ssi_addr_lsb" ||
847+
field == "_pad2" ||
848+
field == "ssi_syscall" ||
849+
field == "ssi_call_addr" ||
850+
field == "ssi_arch"))
845851
});
846852

847853
cfg.fn_cname(move |name, cname| {

src/fuchsia/mod.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -685,7 +685,12 @@ s! {
685685
pub ssi_utime: ::uint64_t,
686686
pub ssi_stime: ::uint64_t,
687687
pub ssi_addr: ::uint64_t,
688-
_pad: [::uint8_t; 48],
688+
pub ssi_addr_lsb: ::uint16_t,
689+
_pad2: ::uint16_t,
690+
pub ssi_syscall: ::int32_t,
691+
pub ssi_call_addr: ::uint64_t,
692+
pub ssi_arch: ::uint32_t,
693+
_pad: [::uint8_t; 28],
689694
}
690695

691696
pub struct itimerspec {

src/unix/notbsd/android/mod.rs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -172,12 +172,16 @@ s! {
172172
pub ssi_trapno: ::uint32_t,
173173
pub ssi_status: ::int32_t,
174174
pub ssi_int: ::int32_t,
175-
pub ssi_ptr: ::c_ulonglong,
176-
pub ssi_utime: ::c_ulonglong,
177-
pub ssi_stime: ::c_ulonglong,
178-
pub ssi_addr: ::c_ulonglong,
175+
pub ssi_ptr: ::uint64_t,
176+
pub ssi_utime: ::uint64_t,
177+
pub ssi_stime: ::uint64_t,
178+
pub ssi_addr: ::uint64_t,
179179
pub ssi_addr_lsb: ::uint16_t,
180-
_pad: [::uint8_t; 46],
180+
_pad2: ::uint16_t,
181+
pub ssi_syscall: ::int32_t,
182+
pub ssi_call_addr: ::uint64_t,
183+
pub ssi_arch: ::uint32_t,
184+
_pad: [::uint8_t; 28],
181185
}
182186

183187
pub struct ucred {

src/unix/notbsd/emscripten.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,12 @@ s! {
184184
pub ssi_utime: ::uint64_t,
185185
pub ssi_stime: ::uint64_t,
186186
pub ssi_addr: ::uint64_t,
187-
_pad: [::uint8_t; 48],
187+
pub ssi_addr_lsb: ::uint16_t,
188+
_pad2: ::uint16_t,
189+
pub ssi_syscall: ::int32_t,
190+
pub ssi_call_addr: ::uint64_t,
191+
pub ssi_arch: ::uint32_t,
192+
_pad: [::uint8_t; 28],
188193
}
189194

190195
pub struct fsid_t {

src/unix/notbsd/linux/mod.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,12 @@ s! {
270270
pub ssi_utime: ::uint64_t,
271271
pub ssi_stime: ::uint64_t,
272272
pub ssi_addr: ::uint64_t,
273-
_pad: [::uint8_t; 48],
273+
pub ssi_addr_lsb: ::uint16_t,
274+
_pad2: ::uint16_t,
275+
pub ssi_syscall: ::int32_t,
276+
pub ssi_call_addr: ::uint64_t,
277+
pub ssi_arch: ::uint32_t,
278+
_pad: [::uint8_t; 28],
274279
}
275280

276281
pub struct itimerspec {

src/unix/uclibc/mod.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -391,7 +391,12 @@ s! {
391391
pub ssi_utime: ::uint64_t,
392392
pub ssi_stime: ::uint64_t,
393393
pub ssi_addr: ::uint64_t,
394-
_pad: [::uint8_t; 48],
394+
pub ssi_addr_lsb: ::uint16_t,
395+
_pad2: ::uint16_t,
396+
pub ssi_syscall: ::int32_t,
397+
pub ssi_call_addr: ::uint64_t,
398+
pub ssi_arch: ::uint32_t,
399+
_pad: [::uint8_t; 28],
395400
}
396401

397402
pub struct fsid_t {

0 commit comments

Comments
 (0)