RFR(XS): 8046408: Build failure from multiple ptrace.h

Kim Barrett kim.barrett at oracle.com
Wed Jun 11 15:31:18 UTC 2014


Please review the following 1-line change which is needed to avoid
build failures on some platforms.

webrev: http://cr.openjdk.java.net/~mikael/webrevs/kim-8046408/webrev/
bug: https://bugs.openjdk.java.net/browse/JDK-8046408

There are two ptrace.h headers available for linux, <sys/ptrace.h> and
<linux/ptrace.h>.  A new struct (ptrace_peeksiginfo_args) was recently
added to each, but the addition in <sys/ptrace.h> didn't follow the
convention there of using a double-underscore prefix for type names
declared in that file.  As a result, if both headers are included (as
is occurring in our code), there are multiple definitions of that
struct.  It appears to be a "well known" problem that already has a
fix [1], but glibc 2.18 was released with this problem.

The inclusion of both variants was due to a file (ps_proc.c) directly
including sys/ptrace and indirectly including linux/ptrace, where the
indirectly including header is used in other places that don't include
sys/ptrace.  Our code can presently use either of the headers; I'm
proposing we prefer sys/ptrace rather than linux/ptrace.  A different
1-line change would be to remove the direct include of sys/ptrace and
let that file rely on the indirect include of linux/ptrace, but I
dislike that, since ps_proc.c directly uses lots of names defined in
those headers.

[1] https://www.sourceware.org/ml/libc-alpha/2014-01/msg00078.html



More information about the hotspot-dev mailing list