Add source code info to the perf annotate output.

Change-Id: I551a6a6bf1c03a09a47fb64a19aa6794828e075e
diff --git a/builtin-top.c b/builtin-top.c
index c2c2aaa..ccbe437 100644
--- a/builtin-top.c
+++ b/builtin-top.c
@@ -193,7 +193,13 @@
 		return err;
 	}
 
+    /* ANDROID_CHANGE_BEGIN */
+#if 0
 	err = symbol__annotate(sym, syme->map, 0);
+#else
+	err = symbol__annotate(sym, syme->map, 0, false);
+#endif
+    /* ANDROID_CHANGE_END */
 	if (err == 0) {
 out_assign:
 		top.sym_filter_entry = syme;
diff --git a/util/annotate.c b/util/annotate.c
index 77b9967..787722e 100644
--- a/util/annotate.c
+++ b/util/annotate.c
@@ -256,7 +256,14 @@
 	return 0;
 }
 
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 int symbol__annotate(struct symbol *sym, struct map *map, size_t privsize)
+#else
+int symbol__annotate(struct symbol *sym, struct map *map, size_t privsize,
+                     bool print_lines)
+#endif
+/* ANDROID_CHANGE_END */
 {
 	struct dso *dso = map->dso;
 	char *filename = dso__build_id_filename(dso, NULL, 0);
@@ -322,7 +329,7 @@
 	pr_debug("annotating [%p] %30s : [%p] %30s\n",
 		 dso, dso->long_name, sym, sym->name);
 
-        /* ANDROID_CHANGE_BEGIN */
+    /* ANDROID_CHANGE_BEGIN */
 #if 0
 	snprintf(command, sizeof(command),
 		 "objdump --start-address=0x%016" PRIx64
@@ -333,12 +340,13 @@
 #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",
+		 " --stop-address=0x%016" PRIx64 " -d%c -C %s|grep -v %s|expand",
 		 map__rip_2objdump(map, sym->start),
 		 map__rip_2objdump(map, sym->end),
+         print_lines ? 'S' : ' ',
 		 symfs_filename, filename);
 #endif
-        /* ANDROID_CHANGE_END */
+    /* ANDROID_CHANGE_END */
 
 	pr_debug("Executing: %s\n", command);
 
@@ -409,7 +417,14 @@
 	if (!notes->src->lines)
 		return -1;
 
+    /* ANDORID_CHANGE_BEGIN */
+#if 0
 	start = map->unmap_ip(map, sym->start);
+#else
+    /* Use relative start address */
+    start = sym->start;
+#endif
+    /* ANDORID_CHANGE_END */
 
 	for (i = 0; i < len; i++) {
 		char *path = NULL;
@@ -422,7 +437,8 @@
 			continue;
 
 		offset = start + i;
-		sprintf(cmd, "addr2line -e %s %016" PRIx64, filename, offset);
+		sprintf(cmd, "arm-eabi-addr2line -e %s%s %016" PRIx64, symbol_conf.symfs,
+                filename, offset);
 		fp = popen(cmd, "r");
 		if (!fp)
 			continue;
@@ -594,8 +610,15 @@
 	struct rb_root source_line = RB_ROOT;
 	u64 len;
 
+    /* ANDROID_CHANGE_BEGIN */
+#if 0
 	if (symbol__annotate(sym, map, 0) < 0)
 		return -1;
+#else
+	if (symbol__annotate(sym, map, 0, print_lines) < 0)
+		return -1;
+#endif
+    /* ANDROID_CHANGE_END */
 
 	len = sym->end - sym->start;
 
diff --git a/util/annotate.h b/util/annotate.h
index 5a979df..319b122 100644
--- a/util/annotate.h
+++ b/util/annotate.h
@@ -85,7 +85,14 @@
 int symbol__alloc_hist(struct symbol *sym, int nevents);
 void symbol__annotate_zero_histograms(struct symbol *sym);
 
+/* ANDROID_CHANGE_BEGIN */
+#if 0
 int symbol__annotate(struct symbol *sym, struct map *map, size_t privsize);
+#else
+int symbol__annotate(struct symbol *sym, struct map *map, size_t privsize,
+                     bool print_lines);
+#endif
+/* ANDROID_CHANGE_END */
 int symbol__annotate_init(struct map *map __used, struct symbol *sym);
 int symbol__annotate_printf(struct symbol *sym, struct map *map, int evidx,
 			    bool full_paths, int min_pcnt, int max_lines,
diff --git a/util/hist.c b/util/hist.c
index 627a02e..f779fe2 100644
--- a/util/hist.c
+++ b/util/hist.c
@@ -969,7 +969,13 @@
 
 int hist_entry__annotate(struct hist_entry *he, size_t privsize)
 {
+    /* ANDROID_CHANGE_BEGIN */
+#if 0
 	return symbol__annotate(he->ms.sym, he->ms.map, privsize);
+#else
+	return symbol__annotate(he->ms.sym, he->ms.map, privsize, false);
+#endif
+    /* ANDROID_CHANGE_END */
 }
 
 void hists__inc_nr_events(struct hists *self, u32 type)