[Mesa-dev] [PATCH 23/25] radeonsi: make radeon_shader_reloc name string fixed-sized

Marek Olšák maraeo at gmail.com
Mon Feb 15 23:59:34 UTC 2016


From: Marek Olšák <marek.olsak at amd.com>

This will simplify implementations of binary shaders.
---
 src/gallium/drivers/radeon/r600_pipe_common.h | 2 +-
 src/gallium/drivers/radeon/radeon_elf_util.c  | 7 ++-----
 2 files changed, 3 insertions(+), 6 deletions(-)

diff --git a/src/gallium/drivers/radeon/r600_pipe_common.h b/src/gallium/drivers/radeon/r600_pipe_common.h
index ee173d3..7df6177 100644
--- a/src/gallium/drivers/radeon/r600_pipe_common.h
+++ b/src/gallium/drivers/radeon/r600_pipe_common.h
@@ -97,7 +97,7 @@ struct r600_common_context;
 struct r600_perfcounters;
 
 struct radeon_shader_reloc {
-	char *name;
+	char name[32];
 	uint64_t offset;
 };
 
diff --git a/src/gallium/drivers/radeon/radeon_elf_util.c b/src/gallium/drivers/radeon/radeon_elf_util.c
index 2e45d43..70a2c4d 100644
--- a/src/gallium/drivers/radeon/radeon_elf_util.c
+++ b/src/gallium/drivers/radeon/radeon_elf_util.c
@@ -98,7 +98,8 @@ static void parse_relocs(Elf *elf, Elf_Data *relocs, Elf_Data *symbols,
 		symbol_name = elf_strptr(elf, symbol_sh_link, symbol.st_name);
 
 		reloc->offset = rel.r_offset;
-		reloc->name = strdup(symbol_name);
+		strncpy(reloc->name, symbol_name, sizeof(reloc->name)-1);
+		reloc->name[sizeof(reloc->name)-1] = 0;
 	}
 }
 
@@ -198,10 +199,6 @@ const unsigned char *radeon_shader_binary_config_start(
 void radeon_shader_binary_free_relocs(struct radeon_shader_reloc *relocs,
 					unsigned reloc_count)
 {
-	unsigned i;
-	for (i = 0; i < reloc_count; i++) {
-		FREE(relocs[i].name);
-	}
 	FREE(relocs);
 }
 
-- 
2.5.0



More information about the mesa-dev mailing list