diff options
Diffstat (limited to 'tools/perf/util/symbol.c')
| -rw-r--r-- | tools/perf/util/symbol.c | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c index 26ec603083e0..f9049d12ead6 100644 --- a/tools/perf/util/symbol.c +++ b/tools/perf/util/symbol.c | |||
| @@ -1762,24 +1762,38 @@ size_t dsos__fprintf_buildid(FILE *fp, bool with_hits) | |||
| 1762 | __dsos__fprintf_buildid(&dsos__user, fp, with_hits)); | 1762 | __dsos__fprintf_buildid(&dsos__user, fp, with_hits)); |
| 1763 | } | 1763 | } |
| 1764 | 1764 | ||
| 1765 | struct dso *dso__new_kernel(const char *name) | ||
| 1766 | { | ||
| 1767 | struct dso *self = dso__new(name ?: "[kernel.kallsyms]"); | ||
| 1768 | |||
| 1769 | if (self != NULL) { | ||
| 1770 | self->short_name = "[kernel]"; | ||
| 1771 | self->kernel = 1; | ||
| 1772 | } | ||
| 1773 | |||
| 1774 | return self; | ||
| 1775 | } | ||
| 1776 | |||
| 1777 | void dso__read_running_kernel_build_id(struct dso *self) | ||
| 1778 | { | ||
| 1779 | if (sysfs__read_build_id("/sys/kernel/notes", self->build_id, | ||
| 1780 | sizeof(self->build_id)) == 0) | ||
| 1781 | self->has_build_id = true; | ||
| 1782 | } | ||
| 1783 | |||
| 1765 | static struct dso *dsos__create_kernel(const char *vmlinux) | 1784 | static struct dso *dsos__create_kernel(const char *vmlinux) |
| 1766 | { | 1785 | { |
| 1767 | struct dso *kernel = dso__new(vmlinux ?: "[kernel.kallsyms]"); | 1786 | struct dso *kernel = dso__new_kernel(vmlinux); |
| 1768 | 1787 | ||
| 1769 | if (kernel == NULL) | 1788 | if (kernel == NULL) |
| 1770 | return NULL; | 1789 | return NULL; |
| 1771 | 1790 | ||
| 1772 | kernel->short_name = "[kernel]"; | ||
| 1773 | kernel->kernel = 1; | ||
| 1774 | |||
| 1775 | vdso = dso__new("[vdso]"); | 1791 | vdso = dso__new("[vdso]"); |
| 1776 | if (vdso == NULL) | 1792 | if (vdso == NULL) |
| 1777 | goto out_delete_kernel_dso; | 1793 | goto out_delete_kernel_dso; |
| 1778 | dso__set_loaded(vdso, MAP__FUNCTION); | 1794 | dso__set_loaded(vdso, MAP__FUNCTION); |
| 1779 | 1795 | ||
| 1780 | if (sysfs__read_build_id("/sys/kernel/notes", kernel->build_id, | 1796 | dso__read_running_kernel_build_id(kernel); |
| 1781 | sizeof(kernel->build_id)) == 0) | ||
| 1782 | kernel->has_build_id = true; | ||
| 1783 | 1797 | ||
| 1784 | dsos__add(&dsos__kernel, kernel); | 1798 | dsos__add(&dsos__kernel, kernel); |
| 1785 | dsos__add(&dsos__user, vdso); | 1799 | dsos__add(&dsos__user, vdso); |
