[binutils-gdb] bfin, frv, m68k, vax: got creation in check_relocs
Alan Modra
amodra@sourceware.org
Mon Aug 17 01:24:09 GMT 2026
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=72f3042bdc70668e2153f4d3bb5c5afe8aba80be
commit 72f3042bdc70668e2153f4d3bb5c5afe8aba80be
Author: Alan Modra <amodra@gmail.com>
Date: Thu Aug 6 11:14:10 2026 +0930
bfin, frv, m68k, vax: got creation in check_relocs
It isn't obvious that it is correct to call the various create got
section functions inside a !dynobj test, ie. somebody reading the code
is left wondering whether the got might not be be created. I think it
is always created but I'd rather not need to dig even a little.
* elf32-bfin.c (bfin_check_relocs): Move call creating
got section outside dynobj test.
(bfinfdpic_check_relocs): Likewise.
* elf32-frv.c (elf32_frv_check_relocs): Likewise.
* elf32-m68k.c (elf_m68k_check_relocs): Likewise.
* elf32-vax.c (elf_vax_check_relocs): Likewise.
Diff:
---
bfd/elf32-bfin.c | 19 +++++++++----------
bfd/elf32-frv.c | 10 ++++------
bfd/elf32-m68k.c | 10 ++++------
bfd/elf32-vax.c | 10 ++++------
4 files changed, 21 insertions(+), 28 deletions(-)
diff --git a/bfd/elf32-bfin.c b/bfd/elf32-bfin.c
index 8be69ead976..82025e6b242 100644
--- a/bfd/elf32-bfin.c
+++ b/bfd/elf32-bfin.c
@@ -1226,12 +1226,10 @@ bfin_check_relocs (bfd * abfd,
/* Fall through. */
if (dynobj == NULL)
- {
- /* Create the .got section. */
- elf_hash_table (info)->dynobj = dynobj = abfd;
- if (!_bfd_elf_create_got_section (dynobj, info))
- return false;
- }
+ elf_hash_table (info)->dynobj = dynobj = abfd;
+
+ if (!_bfd_elf_create_got_section (dynobj, info))
+ return false;
sgot = elf_hash_table (info)->sgot;
srelgot = elf_hash_table (info)->srelgot;
@@ -4558,13 +4556,14 @@ bfinfdpic_check_relocs (bfd *abfd, struct bfd_link_info *info,
case R_BFIN_PCREL24:
case R_BFIN_PCREL24_JUMP_L:
case R_BFIN_BYTE4_DATA:
- if (IS_FDPIC (abfd) && ! dynobj)
+ if (IS_FDPIC (abfd))
{
- elf_hash_table (info)->dynobj = dynobj = abfd;
- if (! _bfin_create_got_section (abfd, info))
+ if (dynobj == NULL)
+ elf_hash_table (info)->dynobj = dynobj = abfd;
+ if (!_bfin_create_got_section (dynobj, info))
return false;
}
- if (! IS_FDPIC (abfd))
+ else
{
picrel = NULL;
break;
diff --git a/bfd/elf32-frv.c b/bfd/elf32-frv.c
index 183a78f6049..d19bb5a1499 100644
--- a/bfd/elf32-frv.c
+++ b/bfd/elf32-frv.c
@@ -6071,12 +6071,10 @@ elf32_frv_check_relocs (bfd *abfd,
case R_FRV_GPRELLO:
case R_FRV_LABEL24:
case R_FRV_32:
- if (! dynobj)
- {
- elf_hash_table (info)->dynobj = dynobj = abfd;
- if (! _frv_create_got_section (abfd, info))
- return false;
- }
+ if (dynobj == NULL)
+ elf_hash_table (info)->dynobj = dynobj = abfd;
+ if (!_frv_create_got_section (dynobj, info))
+ return false;
if (! IS_FDPIC (abfd))
{
picrel = NULL;
diff --git a/bfd/elf32-m68k.c b/bfd/elf32-m68k.c
index 8ed7640ddf8..541ff670110 100644
--- a/bfd/elf32-m68k.c
+++ b/bfd/elf32-m68k.c
@@ -2637,12 +2637,10 @@ elf_m68k_check_relocs (bfd *abfd,
/* This symbol requires a global offset table entry. */
if (dynobj == NULL)
- {
- /* Create the .got section. */
- elf_hash_table (info)->dynobj = dynobj = abfd;
- if (!_bfd_elf_create_got_section (dynobj, info))
- return false;
- }
+ elf_hash_table (info)->dynobj = dynobj = abfd;
+
+ if (!_bfd_elf_create_got_section (dynobj, info))
+ return false;
if (got == NULL)
{
diff --git a/bfd/elf32-vax.c b/bfd/elf32-vax.c
index 5d103caab93..b49a4837c04 100644
--- a/bfd/elf32-vax.c
+++ b/bfd/elf32-vax.c
@@ -594,12 +594,10 @@ elf_vax_check_relocs (bfd *abfd, struct bfd_link_info *info, asection *sec,
/* This symbol requires a global offset table entry. */
if (dynobj == NULL)
- {
- /* Create the .got section. */
- elf_hash_table (info)->dynobj = dynobj = abfd;
- if (!_bfd_elf_create_got_section (dynobj, info))
- return false;
- }
+ elf_hash_table (info)->dynobj = dynobj = abfd;
+
+ if (!_bfd_elf_create_got_section (dynobj, info))
+ return false;
if (h != NULL)
{
More information about the Binutils-cvs
mailing list