From 8e5fc5b0379fa659d5def8582a1991d6d47cdd13 Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Thu, 3 Sep 2020 12:31:07 -0700 Subject: NGREG != ELF_NGREG. Except they are the same on arm32/arm64, so we hadn't really noticed. x86 and x86-64 are quite different though, presumably by historical accident. Fix the definitions and add some static asserts. Bug: https://github.com/android/ndk/issues/1347 Test: treehugger Change-Id: Ic27b172066cf3443749463b9b73c912d204f9516 --- tests/sys_procfs_test.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'tests/sys_procfs_test.cpp') diff --git a/tests/sys_procfs_test.cpp b/tests/sys_procfs_test.cpp index 8054869eb..5e0a0b024 100644 --- a/tests/sys_procfs_test.cpp +++ b/tests/sys_procfs_test.cpp @@ -18,7 +18,7 @@ #include -TEST(sys_procfs, smoke) { +TEST(sys_procfs, types) { elf_greg_t reg; memset(®, 0, sizeof(reg)); @@ -37,3 +37,16 @@ TEST(sys_procfs, smoke) { static_assert(sizeof(prgregset_t) == sizeof(elf_gregset_t), ""); static_assert(sizeof(prfpregset_t) == sizeof(elf_fpregset_t), ""); } + +TEST(sys_procfs, constants) { + // NGREG != ELF_NGREG (https://github.com/android/ndk/issues/1347) + static_assert(sizeof(gregset_t) / sizeof(greg_t) == NGREG); + +#if defined(__arm__) + static_assert(sizeof(user_regs) / sizeof(elf_greg_t) == ELF_NGREG); +#elif defined(__aarch64__) + static_assert(sizeof(user_pt_regs) / sizeof(elf_greg_t) == ELF_NGREG); +#else + static_assert(sizeof(user_regs_struct) / sizeof(elf_greg_t) == ELF_NGREG); +#endif +} -- cgit v1.2.3