From patchwork Tue Sep 19 08:12:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Claudiu Zissulescu Ianculescu X-Patchwork-Id: 76350 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id AD0993853D28 for ; Tue, 19 Sep 2023 08:14:04 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org AD0993853D28 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1695111244; bh=kiJKbrgz3zIR4Gnuu4epIvAsK2fbeGAkXS7lQjkOGIQ=; h=To:Cc:Subject:Date:In-Reply-To:References:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=LAtC5O0n59uP/zC/xnwRKltjRCo22x+cEfniPkKCmb0WtSUSUqaGWMz1eFHQNolow E6xxW88JRKvMRqoPEcn4U0v/0aqFx6+0DHhjPNOnmrOygoHk1KSn6LJLuA68rWsbqh SqZDtBmtW1K63Hc/Qkl1katBu5OB9Nk7tCtzcTBM= X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-ed1-x529.google.com (mail-ed1-x529.google.com [IPv6:2a00:1450:4864:20::529]) by sourceware.org (Postfix) with ESMTPS id 690EE3858425 for ; Tue, 19 Sep 2023 08:13:13 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 690EE3858425 Received: by mail-ed1-x529.google.com with SMTP id 4fb4d7f45d1cf-52c4d3ff424so6647669a12.0 for ; Tue, 19 Sep 2023 01:13:13 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695111192; x=1695715992; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kiJKbrgz3zIR4Gnuu4epIvAsK2fbeGAkXS7lQjkOGIQ=; b=NJuForw4QVAK0bHRIPFRAEvVr2oQ1UoQFxQSSIZd7sMnaTvzFlXvlNerDR0aa3jm4+ 2PHD28rtF8k6a2fnzrfrXoE4wqCOy6WPMpXZQVO/8VLZKtehI5jB6F1bkYUK/9e4u5RV +Al9clMfXAbgumIMo0vWywVonNMJqc+xgtp0YYKmVcXS87kDlE7xChGETCkWKkd5abLE 1GS00CbE/Rt9mKmdT7XYvdNBNEoznPCq3wqsGl7a0TymZN5z5jGGg0d96Lr2XkkPPebS YbWP7O4SoRxI+pLDNnOCWN1l8ErQiynBDKPR2dbo8f8O45aNRU8wtJOwdsmxDO+RvycR hNGg== X-Gm-Message-State: AOJu0YwT+9pgkYyOk3ztsasD00YsKY6W4tBlF0x2WFiCYD01fua0bnZe 8JFp7UDvki8E9Us0hFjrxj4ZBauK/cw= X-Google-Smtp-Source: AGHT+IGMGmdrn5ZDfnbJl5MZ6aqft1XrJmtkfDUtvL1+F6M0hTjY0ZtCQFXsqnmYEGljBPW0415bFw== X-Received: by 2002:a17:906:844a:b0:9a2:225a:8d01 with SMTP id e10-20020a170906844a00b009a2225a8d01mr10512745ejy.7.1695111191720; Tue, 19 Sep 2023 01:13:11 -0700 (PDT) Received: from fatty.nomansland ([193.187.151.25]) by smtp.gmail.com with ESMTPSA id qx15-20020a170906fccf00b009a5f1d15644sm7359213ejb.119.2023.09.19.01.13.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Sep 2023 01:13:11 -0700 (PDT) To: binutils@sourceware.org Cc: Claudiu Zissulescu Subject: [PATCH 4/7] arc: Add new linker emulation and scripts for ARCv3 ISA. Date: Tue, 19 Sep 2023 11:12:47 +0300 Message-Id: <20230919081250.2496254-5-claziss@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230919081250.2496254-1-claziss@gmail.com> References: <20230919081250.2496254-1-claziss@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-12.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP 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.30 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Claudiu Zissulescu via Binutils From: Claudiu Zissulescu Ianculescu Reply-To: Claudiu Zissulescu Errors-To: binutils-bounces+patchwork=sourceware.org@sourceware.org Sender: "Binutils" From: Claudiu Zissulescu Add ARCv3's linker bits. Remove obsolete tests. ld/ xxxx-xx-xx Claudiu Zissulescu * ld/Makefile.am: Add ARC64 targets. * ld/configure.tgt: Likewise. * ld/Makefile.in: Regenerate. * ld/emulparams/arc64elf32.sh: New file. * ld/emulparams/arc64elf64.sh: Likewise. * ld/emulparams/arc64linux32.sh: Likewise. * ld/emulparams/arc64linux64.sh: Likewise. * ld/scripttempl/elfarc.sc: Update stack and heap definitions. * ld/testsuite/ld-arc/got-weak.d: Deleted file. * ld/testsuite/ld-arc/got-weak.s: Likewise. Signed-off-by: Claudiu Zissulescu --- ld/Makefile.am | 4 ++++ ld/Makefile.in | 8 ++++++++ ld/configure.tgt | 21 +++++++++++++++++++-- ld/emulparams/arc64elf32.sh | 12 ++++++++++++ ld/emulparams/arc64elf64.sh | 12 ++++++++++++ ld/emulparams/arc64linux32.sh | 22 ++++++++++++++++++++++ ld/emulparams/arc64linux64.sh | 22 ++++++++++++++++++++++ ld/scripttempl/elfarc.sc | 18 ++++-------------- ld/testsuite/ld-arc/got-weak.d | 12 ------------ ld/testsuite/ld-arc/got-weak.s | 7 ------- 10 files changed, 103 insertions(+), 35 deletions(-) create mode 100644 ld/emulparams/arc64elf32.sh create mode 100644 ld/emulparams/arc64elf64.sh create mode 100644 ld/emulparams/arc64linux32.sh create mode 100644 ld/emulparams/arc64linux64.sh delete mode 100644 ld/testsuite/ld-arc/got-weak.d delete mode 100644 ld/testsuite/ld-arc/got-weak.s diff --git a/ld/Makefile.am b/ld/Makefile.am index 9664d4c7709..1efb1726f65 100644 --- a/ld/Makefile.am +++ b/ld/Makefile.am @@ -391,6 +391,10 @@ ALL_64_EMULATION_SOURCES = \ eaarch64nto.c \ eaarch64pe.c \ earm64pe.c \ + earc64elf32.c \ + earc64elf64.c \ + earc64linux32.c \ + earc64linux64.c \ eelf32_x86_64.c \ eelf32b4300.c \ eelf32bmip.c \ diff --git a/ld/Makefile.in b/ld/Makefile.in index afd22d479ec..ce2fb16ec83 100644 --- a/ld/Makefile.in +++ b/ld/Makefile.in @@ -890,6 +890,10 @@ ALL_64_EMULATION_SOURCES = \ eaarch64nto.c \ eaarch64pe.c \ earm64pe.c \ + earc64elf32.c \ + earc64elf64.c \ + earc64linux32.c \ + earc64linux64.c \ eelf32_x86_64.c \ eelf32b4300.c \ eelf32bmip.c \ @@ -1279,6 +1283,10 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eaixrs6.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ealpha.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ealphavms.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earc64elf32.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earc64elf64.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earc64linux32.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earc64linux64.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earcelf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earclinux.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earclinux_nps.Po@am__quote@ diff --git a/ld/configure.tgt b/ld/configure.tgt index ff0aaaae257..d69dee8c355 100644 --- a/ld/configure.tgt +++ b/ld/configure.tgt @@ -153,10 +153,27 @@ alpha*-*-*vms*) targ_emul=alphavms ;; am33_2.0-*-linux*) targ_emul=elf32am33lin # mn10300 variant ;; -arc*-*-elf*) targ_emul=arcelf +arc-*-elf* | arc[be]*-*-elf*) targ_emul=arcelf targ_extra_emuls="arclinux arclinux_nps arcv2elf arcv2elfx" ;; -arc*-*-linux*) case "${with_cpu}" in +arc64-*-elf*) targ_emul=arc64elf64 + targ_extra_emuls="arc64elf32 arc64linux64 arc64linux32" + targ_extra_libpath=$targ_extra_emuls + ;; +arc32-*-elf*) targ_emul=arc64elf32 + targ_extra_emuls="arc64linux32 arc64elf64 arc64linux64" + targ_extra_libpath=$targ_extra_emuls + ;; +arc64-*-linux*) targ_emul=arc64linux64 + targ_extra_emuls="arc64elf64 arc64elf32 arc64linux32" + targ_extra_libpath=$targ_extra_emuls + ;; +arc32-*-linux*) targ_emul=arc64linux32 + targ_extra_emuls="arc64elf32 arc64elf64 arc64linux64" + targ_extra_libpath=$targ_extra_emuls + ;; +arc-*-linux* | arc[eb]*-linux*) + case "${with_cpu}" in nps400) targ_emul=arclinux_nps targ_extra_emuls=arclinux ;; diff --git a/ld/emulparams/arc64elf32.sh b/ld/emulparams/arc64elf32.sh new file mode 100644 index 00000000000..0f8389a0a6f --- /dev/null +++ b/ld/emulparams/arc64elf32.sh @@ -0,0 +1,12 @@ +SCRIPT_NAME=elf +ELFSIZE=32 +SCRIPT_NAME=elfarc +TEMPLATE_NAME=elf +OUTPUT_FORMAT="elf32-littlearc64" + +TEXT_START_ADDR=0x00 + +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" +ARCH="arc64:32" +ENTRY=__start +EMBEDDED=yes diff --git a/ld/emulparams/arc64elf64.sh b/ld/emulparams/arc64elf64.sh new file mode 100644 index 00000000000..d4291345206 --- /dev/null +++ b/ld/emulparams/arc64elf64.sh @@ -0,0 +1,12 @@ +SCRIPT_NAME=elf +ELFSIZE=64 +SCRIPT_NAME=elfarc +TEMPLATE_NAME=elf +OUTPUT_FORMAT="elf64-littlearc64" + +TEXT_START_ADDR=0x00 + +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" +ARCH="arc64:64" +ENTRY=__start +EMBEDDED=yes diff --git a/ld/emulparams/arc64linux32.sh b/ld/emulparams/arc64linux32.sh new file mode 100644 index 00000000000..1ad8f3de41e --- /dev/null +++ b/ld/emulparams/arc64linux32.sh @@ -0,0 +1,22 @@ +ARCH="arc64:32" + +SCRIPT_NAME=elf +ELFSIZE=32 +OUTPUT_FORMAT="elf32-littlearc64" + +TEMPLATE_NAME=elf + +GENERATE_SHLIB_SCRIPT=yes +GENERATE_PIE_SCRIPT=yes + +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" +COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)" + +TEXT_START_ADDR=0x10000 + +ENTRY=__start + +# To support RELRO security feature. +NO_SMALL_DATA=yes +SEPARATE_GOTPLT="SIZEOF (.got.plt) >= 12 ? 12 : 0" +GENERATE_COMBRELOC_SCRIPT=yes diff --git a/ld/emulparams/arc64linux64.sh b/ld/emulparams/arc64linux64.sh new file mode 100644 index 00000000000..89ff73dc4f2 --- /dev/null +++ b/ld/emulparams/arc64linux64.sh @@ -0,0 +1,22 @@ +ARCH="arc64:64" + +SCRIPT_NAME=elf +ELFSIZE=64 +OUTPUT_FORMAT="elf64-littlearc64" + +TEMPLATE_NAME=elf + +GENERATE_SHLIB_SCRIPT=yes +GENERATE_PIE_SCRIPT=yes + +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" +COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)" + +TEXT_START_ADDR=0x10000 + +ENTRY=__start + +# To support RELRO security feature. +NO_SMALL_DATA=yes +SEPARATE_GOTPLT=8 #FIXME! what is the true value here? +GENERATE_COMBRELOC_SCRIPT=yes diff --git a/ld/scripttempl/elfarc.sc b/ld/scripttempl/elfarc.sc index 1ae0248a900..78cb0fa9540 100644 --- a/ld/scripttempl/elfarc.sc +++ b/ld/scripttempl/elfarc.sc @@ -394,20 +394,10 @@ test -n "${RELOCATING}" && cat <: -^\s+[0-9a-f]+:\s+2730\s7f80\s[0-9a-f]+\s[0-9a-f]+\s+ld\s+r\d+,\[pcl,.* diff --git a/ld/testsuite/ld-arc/got-weak.s b/ld/testsuite/ld-arc/got-weak.s deleted file mode 100644 index 8ea18be3780..00000000000 --- a/ld/testsuite/ld-arc/got-weak.s +++ /dev/null @@ -1,7 +0,0 @@ - .cpu archs - - .weak symb - .global __start - .text -__start: - ld r0,[pcl,@symb@gotpc]