]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - tools/perf/builtin-buildid-cache.c
perf symbols: Accept symbols starting at address 0
[karo-tx-linux.git] / tools / perf / builtin-buildid-cache.c
index 30e2b2cb2421219de6cc168483f5e9144af8036c..9eba7f1add1f9706f2b8153fb33f3574b362d5ee 100644 (file)
@@ -10,6 +10,7 @@
 #include <sys/time.h>
 #include <time.h>
 #include <dirent.h>
+#include <errno.h>
 #include <unistd.h>
 #include "builtin.h"
 #include "perf.h"
@@ -21,6 +22,7 @@
 #include "util/build-id.h"
 #include "util/session.h"
 #include "util/symbol.h"
+#include "util/time-utils.h"
 
 static int build_id_cache__kcore_buildid(const char *proc_dir, char *sbuildid)
 {
@@ -47,19 +49,22 @@ static bool same_kallsyms_reloc(const char *from_dir, char *to_dir)
        char to[PATH_MAX];
        const char *name;
        u64 addr1 = 0, addr2 = 0;
-       int i;
+       int i, err = -1;
 
        scnprintf(from, sizeof(from), "%s/kallsyms", from_dir);
        scnprintf(to, sizeof(to), "%s/kallsyms", to_dir);
 
        for (i = 0; (name = ref_reloc_sym_names[i]) != NULL; i++) {
-               addr1 = kallsyms__get_function_start(from, name);
-               if (addr1)
+               err = kallsyms__get_function_start(from, name, &addr1);
+               if (!err)
                        break;
        }
 
-       if (name)
-               addr2 = kallsyms__get_function_start(to, name);
+       if (err)
+               return false;
+
+       if (kallsyms__get_function_start(to, name, &addr2))
+               return false;
 
        return addr1 == addr2;
 }
@@ -276,8 +281,7 @@ static int build_id_cache__update_file(const char *filename)
        return err;
 }
 
-int cmd_buildid_cache(int argc, const char **argv,
-                     const char *prefix __maybe_unused)
+int cmd_buildid_cache(int argc, const char **argv)
 {
        struct strlist *list;
        struct str_node *pos;