On some systems, at least on Fedora 27 ppc64le with glibc 2.26-24 and kernel 4.14.18-300, including sys/ptrace.h late (after signal.h or sys/wait.h for example) will cause issues and produce errors like:
In file included from /usr/include/asm/sigcontext.h:12:0, from /usr/include/bits/sigcontext.h:30, from /usr/include/signal.h:287, from /usr/include/sys/wait.h:36, from linux-pid-attach.c:38: /usr/include/sys/ptrace.h:73:3: error: expected identifier before numeric constant PTRACE_GETREGS = 12, ^ Swapping the include order fixes these issues. Signed-off-by: Mark Wielaard <m...@klomp.org> --- backends/ChangeLog | 4 ++++ backends/ppc_initreg.c | 5 +++-- libdwfl/ChangeLog | 4 ++++ libdwfl/linux-pid-attach.c | 2 +- tests/ChangeLog | 6 ++++++ tests/backtrace-child.c | 2 +- tests/backtrace-dwarf.c | 4 ++-- 7 files changed, 21 insertions(+), 6 deletions(-) diff --git a/backends/ChangeLog b/backends/ChangeLog index 098bed7..b525801 100644 --- a/backends/ChangeLog +++ b/backends/ChangeLog @@ -1,3 +1,7 @@ +2018-02-15 Mark Wielaard <m...@klomp.org> + + * ppc_initreg.c: Include ptrace.h before system.h and sys/user.h. + 2018-02-09 Joshua Watt <jpewhac...@gmail.com> * aarch64_retval.c (aarch64_return_value_location): Use FALLTHROUGH diff --git a/backends/ppc_initreg.c b/backends/ppc_initreg.c index 69d623b..3e4432f 100644 --- a/backends/ppc_initreg.c +++ b/backends/ppc_initreg.c @@ -30,13 +30,14 @@ # include <config.h> #endif -#include "system.h" #include <stdlib.h> #if defined(__powerpc__) && defined(__linux__) -# include <sys/user.h> # include <sys/ptrace.h> +# include <sys/user.h> #endif +#include "system.h" + #define BACKEND ppc_ #include "libebl_CPU.h" diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog index 453f1d3..43fc151 100644 --- a/libdwfl/ChangeLog +++ b/libdwfl/ChangeLog @@ -1,3 +1,7 @@ +2018-02-15 Mark Wielaard <m...@klomp.org> + + * linux-pid-attach.c: Include sys/wait.h after sys/ptrace.h. + 2018-02-09 Joshua Watt <jpewhac...@gmail.com> * dwfl_report_elf.c (__libdwfl_elf_address_range): Use FALLTHROUGH diff --git a/libdwfl/linux-pid-attach.c b/libdwfl/linux-pid-attach.c index e6a5c41..2ab4109 100644 --- a/libdwfl/linux-pid-attach.c +++ b/libdwfl/linux-pid-attach.c @@ -35,7 +35,6 @@ #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> -#include <sys/wait.h> #include <dirent.h> #include <unistd.h> @@ -43,6 +42,7 @@ #include <sys/ptrace.h> #include <sys/syscall.h> +#include <sys/wait.h> static bool linux_proc_pid_is_stopped (pid_t pid) diff --git a/tests/ChangeLog b/tests/ChangeLog index eb4576c..cfdd7f9 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,9 @@ +2018-02-15 Mark Wielaard <m...@klomp.org> + + * backtrace-child.c: Include signal.h after sys/ptrace.h. + * backtrace-dwarf.c: Include sys/wait.h and signal.h after + sys/ptrace.h. + 2018-01-25 Mark Wielaard <m...@klomp.org> * Makefile.am (check_PROGRAMS): Add dwarf-die-addr-die. diff --git a/tests/backtrace-child.c b/tests/backtrace-child.c index 2c27414..9c6ba94 100644 --- a/tests/backtrace-child.c +++ b/tests/backtrace-child.c @@ -81,7 +81,6 @@ #include <config.h> #include <assert.h> #include <stdlib.h> -#include <signal.h> #include <errno.h> #include <string.h> #include <pthread.h> @@ -100,6 +99,7 @@ main (int argc __attribute__ ((unused)), char **argv) #else /* __linux__ */ #include <sys/ptrace.h> +#include <signal.h> #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) #define NOINLINE_NOCLONE __attribute__ ((noinline, noclone)) diff --git a/tests/backtrace-dwarf.c b/tests/backtrace-dwarf.c index 2dc8a9a..7ff826c 100644 --- a/tests/backtrace-dwarf.c +++ b/tests/backtrace-dwarf.c @@ -17,7 +17,6 @@ #include <config.h> #include <assert.h> -#include <signal.h> #include <inttypes.h> #include <stdio_ext.h> #include <locale.h> @@ -25,7 +24,6 @@ #include <error.h> #include <unistd.h> #include <sys/types.h> -#include <sys/wait.h> #include ELFUTILS_HEADER(dwfl) #ifndef __linux__ @@ -40,6 +38,8 @@ main (int argc __attribute__ ((unused)), char **argv) #else /* __linux__ */ #include <sys/ptrace.h> +#include <sys/wait.h> +#include <signal.h> #define main cleanup_13_main #include "cleanup-13.c" -- 1.8.3.1