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)	\