* cache, or is just a kallsyms file, well, lets hope that this
                 * DSO is the same as when 'perf record' ran.
                 */
-               filename = dso->long_name;
+               filename = (char *)dso->long_name;
                snprintf(symfs_filename, sizeof(symfs_filename), "%s%s",
                         symbol_conf.symfs, filename);
                free_filename = false;
 
 
        case DSO_BINARY_TYPE__OPENEMBEDDED_DEBUGINFO:
        {
-               char *last_slash;
+               const char *last_slash;
                size_t len;
                size_t dir_size;
 
        return dso;
 }
 
-void dso__set_long_name(struct dso *dso, char *name, bool name_allocated)
+void dso__set_long_name(struct dso *dso, const char *name, bool name_allocated)
 {
        if (name == NULL)
                return;
 
        if (dso->long_name_allocated)
-               free(dso->long_name);
+               free((char *)dso->long_name);
 
        dso->long_name           = name;
        dso->long_name_len       = strlen(name);
 
 static void dso__set_basename(struct dso *dso)
 {
-       dso__set_short_name(dso, basename(dso->long_name), false);
+       dso__set_short_name(dso, basename((char *)dso->long_name), false);
 }
 
 int dso__name_len(const struct dso *dso)
        if (dso->short_name_allocated)
                free((char *)dso->short_name);
        if (dso->long_name_allocated)
-               free(dso->long_name);
+               free((char *)dso->long_name);
        dso_cache__free(&dso->cache);
        dso__free_a2l(dso);
        free(dso->symsrc_filename);
 
        u8               rel;
        u8               build_id[BUILD_ID_SIZE];
        const char       *short_name;
-       char             *long_name;
+       const char       *long_name;
        u16              long_name_len;
        u16              short_name_len;
        char             name[0];
 void dso__delete(struct dso *dso);
 
 void dso__set_short_name(struct dso *dso, const char *name, bool name_allocated);
-void dso__set_long_name(struct dso *dso, char *name, bool name_allocated);
+void dso__set_long_name(struct dso *dso, const char *name, bool name_allocated);
 
 int dso__name_len(const struct dso *dso);
 
 
                        continue;               \
                else
 
-static int write_buildid(char *name, size_t name_len, u8 *build_id,
+static int write_buildid(const char *name, size_t name_len, u8 *build_id,
                         pid_t pid, u16 misc, int fd)
 {
        int err;
 
        dsos__for_each_with_build_id(pos, head) {
                int err;
-               char  *name;
+               const char *name;
                size_t name_len;
 
                if (!pos->hit)
 {
        bool is_kallsyms = dso->kernel && dso->long_name[0] != '/';
        bool is_vdso = is_vdso_map(dso->short_name);
-       char *name = dso->long_name;
+       const char *name = dso->long_name;
        char nm[PATH_MAX];
 
        if (dso__is_kcore(dso)) {
 
        char *file = NULL;
        unsigned line = 0;
        char *srcline;
-       char *dso_name;
+       const char *dso_name;
 
        if (!dso->has_srcline)
                return SRCLINE_UNKNOWN;
 
                        dso->data_type = DSO_BINARY_TYPE__GUEST_VMLINUX;
                else
                        dso->data_type = DSO_BINARY_TYPE__VMLINUX;
-               dso__set_long_name(dso, (char *)vmlinux, vmlinux_allocated);
+               dso__set_long_name(dso, vmlinux, vmlinux_allocated);
                dso__set_loaded(dso, map->type);
                pr_debug("Using %s for symbols\n", symfs_vmlinux);
        }
        free(kallsyms_allocated_filename);
 
        if (err > 0 && !dso__is_kcore(dso)) {
-               dso__set_long_name(dso, strdup("[kernel.kallsyms]"), true);
+               dso__set_long_name(dso, "[kernel.kallsyms]", false);
                map__fixup_start(map);
                map__fixup_end(map);
        }