mirror of
https://github.com/AFLplusplus/AFLplusplus.git
synced 2025-06-08 16:21:32 +00:00
libtokencap illumos/solaris support proposal.
This commit is contained in:
parent
00abb999e3
commit
1aa7c87ea8
@ -35,13 +35,14 @@ _UNIQ=_QINU_
|
|||||||
_____OS_DL = $(____OS_DL:$(_UNIQ)$(UNAME_S)=)
|
_____OS_DL = $(____OS_DL:$(_UNIQ)$(UNAME_S)=)
|
||||||
______OS_DL = $(_____OS_DL:$(_UNIQ)="-ldl")
|
______OS_DL = $(_____OS_DL:$(_UNIQ)="-ldl")
|
||||||
|
|
||||||
_OS_TARGET = $(____OS_DL:$(_UNIQ)FreeBSD=$(_UNIQ))
|
_OS_TARGET = $(____OS_DL:$(_UNIQ)FreeBSD=$(_UNIQ))
|
||||||
__OS_TARGET = $(_OS_TARGET:$(_UNIQ)OpenBSD=$(_UNIQ))
|
__OS_TARGET = $(_OS_TARGET:$(_UNIQ)OpenBSD=$(_UNIQ))
|
||||||
___OS_TARGET = $(__OS_TARGET:$(_UNIQ)NetBSD=$(_UNIQ))
|
___OS_TARGET = $(__OS_TARGET:$(_UNIQ)NetBSD=$(_UNIQ))
|
||||||
____OS_TARGET = $(___OS_TARGET:$(_UNIQ)Haiku=$(_UNIQ))
|
____OS_TARGET = $(___OS_TARGET:$(_UNIQ)Haiku=$(_UNIQ))
|
||||||
_____OS_TARGET = $(___OS_TARGET:$(_UNIQ)$(UNAME_S)=)
|
_____OS_TARGET = $(____OS_TARGET:$(_UNIQ)SunOS=$(_UNIQ))
|
||||||
|
______OS_TARGET = $(____OS_TARGET:$(_UNIQ)$(UNAME_S)=)
|
||||||
|
|
||||||
TARGETS = $(____OS_TARGET:$(_UNIQ)=libtokencap.so)
|
TARGETS = $(_____OS_TARGET:$(_UNIQ)=libtokencap.so)
|
||||||
|
|
||||||
LDFLAGS += $(______OS_DL)
|
LDFLAGS += $(______OS_DL)
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@
|
|||||||
|
|
||||||
#if !defined __linux__ && !defined __APPLE__ && !defined __FreeBSD__ && \
|
#if !defined __linux__ && !defined __APPLE__ && !defined __FreeBSD__ && \
|
||||||
!defined __OpenBSD__ && !defined __NetBSD__ && !defined __DragonFly__ && \
|
!defined __OpenBSD__ && !defined __NetBSD__ && !defined __DragonFly__ && \
|
||||||
!defined(__HAIKU__)
|
!defined(__HAIKU__) && !defined(__sun)
|
||||||
#error "Sorry, this library is unsupported in this platform for now!"
|
#error "Sorry, this library is unsupported in this platform for now!"
|
||||||
#endif /* !__linux__ && !__APPLE__ && ! __FreeBSD__ && ! __OpenBSD__ && \
|
#endif /* !__linux__ && !__APPLE__ && ! __FreeBSD__ && ! __OpenBSD__ && \
|
||||||
!__NetBSD__*/
|
!__NetBSD__*/
|
||||||
@ -52,6 +52,10 @@
|
|||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
#elif defined __HAIKU__
|
#elif defined __HAIKU__
|
||||||
#include <kernel/image.h>
|
#include <kernel/image.h>
|
||||||
|
#elif defined __sun
|
||||||
|
/* For map addresses the old struct is enough */
|
||||||
|
#include <sys/procfs.h>
|
||||||
|
#include <limits.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <dlfcn.h>
|
#include <dlfcn.h>
|
||||||
@ -237,6 +241,8 @@ static void __tokencap_load_mappings(void) {
|
|||||||
image_info ii;
|
image_info ii;
|
||||||
int32_t group = 0;
|
int32_t group = 0;
|
||||||
|
|
||||||
|
__tokencap_ro_loaded = 1;
|
||||||
|
|
||||||
while (get_next_image_info(0, &group, &ii) == B_OK) {
|
while (get_next_image_info(0, &group, &ii) == B_OK) {
|
||||||
|
|
||||||
__tokencap_ro[__tokencap_ro_cnt].st = ii.text;
|
__tokencap_ro[__tokencap_ro_cnt].st = ii.text;
|
||||||
@ -246,6 +252,38 @@ static void __tokencap_load_mappings(void) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#elif defined __sun
|
||||||
|
prmap_t *c, *map;
|
||||||
|
char path[PATH_MAX];
|
||||||
|
ssize_t r;
|
||||||
|
size_t hint;
|
||||||
|
int fd;
|
||||||
|
|
||||||
|
snprintf(path, sizeof(path), "/proc/%ld/map", getpid());
|
||||||
|
fd = open(path, O_RDONLY);
|
||||||
|
hint = (1 << 20);
|
||||||
|
map = malloc(hint);
|
||||||
|
|
||||||
|
__tokencap_ro_loaded = 1;
|
||||||
|
|
||||||
|
for (; (r = pread(fd, map, hint, 0)) == hint; ) {
|
||||||
|
|
||||||
|
hint <<= 1;
|
||||||
|
map = realloc(map, hint);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
for (c = map; c++; r -= sizeof(prmap_t)) {
|
||||||
|
|
||||||
|
__tokencap_ro[__tokencap_ro_cnt].st = c->pr_vaddr;
|
||||||
|
__tokencap_ro[__tokencap_ro_cnt].en = c->pr_vaddr + c->pr_size;
|
||||||
|
|
||||||
|
if (++__tokencap_ro_cnt == MAX_MAPPINGS) break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
free(map);
|
||||||
|
close(fd);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user