These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / tools / perf / builtin-buildid-list.c
index feb420f..6419f57 100644 (file)
 
 static int sysfs__fprintf_build_id(FILE *fp)
 {
-       u8 kallsyms_build_id[BUILD_ID_SIZE];
-       char sbuild_id[BUILD_ID_SIZE * 2 + 1];
+       char sbuild_id[SBUILD_ID_SIZE];
+       int ret;
 
-       if (sysfs__read_build_id("/sys/kernel/notes", kallsyms_build_id,
-                                sizeof(kallsyms_build_id)) != 0)
-               return -1;
+       ret = sysfs__sprintf_build_id("/", sbuild_id);
+       if (ret != sizeof(sbuild_id))
+               return ret < 0 ? ret : -EINVAL;
 
-       build_id__sprintf(kallsyms_build_id, sizeof(kallsyms_build_id),
-                         sbuild_id);
-       fprintf(fp, "%s\n", sbuild_id);
-       return 0;
+       return fprintf(fp, "%s\n", sbuild_id);
 }
 
 static int filename__fprintf_build_id(const char *name, FILE *fp)
 {
-       u8 build_id[BUILD_ID_SIZE];
-       char sbuild_id[BUILD_ID_SIZE * 2 + 1];
+       char sbuild_id[SBUILD_ID_SIZE];
+       int ret;
 
-       if (filename__read_build_id(name, build_id,
-                                   sizeof(build_id)) != sizeof(build_id))
-               return 0;
+       ret = filename__sprintf_build_id(name, sbuild_id);
+       if (ret != sizeof(sbuild_id))
+               return ret < 0 ? ret : -EINVAL;
 
-       build_id__sprintf(build_id, sizeof(build_id), sbuild_id);
        return fprintf(fp, "%s\n", sbuild_id);
 }
 
@@ -63,12 +59,21 @@ static int perf_session__list_build_ids(bool force, bool with_hits)
        /*
         * See if this is an ELF file first:
         */
-       if (filename__fprintf_build_id(input_name, stdout))
+       if (filename__fprintf_build_id(input_name, stdout) > 0)
                goto out;
 
        session = perf_session__new(&file, false, &build_id__mark_dso_hit_ops);
        if (session == NULL)
                return -1;
+
+       /*
+        * We take all buildids when the file contains AUX area tracing data
+        * because we do not decode the trace because it would take too long.
+        */
+       if (!perf_data_file__is_pipe(&file) &&
+           perf_header__has_feat(&session->header, HEADER_AUXTRACE))
+               with_hits = false;
+
        /*
         * in pipe-mode, the only way to get the buildids is to parse
         * the record stream. Buildids are stored as RECORD_HEADER_BUILD_ID
@@ -105,7 +110,7 @@ int cmd_buildid_list(int argc, const char **argv,
        setup_pager();
 
        if (show_kernel)
-               return sysfs__fprintf_build_id(stdout);
+               return !(sysfs__fprintf_build_id(stdout) > 0);
 
        return perf_session__list_build_ids(force, with_hits);
 }