diff options
Diffstat (limited to 'src/util/disk_cache.h')
-rw-r--r-- | src/util/disk_cache.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/util/disk_cache.h b/src/util/disk_cache.h index c8685a53ed3..3129de8ec9d 100644 --- a/src/util/disk_cache.h +++ b/src/util/disk_cache.h @@ -27,6 +27,7 @@ #ifdef HAVE_DLFCN_H #include <dlfcn.h> #include <stdio.h> +#include "util/build_id.h" #endif #include <assert.h> #include <stdint.h> @@ -112,6 +113,21 @@ disk_cache_get_function_timestamp(void *ptr, uint32_t* timestamp) return true; } + +static inline bool +disk_cache_get_function_identifier(void *ptr, uint32_t *id) +{ +#ifdef HAVE_DL_ITERATE_PHDR + const struct build_id_note *note = NULL; + if ((note = build_id_find_nhdr_for_addr(ptr))) { + const uint8_t *id_sha1 = build_id_data(note); + assert(id_sha1); + *id = *id_sha1; + return true; + } else +#endif + return disk_cache_get_function_timestamp(ptr, id); +} #endif /* Provide inlined stub functions if the shader cache is disabled. */ |