From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <3Z7PwYgcKCK4aOgYfOmUccUZS.QcaPWbihWZggcifQSkOfS.cfU@flex--maskray.bounces.google.com> Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com [IPv6:2607:f8b0:4864:20::b4a]) by sourceware.org (Postfix) with ESMTPS id 6F6123858287 for ; Mon, 8 Aug 2022 06:55:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 6F6123858287 Received: by mail-yb1-xb4a.google.com with SMTP id j11-20020a05690212cb00b006454988d225so6891930ybu.10 for ; Sun, 07 Aug 2022 23:55:36 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:from:subject:mime-version:message-id:date:x-gm-message-state :from:to:cc; bh=1CLVq9WW1+7pdwgHTXUtTqPFugb9Q6TIZ+3qggB0V0g=; b=5MKPGqHVzeF7TFEyjdnBZRiVeIAyOfJhMxC6JOdTD1pXEnlZoO3xeSKOsLinMYMThA 8lUTOXg1ALvtTvQ63LaSSsfdXMFyLCDo5p+rSeDDwgxxLYBCARVVY+213vifrUCxxryo UJ4CXmn8QMHEevgPaLGiO4FYuPhkuA0ycnk8aDBjNtcAvAMmahDKySjWmJMJr1VW2dki CZlspirW3BRRbY7jX5Bocoz0lHnBTyKBJ8Wm0PPxmvg6SjEGymySG3m98n8hJnVjyH53 30ONA83zgGerJpMfy/UckNFVBHWx6fpv9d6wiO8sn4WwBvH2kGmvzFTDRS7FNBooP1M3 xGKA== X-Gm-Message-State: ACgBeo0AFEyXxO2AolSA49tLfEjZb6flvtkbsobAjFAelxVxPaQwsli3 vq/uUGInp/6mvrIkr6w5thI2IxdgMzoBLL+PyE9t3npIU5We1ynVEJ+u4JAOqYxCN04T2LimqDA q56Md9jum06Hix7mtUwOBNovtvUL37pxKSfurPLEdjiQT7WGs8bBVZCvYXQr8BnSEUw== X-Google-Smtp-Source: AA6agR6LMwJJxtsG1YU7hi5Mx/tRm8nGeYu4PssbFkqkSekoMU0+p8UKzPxGw1WHy0v7IxnXJCor0Ey6Nqrz X-Received: from maskray1.svl.corp.google.com ([2620:15c:2ce:200:eb98:3423:cf3f:3342]) (user=maskray job=sendgmr) by 2002:a05:690c:806:b0:324:6228:533a with SMTP id bx6-20020a05690c080600b003246228533amr17763512ywb.441.1659941735791; Sun, 07 Aug 2022 23:55:35 -0700 (PDT) Date: Sun, 7 Aug 2022 23:55:23 -0700 Message-Id: <20220808065523.18152-1-maskray@google.com> Mime-Version: 1.0 Subject: [PATCH] RISC-V: Remove R_RISCV_GNU_VTINHERIT/R_RISCV_GNU_VTENTRY From: Fangrui Song To: binutils@sourceware.org, Nelson Chu , Kito Cheng Cc: Fangrui Song Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-19.7 required=5.0 tests=BAYES_00, DKIMWL_WL_MED, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE, USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 08 Aug 2022 06:55:38 -0000 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