mirror of
https://gitlab.freedesktop.org/mesa/drm.git
synced 2025-12-20 03:30:22 +01:00
amdgpu: NetBSD lacks secure_getenv
When adding support for defining extra paths for the `amdgpu.ids`
file using an environment variable, the patch used a call to
secure_getenv(), which is only available in GNU. This breaks the
build in NetBSD systems.
This patch adds conditional compilation to use secure_getenv()
only when compiling against the GNU libraries.
Fix c3c7fb21aa (note_3229411)
Signed-off-by: Sergio Costas Rodriguez <sergio.costas@canonical.com>
This commit is contained in:
parent
b7861fb536
commit
64ef303d70
3 changed files with 13 additions and 2 deletions
|
|
@ -58,3 +58,6 @@ The AMDGPU driver requires the `amdgpu.ids` file. It is usually located at
|
||||||
paths at runtime by setting the `AMDGPU_ASIC_ID_TABLE_PATHS` environment
|
paths at runtime by setting the `AMDGPU_ASIC_ID_TABLE_PATHS` environment
|
||||||
variable with one or more colon-separated paths where to search for the
|
variable with one or more colon-separated paths where to search for the
|
||||||
`amdgpu.ids` file.
|
`amdgpu.ids` file.
|
||||||
|
|
||||||
|
For this option to be available, the C library must support secure_getenv()
|
||||||
|
function. In systems without it (like NetBSD), this option won't be available.
|
||||||
|
|
@ -165,6 +165,7 @@ static void amdgpu_parse_proc_cpuinfo(struct amdgpu_device *dev)
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if HAVE_SECURE_GETENV
|
||||||
static char *join_path(const char *dir, const char *file) {
|
static char *join_path(const char *dir, const char *file) {
|
||||||
size_t dir_len = strlen(dir);
|
size_t dir_len = strlen(dir);
|
||||||
size_t file_len = strlen(file);
|
size_t file_len = strlen(file);
|
||||||
|
|
@ -268,6 +269,7 @@ static char *find_asic_id_table(void)
|
||||||
split_env_var_free(paths);
|
split_env_var_free(paths);
|
||||||
return found_path;
|
return found_path;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void amdgpu_parse_asic_ids(struct amdgpu_device *dev)
|
void amdgpu_parse_asic_ids(struct amdgpu_device *dev)
|
||||||
{
|
{
|
||||||
|
|
@ -278,8 +280,12 @@ void amdgpu_parse_asic_ids(struct amdgpu_device *dev)
|
||||||
int line_num = 1;
|
int line_num = 1;
|
||||||
int r = 0;
|
int r = 0;
|
||||||
|
|
||||||
char *amdgpu_asic_id_table_path = find_asic_id_table();
|
char *amdgpu_asic_id_table_path = NULL;
|
||||||
|
#if HAVE_SECURE_GETENV
|
||||||
|
// if this system lacks secure_getenv(), don't allow extra paths
|
||||||
|
// for security reasons.
|
||||||
|
amdgpu_asic_id_table_path = find_asic_id_table();
|
||||||
|
#endif
|
||||||
// if not found, use the default AMDGPU_ASIC_ID_TABLE path
|
// if not found, use the default AMDGPU_ASIC_ID_TABLE path
|
||||||
if (!amdgpu_asic_id_table_path)
|
if (!amdgpu_asic_id_table_path)
|
||||||
amdgpu_asic_id_table_path = strdup(AMDGPU_ASIC_ID_TABLE);
|
amdgpu_asic_id_table_path = strdup(AMDGPU_ASIC_ID_TABLE);
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,8 @@ dep_threads = dependency('threads')
|
||||||
|
|
||||||
cc = meson.get_compiler('c')
|
cc = meson.get_compiler('c')
|
||||||
|
|
||||||
|
config.set10('HAVE_SECURE_GETENV', cc.has_function('secure_getenv'))
|
||||||
|
|
||||||
android = cc.compiles('''int func() { return __ANDROID__; }''')
|
android = cc.compiles('''int func() { return __ANDROID__; }''')
|
||||||
|
|
||||||
# Solaris / Illumos
|
# Solaris / Illumos
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue