diff options
author | Jiangen Jiao <joeyjiaojg@qq.com> | 2021-03-25 12:29:27 +0800 |
---|---|---|
committer | Jiangen Jiao <joeyjiaojg@qq.com> | 2021-03-25 20:40:31 +0800 |
commit | c89264205779635ec43f2913a94fa3ae5e6a5186 (patch) | |
tree | 08c6e93f8ad85eb2e05963a038ab289312033d38 /include | |
parent | 2dac4e785fa9f27e8c59bb504cfa8942eba938be (diff) | |
download | afl++-c89264205779635ec43f2913a94fa3ae5e6a5186.tar.gz |
android: support host and target 32bit build
Diffstat (limited to 'include')
-rw-r--r-- | include/android-ashmem.h | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/include/android-ashmem.h b/include/android-ashmem.h index 91699b27..44fe556a 100644 --- a/include/android-ashmem.h +++ b/include/android-ashmem.h @@ -2,32 +2,31 @@ #ifndef _ANDROID_ASHMEM_H #define _ANDROID_ASHMEM_H + #define _GNU_SOURCE + #include <sys/syscall.h> + #include <unistd.h> #include <fcntl.h> #include <linux/ashmem.h> #include <sys/ioctl.h> #include <sys/mman.h> - - #if __ANDROID_API__ >= 26 - #define shmat bionic_shmat - #define shmctl bionic_shmctl - #define shmdt bionic_shmdt - #define shmget bionic_shmget - #endif #include <sys/shm.h> - #undef shmat - #undef shmctl - #undef shmdt - #undef shmget #include <stdio.h> - #define ASHMEM_DEVICE "/dev/ashmem" +int shmdt(const void* address) { +#if defined(SYS_shmdt) + return syscall(SYS_shmdt, address); +#else + return syscall(SYS_ipc, SHMDT, 0, 0, 0, address, 0); +#endif +} + int shmctl(int __shmid, int __cmd, struct shmid_ds *__buf) { int ret = 0; if (__cmd == IPC_RMID) { - int length = ioctl(__shmid, ASHMEM_GET_SIZE, NULL); + int length = ioctl(__shmid, ASHMEM_GET_SIZE, NULL); struct ashmem_pin pin = {0, length}; ret = ioctl(__shmid, ASHMEM_UNPIN, &pin); close(__shmid); @@ -78,6 +77,6 @@ void *shmat(int __shmid, const void *__shmaddr, int __shmflg) { } - #endif /* !_ANDROID_ASHMEM_H */ -#endif /* !__ANDROID__ */ + #endif /* !_ANDROID_ASHMEM_H */ +#endif /* !__ANDROID__ */ |