Reviewed-by: Jason Ekstrand <ja...@jlekstrand.net> Thanks for getting this figured out!
On Tue, Feb 14, 2017 at 3:58 PM, Matt Turner <matts...@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@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev