You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The current libc crate implementation for AIX defines the struct sigaction as containing a union sa_union with two members: __su_handler and __su_sigaction. This mirrors the struct sigaction definition in the AIX system header. Consequently, any reference to sa_sigaction in Rust code, whether in shipped crates or user code, must be replaced with sa_union.__su_sigaction for AIX. Additionally, the types of these two union members are declared as function pointers rather than sighandler_t (i.e., usize), as is the case on other platforms. This discrepancy causes compiler errors when sighandler_t is used as the type for signal handlers.
The POSIX standard defines struct sigaction as containing sa_handler and sa_sigaction members, with their storage allowed to overlap. Other operating systems, such as Linux, also define a union for sa_handler and sa_sigaction. However, the libc crate implementations on these platforms define sa_sigaction directly as a member of struct sigaction rather than as part of a union. This is because the storage of sa_handler and sa_sigaction overlaps, and only sa_sigaction is typically referenced in Rust.
We propose modifying the libc crate implementation for AIX to define sa_sigaction as a direct member of struct sigaction, aligning it with implementations for other platforms. We will also update affected crates and test cases to reflect this change.
target=powerpc64-ibm-aix
The text was updated successfully, but these errors were encountered:
The current
libc
crate implementation for AIX defines thestruct sigaction
as containing a unionsa_union
with two members:__su_handler
and__su_sigaction
. This mirrors thestruct sigaction
definition in the AIX system header. Consequently, any reference tosa_sigaction
in Rust code, whether in shipped crates or user code, must be replaced withsa_union.__su_sigaction
for AIX. Additionally, the types of these two union members are declared as function pointers rather thansighandler_t
(i.e.,usize
), as is the case on other platforms. This discrepancy causes compiler errors whensighandler_t
is used as the type for signal handlers.The POSIX standard defines
struct sigaction
as containingsa_handler
andsa_sigaction
members, with their storage allowed to overlap. Other operating systems, such as Linux, also define a union forsa_handler
andsa_sigaction
. However, thelibc
crate implementations on these platforms definesa_sigaction
directly as a member ofstruct sigaction
rather than as part of a union. This is because the storage ofsa_handler
andsa_sigaction
overlaps, and onlysa_sigaction
is typically referenced in Rust.We propose modifying the
libc
crate implementation for AIX to definesa_sigaction
as a direct member ofstruct sigaction
, aligning it with implementations for other platforms. We will also update affected crates and test cases to reflect this change.target=powerpc64-ibm-aix
The text was updated successfully, but these errors were encountered: