Skip to content

Compiling for AArch64 fails with glibc 2.25 #2356

@lgeek

Description

@lgeek

DynamoRIO commit: 4afa0bd
Building on an up-to-date Arch Linux ARM (aarch64) system with glibc 2.25 and gcc 6.3.1

Output:

[  2%] Building C object core/CMakeFiles/dynamorio_static.dir/unix/signal.c.o
In file included from /usr/include/signal.h:325:0,
                 from /home/cosmin/dynamorio/core/lib/globals_shared.h:126,
                 from /home/cosmin/dynamorio/core/unix/../globals.h:90,
                 from /home/cosmin/dynamorio/core/unix/signal_private.h:51,
                 from /home/cosmin/dynamorio/core/unix/signal.c:45:
/usr/include/sys/ucontext.h:55:16: error: field ‘uc_mcontext’ has incomplete type
     mcontext_t uc_mcontext;
                ^~~~~~~~~~~
In file included from /home/cosmin/dynamorio/core/unix/signal.c:45:0:
/home/cosmin/dynamorio/core/unix/signal_private.h:159:23: error: field ‘uc_mcontext’ has incomplete type
     sigcontext_t      uc_mcontext; /* last for future expansion */
                       ^~~~~~~~~~~
/home/cosmin/dynamorio/core/unix/signal.c: In function ‘sigcontext_to_mcontext’:
/home/cosmin/dynamorio/core/unix/signal.c:2233:24: error: dereferencing pointer to incomplete type ‘sigcontext_t {aka struct sigcontext}’
     memcpy(&mc->r0, &sc->SC_FIELD(regs[0]), sizeof(mc->r0) * 31);
                        ^~
/home/cosmin/dynamorio/core/unix/signal.c: In function ‘record_pending_signal’:
/home/cosmin/dynamorio/core/unix/signal.c:3720:18: error: storage size of ‘sc_orig’ isn’t known
     sigcontext_t sc_orig;
                  ^~~~~~~
/home/cosmin/dynamorio/core/unix/signal.c:3720:18: error: unused variable ‘sc_orig’ [-Werror=unused-variable]
/home/cosmin/dynamorio/core/unix/signal.c: In function ‘get_sigcontext_from_rt_frame’:
/home/cosmin/dynamorio/core/unix/signal.c:2658:1: error: control reaches end of non-void function [-Werror=return-type]
 }
 ^
/home/cosmin/dynamorio/core/unix/signal.c: In function ‘get_sigcxt_stolen_reg’:
/home/cosmin/dynamorio/core/unix/signal.c:2360:1: error: control reaches end of non-void function [-Werror=return-type]
 }
 ^
cc1: all warnings being treated as errors
make[2]: *** [core/CMakeFiles/dynamorio_static.dir/build.make:1545: core/CMakeFiles/dynamorio_static.dir/unix/signal.c.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:131: core/CMakeFiles/dynamorio_static.dir/all] Error 2
make: *** [Makefile:150: all] Error 2

Not defining _BITS_SIGCONTEXT_H in core/unix/include/sigcontext.h fixes the build for me, but I'm not sure whether it ends up using the wrong structure definitions.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions