Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Bandit/types.h
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
86 lines (63 sloc)
2.24 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
american fuzzy lop - type definitions and minor macros | |
------------------------------------------------------ | |
Written and maintained by Michal Zalewski <lcamtuf@google.com> | |
Copyright 2013, 2014, 2015 Google Inc. All rights reserved. | |
Licensed under the Apache License, Version 2.0 (the "License"); | |
you may not use this file except in compliance with the License. | |
You may obtain a copy of the License at: | |
http://www.apache.org/licenses/LICENSE-2.0 | |
*/ | |
#ifndef _HAVE_TYPES_H | |
#define _HAVE_TYPES_H | |
#include <stdint.h> | |
#include <stdlib.h> | |
typedef uint8_t u8; | |
typedef uint16_t u16; | |
typedef uint32_t u32; | |
/* | |
Ugh. There is an unintended compiler / glibc #include glitch caused by | |
combining the u64 type an %llu in format strings, necessitating a workaround. | |
In essence, the compiler is always looking for 'unsigned long long' for %llu. | |
On 32-bit systems, the u64 type (aliased to uint64_t) is expanded to | |
'unsigned long long' in <bits/types.h>, so everything checks out. | |
But on 64-bit systems, it is #ifdef'ed in the same file as 'unsigned long'. | |
Now, it only happens in circumstances where the type happens to have the | |
expected bit width, *but* the compiler does not know that... and complains | |
about 'unsigned long' being unsafe to pass to %llu. | |
*/ | |
#ifdef __x86_64__ | |
typedef unsigned long long u64; | |
#else | |
typedef uint64_t u64; | |
#endif /* ^__x86_64__ */ | |
typedef int8_t s8; | |
typedef int16_t s16; | |
typedef int32_t s32; | |
typedef int64_t s64; | |
#ifndef MIN | |
# define MIN(_a,_b) ((_a) > (_b) ? (_b) : (_a)) | |
# define MAX(_a,_b) ((_a) > (_b) ? (_a) : (_b)) | |
#endif /* !MIN */ | |
#define SWAP16(_x) ({ \ | |
u16 _ret = (_x); \ | |
(u16)((_ret << 8) | (_ret >> 8)); \ | |
}) | |
#define SWAP32(_x) ({ \ | |
u32 _ret = (_x); \ | |
(u32)((_ret << 24) | (_ret >> 24) | \ | |
((_ret << 8) & 0x00FF0000) | \ | |
((_ret >> 8) & 0x0000FF00)); \ | |
}) | |
#ifdef AFL_LLVM_PASS | |
# define AFL_R(x) (random() % (x)) | |
#else | |
# define R(x) (random() % (x)) | |
#endif /* ^AFL_LLVM_PASS */ | |
#define STRINGIFY_INTERNAL(x) #x | |
#define STRINGIFY(x) STRINGIFY_INTERNAL(x) | |
#define MEM_BARRIER() \ | |
asm volatile("" ::: "memory") | |
#define likely(_x) __builtin_expect(!!(_x), 1) | |
#define unlikely(_x) __builtin_expect(!!(_x), 0) | |
#endif /* ! _HAVE_TYPES_H */ |