Bug 52931 - sigaction(2) feature test macros don't apply to siginfo_t
Summary: sigaction(2) feature test macros don't apply to siginfo_t
Status: RESOLVED CODE_FIX
Alias: None
Product: Documentation
Classification: Unclassified
Component: man-pages (show other bugs)
Hardware: All Linux
: P1 low
Assignee: documentation_man-pages@kernel-bugs.osdl.org
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-01-22 22:16 UTC by Zsbán Ambrus
Modified: 2013-01-22 22:40 UTC (History)
1 user (show)

See Also:
Kernel Version:
Subsystem:
Regression: No
Bisected commit-id:


Attachments

Description Zsbán Ambrus 2013-01-22 22:16:28 UTC
The sigaction(2) manpage correctly tells that defining the feature test macro _POSIX_SOURCE is enough to have the headers declare the function sigaction.  However, defining that feature test does not allow you to use all capabilities of sigaction, namely it does not make the headers declare the type siginfo_t. 

The type siginfo_t is used only to declare a three-argument signal handler function that you install with sigaction using the SA_SIGINFO flag.  This feature is documented in the sigaction(2) manpage, just like it should be.  However, to actually use this feature of sigaction, it's not enough to define _POSIX_SOURCE.  To export this type, I believe it is sufficient to define _POSIX_C_SOURCE to 201112L.  As of current standing, people will try to use siginfo_t and get a compilation error because the glibc headers don't export it with the feature test macro the manpage asks for.  This bug is difficult to understand, so the feature test requirements should be mentioned on the manpage.

I don't provide a patch because I don't know either the exact feature test macro requirements, nor exactly what symbols other than siginfo_t are affected.

I am using man-pages version 3.45 vanilla, and glibc 2.11.3 debian.

Thank you, man-pages maintainers, for all the hard work you put in keeping the pages up to date.
Comment 1 Michael Kerrisk 2013-01-22 22:40:02 UTC
Zsbán,

Thanks for the report. You're correct that the man page lacks this detail. It looks like _POSIX_C_SOURCE >= 199309L suffices, and I've added that detail to the page.

Note You need to log in before you can comment on or make changes to this bug.