[Mesa-dev] [PATCH 2/2] anv: Use build-id for pipeline cache UUID.
Jason Ekstrand
jason at jlekstrand.net
Wed Feb 15 19:08:26 UTC 2017
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
Thanks for getting this figured out!
On Tue, Feb 14, 2017 at 3:58 PM, Matt Turner <mattst88 at gmail.com> wrote:
> The --build-id=... ld flag has been present since binutils-2.18,
> released 28 Aug 2007.
> ---
> src/intel/vulkan/Makefile.am | 1 +
> src/intel/vulkan/anv_device.c | 28 +++++++---------------------
> 2 files changed, 8 insertions(+), 21 deletions(-)
>
> diff --git a/src/intel/vulkan/Makefile.am b/src/intel/vulkan/Makefile.am
> index 95f276e..4197b0e 100644
> --- a/src/intel/vulkan/Makefile.am
> +++ b/src/intel/vulkan/Makefile.am
> @@ -165,6 +165,7 @@ libvulkan_intel_la_LDFLAGS = \
> -module \
> -no-undefined \
> -avoid-version \
> + -Wl,--build-id=sha1 \
> $(BSYMBOLIC) \
> $(GC_SECTIONS) \
> $(LD_NO_UNDEFINED)
> diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c
> index 91ee67f..b52287c 100644
> --- a/src/intel/vulkan/anv_device.c
> +++ b/src/intel/vulkan/anv_device.c
> @@ -21,18 +21,17 @@
> * IN THE SOFTWARE.
> */
>
> -#include <dlfcn.h>
> #include <assert.h>
> #include <stdbool.h>
> #include <string.h>
> #include <sys/mman.h>
> -#include <sys/stat.h>
> #include <unistd.h>
> #include <fcntl.h>
>
> #include "anv_private.h"
> #include "util/strtod.h"
> #include "util/debug.h"
> +#include "util/build_id.h"
>
> #include "genxml/gen7_pack.h"
>
> @@ -55,30 +54,17 @@ compiler_perf_log(void *data, const char *fmt, ...)
> }
>
> static bool
> -anv_get_function_timestamp(void *ptr, uint32_t* timestamp)
> -{
> - Dl_info info;
> - struct stat st;
> - if (!dladdr(ptr, &info) || !info.dli_fname)
> - return false;
> -
> - if (stat(info.dli_fname, &st))
> - return false;
> -
> - *timestamp = st.st_mtim.tv_sec;
> - return true;
> -}
> -
> -static bool
> anv_device_get_cache_uuid(void *uuid)
> {
> - uint32_t timestamp;
> + const struct build_id_note *note = build_id_find_nhdr("libvulkan_
> intel.so");
> + if (!note)
> + return false;
>
> - memset(uuid, 0, VK_UUID_SIZE);
> - if (!anv_get_function_timestamp(anv_device_get_cache_uuid,
> ×tamp))
> + unsigned len = build_id_length(note);
> + if (len < VK_UUID_SIZE)
> return false;
>
> - snprintf(uuid, VK_UUID_SIZE, "anv-%d", timestamp);
> + build_id_read(note, uuid, VK_UUID_SIZE);
> return true;
> }
>
> --
> 2.10.2
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170215/bd4b2da5/attachment-0001.html>
More information about the mesa-dev
mailing list