auto import from //depot/cupcake/@135843
diff --git a/libutil/op_libiberty.h b/libutil/op_libiberty.h
new file mode 100644
index 0000000..ea02a50
--- /dev/null
+++ b/libutil/op_libiberty.h
@@ -0,0 +1,81 @@
+/**
+ * @file op_libiberty.h
+ * Wrapper for libiberty - always use this instead of
+ * libiberty.h
+ *
+ * @remark Copyright 2002 OProfile authors
+ * @remark Read the file COPYING
+ *
+ * @author John Levon
+ * @author Philippe Elie
+ */
+
+#ifndef OP_LIBIBERTY_H
+#define OP_LIBIBERTY_H
+
+#include <stddef.h>
+
+#include "config.h"
+
+#ifdef MALLOC_ATTRIBUTE_OK
+#define OP_ATTRIB_MALLOC	__attribute__((malloc))
+#else
+#define OP_ATTRIB_MALLOC
+#endif
+
+#ifdef HAVE_LIBIBERTY_H
+#include <libiberty.h>
+#else
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* some system have a libiberty.a but no libiberty.h so we must provide
+ * ourself the missing proto */
+#ifndef HAVE_LIBIBERTY_H
+
+/* Set the program name used by xmalloc.  */
+void xmalloc_set_program_name(char const *);
+
+/* Allocate memory without fail.  If malloc fails, this will print a
+   message to stderr (using the name set by xmalloc_set_program_name,
+   if any) and then call xexit.  */
+void * xmalloc(size_t) OP_ATTRIB_MALLOC;
+
+/* Reallocate memory without fail.  This works like xmalloc.  Note,
+   realloc type functions are not suitable for attribute malloc since
+   they may return the same address across multiple calls. */
+void * xrealloc(void *, size_t);
+
+/* Allocate memory without fail and set it to zero.  This works like xmalloc */
+void * xcalloc(size_t, size_t) OP_ATTRIB_MALLOC;
+
+/* Copy a string into a memory buffer without fail.  */
+char * xstrdup(char const *) OP_ATTRIB_MALLOC;
+
+/**
+ * Duplicates a region of memory without fail.  First, alloc_size bytes
+ * are allocated, then copy_size bytes from input are copied into
+ * it, and the new memory is returned.  If fewer bytes are copied than were
+ * allocated, the remaining memory is zeroed.
+ */
+void * xmemdup(void const *, size_t, size_t) OP_ATTRIB_MALLOC;
+
+#endif	/* !HAVE_LIBIBERTY_H */
+
+#ifdef ANDROID
+#define xmalloc(s)      malloc(s)
+#define xrealloc(p,s)   realloc(p,s)
+#define xstrdup(str)    strdup(str)
+#define xmalloc_set_program_name(n)
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* !HAVE_LIBIBERTY_H */
+
+#endif /* OP_LIBIBERTY_H */