From: Alan Modra <amodra@gmail.com>
To: binutils@sourceware.org
Subject: ELF output symbol hooks int vs. bfd_boolean
Date: Mon, 29 Mar 2021 11:09:30 +1030 [thread overview]
Message-ID: <20210329003930.GF5425@bubble.grove.modra.org> (raw)
elf_backend_link_output_symbol_hook and elf_link_output_symstrtab may
return 2 when a symbol is to be discarded. Update places that use
bfd_boolean rather than int for these functions.
* elflink.c (elf_link_output_symstrtab): Make flinfo parameter
a void pointer.
(bfd_elf_final_link): Delete out_sym_func typedef and don't cast
elf_link_output_symstrtab when calling output_arch_syms and
output_arch_local_syms.
* elf-bfd.h (struct elf_backend_data <elf_backend_output_arch_syms,
elf_backend_output_arch_local_syms>): Change return type of func
arg to match elf_link_output_symstrtab.
* elf-vxworks.h (elf_vxworks_link_output_symbol_hook): Correct
return type.
* elf32-nds32.c (nds32_elf_output_symbol_hook): Correct return type.
(nds32_elf_output_arch_syms): Correct func return type.
diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h
index 04785a814e8..dec6925fd4d 100644
--- a/bfd/elf-bfd.h
+++ b/bfd/elf-bfd.h
@@ -1259,16 +1259,16 @@ struct elf_backend_data
not handled in the hash table. */
bfd_boolean (*elf_backend_output_arch_local_syms)
(bfd *, struct bfd_link_info *, void *,
- bfd_boolean (*) (void *, const char *, Elf_Internal_Sym *, asection *,
- struct elf_link_hash_entry *));
+ int (*) (void *, const char *, Elf_Internal_Sym *, asection *,
+ struct elf_link_hash_entry *));
/* This function, if defined, is called after all symbols are emitted
into the symtab section. It allows the backend to emit special
global symbols not handled in the hash table. */
bfd_boolean (*elf_backend_output_arch_syms)
(bfd *, struct bfd_link_info *, void *,
- bfd_boolean (*) (void *, const char *, Elf_Internal_Sym *, asection *,
- struct elf_link_hash_entry *));
+ int (*) (void *, const char *, Elf_Internal_Sym *, asection *,
+ struct elf_link_hash_entry *));
/* Filter what symbols of the output file to include in the import
library if one is created. */
diff --git a/bfd/elf-vxworks.h b/bfd/elf-vxworks.h
index dbdf1a52e10..d0207a78499 100644
--- a/bfd/elf-vxworks.h
+++ b/bfd/elf-vxworks.h
@@ -22,7 +22,7 @@
bfd_boolean elf_vxworks_add_symbol_hook
(bfd *, struct bfd_link_info *, Elf_Internal_Sym *, const char **,
flagword *, asection **, bfd_vma *);
-bfd_boolean elf_vxworks_link_output_symbol_hook
+int elf_vxworks_link_output_symbol_hook
(struct bfd_link_info *, const char *name, Elf_Internal_Sym *,
asection *, struct elf_link_hash_entry *);
bfd_boolean elf_vxworks_emit_relocs
diff --git a/bfd/elf32-nds32.c b/bfd/elf32-nds32.c
index 0e63dfb575e..f6a89a78834 100644
--- a/bfd/elf32-nds32.c
+++ b/bfd/elf32-nds32.c
@@ -4677,7 +4677,7 @@ nds32_elf_final_link_relocate (reloc_howto_type *howto, bfd *input_bfd,
contents + address);
}
-static bfd_boolean
+static int
nds32_elf_output_symbol_hook (struct bfd_link_info *info,
const char *name,
Elf_Internal_Sym *elfsym ATTRIBUTE_UNUSED,
@@ -12461,10 +12461,10 @@ static bfd_boolean
nds32_elf_output_arch_syms (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info,
void *finfo ATTRIBUTE_UNUSED,
- bfd_boolean (*func) (void *, const char *,
- Elf_Internal_Sym *,
- asection *,
- struct elf_link_hash_entry *)
+ int (*func) (void *, const char *,
+ Elf_Internal_Sym *,
+ asection *,
+ struct elf_link_hash_entry *)
ATTRIBUTE_UNUSED)
{
FILE *sym_ld_script = NULL;
diff --git a/bfd/elflink.c b/bfd/elflink.c
index c5db406f2b4..6be14e7c333 100644
--- a/bfd/elflink.c
+++ b/bfd/elflink.c
@@ -9767,12 +9767,13 @@ elf_link_sort_relocs (bfd *abfd, struct bfd_link_info *info, asection **psec)
/* Add a symbol to the output symbol string table. */
static int
-elf_link_output_symstrtab (struct elf_final_link_info *flinfo,
+elf_link_output_symstrtab (void *finf,
const char *name,
Elf_Internal_Sym *elfsym,
asection *input_sec,
struct elf_link_hash_entry *h)
{
+ struct elf_final_link_info *flinfo = finf;
int (*output_symbol_hook)
(struct bfd_link_info *, const char *, Elf_Internal_Sym *, asection *,
struct elf_link_hash_entry *);
@@ -12662,13 +12663,8 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info)
if (bed->elf_backend_output_arch_local_syms
&& (info->strip != strip_all || emit_relocs))
{
- typedef int (*out_sym_func)
- (void *, const char *, Elf_Internal_Sym *, asection *,
- struct elf_link_hash_entry *);
-
if (! ((*bed->elf_backend_output_arch_local_syms)
- (abfd, info, &flinfo,
- (out_sym_func) elf_link_output_symstrtab)))
+ (abfd, info, &flinfo, elf_link_output_symstrtab)))
{
ret = FALSE;
goto return_local_hash_table;
@@ -12796,13 +12792,8 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info)
if (bed->elf_backend_output_arch_syms
&& (info->strip != strip_all || emit_relocs))
{
- typedef int (*out_sym_func)
- (void *, const char *, Elf_Internal_Sym *, asection *,
- struct elf_link_hash_entry *);
-
if (! ((*bed->elf_backend_output_arch_syms)
- (abfd, info, &flinfo,
- (out_sym_func) elf_link_output_symstrtab)))
+ (abfd, info, &flinfo, elf_link_output_symstrtab)))
{
ret = FALSE;
goto return_local_hash_table;
--
Alan Modra
Australia Development Lab, IBM
reply other threads:[~2021-03-29 0:39 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210329003930.GF5425@bubble.grove.modra.org \
--to=amodra@gmail.com \
--cc=binutils@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).