From 13f622ec5967f0a56d5876e7c7305c260cb4928f Mon Sep 17 00:00:00 2001 From: Marcus Shawcroft Date: Fri, 20 Mar 2015 20:20:35 +0000 Subject: [PATCH] [AArch64] Factor out _bfd_aarch64_resize_stubs() --- bfd/ChangeLog | 6 ++++++ bfd/elfnn-aarch64.c | 36 ++++++++++++++++++++++++------------ 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index e281c7fe9d4..cde4d4c6a50 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2015-03-23 Marcus Shawcroft + + * elfnn-aarch64.c (elfNN_aarch64_size_stubs): Factor out + stub resize code into... + (bfd_aarch64_resize_stubs): Define. + 2015-03-23 Marcus Shawcroft * elfnn-aarch64.c (_bfd_aarch64_create_or_find_stub_sec): Factor stub diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c index 5f80a2d7d7e..d5a64b5eba5 100644 --- a/bfd/elfnn-aarch64.c +++ b/bfd/elfnn-aarch64.c @@ -3118,6 +3118,29 @@ erratum_835769_scan (bfd *input_bfd, return TRUE; } + +/* Resize all stub sections. */ + +static void +_bfd_aarch64_resize_stubs (struct elf_aarch64_link_hash_table *htab) +{ + asection *section; + + /* OK, we've added some stubs. Find out the new size of the + stub sections. */ + for (section = htab->stub_bfd->sections; + section != NULL; section = section->next) + { + /* Ignore non-stub sections. */ + if (!strstr (section->name, STUB_SUFFIX)) + continue; + section->size = 0; + } + + bfd_hash_traverse (&htab->stub_hash_table, aarch64_size_one_stub, htab); +} + + /* Determine and set the size of the stub section for a final link. The basic idea here is to examine all the relocations looking for @@ -3453,18 +3476,7 @@ elfNN_aarch64_size_stubs (bfd *output_bfd, if (!stub_changed) break; - /* OK, we've added some stubs. Find out the new size of the - stub sections. */ - for (stub_sec = htab->stub_bfd->sections; - stub_sec != NULL; stub_sec = stub_sec->next) - { - /* Ignore non-stub sections. */ - if (!strstr (stub_sec->name, STUB_SUFFIX)) - continue; - stub_sec->size = 0; - } - - bfd_hash_traverse (&htab->stub_hash_table, aarch64_size_one_stub, htab); + _bfd_aarch64_resize_stubs (htab); /* Add erratum 835769 veneers to stub section sizes too. */ if (htab->fix_erratum_835769) -- 2.30.2