diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/arch/arm/util/dwarf-regs.c ./arch/arm/util/dwarf-regs.c
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/arch/arm/util/dwarf-regs.c	2011-12-09 13:14:49.000000000 -0800
+++ ./arch/arm/util/dwarf-regs.c	2012-03-22 17:08:09.000000000 -0700
@@ -8,8 +8,15 @@
  * published by the Free Software Foundation.
  */
 
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include <libio.h>
 #include <dwarf-regs.h>
+#else
+#include <stdio.h>
+#include "util/include/dwarf-regs.h"
+#endif
+/* ANDROID_CHANGE_END */
 
 struct pt_regs_dwarfnum {
 	const char *name;
@@ -20,7 +27,7 @@
 #define REG_DWARFNUM_NAME(r, num) {.name = r, .dwarfnum = num}
 #define GPR_DWARFNUM_NAME(num) \
 	{.name = STR(%r##num), .dwarfnum = num}
-#define REG_DWARFNUM_END {.name = NULL, .dwarfnum = 0}
+#define REG_DWARFNUM_END {.name = 0, .dwarfnum = 0}
 
 /*
  * Reference:
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/arch/x86/util/dwarf-regs.c ./arch/x86/util/dwarf-regs.c
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/arch/x86/util/dwarf-regs.c	2011-12-09 13:14:49.000000000 -0800
+++ ./arch/x86/util/dwarf-regs.c	2012-03-22 17:08:09.000000000 -0700
@@ -21,7 +21,13 @@
  */
 
 #include <libio.h>
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include <dwarf-regs.h>
+#else
+#include "util/include/dwarf-regs.h"
+#endif
+/* ANDROID_CHANGE_END */
 
 /*
  * Generic dwarf analysis helpers
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/bench/mem-memcpy.c ./bench/mem-memcpy.c
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/bench/mem-memcpy.c	2011-12-09 13:14:50.000000000 -0800
+++ ./bench/mem-memcpy.c	2012-03-22 17:08:09.000000000 -0700
@@ -146,9 +146,9 @@
 	if (prefault)
 		fn(dst, src, len);
 
-	BUG_ON(gettimeofday(&tv_start, NULL));
+	gettimeofday(&tv_start, NULL);
 	fn(dst, src, len);
-	BUG_ON(gettimeofday(&tv_end, NULL));
+	gettimeofday(&tv_end, NULL);
 
 	timersub(&tv_end, &tv_start, &tv_diff);
 
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/bench/sched-messaging.c ./bench/sched-messaging.c
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/bench/sched-messaging.c	2011-12-09 13:14:50.000000000 -0800
+++ ./bench/sched-messaging.c	2012-03-22 17:08:09.000000000 -0700
@@ -16,6 +16,11 @@
 #include "bench.h"
 
 /* Test groups of 20 processes spraying to 20 receivers */
+/* ANDROID_CHANGE_BEGIN */
+#ifdef __BIONIC__
+#include <asm/page.h>
+#endif
+/* ANDROID_CHANGE_END */
 #include <pthread.h>
 #include <stdio.h>
 #include <stdlib.h>
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/bench/sched-pipe.c ./bench/sched-pipe.c
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/bench/sched-pipe.c	2011-12-09 13:14:50.000000000 -0800
+++ ./bench/sched-pipe.c	2012-03-22 17:08:09.000000000 -0700
@@ -45,6 +45,8 @@
 int bench_sched_pipe(int argc, const char **argv,
 		     const char *prefix __used)
 {
+        /* ANDROID_CHANGE_BEGIN */
+#ifndef __BIONIC__
 	int pipe_1[2], pipe_2[2];
 	int m = 0, i;
 	struct timeval start, stop, diff;
@@ -122,6 +124,8 @@
 		exit(1);
 		break;
 	}
+#endif
+        /* ANDROID_CHANGE_END */
 
 	return 0;
 }
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/builtin-annotate.c ./builtin-annotate.c
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/builtin-annotate.c	2011-12-09 13:14:50.000000000 -0800
+++ ./builtin-annotate.c	2012-03-22 17:08:09.000000000 -0700
@@ -9,9 +9,17 @@
 
 #include "util/util.h"
 #include "util/color.h"
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include <linux/list.h>
 #include "util/cache.h"
 #include <linux/rbtree.h>
+#else
+#include "util/include/linux/list.h"
+#include "util/cache.h"
+#include "util/include/linux/rbtree.h"
+#endif
+/* ANDROID_CHANGE_END */
 #include "util/symbol.h"
 
 #include "perf.h"
@@ -252,6 +260,10 @@
 		    "print matching source lines (may be slow)"),
 	OPT_BOOLEAN('P', "full-paths", &full_paths,
 		    "Don't shorten the displayed pathnames"),
+        /* ANDROID_CHANGE_BEGIN */
+	OPT_STRING(0, "symfs", &symbol_conf.symfs, "directory",
+		    "Look for files with symbols relative to this directory"),
+        /* ANDROID_CHANGE_END */
 	OPT_END()
 };
 
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/builtin-evlist.c ./builtin-evlist.c
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/builtin-evlist.c	2011-12-09 13:14:50.000000000 -0800
+++ ./builtin-evlist.c	2012-03-22 17:08:09.000000000 -0700
@@ -6,7 +6,13 @@
 
 #include "util/util.h"
 
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include <linux/list.h>
+#else
+#include "util/include/linux/list.h"
+#endif
+/* ANDROID_CHANGE_END */
 
 #include "perf.h"
 #include "util/evlist.h"
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/builtin-kmem.c ./builtin-kmem.c
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/builtin-kmem.c	2011-12-09 13:14:50.000000000 -0800
+++ ./builtin-kmem.c	2012-03-22 17:08:09.000000000 -0700
@@ -13,7 +13,13 @@
 
 #include "util/debug.h"
 
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include <linux/rbtree.h>
+#else
+#include "util/include/linux/rbtree.h"
+#endif
+/* ANDROID_CHANGE_END */
 
 struct alloc_stat;
 typedef int (*sort_fn_t)(struct alloc_stat *, struct alloc_stat *);
@@ -775,4 +781,3 @@
 
 	return 0;
 }
-
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/builtin-lock.c ./builtin-lock.c
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/builtin-lock.c	2011-12-09 13:14:50.000000000 -0800
+++ ./builtin-lock.c	2012-03-22 17:08:09.000000000 -0700
@@ -20,8 +20,15 @@
 #include <math.h>
 #include <limits.h>
 
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include <linux/list.h>
 #include <linux/hash.h>
+#else
+#include "util/include/linux/list.h"
+#include "util/include/linux/hash.h"
+#endif
+/* ANDROID_CHANGE_END */
 
 static struct perf_session *session;
 
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/builtin-record.c ./builtin-record.c
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/builtin-record.c	2011-12-09 13:14:50.000000000 -0800
+++ ./builtin-record.c	2012-03-22 17:08:09.000000000 -0700
@@ -464,7 +464,13 @@
 		if (!fstat(STDOUT_FILENO, &st) && S_ISFIFO(st.st_mode))
 			pipe_output = 1;
 		else
+                        /* ANDROID_CHANGE_BEGIN */
+#ifdef __BIONIC__
+			output_name = "/data/perf.data";
+#else
 			output_name = "perf.data";
+#endif
+                        /* ANDROID_CHANGE_END */
 	}
 	if (output_name) {
 		if (!strcmp(output_name, "-"))
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/builtin-report.c ./builtin-report.c
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/builtin-report.c	2011-12-09 13:14:50.000000000 -0800
+++ ./builtin-report.c	2012-03-22 17:08:09.000000000 -0700
@@ -11,9 +11,17 @@
 
 #include "util/annotate.h"
 #include "util/color.h"
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include <linux/list.h>
 #include "util/cache.h"
 #include <linux/rbtree.h>
+#else
+#include "util/include/linux/list.h"
+#include "util/cache.h"
+#include "util/include/linux/rbtree.h"
+#endif
+/* ANDROID_CHANGE_END */
 #include "util/symbol.h"
 #include "util/callchain.h"
 #include "util/strlist.h"
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/builtin-sched.c ./builtin-sched.c
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/builtin-sched.c	2011-12-09 13:14:50.000000000 -0800
+++ ./builtin-sched.c	2012-03-22 17:08:09.000000000 -0700
@@ -16,6 +16,12 @@
 #include <sys/prctl.h>
 
 #include <semaphore.h>
+/* ANDROID_CHANGE_BEGIN */
+#ifdef __BIONIC__
+/* PTHREAD_STACK_MIN is defined as (2 * PAGE_SIZE) */
+#include <asm/page.h>
+#endif
+/* ANDROID_CHANGE_END */
 #include <pthread.h>
 #include <math.h>
 
@@ -473,6 +479,11 @@
 	BUG_ON(ret);
 
 	goto again;
+        /* ANDROID_CHANGE_BEGIN */
+#ifdef __BIONIC__
+        return NULL;
+#endif
+        /* ANDROID_CHANGE_END */
 }
 
 static void create_tasks(void)
@@ -484,8 +495,15 @@
 
 	err = pthread_attr_init(&attr);
 	BUG_ON(err);
+        /* ANDROID_CHANGE_BEGIN */
+#if 0
 	err = pthread_attr_setstacksize(&attr,
 			(size_t) max(16 * 1024, PTHREAD_STACK_MIN));
+#else
+	err = pthread_attr_setstacksize(&attr,
+			(size_t) max((unsigned) 16 * 1024, (unsigned) PTHREAD_STACK_MIN));
+#endif
+        /* ANDROID_CHANGE_END */
 	BUG_ON(err);
 	err = pthread_mutex_lock(&start_work_mutex);
 	BUG_ON(err);
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/builtin-stat.c ./builtin-stat.c
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/builtin-stat.c	2011-12-09 13:14:50.000000000 -0800
+++ ./builtin-stat.c	2012-03-22 17:08:09.000000000 -0700
@@ -743,7 +743,14 @@
 	if (csv_output)
 		fmt = "%s%.0f%s%s";
 	else if (big_num)
+                /* ANDROID_CHANGE_BEGIN */
+#ifdef __BIONIC__
+                /* bionic doesn't like "'" */
+		fmt = "%s%18.0f%s%-25s";
+#else
 		fmt = "%s%'18.0f%s%-25s";
+#endif
+                /* ANDROID_CHANGE_END */
 	else
 		fmt = "%s%18.0f%s%-25s";
 
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/builtin-test.c ./builtin-test.c
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/builtin-test.c	2011-12-09 13:14:50.000000000 -0800
+++ ./builtin-test.c	2012-03-22 17:08:09.000000000 -0700
@@ -453,6 +453,10 @@
  */
 static int test__basic_mmap(void)
 {
+        /* ANDROID_CHANGE_BEGIN */
+#ifdef __BIONIC__
+        return 0;
+#else
 	int err = -1;
 	union perf_event *event;
 	struct thread_map *threads;
@@ -598,6 +602,8 @@
 	thread_map__delete(threads);
 	return err;
 #undef nsyscalls
+#endif
+        /* ANDROID_CHANGE_END */
 }
 
 static struct test {
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/builtin-timechart.c ./builtin-timechart.c
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/builtin-timechart.c	2011-12-09 13:14:50.000000000 -0800
+++ ./builtin-timechart.c	2012-03-22 17:08:09.000000000 -0700
@@ -17,9 +17,17 @@
 #include "util/util.h"
 
 #include "util/color.h"
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include <linux/list.h>
 #include "util/cache.h"
 #include <linux/rbtree.h>
+#else
+#include "util/include/linux/list.h"
+#include "util/cache.h"
+#include "util/include/linux/rbtree.h"
+#endif
+/* ANDROID_CHANGE_END */
 #include "util/symbol.h"
 #include "util/callchain.h"
 #include "util/strlist.h"
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/builtin-top.c ./builtin-top.c
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/builtin-top.c	2011-12-09 13:14:50.000000000 -0800
+++ ./builtin-top.c	2012-03-22 17:08:09.000000000 -0700
@@ -31,7 +31,13 @@
 #include "util/thread_map.h"
 #include "util/top.h"
 #include "util/util.h"
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include <linux/rbtree.h>
+#else
+#include "util/include/linux/rbtree.h"
+#endif
+/* ANDROID_CHANGE_END */
 #include "util/parse-options.h"
 #include "util/parse-events.h"
 #include "util/cpumap.h"
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/perf.h ./perf.h
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/perf.h	2011-12-09 13:14:50.000000000 -0800
+++ ./perf.h	2012-03-22 17:08:09.000000000 -0700
@@ -6,7 +6,13 @@
 void get_term_dimensions(struct winsize *ws);
 
 #if defined(__i386__)
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include "../../arch/x86/include/asm/unistd.h"
+#else
+#include <asm/unistd.h>
+#endif
+/* ANDROID_CHANGE_END */
 #define rmb()		asm volatile("lock; addl $0,0(%%esp)" ::: "memory")
 #define cpu_relax()	asm volatile("rep; nop" ::: "memory");
 #endif
@@ -64,7 +70,13 @@
 #endif
 
 #ifdef __arm__
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include "../../arch/arm/include/asm/unistd.h"
+#else
+#include <asm/unistd.h>
+#endif
+/* ANDROID_CHANGE_END */
 /*
  * Use the __kuser_memory_barrier helper in the CPU helper page. See
  * arch/arm/kernel/entry-armv.S in the kernel source for details.
@@ -88,9 +100,16 @@
 #include <time.h>
 #include <unistd.h>
 #include <sys/types.h>
+
 #include <sys/syscall.h>
 
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include "../../include/linux/perf_event.h"
+#else
+#include "util/include/linux/added/perf_event.h"
+#endif
+/* ANDROID_CHANGE_END */
 #include "util/types.h"
 #include <stdbool.h>
 
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/util/annotate.c ./util/annotate.c
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/util/annotate.c	2011-12-09 13:14:50.000000000 -0800
+++ ./util/annotate.c	2012-03-22 17:08:10.000000000 -0700
@@ -322,12 +322,23 @@
 	pr_debug("annotating [%p] %30s : [%p] %30s\n",
 		 dso, dso->long_name, sym, sym->name);
 
+        /* ANDROID_CHANGE_BEGIN */
+#if 0
 	snprintf(command, sizeof(command),
 		 "objdump --start-address=0x%016" PRIx64
 		 " --stop-address=0x%016" PRIx64 " -dS -C %s|grep -v %s|expand",
 		 map__rip_2objdump(map, sym->start),
 		 map__rip_2objdump(map, sym->end),
 		 symfs_filename, filename);
+#else
+	snprintf(command, sizeof(command),
+		 "arm-eabi-objdump --start-address=0x%016" PRIx64
+		 " --stop-address=0x%016" PRIx64 " -d -C %s|grep -v %s|expand",
+		 map__rip_2objdump(map, sym->start),
+		 map__rip_2objdump(map, sym->end),
+		 symfs_filename, filename);
+#endif
+        /* ANDROID_CHANGE_END */
 
 	pr_debug("Executing: %s\n", command);
 
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/util/annotate.h ./util/annotate.h
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/util/annotate.h	2011-12-09 13:14:50.000000000 -0800
+++ ./util/annotate.h	2012-03-22 17:08:10.000000000 -0700
@@ -4,8 +4,18 @@
 #include <stdbool.h>
 #include "types.h"
 #include "symbol.h"
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include <linux/list.h>
 #include <linux/rbtree.h>
+#else
+#include "include/linux/list.h"
+#include "include/linux/rbtree.h"
+#ifdef __BIONIC__
+#include <pthread.h>
+#endif
+#endif
+/* ANDROID_CHANGE_END */
 
 struct objdump_line {
 	struct list_head node;
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/util/bitmap.c ./util/bitmap.c
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/util/bitmap.c	2011-12-09 13:14:50.000000000 -0800
+++ ./util/bitmap.c	2012-03-22 17:08:10.000000000 -0700
@@ -5,7 +5,13 @@
  * This source code is licensed under the GNU General Public License,
  * Version 2.  See the file COPYING for more details.
  */
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include <linux/bitmap.h>
+#else
+#include "include/linux/bitmap.h"
+#endif
+/* ANDROID_CHANGE_END */
 
 int __bitmap_weight(const unsigned long *bitmap, int bits)
 {
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/util/callchain.h ./util/callchain.h
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/util/callchain.h	2011-12-09 13:14:50.000000000 -0800
+++ ./util/callchain.h	2012-03-22 17:08:10.000000000 -0700
@@ -2,8 +2,15 @@
 #define __PERF_CALLCHAIN_H
 
 #include "../perf.h"
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include <linux/list.h>
 #include <linux/rbtree.h>
+#else
+#include "include/linux/list.h"
+#include "include/linux/rbtree.h"
+#endif
+/* ANDROID_CHANGE_END */
 #include "event.h"
 #include "symbol.h"
 
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/util/event.c ./util/event.c
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/util/event.c	2011-12-09 13:14:50.000000000 -0800
+++ ./util/event.c	2012-03-22 17:08:10.000000000 -0700
@@ -91,7 +91,13 @@
 	}
 
 	event->comm.header.type = PERF_RECORD_COMM;
+        /* ANDROID_CHANGE_BEGIN */
+#ifdef __BIONIC__
+	size = KERNEL_ALIGN(size, sizeof(u64));
+#else
 	size = ALIGN(size, sizeof(u64));
+#endif
+        /* ANDROID_CHANGE_END */
 	memset(event->comm.comm + size, 0, session->id_hdr_size);
 	event->comm.header.size = (sizeof(event->comm) -
 				(sizeof(event->comm.comm) - size) +
@@ -184,7 +190,13 @@
 			size = strlen(execname);
 			execname[size - 1] = '\0'; /* Remove \n */
 			memcpy(event->mmap.filename, execname, size);
+                        /* ANDROID_CHANGE_BEGIN */
+#ifdef __BIONIC__
+			size = KERNEL_ALIGN(size, sizeof(u64));
+#else
 			size = ALIGN(size, sizeof(u64));
+#endif
+                        /* ANDROID_CHANGE_END */
 			event->mmap.len -= event->mmap.start;
 			event->mmap.header.size = (sizeof(event->mmap) -
 					        (sizeof(event->mmap.filename) - size));
@@ -234,7 +246,13 @@
 		if (pos->dso->kernel)
 			continue;
 
+                /* ANDROID_CHANGE_BEGIN */
+#ifdef __BIONIC__
+		size = KERNEL_ALIGN(pos->dso->long_name_len + 1, sizeof(u64));
+#else
 		size = ALIGN(pos->dso->long_name_len + 1, sizeof(u64));
+#endif
+                /* ANDROID_CHANGE_END */
 		event->mmap.header.type = PERF_RECORD_MMAP;
 		event->mmap.header.size = (sizeof(event->mmap) -
 				        (sizeof(event->mmap.filename) - size));
@@ -409,7 +427,13 @@
 	map = machine->vmlinux_maps[MAP__FUNCTION];
 	size = snprintf(event->mmap.filename, sizeof(event->mmap.filename),
 			"%s%s", mmap_name, symbol_name) + 1;
+        /* ANDROID_CHANGE_BEGIN */
+#ifdef __BIONIC__
+	size = KERNEL_ALIGN(size, sizeof(u64));
+#else
 	size = ALIGN(size, sizeof(u64));
+#endif
+        /* ANDROID_CHANGE_END */
 	event->mmap.header.type = PERF_RECORD_MMAP;
 	event->mmap.header.size = (sizeof(event->mmap) -
 			(sizeof(event->mmap.filename) - size) + session->id_hdr_size);
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/util/event.h ./util/event.h
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/util/event.h	2011-12-09 13:14:50.000000000 -0800
+++ ./util/event.h	2012-03-22 17:08:10.000000000 -0700
@@ -87,7 +87,13 @@
 struct build_id_event {
 	struct perf_event_header header;
 	pid_t			 pid;
+        /* ANDROID_CHANGE_BEGIN */
+#ifdef __BIONIC__
+	u8			 build_id[KERNEL_ALIGN(BUILD_ID_SIZE, sizeof(u64))];
+#else
 	u8			 build_id[ALIGN(BUILD_ID_SIZE, sizeof(u64))];
+#endif
+        /* ANDROID_CHANGE_END */
 	char			 filename[];
 };
 
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/util/evlist.c ./util/evlist.c
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/util/evlist.c	2011-12-09 13:14:50.000000000 -0800
+++ ./util/evlist.c	2012-03-22 17:08:10.000000000 -0700
@@ -15,8 +15,15 @@
 
 #include <sys/mman.h>
 
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include <linux/bitops.h>
 #include <linux/hash.h>
+#else
+#include "include/linux/bitops.h"
+#include "include/linux/hash.h"
+#endif
+/* ANDROID_CHANGE_END */
 
 #define FD(e, x, y) (*(int *)xyarray__entry(e->fd, x, y))
 #define SID(e, x, y) xyarray__entry(e->sample_id, x, y)
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/util/evlist.h ./util/evlist.h
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/util/evlist.h	2011-12-09 13:14:50.000000000 -0800
+++ ./util/evlist.h	2012-03-22 17:08:10.000000000 -0700
@@ -1,7 +1,13 @@
 #ifndef __PERF_EVLIST_H
 #define __PERF_EVLIST_H 1
 
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include <linux/list.h>
+#else
+#include "include/linux/list.h"
+#endif
+/* ANDROID_CHANGE_END */
 #include "../perf.h"
 #include "event.h"
 
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/util/evsel.h ./util/evsel.h
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/util/evsel.h	2011-12-09 13:14:50.000000000 -0800
+++ ./util/evsel.h	2012-03-22 17:08:10.000000000 -0700
@@ -1,9 +1,17 @@
 #ifndef __PERF_EVSEL_H
 #define __PERF_EVSEL_H 1
 
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include <linux/list.h>
 #include <stdbool.h>
 #include "../../../include/linux/perf_event.h"
+#else
+#include "include/linux/list.h"
+#include <stdbool.h>
+#include "include/linux/added/perf_event.h"
+#endif
+/* ANDROID_CHANGE_END */
 #include "types.h"
 #include "xyarray.h"
 #include "cgroup.h"
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/util/generate-cmdlist.sh ./util/generate-cmdlist.sh
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/util/generate-cmdlist.sh	2011-12-09 13:14:50.000000000 -0800
+++ ./util/generate-cmdlist.sh	2012-03-22 17:08:10.000000000 -0700
@@ -1,5 +1,7 @@
 #!/bin/sh
 
+PREFIX="$1"
+
 echo "/* Automatically generated by $0 */
 struct cmdname_help
 {
@@ -9,7 +11,7 @@
 
 static struct cmdname_help common_cmds[] = {"
 
-sed -n -e 's/^perf-\([^ 	]*\)[ 	].* common.*/\1/p' command-list.txt |
+sed -n -e 's/^perf-\([^ 	]*\)[ 	].* common.*/\1/p' ${PREFIX}/command-list.txt |
 sort |
 while read cmd
 do
@@ -19,6 +21,6 @@
             x
             s/.*perf-'"$cmd"' - \(.*\)/  {"'"$cmd"'", "\1"},/
 	    p
-     }' "Documentation/perf-$cmd.txt"
+     }' "${PREFIX}/Documentation/perf-$cmd.txt"
 done
 echo "};"
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/util/header.c ./util/header.c
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/util/header.c	2011-12-09 13:14:50.000000000 -0800
+++ ./util/header.c	2012-03-22 17:08:10.000000000 -0700
@@ -5,8 +5,15 @@
 #include <unistd.h>
 #include <stdio.h>
 #include <stdlib.h>
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include <linux/list.h>
 #include <linux/kernel.h>
+#else
+#include "include/linux/list.h"
+#include "include/linux/kernel.h"
+#endif
+/* ANDROID_CHANGE_END */
 
 #include "evlist.h"
 #include "evsel.h"
@@ -57,10 +64,23 @@
 	return NULL;
 }
 
+/* ANDROID_CHANGE_BEGIN */
+/*
+ * The string in the literal pool might not be aligned properly. ARM doesn't
+ * support unaligned loads with NEON registers
+ */
+#if 0
 static const char *__perf_magic = "PERFFILE";
 
+#else
+static const char const __perf_magic[9] __attribute__ ((aligned (8))) = 
+  "PERFFILE";
+#endif
+/* ANDROID_CHANGE_END */
+
 #define PERF_MAGIC	(*(u64 *)__perf_magic)
 
+
 struct perf_file_attr {
 	struct perf_event_attr	attr;
 	struct perf_file_section	ids;
@@ -129,7 +149,13 @@
 		if (!pos->hit)
 			continue;
 		len = pos->long_name_len + 1;
+                /* ANDROID_CHANGE_BEGIN */
+#ifdef __BIONIC__
+		len = KERNEL_ALIGN(len, NAME_ALIGN);
+#else
 		len = ALIGN(len, NAME_ALIGN);
+#endif
+                /* ANDROID_CHANGE_BEGIN */
 		memset(&b, 0, sizeof(b));
 		memcpy(&b.build_id, pos->build_id, sizeof(pos->build_id));
 		b.pid = pid;
@@ -705,7 +731,13 @@
 	struct perf_session *session = container_of(header, struct perf_session, header);
 	struct {
 		struct perf_event_header   header;
+                /* ANDROID_CHANGE_BEGIN */
+#ifdef __BIONIC__
+		u8			   build_id[KERNEL_ALIGN(BUILD_ID_SIZE, sizeof(u64))];
+#else
 		u8			   build_id[ALIGN(BUILD_ID_SIZE, sizeof(u64))];
+#endif
+                /* ANDROID_CHANGE_END */
 		char			   filename[0];
 	} old_bev;
 	struct build_id_event bev;
@@ -950,7 +982,13 @@
 	int err;
 
 	size = sizeof(struct perf_event_attr);
+        /* ANDROID_CHANGE_BEGIN */
+#ifdef __BIONIC__
+	size = KERNEL_ALIGN(size, sizeof(u64));
+#else
 	size = ALIGN(size, sizeof(u64));
+#endif
+        /* ANDROID_CHANGE_END */
 	size += sizeof(struct perf_event_header);
 	size += ids * sizeof(u64);
 
@@ -1046,7 +1084,13 @@
 
 	ev.event_type.header.type = PERF_RECORD_HEADER_EVENT_TYPE;
 	size = strlen(name);
+        /* ANDROID_CHANGE_BEGIN */
+#ifdef __BIONIC__
+	size = KERNEL_ALIGN(size, sizeof(u64));
+#else
 	size = ALIGN(size, sizeof(u64));
+#endif
+        /* ANDROID_CHANGE_END */
 	ev.event_type.header.size = sizeof(ev.event_type) -
 		(sizeof(ev.event_type.event_type.name) - size);
 
@@ -1100,7 +1144,13 @@
 	size = read_tracing_data_size(fd, &evlist->entries);
 	if (size <= 0)
 		return size;
+        /* ANDROID_CHANGE_BEGIN */
+#ifdef __BIONIC__
+	aligned_size = KERNEL_ALIGN(size, sizeof(u64));
+#else
 	aligned_size = ALIGN(size, sizeof(u64));
+#endif
+        /* ANDROID_CHANGE_END */
 	padding = aligned_size - size;
 	ev.tracing_data.header.size = sizeof(ev.tracing_data);
 	ev.tracing_data.size = aligned_size;
@@ -1126,7 +1176,13 @@
 
 	size_read = trace_report(session->fd, session->repipe);
 
+        /* ANDROID_CHANGE_BEGIN */
+#ifdef __BIONIC__
+	padding = KERNEL_ALIGN(size_read, sizeof(u64)) - size_read;
+#else
 	padding = ALIGN(size_read, sizeof(u64)) - size_read;
+#endif
+        /* ANDROID_CHANGE_END */
 
 	if (read(session->fd, buf, padding) < 0)
 		die("reading input file");
@@ -1157,7 +1213,13 @@
 	memset(&ev, 0, sizeof(ev));
 
 	len = pos->long_name_len + 1;
+        /* ANDROID_CHANGE_BEGIN */
+#ifdef __BIONIC__
+	len = KERNEL_ALIGN(len, NAME_ALIGN);
+#else
 	len = ALIGN(len, NAME_ALIGN);
+#endif
+        /* ANDROID_CHANGE_END */
 	memcpy(&ev.build_id.build_id, pos->build_id, sizeof(pos->build_id));
 	ev.build_id.header.type = PERF_RECORD_HEADER_BUILD_ID;
 	ev.build_id.header.misc = misc;
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/util/header.h ./util/header.h
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/util/header.h	2011-12-09 13:14:50.000000000 -0800
+++ ./util/header.h	2012-03-22 17:08:10.000000000 -0700
@@ -1,13 +1,25 @@
 #ifndef __PERF_HEADER_H
 #define __PERF_HEADER_H
 
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include "../../../include/linux/perf_event.h"
+#else
+#include "include/linux/added/perf_event.h"
+#endif
+/* ANDROID_CHANGE_END */
 #include <sys/types.h>
 #include <stdbool.h>
 #include "types.h"
 #include "event.h"
 
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include <linux/bitmap.h>
+#else
+#include "include/linux/bitmap.h"
+#endif
+/* ANDROID_CHANGE_END */
 
 enum {
 	HEADER_TRACE_INFO = 1,
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/util/help.c ./util/help.c
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/util/help.c	2011-12-09 13:14:50.000000000 -0800
+++ ./util/help.c	2012-03-22 17:08:10.000000000 -0700
@@ -74,12 +74,18 @@
 {
 	int cols = 1, rows;
 	int space = longest + 1; /* min 1 SP between words */
-	struct winsize win;
 	int max_cols;
 	int i, j;
+        /* ANDROID_CHANGE_BEGIN */
+#ifdef __BIONIC__
+        max_cols = 75;
+#else
+	struct winsize win;
 
 	get_term_dimensions(&win);
 	max_cols = win.ws_col - 1; /* don't print *on* the edge */
+#endif
+        /* ANDROID_CHANGE_END */
 
 	if (space < max_cols)
 		cols = max_cols / space;
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/util/hweight.c ./util/hweight.c
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/util/hweight.c	2011-12-09 13:14:50.000000000 -0800
+++ ./util/hweight.c	2012-03-22 17:08:10.000000000 -0700
@@ -1,4 +1,10 @@
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include <linux/bitops.h>
+#else
+#include "include/linux/bitops.h"
+#endif
+/* ANDROID_CHANGE_END */
 
 /**
  * hweightN - returns the hamming weight of a N-bit word
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/util/include/asm/byteorder.h ./util/include/asm/byteorder.h
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/util/include/asm/byteorder.h	2011-12-09 13:14:50.000000000 -0800
+++ ./util/include/asm/byteorder.h	2012-03-22 17:08:10.000000000 -0700
@@ -1,2 +1,8 @@
 #include <asm/types.h>
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include "../../../../include/linux/swab.h"
+#else
+#include <linux/swab.h>
+#endif
+/* ANDROID_CHANGE_END */
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/util/include/linux/bitmap.h ./util/include/linux/bitmap.h
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/util/include/linux/bitmap.h	2011-12-09 13:14:50.000000000 -0800
+++ ./util/include/linux/bitmap.h	2012-03-22 17:08:10.000000000 -0700
@@ -2,7 +2,13 @@
 #define _PERF_BITOPS_H
 
 #include <string.h>
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include <linux/bitops.h>
+#else
+#include "bitops.h"
+#endif
+/* ANDROID_CHANGE_END */
 
 int __bitmap_weight(const unsigned long *bitmap, int bits);
 
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/util/include/linux/bitops.h ./util/include/linux/bitops.h
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/util/include/linux/bitops.h	2011-12-09 13:14:50.000000000 -0800
+++ ./util/include/linux/bitops.h	2012-03-22 17:08:10.000000000 -0700
@@ -1,9 +1,20 @@
 #ifndef _PERF_LINUX_BITOPS_H_
 #define _PERF_LINUX_BITOPS_H_
 
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include <linux/kernel.h>
 #include <linux/compiler.h>
 #include <asm/hweight.h>
+#else
+#include "kernel.h"
+#include "compiler.h"
+#include "../asm/hweight.h"
+#if defined(__BIONIC__)
+#define __WORDSIZE 32
+#endif
+#endif
+/* ANDROID_CHANGE_END */
 
 #define BITS_PER_LONG __WORDSIZE
 #define BITS_PER_BYTE           8
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/util/include/linux/compiler.h ./util/include/linux/compiler.h
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/util/include/linux/compiler.h	2011-12-09 13:14:50.000000000 -0800
+++ ./util/include/linux/compiler.h	2012-03-22 17:08:10.000000000 -0700
@@ -7,6 +7,10 @@
 #define __user
 #define __attribute_const__
 
+/* ANDROID_CHANGE_BEGIN */
+#ifndef __BIONIC__
 #define __used		__attribute__((__unused__))
+#endif
+/* ANDROID_CHANGE_END */
 
 #endif
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/util/include/linux/hash.h ./util/include/linux/hash.h
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/util/include/linux/hash.h	2011-12-09 13:14:50.000000000 -0800
+++ ./util/include/linux/hash.h	2012-03-22 17:08:10.000000000 -0700
@@ -1,5 +1,10 @@
-#include "../../../../include/linux/hash.h"
-
 #ifndef PERF_HASH_H
 #define PERF_HASH_H
+/* ANDROID_CHANGE_BEGIN */
+#if 0
+#include "../../../../include/linux/hash.h"
+#else
+#include "added/hash.h"
+#endif
+/* ANDROID_CHANGE_END */
 #endif
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/util/include/linux/kernel.h ./util/include/linux/kernel.h
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/util/include/linux/kernel.h	2011-12-09 13:14:50.000000000 -0800
+++ ./util/include/linux/kernel.h	2012-03-22 17:08:10.000000000 -0700
@@ -8,7 +8,14 @@
 
 #define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))
 
+/* ANDROID_CHANGE_BEGIN */
+#ifdef __BIONIC__
+/* Bionic defines ALIGN in sys/param.h */
+#define KERNEL_ALIGN(x,a)	__ALIGN_MASK(x,(typeof(x))(a)-1)
+#else
 #define ALIGN(x,a)		__ALIGN_MASK(x,(typeof(x))(a)-1)
+#endif
+/* ANDROID_CHANGE_END */
 #define __ALIGN_MASK(x,mask)	(((x)+(mask))&~(mask))
 
 #ifndef offsetof
@@ -28,7 +35,11 @@
 	(type *)((char *)__mptr - offsetof(type, member)); })
 #endif
 
+/* ANDROID_CHANGE_BEGIN */
+#ifndef __BIONIC__
 #define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:-!!(e); }))
+#endif
+/* ANDROID_CHANGE_END */
 
 #ifndef max
 #define max(x, y) ({				\
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/util/include/linux/list.h ./util/include/linux/list.h
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/util/include/linux/list.h	2011-12-09 13:14:50.000000000 -0800
+++ ./util/include/linux/list.h	2012-03-22 17:08:10.000000000 -0700
@@ -1,7 +1,15 @@
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include <linux/kernel.h>
 #include <linux/prefetch.h>
-
 #include "../../../../include/linux/list.h"
+#else
+#include "kernel.h"
+#include "prefetch.h"
+#include "types.h"
+#include "added/list.h"
+#endif
+/* ANDROID_CHANGE_END */
 
 #ifndef PERF_LIST_H
 #define PERF_LIST_H
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/util/include/linux/poison.h ./util/include/linux/poison.h
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/util/include/linux/poison.h	2011-12-09 13:14:50.000000000 -0800
+++ ./util/include/linux/poison.h	2012-03-22 17:08:10.000000000 -0700
@@ -1 +1,7 @@
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include "../../../../include/linux/poison.h"
+#else
+#include "added/poison.h"
+#endif
+/* ANDROID_CHANGE_END */
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/util/include/linux/rbtree.h ./util/include/linux/rbtree.h
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/util/include/linux/rbtree.h	2011-12-09 13:14:50.000000000 -0800
+++ ./util/include/linux/rbtree.h	2012-03-22 17:08:10.000000000 -0700
@@ -1 +1,7 @@
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include "../../../../include/linux/rbtree.h"
+#else
+#include "added/rbtree.h"
+#endif
+/* ANDROID_CHANGE_END */
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/util/map.h ./util/map.h
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/util/map.h	2011-12-09 13:14:50.000000000 -0800
+++ ./util/map.h	2012-03-22 17:08:10.000000000 -0700
@@ -1,9 +1,17 @@
 #ifndef __PERF_MAP_H
 #define __PERF_MAP_H
 
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include <linux/compiler.h>
 #include <linux/list.h>
 #include <linux/rbtree.h>
+#else
+#include "include/linux/compiler.h"
+#include "include/linux/list.h"
+#include "include/linux/rbtree.h"
+#endif
+/* ANDROID_CHANGE_END */
 #include <stdio.h>
 #include <stdbool.h>
 #include "types.h"
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/util/parse-events.c ./util/parse-events.c
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/util/parse-events.c	2011-12-09 13:14:50.000000000 -0800
+++ ./util/parse-events.c	2012-03-22 17:08:10.000000000 -0700
@@ -1,4 +1,10 @@
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include "../../../include/linux/hw_breakpoint.h"
+#else
+#include "include/linux/added/hw_breakpoint.h"
+#endif
+/* ANDROID_CHANGE_END */
 #include "util.h"
 #include "../perf.h"
 #include "evlist.h"
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/util/parse-events.h ./util/parse-events.h
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/util/parse-events.h	2011-12-09 13:14:50.000000000 -0800
+++ ./util/parse-events.h	2012-03-22 17:08:10.000000000 -0700
@@ -4,7 +4,13 @@
  * Parse symbolic events/counts passed in as options:
  */
 
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include "../../../include/linux/perf_event.h"
+#else
+#include "include/linux/added/perf_event.h"
+#endif
+/* ANDROID_CHANGE_END */
 
 struct list_head;
 struct perf_evsel;
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/util/probe-finder.c ./util/probe-finder.c
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/util/probe-finder.c	2011-12-09 13:14:50.000000000 -0800
+++ ./util/probe-finder.c	2012-03-22 17:08:10.000000000 -0700
@@ -31,9 +31,16 @@
 #include <string.h>
 #include <stdarg.h>
 #include <ctype.h>
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include <dwarf-regs.h>
-
 #include <linux/bitops.h>
+#else
+#include "include/dwarf-regs.h"
+#include "include/linux/bitops.h"
+#endif
+/* ANDROID_CHANGE_END */
+
 #include "event.h"
 #include "debug.h"
 #include "util.h"
@@ -2061,4 +2068,3 @@
 	dwfl_end(dwfl);
 	return (ret < 0) ? ret : lf.found;
 }
-
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/util/probe-finder.h ./util/probe-finder.h
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/util/probe-finder.h	2011-12-09 13:14:50.000000000 -0800
+++ ./util/probe-finder.h	2012-03-22 17:08:10.000000000 -0700
@@ -33,10 +33,20 @@
 				  struct variable_list **vls, int max_points,
 				  bool externs);
 
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include <dwarf.h>
 #include <elfutils/libdw.h>
 #include <elfutils/libdwfl.h>
 #include <elfutils/version.h>
+#else
+/* These headers live under the external/elfutils */
+#include <dwarf.h>
+#include <libdw.h>
+#include <libdwfl.h>
+#include <version.h>
+#endif
+/* ANDROID_CHANGE_END */
 
 struct probe_finder {
 	struct perf_probe_event	*pev;		/* Target probe event */
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/util/pstack.c ./util/pstack.c
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/util/pstack.c	2011-12-09 13:14:50.000000000 -0800
+++ ./util/pstack.c	2012-03-22 17:08:09.000000000 -0700
@@ -6,7 +6,13 @@
 
 #include "util.h"
 #include "pstack.h"
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include <linux/kernel.h>
+#else
+#include "util/include/linux/kernel.h"
+#endif
+/* ANDROID_CHANGE_END */
 #include <stdlib.h>
 
 struct pstack {
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/util/session.h ./util/session.h
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/util/session.h	2011-12-09 13:14:50.000000000 -0800
+++ ./util/session.h	2012-03-22 17:08:10.000000000 -0700
@@ -6,8 +6,15 @@
 #include "header.h"
 #include "symbol.h"
 #include "thread.h"
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include <linux/rbtree.h>
 #include "../../../include/linux/perf_event.h"
+#else
+#include "include/linux/rbtree.h"
+#include "include/linux/added/perf_event.h"
+#endif
+/* ANDROID_CHANGE_END */
 
 struct sample_queue;
 struct ip_callchain;
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/util/sort.h ./util/sort.h
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/util/sort.h	2011-12-09 13:14:50.000000000 -0800
+++ ./util/sort.h	2012-03-22 17:08:10.000000000 -0700
@@ -5,9 +5,17 @@
 #include "util.h"
 
 #include "color.h"
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include <linux/list.h>
 #include "cache.h"
 #include <linux/rbtree.h>
+#else
+#include "include/linux/list.h"
+#include "cache.h"
+#include "include/linux/rbtree.h"
+#endif
+/* ANDROID_CHANGE_END */
 #include "symbol.h"
 #include "string.h"
 #include "callchain.h"
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/util/strfilter.h ./util/strfilter.h
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/util/strfilter.h	2011-12-09 13:14:50.000000000 -0800
+++ ./util/strfilter.h	2012-03-22 17:08:09.000000000 -0700
@@ -2,7 +2,13 @@
 #define __PERF_STRFILTER_H
 /* General purpose glob matching filter */
 
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include <linux/list.h>
+#else
+#include "util/include/linux/list.h"
+#endif
+/* ANDROID_CHANGE_END */
 #include <stdbool.h>
 
 /* A node of string filter */
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/util/strlist.h ./util/strlist.h
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/util/strlist.h	2011-12-09 13:14:50.000000000 -0800
+++ ./util/strlist.h	2012-03-22 17:08:10.000000000 -0700
@@ -1,7 +1,14 @@
 #ifndef __PERF_STRLIST_H
 #define __PERF_STRLIST_H
 
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include <linux/rbtree.h>
+#else
+#include "include/linux/kernel.h"
+#include "include/linux/rbtree.h"
+#endif
+/* ANDROID_CHANGE_END */
 #include <stdbool.h>
 
 struct str_node {
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/util/symbol.c ./util/symbol.c
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/util/symbol.c	2011-12-09 13:14:50.000000000 -0800
+++ ./util/symbol.c	2012-03-22 17:08:10.000000000 -0700
@@ -31,6 +31,12 @@
 #define NT_GNU_BUILD_ID 3
 #endif
 
+/* ANDROID_CHANGE_BEGIN */
+#ifdef __BIONIC__
+#define roundup(x, y)  ((((x) + ((y) - 1)) / (y)) * (y))
+#endif
+/* ANDROID_CHANGE_END */
+
 static bool dso__build_id_equal(const struct dso *dso, u8 *build_id);
 static int elf_read_build_id(Elf *elf, void *bf, size_t size);
 static void dsos__add(struct list_head *head, struct dso *dso);
@@ -2465,7 +2471,13 @@
 	if (symbol_conf.initialized)
 		return 0;
 
+        /* ANDROID_CHANGE_BEGIN */
+#if __BIONIC__
+	symbol_conf.priv_size = KERNEL_ALIGN(symbol_conf.priv_size, sizeof(u64));
+#else
 	symbol_conf.priv_size = ALIGN(symbol_conf.priv_size, sizeof(u64));
+#endif
+        /* ANDROID_CHANGE_END */
 
 	elf_version(EV_CURRENT);
 	if (symbol_conf.sort_by_name)
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/util/symbol.h ./util/symbol.h
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/util/symbol.h	2011-12-09 13:14:50.000000000 -0800
+++ ./util/symbol.h	2012-03-22 17:08:10.000000000 -0700
@@ -5,8 +5,15 @@
 #include <stdbool.h>
 #include <stdint.h>
 #include "map.h"
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include <linux/list.h>
 #include <linux/rbtree.h>
+#else
+#include "include/linux/list.h"
+#include "include/linux/rbtree.h"
+#endif
+/* ANDROID_CHANGE_END */
 #include <stdio.h>
 
 #ifdef HAVE_CPLUS_DEMANGLE
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/util/thread.h ./util/thread.h
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/util/thread.h	2011-12-09 13:14:50.000000000 -0800
+++ ./util/thread.h	2012-03-22 17:08:10.000000000 -0700
@@ -1,7 +1,13 @@
 #ifndef __PERF_THREAD_H
 #define __PERF_THREAD_H
 
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include <linux/rbtree.h>
+#else
+#include "include/linux/rbtree.h"
+#endif
+/* ANDROID_CHANGE_END */
 #include <unistd.h>
 #include "symbol.h"
 
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/util/top.h ./util/top.h
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/util/top.h	2011-12-09 13:14:50.000000000 -0800
+++ ./util/top.h	2012-03-22 17:08:10.000000000 -0700
@@ -5,8 +5,15 @@
 #include "../perf.h"
 #include <stddef.h>
 #include <pthread.h>
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include <linux/list.h>
 #include <linux/rbtree.h>
+#else
+#include "include/linux/list.h"
+#include "include/linux/rbtree.h"
+#endif
+/* ANDROID_CHANGE_END */
 
 struct perf_evlist;
 struct perf_evsel;
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/util/trace-event.h ./util/trace-event.h
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/util/trace-event.h	2011-12-09 13:14:50.000000000 -0800
+++ ./util/trace-event.h	2012-03-22 17:08:10.000000000 -0700
@@ -5,7 +5,11 @@
 #include "parse-events.h"
 #include "session.h"
 
+/* ANDROID_CHANGE_BEGIN */
+#ifndef __BIONIC__
 #define __unused __attribute__((unused))
+#endif
+/* ANDROID_CHANGE_END */
 
 
 #ifndef PAGE_MASK
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/util/trace-event-info.c ./util/trace-event-info.c
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/util/trace-event-info.c	2011-12-09 13:14:50.000000000 -0800
+++ ./util/trace-event-info.c	2012-03-22 17:08:10.000000000 -0700
@@ -34,8 +34,15 @@
 #include <ctype.h>
 #include <errno.h>
 #include <stdbool.h>
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include <linux/list.h>
 #include <linux/kernel.h>
+#else
+#include "include/linux/list.h"
+#include "include/linux/kernel.h"
+#endif
+/* ANDROID_CHANGE_END */
 
 #include "../perf.h"
 #include "trace-event.h"
diff -r -u -d /home/bccheng/local/kernels/crespo-ics/tools/perf/util/util.h ./util/util.h
--- /home/bccheng/local/kernels/crespo-ics/tools/perf/util/util.h	2011-12-09 13:14:50.000000000 -0800
+++ ./util/util.h	2012-03-22 17:08:09.000000000 -0700
@@ -1,7 +1,11 @@
 #ifndef GIT_COMPAT_UTIL_H
 #define GIT_COMPAT_UTIL_H
 
+/* ANDROID_CHANGE_BEGIN */
+#ifndef __BIONIC__
 #define _FILE_OFFSET_BITS 64
+#endif
+/* ANDROID_CHANGE_END */
 
 #ifndef FLEX_ARRAY
 /*
@@ -58,6 +62,11 @@
 #include <limits.h>
 #include <sys/param.h>
 #include <sys/types.h>
+/* ANDROID_CHANGE_BEGIN */
+#ifdef __BIONIC__
+#include <pthread.h>
+#endif
+/* ANDROID_CHANGE_END */
 #include <dirent.h>
 #include <sys/time.h>
 #include <time.h>
@@ -77,9 +86,23 @@
 #include <netdb.h>
 #include <pwd.h>
 #include <inttypes.h>
+
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include "../../../include/linux/magic.h"
+#else
+#include <linux/magic.h>
+#endif
+/* ANDROID_CHANGE_END */
+
 #include "types.h"
+
+/* ANDROID_CHANGE_BEGIN */
+#ifndef __BIONIC__
 #include <sys/ttydefaults.h>
+#endif
+/* ANDROID_CHANGE_END */
+
 
 extern const char *graph_line;
 extern const char *graph_dotted_line;
@@ -135,7 +158,13 @@
 extern int error(const char *err, ...) __attribute__((format (printf, 1, 2)));
 extern void warning(const char *err, ...) __attribute__((format (printf, 1, 2)));
 
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 #include "../../../include/linux/stringify.h"
+#else
+#include "util/include/linux/added/stringify.h"
+#endif
+/* ANDROID_CHANGE_END */
 
 #define DIE_IF(cnd)	\
 	do { if (cnd)	\
