From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-oa1-x35.google.com (mail-oa1-x35.google.com [IPv6:2001:4860:4864:20::35]) by sourceware.org (Postfix) with ESMTPS id 2DFC2386103B for ; Mon, 19 Feb 2024 00:49:17 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 2DFC2386103B Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=rivosinc.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=rivosinc.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 2DFC2386103B Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2001:4860:4864:20::35 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1708303760; cv=none; b=V5noIHHtGZ9/arFFcZVvLs3WpMZckaLr4MLUIjuAlKCPyYFd0lzGZ1noP9Momxo2WYooEwkwtABSxG+ROA4lgfP/jgyCyTqedIYGm3SX0M9zQbHhHRPsOHkOd/p2C2B15hRSnUmnv4WFRti1PWbRuc+AoD9T0PCL0rRX7EMXyyg= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1708303760; c=relaxed/simple; bh=R1EJnIY31vPD6T5grykOQq2WN+4R0P/UbctR7bPfnEk=; h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To; b=mkfm6UuP4q/N/fNy9yN3PwiU3HLwPoZsuGzv/FbYQOAl+12gQpzYppkOvPQTlL2sATl5hs7siP5QJN26hhIRNppi9+xlpQBlfOhj1INTaPMIqOiRYcbkvRuf1eOoumIypkVrLWHfo9t/C3D2FDpD3X9yk4eEzlvGCd2T4+vyzJ0= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-oa1-x35.google.com with SMTP id 586e51a60fabf-21e5fa2f7efso957312fac.0 for ; Sun, 18 Feb 2024 16:49:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1708303755; x=1708908555; darn=sourceware.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Cwrbe6iD3FQ/GcLdS9+5X7yiUtM/KKW5hxkgr0Qi5Gg=; b=FA+rEd0vA6Qn6US/9jEw3y+vYFmoBytwQ/XB3UtWOIwTDFj3RDfNAr7Ngw/Vc5qvEf jTzvo8cr0cV2nhLlSyYieNJa9v0tlv6C+U3J0LU5bPrSLXFU0sqAHR/m4rtEVhYF+6fa WuovFJCGy68cUCJD4iRipxIBwGkhH10Ppq7nYfKp1jeP47W/3VpKEOeRWucaw6/41I/L ouicPGSmC1vDxRaiAiOdK5TiYznjLeZI5ZBucdwhKZuYYL1xcOg/VcBA9e2n8X/xSvVl 53+Edn6WiJI/B/msl+07oYWTLoo+S/pji0Mt09ZV0kXX1WCrnYqwFZlB2TWJYecD7cB1 BdVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1708303755; x=1708908555; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=Cwrbe6iD3FQ/GcLdS9+5X7yiUtM/KKW5hxkgr0Qi5Gg=; b=XbkHz8IJ3XBnazKr6CqOE2wEHh6VUJ6zOBitoojnKLFeS5fdCWypyYKm28pV6FGE6R gpWSOMbulc3D4+S3vxKNuzaUkS3mkRRyOigejMR970QthC3Lf97jeOKyUi00dGqs+g73 1ldIU34eHb+jV/8eoP0pJEFdTj0F597x2qKaNNtx5dSnOhCEEun6LdYZfR2ncHes3Sr8 mfUSGYfDz0NrT/5QwbIeaqp38zVd5dZfHiCy4KqwX9emRABYfNPmSV+/cYLmSrD2Wg+N cOxxUkDXOxLLBl54Q9q+9XQaaM627klg24xOK8VL1VuKKyR6xmIbvspSxDTMbhJaUTPg ReUw== X-Gm-Message-State: AOJu0YzNfGbWacsjUwrbJpBWp558WDmlw8p7wYU5X7H3/l5aPa3bdhHy lYYSoMbHIUHODELYnKBokBy9DKjQmpcSOtsYBKYsD6OOiHMD10g5JoYQB+/tPz4BrhC31SE4LPe fjgdiygoPp97fN+prQCWSEb8UQMy3ftTCx/RWlwN7v7ivHr2rcgQ= X-Google-Smtp-Source: AGHT+IG6wZgYIx4xU0NtWSqKeMrJbODeilbVzZjE/9JKqiTH0OB48AKQmOtfIpwu8kCQh6tDjAFwziJhbq6v3bSsmYY= X-Received: by 2002:a05:6870:830d:b0:21e:b096:2494 with SMTP id p13-20020a056870830d00b0021eb0962494mr2138581oae.50.1708303755184; Sun, 18 Feb 2024 16:49:15 -0800 (PST) MIME-Version: 1.0 References: <20230817180852.121628-2-ishitatsuyuki@gmail.com> <20231128085109.28422-1-ishitatsuyuki@gmail.com> <20231128085109.28422-3-ishitatsuyuki@gmail.com> In-Reply-To: <20231128085109.28422-3-ishitatsuyuki@gmail.com> From: Nelson Chu Date: Mon, 19 Feb 2024 08:49:04 +0800 Message-ID: Subject: Re: [PATCH v3 2/9] RISC-V: Add TLSDESC reloc definitions. To: Tatsuyuki Ishi Cc: binutils@sourceware.org, i@maskray.me, rui314@gmail.com, ruiu@bluewhale.systems Content-Type: multipart/alternative; boundary="0000000000007f3f100611b17641" X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,GIT_PATCH_0,HTML_MESSAGE,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --0000000000007f3f100611b17641 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Nov 28, 2023 at 4:51=E2=80=AFPM Tatsuyuki Ishi wrote: > bfd/ > * elfxx-riscv.c: Add 5 TLSDESC reloc descriptions. > * reloc.c: Likewise. > * libbfd.h: Regenerate. > * bfd-in2.h: Regenerate. > include/ > * elf/riscv.h: Add 5 TLSDESC reloc descriptions. > --- > bfd/bfd-in2.h | 4 +++ > bfd/elfxx-riscv.c | 75 ++++++++++++++++++++++++++++++++++++++++++++- > bfd/libbfd.h | 4 +++ > bfd/reloc.c | 8 +++++ > include/elf/riscv.h | 5 +++ > 5 files changed, 95 insertions(+), 1 deletion(-) > > diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h > index 040d5560cdf..9bc6b9885ff 100644 > --- a/bfd/bfd-in2.h > +++ b/bfd/bfd-in2.h > @@ -5407,6 +5407,10 @@ enum bfd_reloc_code_real > BFD_RELOC_RISCV_TLS_DTPREL64, > BFD_RELOC_RISCV_TLS_TPREL32, > BFD_RELOC_RISCV_TLS_TPREL64, > + BFD_RELOC_RISCV_TLSDESC_HI20, > + BFD_RELOC_RISCV_TLSDESC_LOAD_LO12, > + BFD_RELOC_RISCV_TLSDESC_ADD_LO12, > + BFD_RELOC_RISCV_TLSDESC_CALL, > BFD_RELOC_RISCV_ALIGN, > BFD_RELOC_RISCV_RVC_BRANCH, > BFD_RELOC_RISCV_RVC_JUMP, > diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c > index 567631e7d96..65d676b06b1 100644 > --- a/bfd/elfxx-riscv.c > +++ b/bfd/elfxx-riscv.c > @@ -218,7 +218,20 @@ static reloc_howto_type howto_table[] =3D > MINUS_ONE, /* dst_mask */ > false), /* pcrel_offset */ > > - EMPTY_HOWTO (12), > + HOWTO (R_RISCV_TLSDESC, /* type */ > + 0, /* rightshift */ > + 0, /* size is handled by dynamic > linker */ > + 0, /* bitsize */ > + false, /* pc_relative */ > + 0, /* bitpos */ > + complain_overflow_dont, /* complain_on_overflow */ > + bfd_elf_generic_reloc, /* special_function */ > + "R_RISCV_TLSDESC", /* name */ > + false, /* partial_inplace */ > + 0, /* src_mask */ > + MINUS_ONE, /* dst_mask */ > + false), /* pcrel_offset */ > + > EMPTY_HOWTO (13), > EMPTY_HOWTO (14), > EMPTY_HOWTO (15), > @@ -808,6 +821,62 @@ static reloc_howto_type howto_table[] =3D > 0, /* src_mask */ > 0, /* dst_mask */ > false), /* pcrel_offset */ > + > + HOWTO (R_RISCV_TLSDESC_HI20, /* type */ > + 0, /* rightshift */ > + 4, /* size */ > + 32, /* bitsize */ > + true, /* pc_relative */ > + 0, /* bitpos */ > + complain_overflow_signed, /* complain_on_overflow */ > + bfd_elf_generic_reloc, /* special_function */ > + "R_RISCV_TLSDESC_HI20", /* name */ > + true, /* partial_inplace */ > + 0, /* src_mask */ > + ENCODE_UTYPE_IMM (-1U), /* dst_mask */ > + false), /* pcrel_offset */ > complain_overflow_dont? > + HOWTO (R_RISCV_TLSDESC_LOAD_LO12, /* type */ > + 0, /* rightshift */ > + 4, /* size */ > + 32, /* bitsize */ > + false, /* pc_relative */ > + 0, /* bitpos */ > + complain_overflow_signed, /* complain_on_overflow */ > + bfd_elf_generic_reloc, /* special_function */ > + "R_RISCV_TLSDESC_LOAD_LO12", /* name */ > + false, /* partial_inplace */ > + 0, /* src_mask */ > + ENCODE_ITYPE_IMM (-1U), /* dst_mask */ > + false), /* pcrel_offset */ > Likewise. > + HOWTO (R_RISCV_TLSDESC_ADD_LO12, /* type */ > + 0, /* rightshift */ > + 4, /* size */ > + 32, /* bitsize */ > + false, /* pc_relative */ > + 0, /* bitpos */ > + complain_overflow_signed, /* complain_on_overflow */ > + bfd_elf_generic_reloc, /* special_function */ > + "R_RISCV_TLSDESC_ADD_LO12", /* name */ > + false, /* partial_inplace */ > + 0, /* src_mask */ > + ENCODE_ITYPE_IMM (-1U), /* dst_mask */ > + false), /* pcrel_offset */ > Likewise. > + HOWTO (R_RISCV_TLSDESC_CALL, /* type */ > + 0, /* rightshift */ > + 0, /* size */ > + 0, /* bitsize */ > + false, /* pc_relative */ > + 0, /* bitpos */ > + complain_overflow_dont, /* complain_on_overflow */ > + bfd_elf_generic_reloc, /* special_function */ > + "R_RISCV_TLSDESC_CALL", /* name */ > + false, /* partial_inplace */ > + 0, /* src_mask */ > + ENCODE_ITYPE_IMM (-1U), /* dst_mask */ > + false) /* pcrel_offset */ > }; > > static reloc_howto_type howto_table_internal[] =3D > @@ -935,6 +1004,10 @@ static const struct elf_reloc_map riscv_reloc_map[]= =3D > { BFD_RELOC_RISCV_TPREL_LO12_I, R_RISCV_TPREL_LO12_I }, > { BFD_RELOC_RISCV_TLS_GOT_HI20, R_RISCV_TLS_GOT_HI20 }, > { BFD_RELOC_RISCV_TLS_GD_HI20, R_RISCV_TLS_GD_HI20 }, > + { BFD_RELOC_RISCV_TLSDESC_HI20, R_RISCV_TLSDESC_HI20 }, > + { BFD_RELOC_RISCV_TLSDESC_LOAD_LO12, R_RISCV_TLSDESC_LOAD_LO12 }, > + { BFD_RELOC_RISCV_TLSDESC_ADD_LO12, R_RISCV_TLSDESC_ADD_LO12 }, > + { BFD_RELOC_RISCV_TLSDESC_CALL, R_RISCV_TLSDESC_CALL }, > { BFD_RELOC_RISCV_ALIGN, R_RISCV_ALIGN }, > { BFD_RELOC_RISCV_RVC_BRANCH, R_RISCV_RVC_BRANCH }, > { BFD_RELOC_RISCV_RVC_JUMP, R_RISCV_RVC_JUMP }, > diff --git a/bfd/libbfd.h b/bfd/libbfd.h > index cc432677a81..919b63d51a1 100644 > --- a/bfd/libbfd.h > +++ b/bfd/libbfd.h > @@ -2400,6 +2400,10 @@ static const char *const > bfd_reloc_code_real_names[] =3D { "@@uninitialized@@", > "BFD_RELOC_RISCV_TLS_DTPREL64", > "BFD_RELOC_RISCV_TLS_TPREL32", > "BFD_RELOC_RISCV_TLS_TPREL64", > + "BFD_RELOC_RISCV_TLSDESC_HI20", > + "BFD_RELOC_RISCV_TLSDESC_LOAD_LO12", > + "BFD_RELOC_RISCV_TLSDESC_ADD_LO12", > + "BFD_RELOC_RISCV_TLSDESC_CALL", > "BFD_RELOC_RISCV_ALIGN", > "BFD_RELOC_RISCV_RVC_BRANCH", > "BFD_RELOC_RISCV_RVC_JUMP", > diff --git a/bfd/reloc.c b/bfd/reloc.c > index 93ebad879e0..345f444d17a 100644 > --- a/bfd/reloc.c > +++ b/bfd/reloc.c > @@ -4984,6 +4984,14 @@ ENUMX > BFD_RELOC_RISCV_TLS_TPREL32 > ENUMX > BFD_RELOC_RISCV_TLS_TPREL64 > +ENUMX > + BFD_RELOC_RISCV_TLSDESC_HI20 > +ENUMX > + BFD_RELOC_RISCV_TLSDESC_LOAD_LO12 > +ENUMX > + BFD_RELOC_RISCV_TLSDESC_ADD_LO12 > +ENUMX > + BFD_RELOC_RISCV_TLSDESC_CALL > ENUMX > BFD_RELOC_RISCV_ALIGN > ENUMX > diff --git a/include/elf/riscv.h b/include/elf/riscv.h > index 56d419c665b..7f5c0407ac8 100644 > --- a/include/elf/riscv.h > +++ b/include/elf/riscv.h > @@ -44,6 +44,7 @@ START_RELOC_NUMBERS (elf_riscv_reloc_type) > RELOC_NUMBER (R_RISCV_TLS_DTPREL64, 9) > RELOC_NUMBER (R_RISCV_TLS_TPREL32, 10) > RELOC_NUMBER (R_RISCV_TLS_TPREL64, 11) > + RELOC_NUMBER (R_RISCV_TLSDESC, 12) > > /* Relocation types not used by the dynamic linker. */ > RELOC_NUMBER (R_RISCV_BRANCH, 16) > @@ -90,6 +91,10 @@ START_RELOC_NUMBERS (elf_riscv_reloc_type) > /* Reserved 59 for R_RISCV_PLT32. */ > RELOC_NUMBER (R_RISCV_SET_ULEB128, 60) > RELOC_NUMBER (R_RISCV_SUB_ULEB128, 61) > + RELOC_NUMBER (R_RISCV_TLSDESC_HI20, 62) > + RELOC_NUMBER (R_RISCV_TLSDESC_LOAD_LO12, 63) > + RELOC_NUMBER (R_RISCV_TLSDESC_ADD_LO12, 64) > + RELOC_NUMBER (R_RISCV_TLSDESC_CALL, 65) > END_RELOC_NUMBERS (R_RISCV_max) > > /* Internal relocations used exclusively by the relaxation pass. */ > -- > 2.43.0 > > --0000000000007f3f100611b17641--