V2 [PATCH] elf: Get the real kept section

H.J. Lu hjl.tools@gmail.com
Wed Nov 25 13:56:34 GMT 2020
On Wed, Nov 25, 2020 at 5:15 AM H.J. Lu <hjl.tools@gmail.com> wrote:
>
> When mixing linkonce and comdat sections, we need to keep searching to
> get the real kept section.
>
> bfd/
>
>         PR ld/26936
>         * elflink.c (_bfd_elf_check_kept_section): Get the real kept
>         section.
>
> ld/
>
>         PR ld/26936
>         * testsuite/ld-elf/pr26936.d: New file.
>         * testsuite/ld-elf/pr26936a.s: Likewise.
>         * testsuite/ld-elf/pr26936b.s: Likewise.
>         * testsuite/ld-elf/pr26936c.s: Likewise.
> ---
>  bfd/elflink.c                  |  9 +++++++++
>  ld/testsuite/ld-elf/pr26936.d  | 12 ++++++++++++
>  ld/testsuite/ld-elf/pr26936a.s |  6 ++++++
>  ld/testsuite/ld-elf/pr26936b.s | 11 +++++++++++
>  ld/testsuite/ld-elf/pr26936c.s |  6 ++++++
>  5 files changed, 44 insertions(+)
>  create mode 100644 ld/testsuite/ld-elf/pr26936.d
>  create mode 100644 ld/testsuite/ld-elf/pr26936a.s
>  create mode 100644 ld/testsuite/ld-elf/pr26936b.s
>  create mode 100644 ld/testsuite/ld-elf/pr26936c.s
>
> diff --git a/bfd/elflink.c b/bfd/elflink.c
> index 7ba667a824..94ed560e04 100644
> --- a/bfd/elflink.c
> +++ b/bfd/elflink.c
> @@ -10702,6 +10702,15 @@ _bfd_elf_check_kept_section (asection *sec, struct bfd_link_info *info)
>           && ((sec->rawsize != 0 ? sec->rawsize : sec->size)
>               != (kept->rawsize != 0 ? kept->rawsize : kept->size)))
>         kept = NULL;
> +      else
> +       {
> +         /* Get the real kept section.  */
> +         asection *next;
> +         for (next = kept->kept_section;
> +              next != NULL;
> +              next = next->kept_section)
> +           kept = next;
> +       }
>        sec->kept_section = kept;
>      }
>    return kept;

Here is the updated patch to check kept != NULL.

-- 
H.J.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-elf-Get-the-real-kept-section.patch
Type: application/x-patch
Size: 3768 bytes
Desc: not available
URL: <https://sourceware.org/pipermail/binutils/attachments/20201125/34755495/attachment.bin>


More information about the Binutils mailing list