aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2024-12-16 15:04:57 +1030
committerAlan Modra <amodra@gmail.com>2024-12-16 19:37:40 +1030
commitf5a8cdea567a2fc2fc00090d3967f81fc6e55499 (patch)
tree379179361c7792857772a2aa89c853d9d0da9282
parent1c82e1ee93d57a2013c5acf94558c382e3e2e5c3 (diff)
downloadbinutils-f5a8cdea567a2fc2fc00090d3967f81fc6e55499.zip
binutils-f5a8cdea567a2fc2fc00090d3967f81fc6e55499.tar.gz
binutils-f5a8cdea567a2fc2fc00090d3967f81fc6e55499.tar.bz2
section tdata tidy
Any _new_section_hook that is not itself called from another _new_section_hook will always see used_by_bfd NULL. Remove those NULL checks in such hooks, and tidy code a little.
-rw-r--r--bfd/elf32-arm.c14
-rw-r--r--bfd/elf32-avr.c14
-rw-r--r--bfd/elf32-microblaze.c14
-rw-r--r--bfd/elf32-score.c3
-rw-r--r--bfd/elf32-score7.c3
-rw-r--r--bfd/elf32-spu.c13
-rw-r--r--bfd/elf32-tic6x.c16
-rw-r--r--bfd/elf32-xtensa.c14
-rw-r--r--bfd/elf64-mmix.c14
-rw-r--r--bfd/elf64-ppc.c14
-rw-r--r--bfd/elfnn-aarch64.c15
-rw-r--r--bfd/elfnn-kvx.c14
-rw-r--r--bfd/elfnn-loongarch.c14
-rw-r--r--bfd/elfxx-mips.c14
-rw-r--r--bfd/elfxx-sparc.c14
-rw-r--r--bfd/mach-o.c55
-rw-r--r--bfd/mmo.c13
-rw-r--r--bfd/som.c10
18 files changed, 98 insertions, 170 deletions
diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c
index 17df8b3..a4c2321 100644
--- a/bfd/elf32-arm.c
+++ b/bfd/elf32-arm.c
@@ -18535,16 +18535,10 @@ elf32_arm_filter_implib_symbols (bfd *abfd ATTRIBUTE_UNUSED,
static bool
elf32_arm_new_section_hook (bfd *abfd, asection *sec)
{
- if (!sec->used_by_bfd)
- {
- _arm_elf_section_data *sdata;
- size_t amt = sizeof (*sdata);
-
- sdata = (_arm_elf_section_data *) bfd_zalloc (abfd, amt);
- if (sdata == NULL)
- return false;
- sec->used_by_bfd = sdata;
- }
+ _arm_elf_section_data *sdata = bfd_zalloc (abfd, sizeof (*sdata));
+ if (sdata == NULL)
+ return false;
+ sec->used_by_bfd = sdata;
return _bfd_elf_new_section_hook (abfd, sec);
}
diff --git a/bfd/elf32-avr.c b/bfd/elf32-avr.c
index 20e03bd..12b68ba 100644
--- a/bfd/elf32-avr.c
+++ b/bfd/elf32-avr.c
@@ -764,16 +764,12 @@ struct elf_avr_section_data
static bool
elf_avr_new_section_hook (bfd *abfd, asection *sec)
{
- if (!sec->used_by_bfd)
- {
- struct elf_avr_section_data *sdata;
- size_t amt = sizeof (*sdata);
+ struct elf_avr_section_data *sdata;
- sdata = bfd_zalloc (abfd, amt);
- if (sdata == NULL)
- return false;
- sec->used_by_bfd = sdata;
- }
+ sdata = bfd_zalloc (abfd, sizeof (*sdata));
+ if (sdata == NULL)
+ return false;
+ sec->used_by_bfd = sdata;
return _bfd_elf_new_section_hook (abfd, sec);
}
diff --git a/bfd/elf32-microblaze.c b/bfd/elf32-microblaze.c
index ce2064a..b500242 100644
--- a/bfd/elf32-microblaze.c
+++ b/bfd/elf32-microblaze.c
@@ -742,16 +742,12 @@ struct _microblaze_elf_section_data
static bool
microblaze_elf_new_section_hook (bfd *abfd, asection *sec)
{
- if (!sec->used_by_bfd)
- {
- struct _microblaze_elf_section_data *sdata;
- size_t amt = sizeof (*sdata);
+ struct _microblaze_elf_section_data *sdata;
- sdata = bfd_zalloc (abfd, amt);
- if (sdata == NULL)
- return false;
- sec->used_by_bfd = sdata;
- }
+ sdata = bfd_zalloc (abfd, sizeof (*sdata));
+ if (sdata == NULL)
+ return false;
+ sec->used_by_bfd = sdata;
return _bfd_elf_new_section_hook (abfd, sec);
}
diff --git a/bfd/elf32-score.c b/bfd/elf32-score.c
index a3e22c3..30d6dc8 100644
--- a/bfd/elf32-score.c
+++ b/bfd/elf32-score.c
@@ -4056,9 +4056,8 @@ static bool
s3_elf32_score_new_section_hook (bfd *abfd, asection *sec)
{
struct _score_elf_section_data *sdata;
- size_t amt = sizeof (*sdata);
- sdata = bfd_zalloc (abfd, amt);
+ sdata = bfd_zalloc (abfd, sizeof (*sdata));
if (sdata == NULL)
return false;
sec->used_by_bfd = sdata;
diff --git a/bfd/elf32-score7.c b/bfd/elf32-score7.c
index c9edf2b..4a4cec1 100644
--- a/bfd/elf32-score7.c
+++ b/bfd/elf32-score7.c
@@ -3863,9 +3863,8 @@ bool
s7_elf32_score_new_section_hook (bfd *abfd, asection *sec)
{
struct _score_elf_section_data *sdata;
- size_t amt = sizeof (*sdata);
- sdata = bfd_zalloc (abfd, amt);
+ sdata = bfd_zalloc (abfd, sizeof (*sdata));
if (sdata == NULL)
return false;
sec->used_by_bfd = sdata;
diff --git a/bfd/elf32-spu.c b/bfd/elf32-spu.c
index 881d4d8..f65a008 100644
--- a/bfd/elf32-spu.c
+++ b/bfd/elf32-spu.c
@@ -247,15 +247,12 @@ spu_elf_rel9 (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
static bool
spu_elf_new_section_hook (bfd *abfd, asection *sec)
{
- if (!sec->used_by_bfd)
- {
- struct _spu_elf_section_data *sdata;
+ struct _spu_elf_section_data *sdata;
- sdata = bfd_zalloc (abfd, sizeof (*sdata));
- if (sdata == NULL)
- return false;
- sec->used_by_bfd = sdata;
- }
+ sdata = bfd_zalloc (abfd, sizeof (*sdata));
+ if (sdata == NULL)
+ return false;
+ sec->used_by_bfd = sdata;
return _bfd_elf_new_section_hook (abfd, sec);
}
diff --git a/bfd/elf32-tic6x.c b/bfd/elf32-tic6x.c
index 5c00318..dee7527 100644
--- a/bfd/elf32-tic6x.c
+++ b/bfd/elf32-tic6x.c
@@ -2083,18 +2083,12 @@ static bool
elf32_tic6x_new_section_hook (bfd *abfd, asection *sec)
{
bool ret;
+ _tic6x_elf_section_data *sdata;
- /* Allocate target specific section data. */
- if (!sec->used_by_bfd)
- {
- _tic6x_elf_section_data *sdata;
- size_t amt = sizeof (*sdata);
-
- sdata = (_tic6x_elf_section_data *) bfd_zalloc (abfd, amt);
- if (sdata == NULL)
- return false;
- sec->used_by_bfd = sdata;
- }
+ sdata = bfd_zalloc (abfd, sizeof (*sdata));
+ if (sdata == NULL)
+ return false;
+ sec->used_by_bfd = sdata;
ret = _bfd_elf_new_section_hook (abfd, sec);
sec->use_rela_p = elf32_tic6x_tdata (abfd)->use_rela_p;
diff --git a/bfd/elf32-xtensa.c b/bfd/elf32-xtensa.c
index 58f79e5..9682438 100644
--- a/bfd/elf32-xtensa.c
+++ b/bfd/elf32-xtensa.c
@@ -6101,16 +6101,12 @@ struct elf_xtensa_section_data
static bool
elf_xtensa_new_section_hook (bfd *abfd, asection *sec)
{
- if (!sec->used_by_bfd)
- {
- struct elf_xtensa_section_data *sdata;
- size_t amt = sizeof (*sdata);
+ struct elf_xtensa_section_data *sdata;
- sdata = bfd_zalloc (abfd, amt);
- if (sdata == NULL)
- return false;
- sec->used_by_bfd = sdata;
- }
+ sdata = bfd_zalloc (abfd, sizeof (*sdata));
+ if (sdata == NULL)
+ return false;
+ sec->used_by_bfd = sdata;
return _bfd_elf_new_section_hook (abfd, sec);
}
diff --git a/bfd/elf64-mmix.c b/bfd/elf64-mmix.c
index 56c7361..43a46e5 100644
--- a/bfd/elf64-mmix.c
+++ b/bfd/elf64-mmix.c
@@ -828,16 +828,12 @@ bfd_elf64_bfd_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED,
static bool
mmix_elf_new_section_hook (bfd *abfd, asection *sec)
{
- if (!sec->used_by_bfd)
- {
- struct _mmix_elf_section_data *sdata;
- size_t amt = sizeof (*sdata);
+ struct _mmix_elf_section_data *sdata;
- sdata = bfd_zalloc (abfd, amt);
- if (sdata == NULL)
- return false;
- sec->used_by_bfd = sdata;
- }
+ sdata = bfd_zalloc (abfd, sizeof (*sdata));
+ if (sdata == NULL)
+ return false;
+ sec->used_by_bfd = sdata;
return _bfd_elf_new_section_hook (abfd, sec);
}
diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c
index dd1ee1e..f9964fa 100644
--- a/bfd/elf64-ppc.c
+++ b/bfd/elf64-ppc.c
@@ -2050,16 +2050,12 @@ struct _ppc64_elf_section_data
static bool
ppc64_elf_new_section_hook (bfd *abfd, asection *sec)
{
- if (!sec->used_by_bfd)
- {
- struct _ppc64_elf_section_data *sdata;
- size_t amt = sizeof (*sdata);
+ struct _ppc64_elf_section_data *sdata;
- sdata = bfd_zalloc (abfd, amt);
- if (sdata == NULL)
- return false;
- sec->used_by_bfd = sdata;
- }
+ sdata = bfd_zalloc (abfd, sizeof (*sdata));
+ if (sdata == NULL)
+ return false;
+ sec->used_by_bfd = sdata;
return _bfd_elf_new_section_hook (abfd, sec);
}
diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c
index 7011914..c4077d5 100644
--- a/bfd/elfnn-aarch64.c
+++ b/bfd/elfnn-aarch64.c
@@ -8749,18 +8749,13 @@ elfNN_aarch64_output_arch_local_syms (bfd *output_bfd,
static bool
elfNN_aarch64_new_section_hook (bfd *abfd, asection *sec)
{
- if (!sec->used_by_bfd)
- {
- _aarch64_elf_section_data *sdata;
- size_t amt = sizeof (*sdata);
-
- sdata = bfd_zalloc (abfd, amt);
- if (sdata == NULL)
- return false;
- sec->used_by_bfd = sdata;
- }
+ _aarch64_elf_section_data *sdata;
record_section_with_aarch64_elf_section_data (sec);
+ sdata = bfd_zalloc (abfd, sizeof (*sdata));
+ if (sdata == NULL)
+ return false;
+ sec->used_by_bfd = sdata;
return _bfd_elf_new_section_hook (abfd, sec);
}
diff --git a/bfd/elfnn-kvx.c b/bfd/elfnn-kvx.c
index 516ce2f..e295319 100644
--- a/bfd/elfnn-kvx.c
+++ b/bfd/elfnn-kvx.c
@@ -3688,16 +3688,12 @@ elfNN_kvx_output_arch_local_syms (bfd *output_bfd,
static bool
elfNN_kvx_new_section_hook (bfd *abfd, asection *sec)
{
- if (!sec->used_by_bfd)
- {
- _kvx_elf_section_data *sdata;
- bfd_size_type amt = sizeof (*sdata);
+ _kvx_elf_section_data *sdata;
- sdata = bfd_zalloc (abfd, amt);
- if (sdata == NULL)
- return false;
- sec->used_by_bfd = sdata;
- }
+ sdata = bfd_zalloc (abfd, sizeof (*sdata));
+ if (sdata == NULL)
+ return false;
+ sec->used_by_bfd = sdata;
return _bfd_elf_new_section_hook (abfd, sec);
}
diff --git a/bfd/elfnn-loongarch.c b/bfd/elfnn-loongarch.c
index 2ce5f73..e3d3916 100644
--- a/bfd/elfnn-loongarch.c
+++ b/bfd/elfnn-loongarch.c
@@ -152,16 +152,12 @@ struct loongarch_elf_section_data
static bool
loongarch_elf_new_section_hook (bfd *abfd, asection *sec)
{
- if (!sec->used_by_bfd)
- {
- struct loongarch_elf_section_data *sdata;
- size_t amt = sizeof (*sdata);
+ struct loongarch_elf_section_data *sdata;
- sdata = bfd_zalloc (abfd, amt);
- if (!sdata)
- return false;
- sec->used_by_bfd = sdata;
- }
+ sdata = bfd_zalloc (abfd, sizeof (*sdata));
+ if (!sdata)
+ return false;
+ sec->used_by_bfd = sdata;
return _bfd_elf_new_section_hook (abfd, sec);
}
diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c
index c9895aa..459c98e 100644
--- a/bfd/elfxx-mips.c
+++ b/bfd/elfxx-mips.c
@@ -1412,16 +1412,12 @@ _bfd_mips_elf_free_cached_info (bfd *abfd)
bool
_bfd_mips_elf_new_section_hook (bfd *abfd, asection *sec)
{
- if (!sec->used_by_bfd)
- {
- struct _mips_elf_section_data *sdata;
- size_t amt = sizeof (*sdata);
+ struct _mips_elf_section_data *sdata;
- sdata = bfd_zalloc (abfd, amt);
- if (sdata == NULL)
- return false;
- sec->used_by_bfd = sdata;
- }
+ sdata = bfd_zalloc (abfd, sizeof (*sdata));
+ if (sdata == NULL)
+ return false;
+ sec->used_by_bfd = sdata;
return _bfd_elf_new_section_hook (abfd, sec);
}
diff --git a/bfd/elfxx-sparc.c b/bfd/elfxx-sparc.c
index 4ab3ab8..3f642ae 100644
--- a/bfd/elfxx-sparc.c
+++ b/bfd/elfxx-sparc.c
@@ -2660,16 +2660,12 @@ _bfd_sparc_elf_late_size_sections (bfd *output_bfd,
bool
_bfd_sparc_elf_new_section_hook (bfd *abfd, asection *sec)
{
- if (!sec->used_by_bfd)
- {
- struct _bfd_sparc_elf_section_data *sdata;
- size_t amt = sizeof (*sdata);
+ struct _bfd_sparc_elf_section_data *sdata;
- sdata = bfd_zalloc (abfd, amt);
- if (sdata == NULL)
- return false;
- sec->used_by_bfd = sdata;
- }
+ sdata = bfd_zalloc (abfd, sizeof (*sdata));
+ if (sdata == NULL)
+ return false;
+ sec->used_by_bfd = sdata;
return _bfd_elf_new_section_hook (abfd, sec);
}
diff --git a/bfd/mach-o.c b/bfd/mach-o.c
index 95bb481..9ec5cab 100644
--- a/bfd/mach-o.c
+++ b/bfd/mach-o.c
@@ -3520,40 +3520,31 @@ bfd_mach_o_read_header (bfd *abfd, file_ptr hdr_off, bfd_mach_o_header *header)
bool
bfd_mach_o_new_section_hook (bfd *abfd, asection *sec)
{
- bfd_mach_o_section *s;
- unsigned bfdalign = bfd_section_alignment (sec);
-
- s = bfd_mach_o_get_mach_o_section (sec);
+ bfd_mach_o_section *s = bfd_zalloc (abfd, sizeof (*s));
if (s == NULL)
- {
- flagword bfd_flags;
- static const mach_o_section_name_xlat * xlat;
-
- s = (bfd_mach_o_section *) bfd_zalloc (abfd, sizeof (*s));
- if (s == NULL)
- return false;
- sec->used_by_bfd = s;
- s->bfdsection = sec;
-
- /* Create the Darwin seg/sect name pair from the bfd name.
- If this is a canonical name for which a specific paiting exists
- there will also be defined flags, type, attribute and alignment
- values. */
- xlat = bfd_mach_o_convert_section_name_to_mach_o (abfd, sec, s);
- if (xlat != NULL)
- {
- s->flags = xlat->macho_sectype | xlat->macho_secattr;
- s->align = xlat->sectalign > bfdalign ? xlat->sectalign
- : bfdalign;
- bfd_set_section_alignment (sec, s->align);
- bfd_flags = bfd_section_flags (sec);
- if (bfd_flags == SEC_NO_FLAGS)
- bfd_set_section_flags (sec, xlat->bfd_flags);
- }
- else
- /* Create default flags. */
- bfd_mach_o_set_section_flags_from_bfd (abfd, sec);
+ return false;
+ sec->used_by_bfd = s;
+ s->bfdsection = sec;
+
+ /* Create the Darwin seg/sect name pair from the bfd name.
+ If this is a canonical name for which a specific paiting exists
+ there will also be defined flags, type, attribute and alignment
+ values. */
+ const mach_o_section_name_xlat *xlat
+ = bfd_mach_o_convert_section_name_to_mach_o (abfd, sec, s);
+ if (xlat != NULL)
+ {
+ s->flags = xlat->macho_sectype | xlat->macho_secattr;
+ unsigned bfdalign = bfd_section_alignment (sec);
+ s->align = xlat->sectalign > bfdalign ? xlat->sectalign : bfdalign;
+ bfd_set_section_alignment (sec, s->align);
+ flagword bfd_flags = bfd_section_flags (sec);
+ if (bfd_flags == SEC_NO_FLAGS)
+ bfd_set_section_flags (sec, xlat->bfd_flags);
}
+ else
+ /* Create default flags. */
+ bfd_mach_o_set_section_flags_from_bfd (abfd, sec);
return _bfd_generic_new_section_hook (abfd, sec);
}
diff --git a/bfd/mmo.c b/bfd/mmo.c
index 6704bc2..a199510 100644
--- a/bfd/mmo.c
+++ b/bfd/mmo.c
@@ -2129,15 +2129,12 @@ mmo_scan (bfd *abfd)
static bool
mmo_new_section_hook (bfd *abfd, asection *newsect)
{
+ /* We zero-fill all fields and assume NULL is represented by an all
+ zero-bit pattern. */
+ newsect->used_by_bfd
+ = bfd_zalloc (abfd, sizeof (struct mmo_section_data_struct));
if (!newsect->used_by_bfd)
- {
- /* We zero-fill all fields and assume NULL is represented by an all
- zero-bit pattern. */
- newsect->used_by_bfd
- = bfd_zalloc (abfd, sizeof (struct mmo_section_data_struct));
- if (!newsect->used_by_bfd)
- return false;
- }
+ return false;
/* Always align to at least 32-bit words. */
newsect->alignment_power = 2;
diff --git a/bfd/som.c b/bfd/som.c
index 86f7f41..171dbc4 100644
--- a/bfd/som.c
+++ b/bfd/som.c
@@ -5328,14 +5328,12 @@ extern const bfd_target hppa_som_vec;
static bool
som_new_section_hook (bfd *abfd, asection *newsect)
{
+ size_t amt = sizeof (struct som_section_data_struct);
+
+ newsect->used_by_bfd = bfd_zalloc (abfd, amt);
if (!newsect->used_by_bfd)
- {
- size_t amt = sizeof (struct som_section_data_struct);
+ return false;
- newsect->used_by_bfd = bfd_zalloc (abfd, amt);
- if (!newsect->used_by_bfd)
- return false;
- }
newsect->alignment_power = 3;
/* We allow more than three sections internally. */