aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2024-10-04 17:04:59 +0930
committerAlan Modra <amodra@gmail.com>2024-10-04 17:47:21 +0930
commit6e40f9bb31be2f3656df97a1fcba4d6a30081e24 (patch)
tree7d226a4f059e7f80daf317881b6af7c7847a5aae /bfd
parent0c13ac533e59589793ee6c8045cff98663f3ea85 (diff)
downloadgdb-6e40f9bb31be2f3656df97a1fcba4d6a30081e24.zip
gdb-6e40f9bb31be2f3656df97a1fcba4d6a30081e24.tar.gz
gdb-6e40f9bb31be2f3656df97a1fcba4d6a30081e24.tar.bz2
is_target_special_symbol fixes for commit 68bbe1183379
* elf.c (_bfd_elf_is_local_label_name): Don't segv on NULL name. * elf32-v850.c (v850_elf_is_local_label_name): Likewise. * elfnn-riscv.c (riscv_elf_is_target_special_symbol): Likewise.
Diffstat (limited to 'bfd')
-rw-r--r--bfd/elf.c3
-rw-r--r--bfd/elf32-v850.c9
-rw-r--r--bfd/elfnn-riscv.c4
3 files changed, 13 insertions, 3 deletions
diff --git a/bfd/elf.c b/bfd/elf.c
index 39ee641..4012d99 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -9725,6 +9725,9 @@ bool
_bfd_elf_is_local_label_name (bfd *abfd ATTRIBUTE_UNUSED,
const char *name)
{
+ if (!name)
+ return false;
+
/* Normal local symbols start with ``.L''. */
if (name[0] == '.' && name[1] == 'L')
return true;
diff --git a/bfd/elf32-v850.c b/bfd/elf32-v850.c
index 85cbcbc..8d61ebb6 100644
--- a/bfd/elf32-v850.c
+++ b/bfd/elf32-v850.c
@@ -1933,8 +1933,13 @@ v850_elf_info_to_howto_rela (bfd *abfd,
static bool
v850_elf_is_local_label_name (bfd *abfd ATTRIBUTE_UNUSED, const char *name)
{
- return ( (name[0] == '.' && (name[1] == 'L' || name[1] == '.'))
- || (name[0] == '_' && name[1] == '.' && name[2] == 'L' && name[3] == '_'));
+ if (!name)
+ return false;
+ if (name[0] == '.' && (name[1] == 'L' || name[1] == '.'))
+ return true;
+ if (name[0] == '_' && name[1] == '.' && name[2] == 'L' && name[3] == '_')
+ return true;
+ return false;
}
static bool
diff --git a/bfd/elfnn-riscv.c b/bfd/elfnn-riscv.c
index 90ecc27..4844412 100644
--- a/bfd/elfnn-riscv.c
+++ b/bfd/elfnn-riscv.c
@@ -5610,9 +5610,11 @@ riscv_maybe_function_sym (const asymbol *sym,
static bool
riscv_elf_is_target_special_symbol (bfd *abfd, asymbol *sym)
{
+ if (!sym->name)
+ return false;
/* PR27584, local and empty symbols. Since they are usually
generated for pcrel relocations. */
- return (!strcmp (sym->name, "")
+ return (!sym->name[0]
|| _bfd_elf_is_local_label_name (abfd, sym->name)
/* PR27916, mapping symbols. */
|| riscv_elf_is_mapping_symbols (sym->name));