From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0a-002e3701.pphosted.com (mx0a-002e3701.pphosted.com [148.163.147.86]) by mx.groups.io with SMTP id smtpd.web11.4602.1622179909017232257 for ; Thu, 27 May 2021 22:31:49 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@hpe.com header.s=pps0720 header.b=K/GynF3u; spf=permerror, err=parse error for token &{10 18 %{ir}.%{v}.%{d}.spf.has.pphosted.com}: invalid domain name (domain: hpe.com, ip: 148.163.147.86, mailfrom: prvs=0782206e73=daniel.schaefer@hpe.com) Received: from pps.filterd (m0150242.ppops.net [127.0.0.1]) by mx0a-002e3701.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 14S5NQ4H008957; Fri, 28 May 2021 05:31:42 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hpe.com; h=subject : to : cc : references : from : message-id : date : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pps0720; bh=TZsVw7VI5BzoWMwhQ7BEj7e9FiRHJjDIrfe8cFK/CG4=; b=K/GynF3u9G/gsOfOi2t6hNwc+oSwow8QVlf1dMxhXzV8o6M1sdYYESk0TPr5SqXBj83w RVfxL6iKeZBtraZrn+l3MQ2s5ArGAC5QGYMVm4fLl96nmXiRnFvZEpifTnDrtdFEGO6y rmCVINOQ208R5ZpqkiUqLt87dVhqA7svXwdfzsTd0lXsvFrK4SvMyxpaOL6zBQyDuo4R rkxSz6RvgLDjeOOG6JbEIB703K5SpGLyDqco9+2ZQVhWaU583mzMQESvtZ4mf6UmhEz5 UPg5T6A68JGVcULAoFUOYrA0viUDwA2NmZI+AKkJxwh4NsldpB6YtRuULvyfN5X/iQI4 2g== Received: from g9t5009.houston.hpe.com (g9t5009.houston.hpe.com [15.241.48.73]) by mx0a-002e3701.pphosted.com with ESMTP id 38t2aa41ag-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 28 May 2021 05:31:41 +0000 Received: from G9W8456.americas.hpqcorp.net (exchangepmrr1.us.hpecorp.net [16.216.161.95]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by g9t5009.houston.hpe.com (Postfix) with ESMTPS id 8CA706B; Fri, 28 May 2021 05:31:40 +0000 (UTC) Received: from G4W9119.americas.hpqcorp.net (2002:10d2:14d6::10d2:14d6) by G9W8456.americas.hpqcorp.net (2002:10d8:a15f::10d8:a15f) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 28 May 2021 05:31:40 +0000 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (15.241.52.12) by G4W9119.americas.hpqcorp.net (16.210.20.214) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Fri, 28 May 2021 05:31:40 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nlfU/68zPHE+aCXAXA/FRnoBJQrVzIVsnp7pB7nQVJJHoDcbc0ZVgiVZXwMAprpJhgz1/yAfKu19RL0u2TPWfpfSEaTXcRvvi7zd8GL9Xf1LcVc1n8nR+gWY6xvmj3RpZKuLvp7fVVBCtJH1vHXn89XK+X2gyPS5DLSqET2CbkH3Chp3f1xYSvhAKkiPP1aI1qeYIBkveDtRK2w3LXvRASYheTrrSpe4CX+NGGCJtJSaMCpY5cM1VXa+vMa2dz7hpgdLdhTAPZX7wijqM6JncmNdq9c757N1M+VmE/Se9xSqGAOgAJqCwtd9pKOiYU/2W17Ed53cJl6x8JwLaEQJSQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IbfEWOy3iJ5djZY2AZwOQZ/GAAZQ/h0lNa12x2Vtjko=; b=AIrbYewPmYmnZkbzytD6nolif4FdMfNC6eOif4miFC2IzM+zg10BBdTE4XEmkKLsv/ypPDM59ujdnYyK4v/6/b1kBZ7SLjvoL1mDqle3N926xW7164ZtxMmCrcOPpRM9osJRJKoCK7VsGqXvl0PXPZGiQbMV8dNX62dehI+KcKudjGqr1+oX4mEPFUD5aV6Bq77IYiy+kRU89GU7Xmk9nzYumblNSaS9g1HipY6IxhpJ+t0BzbBKSrB2Yd2CTmeKlodxCSs9OS9qD2IDPyekU4MwNNLFAqwAZDLHjN0cHv54TANqo15AhuxJ1Q+MFGsxhMGRwqbE1oNZuCiXRwSbtw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=hpe.com; dmarc=pass action=none header.from=hpe.com; dkim=pass header.d=hpe.com; arc=none Authentication-Results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=hpe.com; Received: from DF4PR8401MB0444.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:760d::23) by DF4PR8401MB0812.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:760d::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4173.22; Fri, 28 May 2021 05:31:38 +0000 Received: from DF4PR8401MB0444.NAMPRD84.PROD.OUTLOOK.COM ([fe80::1055:761b:7ee6:52ca]) by DF4PR8401MB0444.NAMPRD84.PROD.OUTLOOK.COM ([fe80::1055:761b:7ee6:52ca%11]) with mapi id 15.20.4173.024; Fri, 28 May 2021 05:31:38 +0000 Subject: Re: [PATCH] Add support for RISCV GOT/PLT relocations To: Heinrich Schuchardt , Sunil V L , CC: , Abner Chang , Bob Feng , Liming Gao , Yuwei Chen References: <20210527144113.206426-1-sunilvl@ventanamicro.com> <6A934026-DA4B-4151-BBE0-34D80B255880@gmx.de> From: "Daniel Schaefer" Message-ID: <366dedb1-3e32-5949-ac6e-617db72be1d5@hpe.com> Date: Fri, 28 May 2021 13:31:26 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.10.1 In-Reply-To: <6A934026-DA4B-4151-BBE0-34D80B255880@gmx.de> X-Originating-IP: [123.193.59.220] X-ClientProxiedBy: HK0PR03CA0104.apcprd03.prod.outlook.com (2603:1096:203:b0::20) To DF4PR8401MB0444.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:760d::23) X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [192.168.0.25] (123.193.59.220) by HK0PR03CA0104.apcprd03.prod.outlook.com (2603:1096:203:b0::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4173.20 via Frontend Transport; Fri, 28 May 2021 05:31:35 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 01f7120c-aa33-4e22-3a17-08d92199ddb1 X-MS-TrafficTypeDiagnostic: DF4PR8401MB0812: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:962; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: VpZnSSNAhEt2ZDI0EumxMewsy5OHubc4P1Poj78R4ZA8vLQ4WkBbNryQc2+0Crhdpzb+8lubV0VCTnunvrIgqxpFA0g3Tk4FWwksDZdVRw66cTWOnG9Qr/N/ihF0AdW2BYblaUPuwB9T6lsgFpUmr1C35yxc+Wy+AzFeNZI33I+hQuyne69qUea2rmTlHmicEb4tWy8CL55rUAjSlyZq9Ue3kmfHAQZl5x2ymX7u36ke37kVGbO0OtpO3h6hboqRYAIoxw9YWW9HmsZO62Hk2kbIb4n1JXSiVgEu+AneG5M2SaF9gxl0fSslgjYpCjU69J3EmCghU7bAGcO8bkPDUXzw6iGKRWwpp52X3G0aXyD9bmH7TN1WGwWz0Y705ehlBVxzQEFM07vPlr2P7ivteOgnrdTTUDJiHV0wc9CZk71ZD/uCnxAY0y+XLZE77OzFwiiEhPKYtoyQBVEvnV65vXgn4WH7rkzXrMK3eiYRrJs1s4kpLoX0DDi/ZEHa4vQYh3UbpyE6aegNZF0vIaAL7eFgec8tK3jLkSH6PkCjFDzuhjxz/sCKVDs6Qxh4521CtM6Kx/XjQ6nDsf7brG2HW3ZSNnVhmzBnggQEaM1zIsVLGd1pEs+deUZilFN+kLwqz7DFnm3ht900Ktqtljkt57bRzXL9mM6H6KfP3GIpsofM8FOYfQHOzUPyEZiU0jXEkyh3itB2UN7wWUXH61LYs23z5HRZvRPTCeITpgs+NnefuJ9nv/mKdSF8TURbGkaivr16EWivM0ygINoRtdoo8N3Q0ROImlG/NW4LWSjD0D84LDlpXXATErKqA2hm5ovn X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DF4PR8401MB0444.NAMPRD84.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(136003)(396003)(39860400002)(376002)(346002)(366004)(38100700002)(8676002)(86362001)(36756003)(6666004)(26005)(8936002)(966005)(53546011)(83380400001)(2906002)(44832011)(6486002)(478600001)(110136005)(5660300002)(54906003)(16526019)(31696002)(19627235002)(186003)(31686004)(316002)(956004)(16576012)(66556008)(2616005)(4326008)(66476007)(66946007)(43740500002)(45980500001);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?bGJtY0g5cU5VMmlKZW5lU2RuQ1NCVDVjaDNtL09aczd0QmFyQzFXTFFGelBT?= =?utf-8?B?bkg5Ym1ieU5jTm9oUzZpY2MxTnVZM0xCdDlpNWNKcXlLTlBEWko2QUZxQkNo?= =?utf-8?B?QUtsM0h5dVNFbk5ZZTJ4MGJwT1NzYmp0bnJqVWlpWDZVOGZWVmhtNkZFRFZ0?= =?utf-8?B?N1RYcHV0N2JaczRJN0hPeVZCbExHVlo5MytodUZLREJvb0VhS2ZWTnJWbm5H?= =?utf-8?B?aXJ2eWpvZzZBTkNHTVJBT29hVlltQ2NiSFVsVXFCSThWbzd6aVVuTHY5OGxJ?= =?utf-8?B?K3R4Rlo1Z3Y4cGlxTlB4Z3VNTy9iVEZwZ3JFREtMWjJBWVBRSkZhcUwwdi9n?= =?utf-8?B?NWdGRGUxUkxkSXNnNm9oWGRjTlV1cWh0QkhjS3VkU1FTY0dnME5GUHVhV3FL?= =?utf-8?B?aVFFanUvN2tKWFo4cEc3U2hnU0R6UktRVFJhZXZNT3drODJMVUk1NUwwRXJ0?= =?utf-8?B?aTN2MXlydlhwUzlGa0pMS0tJN3VnUElzZndjZlRZaUprd215eFljTXA2QzRC?= =?utf-8?B?V0FFbk43a0ZlOTV3V2VpWDlOdGRTYlVwV0lTVHBXdnY3aTVzd2ZKMTNjcFpB?= =?utf-8?B?L2NDdlU3SmYvMHd0dzd5VlJ4WnEydStaRWIra2FiSG1pRm5tTVZqanpzUnlv?= =?utf-8?B?ZDFveVNSNHU4eFRmRDNqK0Jod2kwTktPdms5K093NVhSUytxN1FRS2srYW5j?= =?utf-8?B?VDVDL2MzSm9TNVNsN3BZRUtEbTZOSkw3VWRiQnFmQmZXNWFzWkJPWlVaeGxH?= =?utf-8?B?bVJxc1gzZXdzai8vK1dMK2F6WmNFT01PUnlFWm1KbENHTGVBclBYcFV2SHNi?= =?utf-8?B?QXhCRi9DbVZ3TTBIdDhqU3dHTXkwaFIxYzVlbFFPVkdxc3VJeWt1T0RzZjRR?= =?utf-8?B?R25tZzl4T01TdzdBNDRoMlB2NVM3d21qUkF4WldSQ3FhMGJaWWNGQlA5L1hK?= =?utf-8?B?NXNFUlBZT2xSWFlraTZKVHNENElRdzJheGFTQ2xaOStFK0ZjZzdiTnlDTTBQ?= =?utf-8?B?bzhWY3VtaVllMjRHT0c4eTVaWkNQK01rc04yelh2czRqeitGdjJIaExWNm9o?= =?utf-8?B?SXQ3eVdzcjd6UllIRWQ0YWJGZWNudVRoaXNONEFwemJRMTk2eG9rWm5YOGxF?= =?utf-8?B?NDlxUzJVTlkwTzJKZ091QndKc2s0czJrVXg3VENMV1loVjVMWTN2SXY1eDF1?= =?utf-8?B?My9DVklQZmtkUHhSTlhLKzBHUHRONll0NXZES211TnVzVHYxOEdYRkJRdHRx?= =?utf-8?B?U0ErOHBTU0c4SjJRMXBjN2RRNTcvNk1iVWN3ZjUvV2E3d28yRzRqM3FnbjhB?= =?utf-8?B?VDlxNko4aS9OeVRTL2pJMnVkL3NDOHVRaDlxcWFYcUIvTEY1UmV2MFZPZ2N4?= =?utf-8?B?REwvN3cvbkxJcjNkcmloSyt2eGF4T0NCUEhxMlpkcjBqZFhpYktSQzFxbGZi?= =?utf-8?B?V1BITVpZdEpxa0J4NlZKbk85QU1GTjh3ZFpuREgwUFNzUW04WCtwWHRaYlJk?= =?utf-8?B?NC91VzNoYlJkM2NvM21nQnZUMGxQSmw0dVpFM1k5WDJ2TjV5cVQ2NVJYRTRl?= =?utf-8?B?ZWNoQXhNNndHMzdPazRDalZ2WVA1T2RONlFPV20rVkNHYjRPNGJ3RUxrSnlx?= =?utf-8?B?T0l6SS9sc0hFaUg1WGNxRkpHNGgwalVyQVB1VVBQaVFKTEVrd1hNVVlaSUZ4?= =?utf-8?B?Nkh3WHZueFNvbHVRdTRQUXBnWjYzZ2NTSmM4RGpHWnRQc25haHFhMSt4ZTM5?= =?utf-8?Q?QbDKzrqJ14/BqAXg+Z6JsXdKwLmpBkD1Ui96GoY?= X-MS-Exchange-CrossTenant-Network-Message-Id: 01f7120c-aa33-4e22-3a17-08d92199ddb1 X-MS-Exchange-CrossTenant-AuthSource: DF4PR8401MB0444.NAMPRD84.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 May 2021 05:31:38.4927 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 105b2061-b669-4b31-92ac-24d304d195dc X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: mRpUAbFHOyCnEw+6JIgqKvGjvdy+cy9KYmUvHbKJ0wptjACx0lLAdzKagJX4GZOD68N6a+ePgN21N7sYKAcU6Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DF4PR8401MB0812 X-OriginatorOrg: hpe.com X-Proofpoint-ORIG-GUID: k3ihXElp_PiQ-OnsIEdzhmqkg3a2VPtP X-Proofpoint-GUID: k3ihXElp_PiQ-OnsIEdzhmqkg3a2VPtP X-Proofpoint-UnRewURL: 1 URL was un-rewritten MIME-Version: 1.0 X-HPE-SCL: -1 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.391,18.0.761 definitions=2021-05-28_02:2021-05-27,2021-05-28 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 mlxscore=0 lowpriorityscore=0 bulkscore=0 adultscore=0 malwarescore=0 priorityscore=1501 mlxlogscore=999 impostorscore=0 suspectscore=0 phishscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2104190000 definitions=main-2105280034 Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit On 5/28/21 12:42 PM, Heinrich Schuchardt wrote: > Am 27. Mai 2021 16:41:13 MESZ schrieb Sunil V L : >> Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3096 >> >> This patch adds support for R_RISCV_CALL_PLT and R_RISCV_GOT_HI20 >> relocations. >> > > gnu-efi tries to avoid GOT based relocations on ARM using > > #if defined(__GNUC__) && !__STDC_HOSTED__ > #pragma GCC visibility push (hidden) > #endif > > Maybe this is something we should additionally explore. That's an interesting idea. I see they put this in the header that's imported by everything. I tried to put it in BaseTools/Source/C/Include/RiscV64/ProcessorBind.h where we define the EDK2 types and I still get errors like this: WriteSections64(): /Build/RiscvVirt/DEBUG_GCC5/RISCV64/MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe/DEBUG/EhciDxe.dll unsupported ELF EM_RISCV64 relocation 0x13. WriteSections64(): /Build/RiscvVirt/DEBUG_GCC5/RISCV64/MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe/DEBUG/UsbKbDxe.dll unsupported ELF EM_RISCV64 relocation 0x14. GenFw: ERROR 3000: Invalid Perhaps something else, a compiler flag, is needed? This patch isn't just about GOT though. Sunil also found mistakes in some other relocation types that cause issues with newer GCC toolchains. So it's needed either way. More context for the others: Currently we've been using an old toolchain from 2018 and people had to download our precompiled binaries or build it from a specific commit. Now with these patches they can just use their distribution's riscv64 toolchain and compile edk2 with it. At least Debian and Fedora ship them. > > Best regards > > Heinrich > > > > >> Signed-off-by: Sunil V L >> Cc: Abner Chang >> Cc: Daniel Schaefer >> Cc: Heinrich Schuchardt >> --- >> BaseTools/Source/C/GenFw/Elf64Convert.c | 45 +++++++++++++++++++++---- >> 1 file changed, 39 insertions(+), 6 deletions(-) >> >> diff --git a/BaseTools/Source/C/GenFw/Elf64Convert.c >> b/BaseTools/Source/C/GenFw/Elf64Convert.c >> index d097db8632..d05dcf9992 100644 >> --- a/BaseTools/Source/C/GenFw/Elf64Convert.c >> +++ b/BaseTools/Source/C/GenFw/Elf64Convert.c >> @@ -129,6 +129,8 @@ STATIC UINT32 mDebugOffset; >> STATIC UINT8 *mRiscVPass1Targ = NULL;> >> STATIC Elf_Shdr *mRiscVPass1Sym = NULL;> >> STATIC Elf64_Half mRiscVPass1SymSecIndex = 0;> >> +STATIC INT32 mRiscVPass1Offset;> >> +STATIC INT32 mRiscVPass1GotFixup;> >>> >> //> >> // Initialization Function> >> @@ -479,11 +481,11 @@ WriteSectionRiscV64 ( >> break;> >>> >> case R_RISCV_32:> >> - *(UINT32 *)Targ = (UINT32)((UINT64)(*(UINT32 *)Targ) - >> SymShdr->sh_addr + mCoffSectionsOffset[Sym->st_shndx]);> >> + *(UINT64 *)Targ = Sym->st_value + Rel->r_addend;> >> break;> >>> >> case R_RISCV_64:> >> - *(UINT64 *)Targ = *(UINT64 *)Targ - SymShdr->sh_addr + >> mCoffSectionsOffset[Sym->st_shndx];> >> + *(UINT64 *)Targ = Sym->st_value + Rel->r_addend;> >> break;> >>> >> case R_RISCV_HI20:> >> @@ -533,6 +535,18 @@ WriteSectionRiscV64 ( >> mRiscVPass1SymSecIndex = 0;> >> break;> >>> >> + case R_RISCV_GOT_HI20:> >> + Value = (Sym->st_value - Rel->r_offset);> >> + mRiscVPass1Offset = RV_X(Value, 0, 12);> >> + Value = RV_X(Value, 12, 20);> >> + *(UINT32 *)Targ = (Value << 12) | (RV_X(*(UINT32*)Targ, 0, 12));> >> +> >> + mRiscVPass1Targ = Targ;> >> + mRiscVPass1Sym = SymShdr;> >> + mRiscVPass1SymSecIndex = Sym->st_shndx;> >> + mRiscVPass1GotFixup = 1;> >> + break;> >> +> >> case R_RISCV_PCREL_HI20:> >> mRiscVPass1Targ = Targ;> >> mRiscVPass1Sym = SymShdr;> >> @@ -545,11 +559,17 @@ WriteSectionRiscV64 ( >> if (mRiscVPass1Targ != NULL && mRiscVPass1Sym != NULL && >> mRiscVPass1SymSecIndex != 0) {> >> int i;> >> Value2 = (UINT32)(RV_X(*(UINT32 *)mRiscVPass1Targ, 12, 20));> >> - Value = (UINT32)(RV_X(*(UINT32 *)Targ, 20, 12));> >> - if(Value & (RISCV_IMM_REACH/2)) {> >> - Value |= ~(RISCV_IMM_REACH-1);> >> +> >> + if(mRiscVPass1GotFixup) {> >> + Value = (UINT32)(mRiscVPass1Offset);> >> + } else {> >> + Value = (UINT32)(RV_X(*(UINT32 *)Targ, 20, 12));> >> + if(Value & (RISCV_IMM_REACH/2)) {> >> + Value |= ~(RISCV_IMM_REACH-1);> >> + }> >> }> >> Value = Value - (UINT32)mRiscVPass1Sym->sh_addr + >> mCoffSectionsOffset[mRiscVPass1SymSecIndex];> >> +> >> if(-2048 > (INT32)Value) {> >> i = (((INT32)Value * -1) / 4096);> >> Value2 -= i;> >> @@ -569,12 +589,22 @@ WriteSectionRiscV64 ( >> }> >> }> >>> >> - *(UINT32 *)Targ = (RV_X(Value, 0, 12) << 20) | >> (RV_X(*(UINT32*)Targ, 0, 20));> >> + if(mRiscVPass1GotFixup) {> >> + *(UINT32 *)Targ = (RV_X((UINT32)Value, 0, 12) << 20)> >> + | (RV_X(*(UINT32*)Targ, 0, 20));> >> + /* Convert LD instruction to ADDI */> >> + *(UINT32 *)Targ = ((*(UINT32 *)Targ & ~0x707f) | 0x13);> >> + }> >> + else {> >> + *(UINT32 *)Targ = (RV_X(Value, 0, 12) << 20) | >> (RV_X(*(UINT32*)Targ, 0, 20));> >> + }> >> *(UINT32 *)mRiscVPass1Targ = (RV_X(Value2, 0, 20)<<12) | (RV_X(*(UINT32 >> *)mRiscVPass1Targ, 0, 12));> >> }> >> mRiscVPass1Sym = NULL;> >> mRiscVPass1Targ = NULL;> >> mRiscVPass1SymSecIndex = 0;> >> + mRiscVPass1Offset = 0;> >> + mRiscVPass1GotFixup = 0;> >> break;> >>> >> case R_RISCV_ADD64:> >> @@ -586,6 +616,7 @@ WriteSectionRiscV64 ( >> case R_RISCV_GPREL_I:> >> case R_RISCV_GPREL_S:> >> case R_RISCV_CALL:> >> + case R_RISCV_CALL_PLT:> >> case R_RISCV_RVC_BRANCH:> >> case R_RISCV_RVC_JUMP:> >> case R_RISCV_RELAX:> >> @@ -1528,6 +1559,7 @@ WriteRelocations64 ( >> case R_RISCV_GPREL_I:> >> case R_RISCV_GPREL_S:> >> case R_RISCV_CALL:> >> + case R_RISCV_CALL_PLT:> >> case R_RISCV_RVC_BRANCH:> >> case R_RISCV_RVC_JUMP:> >> case R_RISCV_RELAX:> >> @@ -1537,6 +1569,7 @@ WriteRelocations64 ( >> case R_RISCV_SET16:> >> case R_RISCV_SET32:> >> case R_RISCV_PCREL_HI20:> >> + case R_RISCV_GOT_HI20:> >> case R_RISCV_PCREL_LO12_I:> >> break;> >>> >