GCC 12 (unlike GCC 9) does not match a function argument passed to the
old qsort_r() API (as is used in the qsort_r_compat test) to a
function pointer type via __generic. It treats the function type as a
distinct type from a function pointer. As a workaround, add a second
definition of qsort_r for GCC 12 which uses the bare function type.
Details
Details
- Reviewers
ed emaste - Commits
- rG43703bc489ec: stdlib.h: Fix qsort_r compatibility with GCC 12.
Diff Detail
Diff Detail
- Repository
- rG FreeBSD src repository
- Lint
Lint Not Applicable - Unit
Tests Not Applicable
Event Timeline
Comment Actions
This breaks the build with clang as clang says a _Generic selector can only have an object type and a function pointer type isn't valid. GCC 9 was happy with the existing version, so this might be some regression in GCC 10, 11, or 12.
Comment Actions
This is a bit of a stop-gap. I probably should create a smaller reproducible test case to submit as a bug upstream to GCC.
include/stdlib.h | ||
---|---|---|
355 | I haven't tested GCC 10 or 11. |
Comment Actions
LGTM as it applies only to GCC 12.
Would be great to have a small reproducer shared with upstream.