[Mesa-dev] [PATCH] util: fix MSVC build issue in disk_cache.h

Brian Paul brianp at vmware.com
Wed Feb 22 03:56:45 UTC 2017


On 02/21/2017 05:48 PM, Timothy Arceri wrote:
>
>
> On 22/02/17 09:59, Brian Paul wrote:
>> On 02/21/2017 03:57 PM, Brian Paul wrote:
>>> Windows doesn't have dlfcn.h.  Protect the code in question
>>> with #if ENABLE_SHADER_CACHE test.
>>> ---
>>>   src/util/disk_cache.h | 26 ++++++++++++++++----------
>>>   1 file changed, 16 insertions(+), 10 deletions(-)
>>>
>>> diff --git a/src/util/disk_cache.h b/src/util/disk_cache.h
>>> index 8b6fc0d..7f4da80 100644
>>> --- a/src/util/disk_cache.h
>>> +++ b/src/util/disk_cache.h
>>> @@ -24,7 +24,9 @@
>>>   #ifndef DISK_CACHE_H
>>>   #define DISK_CACHE_H
>>>
>>> +#ifdef ENABLE_SHADER_CACHE
>>>   #include <dlfcn.h>
>>> +#endif
>>>   #include <stdint.h>
>>>   #include <stdbool.h>
>>>   #include <sys/stat.h>
>>> @@ -43,16 +45,20 @@ struct disk_cache;
>>>   static inline bool
>>>   disk_cache_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;
>>> +#ifdef ENABLE_SHADER_CACHE
>>> +   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;
>>> +#else
>>> +   return false;
>>> +#endif
>>>   }
>>>
>>>   /* Provide inlined stub functions if the shader cache is disabled. */
>>>
>>
>>
>> Timothy,
>>
>> Does this function really need to be inlined?  AFAICT, it's not called
>> on a performance critical path.  Moving it into the .c file would seem
>> to be cleaner.
>
> No not really, feel free to move it. Either way this patch is:
>
> Reviewed-by: Timothy Arceri <tarceri at itsqueeze.com>

Thanks.  I pushed this patch as-is.

I also tried moving the function to the .c file but I get a link error 
that dladdr() is undefined.  It's a _GNU_SOURCE extension.  It looks 
like _GNU_SOURCE is defined, but something else is wrong.  My WIP is 
attached if you want to take a crack at it.

-Brian


-------------- next part --------------
A non-text attachment was scrubbed...
Name: disk_cache.patch
Type: text/x-patch
Size: 2342 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170221/4f4fe966/attachment.bin>


More information about the mesa-dev mailing list