V2 [PATCH] gold: Get linkonce/comdate sections for debugging sections

H.J. Lu hjl.tools@gmail.com
Thu Nov 26 14:14:20 GMT 2020


On Wed, Nov 25, 2020 at 7:11 AM H.J. Lu <hjl.tools@gmail.com> wrote:
>
> Sized_relobj_file::map_to_kept_section is used only for relocations in
> debugging sections.  Get the section index for linkonce section and also
> check the single comdat section.
>
>         PR gold/26937
>         * object.cc (Sized_relobj_file::map_to_kept_section): Get the
>         section index for linkonce section.  Also check the single
>         comdat section.
> ---
>  gold/object.cc | 10 ++++++----
>  1 file changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/gold/object.cc b/gold/object.cc
> index 498e58e2b0..61aed805c2 100644
> --- a/gold/object.cc
> +++ b/gold/object.cc
> @@ -2998,17 +2998,20 @@ Sized_relobj_file<size, big_endian>::map_to_kept_section(
>          {
>           // The kept section is a linkonce section.
>           if (sh_size == kept_section->linkonce_size())
> -           found = true;
> +           {
> +             kept_shndx = kept_section->shndx();
> +             found = true;
> +           }
>          }
>        else
>         {
> +         uint64_t kept_size = 0;
>           if (is_comdat)
>             {
>               // Find the corresponding kept section.
>               // Since we're using this mapping for relocation processing,
>               // we don't want to match sections unless they have the same
>               // size.
> -             uint64_t kept_size = 0;
>               if (kept_section->find_comdat_section(section_name, &kept_shndx,
>                                                     &kept_size))
>                 {
> @@ -3016,9 +3019,8 @@ Sized_relobj_file<size, big_endian>::map_to_kept_section(
>                     found = true;
>                 }
>             }
> -         else
> +         if (!found)
>             {
> -             uint64_t kept_size = 0;
>               if (kept_section->find_single_comdat_section(&kept_shndx,
>                                                            &kept_size)
>                   && sh_size == kept_size)
> --
> 2.28.0
>

Here is the updated patch with 2 tests.  Gold generates incorrect
debug info.  I will check it in next Monday if there are no objections.

-- 
H.J.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-gold-Get-linkonce-comdate-sections-for-debugging-sec.patch
Type: text/x-patch
Size: 11417 bytes
Desc: not available
URL: <https://sourceware.org/pipermail/binutils/attachments/20201126/07ac3a8b/attachment.bin>


More information about the Binutils mailing list