|
@@ -449,6 +449,20 @@ int map__fprintf_srcline(struct map *map, u64 addr, const char *prefix,
|
|
|
*/
|
|
|
u64 map__rip_2objdump(struct map *map, u64 rip)
|
|
|
{
|
|
|
+ struct kmap *kmap = __map__kmap(map);
|
|
|
+
|
|
|
+ /*
|
|
|
+ * vmlinux does not have program headers for PTI entry trampolines and
|
|
|
+ * kcore may not either. However the trampoline object code is on the
|
|
|
+ * main kernel map, so just use that instead.
|
|
|
+ */
|
|
|
+ if (kmap && is_entry_trampoline(kmap->name) && kmap->kmaps && kmap->kmaps->machine) {
|
|
|
+ struct map *kernel_map = machine__kernel_map(kmap->kmaps->machine);
|
|
|
+
|
|
|
+ if (kernel_map)
|
|
|
+ map = kernel_map;
|
|
|
+ }
|
|
|
+
|
|
|
if (!map->dso->adjust_symbols)
|
|
|
return rip;
|
|
|
|