aboutsummaryrefslogtreecommitdiff
path: root/bfd/elf32-nds32.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2020-12-16 00:42:21 +1030
committerAlan Modra <amodra@gmail.com>2020-12-16 15:17:53 +1030
commitc410035d37d8237c641155c4e51e7ccf53decb29 (patch)
treef61182fd4ba33baefa14ea1cbe197dfb05d9204b /bfd/elf32-nds32.c
parent3f75e1d67fe871db85d46618b95d0dc92291577d (diff)
downloadbinutils-c410035d37d8237c641155c4e51e7ccf53decb29.zip
binutils-c410035d37d8237c641155c4e51e7ccf53decb29.tar.gz
binutils-c410035d37d8237c641155c4e51e7ccf53decb29.tar.bz2
constify elfNN_bed
elfNN_bed was made writable as an expedient means of communicating ld -z max-page-size and ld -z common-page-size values to BFD linker code, and even for objcopy to communicate segment alignment between copy_private_bfd_data, rewrite_elf_program_header and assign_file_positions_for_load_sections. Some time later elfNN_bed elf_osabi was written by gas. It turns out none of these modifications to elfNN_bed was necessary, so make it const again. include/ * bfdlink.h (struct bfd_link_info): Add maxpagesize and commonpagesize. bfd/ * elfxx-target.h (elfNN_bed): Constify. * bfd.c (bfd_elf_set_pagesize): Delete. (bfd_emul_set_maxpagesize, bfd_emul_set_commonpagesize): Delete. * elf.c (get_program_header_size): Get commonpagesize from link info. (_bfd_elf_map_sections_to_segments): Get maxpagesize from link info. (assign_file_positions_for_load_sections): Likewise. (assign_file_positions_for_non_load_sections): Likewise. (rewrite_elf_program_header): Add maxpagesize param. Set map_p_align. (copy_private_bfd_data): Don't call bfd_elf_set_maxpagesize. Instead pass maxpagesize to rewrite_elf_program_header. * elf32-nds32.c (relax_range_measurement): Add link_info param. Get maxpagesize from link_info. Adjust caller. * bfd-in2.h: Regenerate. gas/ * config/obj-elf.c (obj_elf_section): Don't set elf_osabi here. (obj_elf_type): Likewise. ld/ * ld.h (ld_config_type): Delete maxpagesize and commonpagesize. * emultempl/elf.em: Use link_info rather than config for maxpagesize and commonpagesize. * emultempl/ppc32elf.em: Likewise. * ldexp.c (fold_binary, fold_name): Likewise. * ldemul.c (after_parse_default): Likewise. (set_output_arch_default): Don't call bfd_emul_set_maxpagesize or bfd_emul_set_commonpagesize.
Diffstat (limited to 'bfd/elf32-nds32.c')
-rw-r--r--bfd/elf32-nds32.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/bfd/elf32-nds32.c b/bfd/elf32-nds32.c
index 105d7f5..85bbd09 100644
--- a/bfd/elf32-nds32.c
+++ b/bfd/elf32-nds32.c
@@ -9514,11 +9514,11 @@ nds32_elf_insn_size (bfd *abfd ATTRIBUTE_UNUSED,
to do gp relaxation. */
static void
-relax_range_measurement (bfd *abfd)
+relax_range_measurement (bfd *abfd, struct bfd_link_info *link_info)
{
asection *sec_f, *sec_b;
/* For upper bound. */
- bfd_vma maxpgsz = get_elf_backend_data (abfd)->maxpagesize;
+ bfd_vma maxpgsz;
bfd_vma align;
static int decide_relax_range = 0;
int i;
@@ -9550,6 +9550,10 @@ relax_range_measurement (bfd *abfd)
sec_b = sec_b->next;
}
+ if (link_info != NULL)
+ maxpgsz = link_info->maxpagesize;
+ else
+ maxpgsz = get_elf_backend_data (abfd)->maxpagesize;
/* I guess we can not determine the section before
gp located section, so we assume the align is max page size. */
for (i = 0; i < range_number; i++)
@@ -12121,7 +12125,7 @@ nds32_elf_relax_section (bfd *abfd, asection *sec,
is_SDA_BASE_set = 1;
nds32_elf_final_sda_base (sec->output_section->owner, link_info,
&gp, FALSE);
- relax_range_measurement (abfd);
+ relax_range_measurement (abfd, link_info);
}
symtab_hdr = &elf_tdata (abfd)->symtab_hdr;