Files
binutils-gdb/bfd/elfxx-loongarch.h
Jan Beulich 48808d7b66 bfd/ELF: loongarch_{larch_reloc_name_lookup,adjust_reloc_bitsfield}() are exposed to gas
As non-private functions, they should come with full disambiguating
prefixes - add bfd_elf_ to both. Hence commit 2903d813fc ("bfd/ELF: mark
internal LoongArch functions hidden") also wrongly added ATTRIBUTE_HIDDEN
to them.

While loongarch_get_uleb128_length() also falls in the same category,
having it live in libbfd, when outside of gas there's hardly any use to be
expected, isn't very useful. Drop the function altogether and simplify the
clearing of the ULEB128 in md_apply_fix().

For loongarch_larch_reloc_name_lookup() drop gas'es custom declaration;
the libbfd one ought to be used, for producer and consumer to "see" the
same one. Also drop ATTRIBUTE_UNUSED there, as that makes sense only for
parameters in function definitions.
2025-11-14 09:03:06 +01:00

56 lines
2.0 KiB
C

/* LoongArch-specific backend routines.
Copyright (C) 2021-2025 Free Software Foundation, Inc.
Contributed by Loongson Ltd.
This file is part of BFD, the Binary File Descriptor library.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; see the file COPYING3. If not,
see <http://www.gnu.org/licenses/>. */
#include "elf/common.h"
#include "elf/internal.h"
extern reloc_howto_type *
loongarch_elf_rtype_to_howto (bfd *abfd, unsigned int r_type) ATTRIBUTE_HIDDEN;
extern reloc_howto_type *
loongarch_reloc_type_lookup (bfd *abfd, bfd_reloc_code_real_type code)
ATTRIBUTE_HIDDEN;
extern reloc_howto_type *
loongarch_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED, const char *r_name)
ATTRIBUTE_HIDDEN;
extern bfd_reloc_code_real_type
bfd_elf_loongarch_larch_reloc_name_lookup (bfd *abfd, const char *l_r_name);
bool
bfd_elf_loongarch_adjust_reloc_bitsfield (bfd *, reloc_howto_type *, bfd_vma *);
void
bfd_elf32_loongarch_set_data_segment_info (struct bfd_link_info *, int *);
void
bfd_elf64_loongarch_set_data_segment_info (struct bfd_link_info *, int *);
bfd_byte *
loongarch_write_unsigned_leb128 (bfd_byte *p, unsigned int len, bfd_vma value)
ATTRIBUTE_HIDDEN;
/* TRUE if this is a PLT reference to a local IFUNC. */
#define PLT_LOCAL_IFUNC_P(INFO, H) \
((H)->dynindx == -1 \
|| ((bfd_link_executable (INFO) \
|| ELF_ST_VISIBILITY ((H)->other) != STV_DEFAULT) \
&& (H)->def_regular \
&& (H)->type == STT_GNU_IFUNC))