mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-11-16 12:34:43 +00:00
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.
56 lines
2.0 KiB
C
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))
|