From 79b3e7eed6ec07cbf7af67f7d5ec15fd7aa7d24a Mon Sep 17 00:00:00 2001 From: skrll Date: Mon, 7 Dec 2009 10:00:21 +0000 Subject: [PATCH] Recognize $L as a local symbol for mips64. --- external/gpl3/binutils/dist/bfd/elf64-mips.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/external/gpl3/binutils/dist/bfd/elf64-mips.c b/external/gpl3/binutils/dist/bfd/elf64-mips.c index ad00a3db19b4..8d3350833992 100644 --- a/external/gpl3/binutils/dist/bfd/elf64-mips.c +++ b/external/gpl3/binutils/dist/bfd/elf64-mips.c @@ -122,6 +122,8 @@ static bfd_reloc_status_type mips_elf64_final_gp (bfd *, asymbol *, bfd_boolean, char **, bfd_vma *); static bfd_boolean mips_elf64_object_p (bfd *); +static bfd_boolean mips_elf64_is_local_label_name + (bfd *, const char *); static irix_compat_t elf64_mips_irix_compat (bfd *); static bfd_boolean elf64_mips_grok_prstatus @@ -3025,7 +3027,18 @@ mips_elf64_object_p (bfd *abfd) bfd_default_set_arch_mach (abfd, bfd_arch_mips, mach); return TRUE; } + +/* MIPS ELF local labels start with "$L". */ +static bfd_boolean +mips_elf64_is_local_label_name (bfd *abfd, const char *name) +{ + if (name[0] == '$' && name[1] == 'L') + return TRUE; + /* We accept the generic ELF local label syntax as well. */ + return _bfd_elf_is_local_label_name (abfd, name); +} + /* Depending on the target vector we generate some version of Irix executables or "normal" MIPS ELF ABI executables. */ static irix_compat_t @@ -3248,9 +3261,8 @@ const struct elf_size_info mips_elf64_size_info = #define elf_backend_write_section _bfd_mips_elf_write_section -/* We don't set bfd_elf64_bfd_is_local_label_name because the 32-bit - MIPS-specific function only applies to IRIX5, which had no 64-bit - ABI. */ +#define bfd_elf64_bfd_is_local_label_name \ + mips_elf64_is_local_label_name #define bfd_elf64_find_nearest_line _bfd_mips_elf_find_nearest_line #define bfd_elf64_find_inliner_info _bfd_mips_elf_find_inliner_info #define bfd_elf64_new_section_hook _bfd_mips_elf_new_section_hook