]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
bfd: simplify _bfd_merged_section_offset() interface
authorJan Beulich <jbeulich@suse.com>
Fri, 24 Oct 2025 13:10:09 +0000 (15:10 +0200)
committerJan Beulich <jbeulich@suse.com>
Fri, 24 Oct 2025 13:10:09 +0000 (15:10 +0200)
As sec_info is now hanging off of sec, there's no need for the extra 3rd
parameter anymore; all callers pass as 2nd argument the address of a
section pointer that sec_info can be fetched from.

16 files changed:
bfd/elf-m10300.c
bfd/elf.c
bfd/elf32-nds32.c
bfd/elf32-ppc.c
bfd/elf32-rl78.c
bfd/elf32-rx.c
bfd/elf64-alpha.c
bfd/elf64-ia64-vms.c
bfd/elflink.c
bfd/elfnn-ia64.c
bfd/elfnn-loongarch.c
bfd/elfnn-riscv.c
bfd/elfxx-mips.c
bfd/libbfd-in.h
bfd/libbfd.h
bfd/merge.c

index 86b91822a327a4a24d315caf1610292109410110..9a6870877f19b8492bcdb5b15b0846ee4f370199 100644 (file)
@@ -3393,7 +3393,6 @@ mn10300_elf_relax_section (bfd *abfd,
                symval += irel->r_addend;
 
              symval = _bfd_merged_section_offset (abfd, & sym_sec,
-                                                  sym_sec->sec_info,
                                                   symval);
 
              if (ELF_ST_TYPE (isym->st_info) != STT_SECTION)
index 9ad2cf8e2164390573e4a20486e23ef77b9e89e4..9999b09a9eb0faac8a60acf0f21b454773390002 100644 (file)
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -13259,7 +13259,7 @@ _bfd_elf_rela_local_sym (bfd *abfd,
       && sec->sec_info_type == SEC_INFO_TYPE_MERGE)
     {
       rel->r_addend =
-       _bfd_merged_section_offset (abfd, psec, sec->sec_info,
+       _bfd_merged_section_offset (abfd, psec,
                                    sym->st_value + rel->r_addend);
       if (sec != *psec)
        {
@@ -13289,7 +13289,7 @@ _bfd_elf_rel_local_sym (bfd *abfd,
   if (sec->sec_info_type != SEC_INFO_TYPE_MERGE)
     return sym->st_value + addend;
 
-  return _bfd_merged_section_offset (abfd, psec, sec->sec_info,
+  return _bfd_merged_section_offset (abfd, psec,
                                     sym->st_value + addend);
 }
 
index 29e4fbc8dce10caff3a0c7a842d79af4af0a95f4..5ca99ee9e62a904e23e0c228b3add20f7a46d220 100644 (file)
@@ -7489,7 +7489,6 @@ calculate_offset (bfd *abfd, asection *sec, Elf_Internal_Rela *irel,
        {
          sym_sec = h->root.u.def.section;
          symval = _bfd_merged_section_offset (abfd, &sym_sec,
-                                              sym_sec->sec_info,
                                               h->root.u.def.value);
          symval = symval + sym_sec->output_section->vma
                   + sym_sec->output_offset;
@@ -8629,11 +8628,11 @@ nds32_elf_rela_local_sym (bfd *abfd, Elf_Internal_Sym *sym,
     {
       if (ELF_ST_TYPE (sym->st_info) == STT_SECTION)
        rel->r_addend =
-         _bfd_merged_section_offset (abfd, psec, sec->sec_info,
+         _bfd_merged_section_offset (abfd, psec,
                                      sym->st_value + rel->r_addend);
       else
        rel->r_addend =
-         _bfd_merged_section_offset (abfd, psec, sec->sec_info,
+         _bfd_merged_section_offset (abfd, psec,
                                      sym->st_value) + rel->r_addend;
 
       if (sec != *psec)
@@ -8707,7 +8706,6 @@ calculate_memory_address (bfd *abfd, Elf_Internal_Rela *irel,
        {
          sym_sec = h->root.u.def.section;
          symval = _bfd_merged_section_offset (abfd, &sym_sec,
-                                              sym_sec->sec_info,
                                               h->root.u.def.value);
          symval = symval + sym_sec->output_section->vma
                   + sym_sec->output_offset;
index ef38202ca762875b6360ab541cd10f423c3c532c..900b5a76880ffcd21efb0a9f753d01833fb7f30d 100644 (file)
@@ -6382,8 +6382,7 @@ ppc_elf_relax_section (bfd *abfd,
                toff += irel->r_addend;
 
              toff
-               = _bfd_merged_section_offset (abfd, &tsec, tsec->sec_info,
-                                             toff);
+               = _bfd_merged_section_offset (abfd, &tsec, toff);
 
              if (sym_type != STT_SECTION
                  && r_type != R_PPC_PLTREL24)
index b32cbd39f761598aefe8506d274c5c330a8edb5f..98131e0cd844d0ad463eaedb7ccddf15cccb8a85 100644 (file)
@@ -1890,8 +1890,7 @@ rl78_offset_for_reloc (bfd *                      abfd,
            {
              if ((ssec->flags & SEC_MERGE)
                  && ssec->sec_info_type == SEC_INFO_TYPE_MERGE)
-               symval = _bfd_merged_section_offset (abfd, & ssec,
-                                                    ssec->sec_info, symval);
+               symval = _bfd_merged_section_offset (abfd, & ssec, symval);
            }
 
          /* Now make the offset relative to where the linker is putting it.  */
index 83f6984e3e21fa55c97a828c980b970ae99c7485..3aeb80bf1fb3abe1b23ae309e8a44e88afd3dc1c 100644 (file)
@@ -1807,9 +1807,7 @@ rx_offset_for_reloc (bfd *                      abfd,
            {
              if ((ssec->flags & SEC_MERGE)
                  && ssec->sec_info_type == SEC_INFO_TYPE_MERGE)
-               symval = _bfd_merged_section_offset (abfd, & ssec,
-                                                    ssec->sec_info,
-                                                    symval);
+               symval = _bfd_merged_section_offset (abfd, & ssec, symval);
            }
 
          /* Now make the offset relative to where the linker is putting it.  */
index fc8c18dfe8cc409a992603a4ca95810109b107d1..b193f9166ee21d23da5b578103efdf7425a0a534 100644 (file)
@@ -4261,7 +4261,6 @@ elf64_alpha_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
                  msec = sec;
                  ent->addend =
                    _bfd_merged_section_offset (output_bfd, &msec,
-                                               sec->sec_info,
                                                sym->st_value + ent->addend);
                  ent->addend -= sym->st_value;
                  ent->addend += msec->output_section->vma
index 79bf2ee60a35a6f3fb420f67a07de1660d198927..65498ee4fb93e8712d9415bb4464e10f81fc62f2 100644 (file)
@@ -3472,7 +3472,6 @@ elf64_ia64_relocate_section (bfd *output_bfd,
                      msec = sym_sec;
                      dynent->addend =
                        _bfd_merged_section_offset (output_bfd, &msec,
-                                                   msec->sec_info,
                                                    sym->st_value
                                                    + dynent->addend);
                      dynent->addend -= sym->st_value;
index 28027339ccfeccf3ab91e1c09671b650e7cee440..b7380ef34e324c7ae93e7ff0ee321e322862feb9 100644 (file)
@@ -3438,7 +3438,6 @@ _bfd_elf_link_sec_merge_syms (struct elf_link_hash_entry *h, void *data)
       h->root.u.def.value =
        _bfd_merged_section_offset (output_bfd,
                                    &h->root.u.def.section,
-                                   sec->sec_info,
                                    h->root.u.def.value);
     }
 
@@ -11485,9 +11484,7 @@ elf_link_input_bfd (struct elf_final_link_info *flinfo, bfd *input_bfd)
          else if (isec->sec_info_type == SEC_INFO_TYPE_MERGE
                   && ELF_ST_TYPE (isym->st_info) != STT_SECTION)
            isym->st_value =
-             _bfd_merged_section_offset (output_bfd, &isec,
-                                         isec->sec_info,
-                                         isym->st_value);
+             _bfd_merged_section_offset (output_bfd, &isec, isym->st_value);
        }
 
       *ppsection = isec;
index 849946d65f94d42a2e5cc7444752c0818f15529e..2ff82919350b64271ae176cb1d687c7db4655871 100644 (file)
@@ -557,8 +557,7 @@ elfNN_ia64_relax_section (bfd *abfd, asection *sec,
           if (symtype == STT_SECTION)
             toff += irel->r_addend;
 
-          toff = _bfd_merged_section_offset (abfd, &tsec, tsec->sec_info,
-                                             toff);
+          toff = _bfd_merged_section_offset (abfd, &tsec, toff);
 
           if (symtype != STT_SECTION)
             toff += irel->r_addend;
@@ -3867,7 +3866,6 @@ elfNN_ia64_relocate_section (bfd *output_bfd,
                      msec = sym_sec;
                      dynent->addend =
                        _bfd_merged_section_offset (output_bfd, &msec,
-                                                   msec->sec_info,
                                                    sym->st_value
                                                    + dynent->addend);
                      dynent->addend -= sym->st_value;
index 7cdf006e2aa65cfd246dd015899b6325d5bbef77..e579babc7ecacd3a12f104b771c6fa4b517a4a42 100644 (file)
@@ -6016,9 +6016,7 @@ loongarch_elf_relax_section (bfd *abfd, asection *sec,
           if (symtype == STT_SECTION)
             symval += rel->r_addend;
 
-          symval = _bfd_merged_section_offset (abfd, &sym_sec,
-                                               sym_sec->sec_info,
-                                               symval);
+          symval = _bfd_merged_section_offset (abfd, &sym_sec, symval);
 
           if (symtype != STT_SECTION)
             symval += rel->r_addend;
index 76618942103136c1202213c6f051d84371555f0e..dd5268b7d16825ab1b811c6f83ad59c4683f3de1 100644 (file)
@@ -5621,8 +5621,7 @@ _bfd_riscv_relax_section (bfd *abfd, asection *sec,
           if (symtype == STT_SECTION)
             symval += rel->r_addend;
 
-          symval = _bfd_merged_section_offset (abfd, &sym_sec,
-                                               sym_sec->sec_info, symval);
+          symval = _bfd_merged_section_offset (abfd, &sym_sec, symval);
 
           if (symtype != STT_SECTION)
             symval += rel->r_addend;
index d8a66db769d457f141af409d32531ce7fc0c4c45..12b66b0bdb1b0671a5731061d5dd11ae3d99c8d4 100644 (file)
@@ -4546,10 +4546,10 @@ mips_elf_resolve_got_page_ref (void **refp, void *data)
       if (sec->flags & SEC_MERGE)
        {
          if (ELF_ST_TYPE (isym->st_info) == STT_SECTION)
-           addend = _bfd_merged_section_offset (ref->u.abfd, &sec, sec->sec_info,
+           addend = _bfd_merged_section_offset (ref->u.abfd, &sec,
                                                 isym->st_value + ref->addend);
          else
-           addend = _bfd_merged_section_offset (ref->u.abfd, &sec, sec->sec_info,
+           addend = _bfd_merged_section_offset (ref->u.abfd, &sec,
                                                 isym->st_value) + ref->addend;
        }
       else
index f2c243f1d40f273cd23933a01c3415008fc36b20..5a0a6696b51c8955a878119a760b4e2e30b87687 100644 (file)
@@ -707,7 +707,7 @@ extern bool _bfd_write_merged_section
 /* Find an offset within a modified SEC_MERGE section.  */
 
 extern bfd_vma _bfd_merged_section_offset
-  (bfd *, asection **, void *, bfd_vma) ATTRIBUTE_HIDDEN;
+  (bfd *, asection **, bfd_vma) ATTRIBUTE_HIDDEN;
 
 /* Tidy up when done.  */
 
index 106bd344669c2d9abfed6efc55d579bc819da988..3e1f1ec0fea21d89a4fe4f8b74d33d2fffe7f60f 100644 (file)
@@ -713,7 +713,7 @@ extern bool _bfd_write_merged_section
 /* Find an offset within a modified SEC_MERGE section.  */
 
 extern bfd_vma _bfd_merged_section_offset
-  (bfd *, asection **, void *, bfd_vma) ATTRIBUTE_HIDDEN;
+  (bfd *, asection **, bfd_vma) ATTRIBUTE_HIDDEN;
 
 /* Tidy up when done.  */
 
index 83e5d895626eae83bb52ff0cd945a23804363e31..6f068b6117b9cdbae06c91b6480b45ebfaa1387d 100644 (file)
@@ -1104,12 +1104,10 @@ _bfd_write_merged_section (bfd *output_bfd, asection *sec)
 
 bfd_vma
 _bfd_merged_section_offset (bfd *output_bfd ATTRIBUTE_UNUSED, asection **psec,
-                           void *psecinfo, bfd_vma offset)
+                           bfd_vma offset)
 {
-  struct sec_merge_sec_info *secinfo;
   asection *sec = *psec;
-
-  secinfo = (struct sec_merge_sec_info *) psecinfo;
+  struct sec_merge_sec_info *secinfo = sec->sec_info;
 
   if (!secinfo)
     return offset;