[Mesa-dev] [PATCH] gallium/aux: Report error if loading of a pipe driver fails.

Jan Vesely jan.vesely at rutgers.edu
Thu Apr 11 02:30:38 UTC 2019


On Wed, Apr 10, 2019 at 9:33 PM Marek Olšák <maraeo at gmail.com> wrote:
>
> Reviewed-by: Marek Olšák <marek.olsak at amd.com>

thank you. pushed.

Jan
>
> Marek
>
> On Wed, Apr 3, 2019 at 2:02 AM Jan Vesely <jan.vesely at rutgers.edu> wrote:
>>
>> Skip over non-existent files.
>> Signed-off-by: Jan Vesely <jan.vesely at rutgers.edu>
>> ---
>> This should help detect instances of messed up/missing symbols in the driver.
>> windows build seems OK: https://ci.appveyor.com/project/jvesely/mesa/builds/23550498#L1292
>>  .../auxiliary/pipe-loader/pipe_loader.c       |  5 +-
>>  src/gallium/auxiliary/util/u_file.h           | 58 +++++++++++++++++++
>>  2 files changed, 62 insertions(+), 1 deletion(-)
>>  create mode 100644 src/gallium/auxiliary/util/u_file.h
>>
>> diff --git a/src/gallium/auxiliary/pipe-loader/pipe_loader.c b/src/gallium/auxiliary/pipe-loader/pipe_loader.c
>> index 6fd15527e53..fc8ee8e8dcd 100644
>> --- a/src/gallium/auxiliary/pipe-loader/pipe_loader.c
>> +++ b/src/gallium/auxiliary/pipe-loader/pipe_loader.c
>> @@ -31,6 +31,7 @@
>>  #include "util/u_memory.h"
>>  #include "util/u_string.h"
>>  #include "util/u_dl.h"
>> +#include "util/u_file.h"
>>  #include "util/xmlconfig.h"
>>  #include "util/xmlpool.h"
>>
>> @@ -158,11 +159,13 @@ pipe_loader_find_module(const char *driver_name,
>>           ret = util_snprintf(path, sizeof(path), "%s%s%s",
>>                               MODULE_PREFIX, driver_name, UTIL_DL_EXT);
>>
>> -      if (ret > 0 && ret < sizeof(path)) {
>> +      if (ret > 0 && ret < sizeof(path) && u_file_access(path, 0) != -1) {
>>           lib = util_dl_open(path);
>>           if (lib) {
>>              return lib;
>>           }
>> +         fprintf(stderr, "ERROR: Failed to load pipe driver at `%s': %s\n",
>> +                         path, util_dl_error());
>>        }
>>     }
>>
>> diff --git a/src/gallium/auxiliary/util/u_file.h b/src/gallium/auxiliary/util/u_file.h
>> new file mode 100644
>> index 00000000000..f337dc9761e
>> --- /dev/null
>> +++ b/src/gallium/auxiliary/util/u_file.h
>> @@ -0,0 +1,58 @@
>> +/**************************************************************************
>> + *
>> + * Copyright 2009 VMware, Inc.
>> + * All Rights Reserved.
>> + *
>> + * Permission is hereby granted, free of charge, to any person obtaining a
>> + * copy of this software and associated documentation files (the
>> + * "Software"), to deal in the Software without restriction, including
>> + * without limitation the rights to use, copy, modify, merge, publish,
>> + * distribute, sub license, and/or sell copies of the Software, and to
>> + * permit persons to whom the Software is furnished to do so, subject to
>> + * the following conditions:
>> + *
>> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
>> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
>> + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
>> + * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM,
>> + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
>> + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
>> + * USE OR OTHER DEALINGS IN THE SOFTWARE.
>> + *
>> + * The above copyright notice and this permission notice (including the
>> + * next paragraph) shall be included in all copies or substantial portions
>> + * of the Software.
>> + *
>> + **************************************************************************/
>> +
>> +
>> +#ifndef U_FILE_H_
>> +#define U_FILE_H_
>> +
>> +#if defined(PIPE_OS_UNIX)
>> +#include <unistd.h>
>> +#endif
>> +#if defined(PIPE_OS_WINDOWS)
>> +#include <io.h>
>> +#endif
>> +
>> +#ifdef __cplusplus
>> +extern "C" {
>> +#endif
>> +
>> +static inline int
>> +u_file_access(const char *path, int mode) {
>> +#if defined(PIPE_OS_UNIX)
>> +       return access(path, mode);
>> +#elif defined(PIPE_OS_WINDOWS)
>> +       return _access(path, mode);
>> +#else
>> +       return 0;
>> +#endif
>> +}
>> +
>> +#ifdef __cplusplus
>> +}
>> +#endif
>> +
>> +#endif /* U_FILE_H_ */
>> --
>> 2.21.0
>>
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list