Merge "NGREG != ELF_NGREG." am: a5a9992671

Original change: https://android-review.googlesource.com/c/platform/bionic/+/1419433

Change-Id: I9447c49cd08bfac0f127229455529bffdfd23c56
This commit is contained in:
Elliott Hughes 2020-09-09 20:17:43 +00:00 committed by Automerger Merge Worker
commit ba4b40602a
2 changed files with 25 additions and 6 deletions

View File

@ -26,16 +26,24 @@
* SUCH DAMAGE.
*/
#ifndef _SYS_PROCFS_H_
#define _SYS_PROCFS_H_
#pragma once
#include <sys/cdefs.h>
#include <sys/ptrace.h>
#include <sys/ucontext.h>
__BEGIN_DECLS
#if defined(__arm__)
#define ELF_NGREG (sizeof(struct user_regs) / sizeof(elf_greg_t))
#elif defined(__aarch64__)
#define ELF_NGREG (sizeof(struct user_pt_regs) / sizeof(elf_greg_t))
#else
#define ELF_NGREG (sizeof(struct user_regs_struct) / sizeof(elf_greg_t))
#endif
typedef unsigned long elf_greg_t;
typedef elf_greg_t elf_gregset_t[NGREG];
typedef elf_greg_t elf_gregset_t[ELF_NGREG];
typedef fpregset_t elf_fpregset_t;
@ -58,5 +66,3 @@ struct elf_siginfo {
#define ELF_PRARGSZ 80
__END_DECLS
#endif

View File

@ -18,7 +18,7 @@
#include <sys/procfs.h>
TEST(sys_procfs, smoke) {
TEST(sys_procfs, types) {
elf_greg_t reg;
memset(&reg, 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
}