diff options
author | Alan Modra <amodra@gmail.com> | 2024-10-04 17:04:59 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2024-10-04 17:47:21 +0930 |
commit | 6e40f9bb31be2f3656df97a1fcba4d6a30081e24 (patch) | |
tree | 7d226a4f059e7f80daf317881b6af7c7847a5aae /bfd | |
parent | 0c13ac533e59589793ee6c8045cff98663f3ea85 (diff) | |
download | gdb-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.c | 3 | ||||
-rw-r--r-- | bfd/elf32-v850.c | 9 | ||||
-rw-r--r-- | bfd/elfnn-riscv.c | 4 |
3 files changed, 13 insertions, 3 deletions
@@ -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)); |