public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
From: Nelson Chu <nelson.chu@sifive.com>
To: Fangrui Song <maskray@google.com>
Cc: binutils@sourceware.org, Kito Cheng <kito.cheng@sifive.com>
Subject: Re: [PATCH] RISC-V: Remove R_RISCV_GNU_VTINHERIT/R_RISCV_GNU_VTENTRY
Date: Mon, 8 Aug 2022 15:36:10 +0800	[thread overview]
Message-ID: <CAJYME4F=VL2KWfdEc8aVck8oN+tBq5HU5SXzTTL0PzwAe-twCw@mail.gmail.com> (raw)
In-Reply-To: <20220808065523.18152-1-maskray@google.com>

Not sure about the history, but if we never use these two relocations,
then removing them makes sense to me.  Btw, just curious that, will we
use numbers 41 and 42 first when adding new relocations?

On Mon, Aug 8, 2022 at 2:55 PM Fangrui Song <maskray@google.com> wrote:
>
> There is no assembler syntax for the two relocation types and therefore
> they appear to be never used. Remove related ld code.
>
> Link: https://github.com/riscv-non-isa/riscv-elf-psabi-doc/pull/323
> ---
>  bfd/elfnn-riscv.c   | 32 +-------------------------------
>  bfd/elfxx-riscv.c   | 32 +++-----------------------------
>  include/elf/riscv.h |  2 --
>  3 files changed, 4 insertions(+), 62 deletions(-)
>
> diff --git a/bfd/elfnn-riscv.c b/bfd/elfnn-riscv.c
> index 8f9f0d8a86a..86cb207b573 100644
> --- a/bfd/elfnn-riscv.c
> +++ b/bfd/elfnn-riscv.c
> @@ -932,16 +932,6 @@ riscv_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
>
>           break;
>
> -       case R_RISCV_GNU_VTINHERIT:
> -         if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
> -           return false;
> -         break;
> -
> -       case R_RISCV_GNU_VTENTRY:
> -         if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
> -           return false;
> -         break;
> -
>         default:
>           break;
>         }
> @@ -950,24 +940,6 @@ riscv_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
>    return true;
>  }
>
> -static asection *
> -riscv_elf_gc_mark_hook (asection *sec,
> -                       struct bfd_link_info *info,
> -                       Elf_Internal_Rela *rel,
> -                       struct elf_link_hash_entry *h,
> -                       Elf_Internal_Sym *sym)
> -{
> -  if (h != NULL)
> -    switch (ELFNN_R_TYPE (rel->r_info))
> -      {
> -      case R_RISCV_GNU_VTINHERIT:
> -      case R_RISCV_GNU_VTENTRY:
> -       return NULL;
> -      }
> -
> -  return _bfd_elf_gc_mark_hook (sec, info, rel, h, sym);
> -}
> -
>  /* Adjust a symbol defined by a dynamic object and referenced by a
>     regular object.  The current definition is in some section of the
>     dynamic object, but we're not including those sections.  We have to
> @@ -2027,8 +1999,7 @@ riscv_elf_relocate_section (bfd *output_bfd,
>        char *msg_buf = NULL;
>        bool resolved_to_zero;
>
> -      if (howto == NULL
> -         || r_type == R_RISCV_GNU_VTINHERIT || r_type == R_RISCV_GNU_VTENTRY)
> +      if (howto == NULL)
>         continue;
>
>        /* This is a final link.  */
> @@ -5260,7 +5231,6 @@ riscv_elf_merge_symbol_attribute (struct elf_link_hash_entry *h,
>  #define elf_backend_relocate_section           riscv_elf_relocate_section
>  #define elf_backend_finish_dynamic_symbol      riscv_elf_finish_dynamic_symbol
>  #define elf_backend_finish_dynamic_sections    riscv_elf_finish_dynamic_sections
> -#define elf_backend_gc_mark_hook               riscv_elf_gc_mark_hook
>  #define elf_backend_plt_sym_val                        riscv_elf_plt_sym_val
>  #define elf_backend_grok_prstatus              riscv_elf_grok_prstatus
>  #define elf_backend_grok_psinfo                        riscv_elf_grok_psinfo
> diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
> index 0b2021f5cc7..c9636bcbdc8 100644
> --- a/bfd/elfxx-riscv.c
> +++ b/bfd/elfxx-riscv.c
> @@ -599,35 +599,9 @@ static reloc_howto_type howto_table[] =
>          MINUS_ONE,                     /* dst_mask */
>          false),                        /* pcrel_offset */
>
> -  /* GNU extension to record C++ vtable hierarchy */
> -  HOWTO (R_RISCV_GNU_VTINHERIT,                /* type */
> -        0,                             /* rightshift */
> -        8,                             /* size */
> -        0,                             /* bitsize */
> -        false,                         /* pc_relative */
> -        0,                             /* bitpos */
> -        complain_overflow_dont,        /* complain_on_overflow */
> -        NULL,                          /* special_function */
> -        "R_RISCV_GNU_VTINHERIT",       /* name */
> -        false,                         /* partial_inplace */
> -        0,                             /* src_mask */
> -        0,                             /* dst_mask */
> -        false),                        /* pcrel_offset */
> -
> -  /* GNU extension to record C++ vtable member usage */
> -  HOWTO (R_RISCV_GNU_VTENTRY,          /* type */
> -        0,                             /* rightshift */
> -        8,                             /* size */
> -        0,                             /* bitsize */
> -        false,                         /* pc_relative */
> -        0,                             /* bitpos */
> -        complain_overflow_dont,        /* complain_on_overflow */
> -        _bfd_elf_rel_vtable_reloc_fn,  /* special_function */
> -        "R_RISCV_GNU_VTENTRY",         /* name */
> -        false,                         /* partial_inplace */
> -        0,                             /* src_mask */
> -        0,                             /* dst_mask */
> -        false),                        /* pcrel_offset */
> +  /* 41 and 42 are reserved.  */
> +  EMPTY_HOWTO (0),
> +  EMPTY_HOWTO (0),
>
>    /* Indicates an alignment statement.  The addend field encodes how many
>       bytes of NOPs follow the statement.  The desired alignment is the
> diff --git a/include/elf/riscv.h b/include/elf/riscv.h
> index d0acf6886d8..9b3ea376ff3 100644
> --- a/include/elf/riscv.h
> +++ b/include/elf/riscv.h
> @@ -71,8 +71,6 @@ START_RELOC_NUMBERS (elf_riscv_reloc_type)
>    RELOC_NUMBER (R_RISCV_SUB16, 38)
>    RELOC_NUMBER (R_RISCV_SUB32, 39)
>    RELOC_NUMBER (R_RISCV_SUB64, 40)
> -  RELOC_NUMBER (R_RISCV_GNU_VTINHERIT, 41)
> -  RELOC_NUMBER (R_RISCV_GNU_VTENTRY, 42)
>    RELOC_NUMBER (R_RISCV_ALIGN, 43)
>    RELOC_NUMBER (R_RISCV_RVC_BRANCH, 44)
>    RELOC_NUMBER (R_RISCV_RVC_JUMP, 45)
> --
> 2.37.1.559.g78731f0fdb-goog
>

  reply	other threads:[~2022-08-08  7:36 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-08  6:55 Fangrui Song
2022-08-08  7:36 ` Nelson Chu [this message]
2022-08-08  8:02 ` Andreas Schwab
2022-08-08 15:47   ` Kito Cheng
2022-08-08 17:27     ` Fangrui Song
2022-08-08 18:33       ` Palmer Dabbelt
2022-08-10  6:33       ` Fangrui Song
2022-08-10 13:22         ` Kito Cheng

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAJYME4F=VL2KWfdEc8aVck8oN+tBq5HU5SXzTTL0PzwAe-twCw@mail.gmail.com' \
    --to=nelson.chu@sifive.com \
    --cc=binutils@sourceware.org \
    --cc=kito.cheng@sifive.com \
    --cc=maskray@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).