1 /** 2 * @file op_libiberty.h 3 * Wrapper for libiberty - always use this instead of 4 * libiberty.h 5 * 6 * @remark Copyright 2002 OProfile authors 7 * @remark Read the file COPYING 8 * 9 * @author John Levon 10 * @author Philippe Elie 11 */ 12 13 #ifndef OP_LIBIBERTY_H 14 #define OP_LIBIBERTY_H 15 16 #include <stddef.h> 17 18 #include "config.h" 19 20 #ifdef MALLOC_ATTRIBUTE_OK 21 #define OP_ATTRIB_MALLOC __attribute__((malloc)) 22 #else 23 #define OP_ATTRIB_MALLOC 24 #endif 25 26 #ifdef HAVE_LIBIBERTY_H 27 #include <libiberty.h> 28 #else 29 30 #ifdef __cplusplus 31 extern "C" { 32 #endif 33 34 /* some system have a libiberty.a but no libiberty.h so we must provide 35 * ourself the missing proto */ 36 #ifndef HAVE_LIBIBERTY_H 37 /* Set the program name used by xmalloc. */ 38 void xmalloc_set_program_name(char const *); 39 40 /* Allocate memory without fail. If malloc fails, this will print a 41 message to stderr (using the name set by xmalloc_set_program_name, 42 if any) and then call xexit. */ 43 void * xmalloc(size_t) OP_ATTRIB_MALLOC; 44 45 /* Reallocate memory without fail. This works like xmalloc. Note, 46 realloc type functions are not suitable for attribute malloc since 47 they may return the same address across multiple calls. */ 48 void * xrealloc(void *, size_t); 49 50 /* Allocate memory without fail and set it to zero. This works like xmalloc */ 51 void * xcalloc(size_t, size_t) OP_ATTRIB_MALLOC; 52 53 /* Copy a string into a memory buffer without fail. */ 54 char * xstrdup(char const *) OP_ATTRIB_MALLOC; 55 56 /** 57 * Duplicates a region of memory without fail. First, alloc_size bytes 58 * are allocated, then copy_size bytes from input are copied into 59 * it, and the new memory is returned. If fewer bytes are copied than were 60 * allocated, the remaining memory is zeroed. 61 */ 62 void * xmemdup(void const *, size_t, size_t) OP_ATTRIB_MALLOC; 63 64 #endif /* !HAVE_LIBIBERTY_H */ 65 66 #ifdef ANDROID 67 #define xmalloc(s) malloc(s) 68 #define xrealloc(p,s) realloc(p,s) 69 #define xstrdup(str) strdup(str) 70 #define xmalloc_set_program_name(n) 71 #endif 72 73 #ifdef __cplusplus 74 } 75 #endif 76 77 #endif /* !HAVE_LIBIBERTY_H */ 78 79 #endif /* OP_LIBIBERTY_H */ 80