From patchwork Tue Apr 2 19:55:45 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matheus Tavares Bernardino X-Patchwork-Id: 87945 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 366C3386F406 for ; Tue, 2 Apr 2024 19:56:57 +0000 (GMT) X-Original-To: elfutils-devel@sourceware.org Delivered-To: elfutils-devel@sourceware.org Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) by sourceware.org (Postfix) with ESMTPS id B27D6386D62A for ; Tue, 2 Apr 2024 19:56:11 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B27D6386D62A Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=quicinc.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=quicinc.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org B27D6386D62A Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1712087777; cv=none; b=lP1aMikc6VfRFzqmpKo+fCMzaQxqv/7FZt2cjkbyliWNbeqOkB97BI2ubFHk2At2KqhO6kLs1kdhI4591kKAQxes8dOfgK2MPYcz+I2TI0KXItLunjryQo7ZMF/fATopudYaowhOjjSnkLNQTTiuw7i/zL69ExGteezXwAuezJs= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1712087777; c=relaxed/simple; bh=gYR+D6hKa3amxeS+DRr/ueXirqZG+01NpbZNdm7G15U=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=Foy9HYvJm6TSoeiwV/mZPDII2oU8oSqJUo6j8RzrqGKr6zJ4nKvILneREtbSjlEQfG2xGNjpkg5/ycetj+t3jwnYWieL4pJVUubqFUFK+RXOqsxE+wKgSbnFuMLk82iNtpDeOxNj9ESYk9iHwaGnKaDCBjB4k+Q5VhYQVsMREsI= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.24/8.17.1.24) with ESMTP id 432HEALp014569; Tue, 2 Apr 2024 19:56:01 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h= from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding:content-type; s= qcppdkim1; bh=Cy1bi3C5BuTs7b31LkwB14F2cIDNsWy/znYkkSjb8DY=; b=ir nOzxkXodJr/A4gJvOrvsnm+xQ13f+mGn1OMuet3UMb/00QQCjklb/2UpQWeRyZtw /KdVKIYXY0iigGa/maSj/Il29JM68ueXf7q1mEj8H8+rGO85eh33u6CIEWVN+I2v 23xF2Xkrc1WMgADV30EN9ZcDcZbkqZzaDuuAaWH+IF8o2B8nJBV7x8Qpa+5pGyZP SM1xYCjfZ09Dsr3WEyp29wzMTw7q3VlmrQg+r3U3azapmprOvwc+6Qc2VZH4hW8r 0x7CXSueSmEdqaWAqq3xW2RDe8FAYnHSKV12BMs/cYLqCrM5BK3bUzI7K0I7rxyk tMWcdxWZWzFvVSeBL9GQ== Received: from nalasppmta01.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3x8h5esc6k-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 02 Apr 2024 19:56:01 +0000 (GMT) Received: from nalasex01a.na.qualcomm.com (nalasex01a.na.qualcomm.com [10.47.209.196]) by NALASPPMTA01.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 432Ju01j013459 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 2 Apr 2024 19:56:00 GMT Received: from hu-mathbern-lv.qualcomm.com (10.49.16.6) by nalasex01a.na.qualcomm.com (10.47.209.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Tue, 2 Apr 2024 12:56:00 -0700 From: Matheus Tavares Bernardino To: CC: , , , , Subject: [PATCH v2 1/2] Add support for Hexagon Date: Tue, 2 Apr 2024 16:55:45 -0300 Message-ID: <5691bbc30845e54df88afa35417fab424adfd235.1712087613.git.quic_mathbern@quicinc.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: References: MIME-Version: 1.0 X-Originating-IP: [10.49.16.6] X-ClientProxiedBy: nalasex01c.na.qualcomm.com (10.47.97.35) To nalasex01a.na.qualcomm.com (10.47.209.196) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-GUID: S6nJ859NhOFZc9mbNbr7263xPs2eGtBQ X-Proofpoint-ORIG-GUID: S6nJ859NhOFZc9mbNbr7263xPs2eGtBQ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-04-02_13,2024-04-01_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 mlxscore=0 lowpriorityscore=0 spamscore=0 mlxlogscore=999 suspectscore=0 adultscore=0 bulkscore=0 impostorscore=0 clxscore=1015 malwarescore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2403210001 definitions=main-2404020147 X-Spam-Status: No, score=-12.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_MSPIKE_H2, 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: elfutils-devel@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Elfutils-devel mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: elfutils-devel-bounces+patchwork=sourceware.org@sourceware.org This implements initial support for the Hexagon architecture. The Hexagon ABI spec can be seen at https://lists.llvm.org/pipermail/llvm-dev/attachments/20190916/21516a52/attachment-0001.pdf A hello_hexagon.ko test is also added. $ head tests/test-suite.log [...] # TOTAL: 275 # PASS: 269 # SKIP: 6 # XFAIL: 0 # FAIL: 0 # XPASS: 0 # ERROR: 0 $ cat tests/run-strip-reloc-ko.sh.log [...] runtest hello_hexagon.ko PASS run-strip-reloc-ko.sh (exit status: 0) Signed-off-by: Matheus Tavares Bernardino --- backends/Makefile.am | 7 +- backends/hexagon_init.c | 51 ++++++++++++++ backends/hexagon_reloc.def | 130 +++++++++++++++++++++++++++++++++++ backends/hexagon_symbol.c | 58 ++++++++++++++++ libebl/eblopenbackend.c | 2 + libelf/elf-knowledge.h | 131 ++++++++++++++++++++++++++++++++++++ src/elflint.c | 2 +- tests/Makefile.am | 2 +- tests/hello_hexagon.ko.bz2 | Bin 0 -> 11184 bytes tests/run-strip-reloc-ko.sh | 3 +- 10 files changed, 381 insertions(+), 5 deletions(-) create mode 100644 backends/hexagon_init.c create mode 100644 backends/hexagon_reloc.def create mode 100644 backends/hexagon_symbol.c create mode 100644 tests/hello_hexagon.ko.bz2 index 55fa74db..7bc685e6 100755 diff --git a/backends/Makefile.am b/backends/Makefile.am index b946fd30..e22b522c 100644 --- a/backends/Makefile.am +++ b/backends/Makefile.am @@ -37,7 +37,7 @@ AM_CPPFLAGS += -I$(top_srcdir)/libebl -I$(top_srcdir)/libasm \ noinst_LIBRARIES = libebl_backends.a libebl_backends_pic.a modules = i386 sh x86_64 ia64 alpha arm aarch64 sparc ppc ppc64 s390 \ - m68k bpf riscv csky loongarch arc mips + m68k bpf riscv csky loongarch arc mips hexagon i386_SRCS = i386_init.c i386_symbol.c i386_corenote.c i386_cfi.c \ i386_retval.c i386_regs.c i386_auxv.c \ @@ -104,12 +104,15 @@ arc_SRCS = arc_init.c arc_symbol.c mips_SRCS = mips_init.c mips_symbol.c +hexagon_SRCS = hexagon_init.c hexagon_symbol.c + libebl_backends_a_SOURCES = $(i386_SRCS) $(sh_SRCS) $(x86_64_SRCS) \ $(ia64_SRCS) $(alpha_SRCS) $(arm_SRCS) \ $(aarch64_SRCS) $(sparc_SRCS) $(ppc_SRCS) \ $(ppc64_SRCS) $(s390_SRCS) \ $(m68k_SRCS) $(bpf_SRCS) $(riscv_SRCS) $(csky_SRCS) \ - $(loongarch_SRCS) $(arc_SRCS) $(mips_SRCS) + $(loongarch_SRCS) $(arc_SRCS) $(mips_SRCS) \ + $(hexagon_SRCS) libebl_backends_pic_a_SOURCES = am_libebl_backends_pic_a_OBJECTS = $(libebl_backends_a_SOURCES:.c=.os) diff --git a/backends/hexagon_init.c b/backends/hexagon_init.c new file mode 100644 index 00000000..9c8c6d8d --- /dev/null +++ b/backends/hexagon_init.c @@ -0,0 +1,51 @@ +/* Initialization of Hexagon specific backend library. + Copyright (C) 2024 Qualcomm Innovation Center, Inc. All Rights Reserved. + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify + it under the terms of either + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at + your option) any later version + + or + + * the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at + your option) any later version + + or both in parallel, as here. + + elfutils is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received copies of the GNU General Public License and + the GNU Lesser General Public License along with this program. If + not, see . */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#define BACKEND hexagon_ +#define RELOC_PREFIX R_HEX_ +#include "libebl_CPU.h" + +/* This defines the common reloc hooks based on hexagon_reloc.def. */ +#include "common-reloc.c" + + +Ebl * +hexagon_init (Elf *elf __attribute__ ((unused)), + GElf_Half machine __attribute__ ((unused)), + Ebl *eh) +{ + hexagon_init_reloc (eh); + HOOK (eh, reloc_simple_type); + + return eh; +} + diff --git a/backends/hexagon_reloc.def b/backends/hexagon_reloc.def new file mode 100644 index 00000000..cd55d374 --- /dev/null +++ b/backends/hexagon_reloc.def @@ -0,0 +1,130 @@ +/* List the relocation types for Hexagon. -*- C -*- + Copyright (C) 2024 Qualcomm Innovation Center, Inc. All Rights Reserved. + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify + it under the terms of either + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at + your option) any later version + + or + + * the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at + your option) any later version + + or both in parallel, as here. + + elfutils is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received copies of the GNU General Public License and + the GNU Lesser General Public License along with this program. If + not, see . */ + +/* NAME, REL|EXEC|DYN */ + +RELOC_TYPE (NONE, 0) +RELOC_TYPE (B22_PCREL, REL) +RELOC_TYPE (B15_PCREL, REL) +RELOC_TYPE (B7_PCREL, REL) +RELOC_TYPE (LO16, REL) +RELOC_TYPE (HI16, REL) +RELOC_TYPE (32, REL) +RELOC_TYPE (16, REL) +RELOC_TYPE (8, REL) +RELOC_TYPE (GPREL16_0, REL) +RELOC_TYPE (GPREL16_1, REL) +RELOC_TYPE (GPREL16_2, REL) +RELOC_TYPE (GPREL16_3, REL) +RELOC_TYPE (HL16, REL) +RELOC_TYPE (B13_PCREL, REL) +RELOC_TYPE (B9_PCREL, REL) +RELOC_TYPE (B32_PCREL_X, REL) +RELOC_TYPE (32_6_X, REL) +RELOC_TYPE (B22_PCREL_X, REL) +RELOC_TYPE (B15_PCREL_X, REL) +RELOC_TYPE (B13_PCREL_X, REL) +RELOC_TYPE (B9_PCREL_X, REL) +RELOC_TYPE (B7_PCREL_X, REL) +RELOC_TYPE (16_X, REL) +RELOC_TYPE (12_X, REL) +RELOC_TYPE (11_X, REL) +RELOC_TYPE (10_X, REL) +RELOC_TYPE (9_X, REL) +RELOC_TYPE (8_X, REL) +RELOC_TYPE (7_X, REL) +RELOC_TYPE (6_X, REL) +RELOC_TYPE (32_PCREL, REL) +RELOC_TYPE (COPY, REL) +RELOC_TYPE (GLOB_DAT, REL) +RELOC_TYPE (JMP_SLOT, REL) +RELOC_TYPE (RELATIVE, REL) +RELOC_TYPE (PLT_B22_PCREL, REL) +RELOC_TYPE (GOTREL_LO16, REL) +RELOC_TYPE (GOTREL_HI16, REL) +RELOC_TYPE (GOTREL_32, REL) +RELOC_TYPE (GOT_LO16, REL) +RELOC_TYPE (GOT_HI16, REL) +RELOC_TYPE (GOT_32, REL) +RELOC_TYPE (GOT_16, REL) +RELOC_TYPE (DTPMOD_32, REL) +RELOC_TYPE (DTPREL_LO16, REL) +RELOC_TYPE (DTPREL_HI16, REL) +RELOC_TYPE (DTPREL_32, REL) +RELOC_TYPE (DTPREL_16, REL) +RELOC_TYPE (GD_PLT_B22_PCREL, REL) +RELOC_TYPE (GD_GOT_LO16, REL) +RELOC_TYPE (GD_GOT_HI16, REL) +RELOC_TYPE (GD_GOT_32, REL) +RELOC_TYPE (GD_GOT_16, REL) +RELOC_TYPE (IE_LO16, REL) +RELOC_TYPE (IE_HI16, REL) +RELOC_TYPE (IE_32, REL) +RELOC_TYPE (IE_GOT_LO16, REL) +RELOC_TYPE (IE_GOT_HI16, REL) +RELOC_TYPE (IE_GOT_32, REL) +RELOC_TYPE (IE_GOT_16, REL) +RELOC_TYPE (TPREL_LO16, REL) +RELOC_TYPE (TPREL_HI16, REL) +RELOC_TYPE (TPREL_32, REL) +RELOC_TYPE (TPREL_16, REL) +RELOC_TYPE (6_PCREL_X, REL) +RELOC_TYPE (GOTREL_32_6_X, REL) +RELOC_TYPE (GOTREL_16_X, REL) +RELOC_TYPE (GOTREL_11_X, REL) +RELOC_TYPE (GOT_32_6_X, REL) +RELOC_TYPE (GOT_16_X, REL) +RELOC_TYPE (GOT_11_X, REL) +RELOC_TYPE (DTPREL_32_6_X, REL) +RELOC_TYPE (DTPREL_16_X, REL) +RELOC_TYPE (DTPREL_11_X, REL) +RELOC_TYPE (GD_GOT_32_6_X, REL) +RELOC_TYPE (GD_GOT_16_X, REL) +RELOC_TYPE (GD_GOT_11_X, REL) +RELOC_TYPE (IE_32_6_X, REL) +RELOC_TYPE (IE_16_X, REL) +RELOC_TYPE (IE_GOT_32_6_X, REL) +RELOC_TYPE (IE_GOT_16_X, REL) +RELOC_TYPE (IE_GOT_11_X, REL) +RELOC_TYPE (TPREL_32_6_X, REL) +RELOC_TYPE (TPREL_16_X, REL) +RELOC_TYPE (TPREL_11_X, REL) +RELOC_TYPE (LD_PLT_B22_PCREL, REL) +RELOC_TYPE (LD_GOT_LO16, REL) +RELOC_TYPE (LD_GOT_HI16, REL) +RELOC_TYPE (LD_GOT_32, REL) +RELOC_TYPE (LD_GOT_16, REL) +RELOC_TYPE (LD_GOT_32_6_X, REL) +RELOC_TYPE (LD_GOT_16_X, REL) +RELOC_TYPE (LD_GOT_11_X, REL) +RELOC_TYPE (23_REG, REL) +RELOC_TYPE (GD_PLT_B22_PCREL_X, REL) +RELOC_TYPE (GD_PLT_B32_PCREL_X, REL) +RELOC_TYPE (LD_PLT_B22_PCREL_X, REL) +RELOC_TYPE (LD_PLT_B32_PCREL_X, REL) +RELOC_TYPE (27_REG, REL) diff --git a/backends/hexagon_symbol.c b/backends/hexagon_symbol.c new file mode 100644 index 00000000..b341243e --- /dev/null +++ b/backends/hexagon_symbol.c @@ -0,0 +1,58 @@ +/* Hexagon specific symbolic name handling. + Copyright (C) 2024 Qualcomm Innovation Center, Inc. All Rights Reserved. + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify + it under the terms of either + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at + your option) any later version + + or + + * the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at + your option) any later version + + or both in parallel, as here. + + elfutils is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received copies of the GNU General Public License and + the GNU Lesser General Public License along with this program. If + not, see . */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include + +#define BACKEND hexagon_ +#include "libebl_CPU.h" + + +/* Check for the simple reloc types. */ +Elf_Type +hexagon_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type, + int *addsub __attribute__ ((unused))) +{ + switch (type) + { + case R_HEX_32: + return ELF_T_WORD; + case R_HEX_16: + return ELF_T_HALF; + case R_HEX_8: + return ELF_T_BYTE; + default: + return ELF_T_NUM; + } +} diff --git a/libebl/eblopenbackend.c b/libebl/eblopenbackend.c index a5f7467a..b68dea7a 100644 --- a/libebl/eblopenbackend.c +++ b/libebl/eblopenbackend.c @@ -58,6 +58,7 @@ Ebl *csky_init (Elf *, GElf_Half, Ebl *); Ebl *loongarch_init (Elf *, GElf_Half, Ebl *); Ebl *arc_init (Elf *, GElf_Half, Ebl *); Ebl *mips_init (Elf *, GElf_Half, Ebl *); +Ebl *hexagon_init (Elf *, GElf_Half, Ebl *); /* This table should contain the complete list of architectures as far as the ELF specification is concerned. */ @@ -156,6 +157,7 @@ static const struct { loongarch_init, "elf_loongarch", "loongarch", 9, EM_LOONGARCH, ELFCLASS64, ELFDATA2LSB }, { arc_init, "elf_arc", "arc", 3, EM_ARCV2, ELFCLASS32, ELFDATA2LSB }, { mips_init, "elf_mips", "mips", 4, EM_MIPS, 0, 0 }, + { hexagon_init, "elf_hexagon", "hexagon", 9, EM_QDSP6, ELFCLASS32, ELFDATA2LSB }, }; #define nmachines (sizeof (machines) / sizeof (machines[0])) diff --git a/libelf/elf-knowledge.h b/libelf/elf-knowledge.h index 6e005fa5..71535934 100644 --- a/libelf/elf-knowledge.h +++ b/libelf/elf-knowledge.h @@ -98,4 +98,135 @@ #define GNU_BUILD_ATTRIBUTE_PIC 7 #define GNU_BUILD_ATTRIBUTE_SHORT_ENUM 8 +/* Hexagon specific declarations. */ + +/* Processor specific flags for the Ehdr e_flags field. */ +#define EF_HEXAGON_MACH_V2 0x00000001 /* Hexagon V2 */ +#define EF_HEXAGON_MACH_V3 0x00000002 /* Hexagon V3 */ +#define EF_HEXAGON_MACH_V4 0x00000003 /* Hexagon V4 */ +#define EF_HEXAGON_MACH_V5 0x00000004 /* Hexagon V5 */ +#define EF_HEXAGON_MACH_V55 0x00000005 /* Hexagon V55 */ +#define EF_HEXAGON_MACH_V60 0x00000060 /* Hexagon V60 */ +#define EF_HEXAGON_MACH_V61 0x00000061 /* Hexagon V61 */ +#define EF_HEXAGON_MACH_V62 0x00000062 /* Hexagon V62 */ +#define EF_HEXAGON_MACH_V65 0x00000065 /* Hexagon V65 */ +#define EF_HEXAGON_MACH_V66 0x00000066 /* Hexagon V66 */ +#define EF_HEXAGON_MACH_V67 0x00000067 /* Hexagon V67 */ +#define EF_HEXAGON_MACH_V67T 0x00008067 /* Hexagon V67T */ +#define EF_HEXAGON_MACH_V68 0x00000068 /* Hexagon V68 */ +#define EF_HEXAGON_MACH_V69 0x00000069 /* Hexagon V68 */ +#define EF_HEXAGON_MACH_V71 0x00000071 /* Hexagon V71 */ +#define EF_HEXAGON_MACH_V71T 0x00008071 /* Hexagon V71T */ +#define EF_HEXAGON_MACH_V73 0x00000073 /* Hexagon V73 */ +#define EF_HEXAGON_MACH 0x000003ff /* Hexagon V.. */ + +/* Special section indices. */ +#define SHN_HEXAGON_SCOMMON 0xff00 /* Other access sizes */ +#define SHN_HEXAGON_SCOMMON_1 0xff01 /* Byte-sized access */ +#define SHN_HEXAGON_SCOMMON_2 0xff02 /* Half-word-sized access */ +#define SHN_HEXAGON_SCOMMON_4 0xff03 /* Word-sized access */ +#define SHN_HEXAGON_SCOMMON_8 0xff04 /* Double-word-size access */ + +/* Hexagon specific relocs. */ +#define R_HEX_NONE 0 +#define R_HEX_B22_PCREL 1 +#define R_HEX_B15_PCREL 2 +#define R_HEX_B7_PCREL 3 +#define R_HEX_LO16 4 +#define R_HEX_HI16 5 +#define R_HEX_32 6 +#define R_HEX_16 7 +#define R_HEX_8 8 +#define R_HEX_GPREL16_0 9 +#define R_HEX_GPREL16_1 10 +#define R_HEX_GPREL16_2 11 +#define R_HEX_GPREL16_3 12 +#define R_HEX_HL16 13 +#define R_HEX_B13_PCREL 14 +#define R_HEX_B9_PCREL 15 +#define R_HEX_B32_PCREL_X 16 +#define R_HEX_32_6_X 17 +#define R_HEX_B22_PCREL_X 18 +#define R_HEX_B15_PCREL_X 19 +#define R_HEX_B13_PCREL_X 20 +#define R_HEX_B9_PCREL_X 21 +#define R_HEX_B7_PCREL_X 22 +#define R_HEX_16_X 23 +#define R_HEX_12_X 24 +#define R_HEX_11_X 25 +#define R_HEX_10_X 26 +#define R_HEX_9_X 27 +#define R_HEX_8_X 28 +#define R_HEX_7_X 29 +#define R_HEX_6_X 30 +#define R_HEX_32_PCREL 31 +#define R_HEX_COPY 32 +#define R_HEX_GLOB_DAT 33 +#define R_HEX_JMP_SLOT 34 +#define R_HEX_RELATIVE 35 +#define R_HEX_PLT_B22_PCREL 36 +#define R_HEX_GOTREL_LO16 37 +#define R_HEX_GOTREL_HI16 38 +#define R_HEX_GOTREL_32 39 +#define R_HEX_GOT_LO16 40 +#define R_HEX_GOT_HI16 41 +#define R_HEX_GOT_32 42 +#define R_HEX_GOT_16 43 +#define R_HEX_DTPMOD_32 44 +#define R_HEX_DTPREL_LO16 45 +#define R_HEX_DTPREL_HI16 46 +#define R_HEX_DTPREL_32 47 +#define R_HEX_DTPREL_16 48 +#define R_HEX_GD_PLT_B22_PCREL 49 +#define R_HEX_GD_GOT_LO16 50 +#define R_HEX_GD_GOT_HI16 51 +#define R_HEX_GD_GOT_32 52 +#define R_HEX_GD_GOT_16 53 +#define R_HEX_IE_LO16 54 +#define R_HEX_IE_HI16 55 +#define R_HEX_IE_32 56 +#define R_HEX_IE_GOT_LO16 57 +#define R_HEX_IE_GOT_HI16 58 +#define R_HEX_IE_GOT_32 59 +#define R_HEX_IE_GOT_16 60 +#define R_HEX_TPREL_LO16 61 +#define R_HEX_TPREL_HI16 62 +#define R_HEX_TPREL_32 63 +#define R_HEX_TPREL_16 64 +#define R_HEX_6_PCREL_X 65 +#define R_HEX_GOTREL_32_6_X 66 +#define R_HEX_GOTREL_16_X 67 +#define R_HEX_GOTREL_11_X 68 +#define R_HEX_GOT_32_6_X 69 +#define R_HEX_GOT_16_X 70 +#define R_HEX_GOT_11_X 71 +#define R_HEX_DTPREL_32_6_X 72 +#define R_HEX_DTPREL_16_X 73 +#define R_HEX_DTPREL_11_X 74 +#define R_HEX_GD_GOT_32_6_X 75 +#define R_HEX_GD_GOT_16_X 76 +#define R_HEX_GD_GOT_11_X 77 +#define R_HEX_IE_32_6_X 78 +#define R_HEX_IE_16_X 79 +#define R_HEX_IE_GOT_32_6_X 80 +#define R_HEX_IE_GOT_16_X 81 +#define R_HEX_IE_GOT_11_X 82 +#define R_HEX_TPREL_32_6_X 83 +#define R_HEX_TPREL_16_X 84 +#define R_HEX_TPREL_11_X 85 +#define R_HEX_LD_PLT_B22_PCREL 86 +#define R_HEX_LD_GOT_LO16 87 +#define R_HEX_LD_GOT_HI16 88 +#define R_HEX_LD_GOT_32 89 +#define R_HEX_LD_GOT_16 90 +#define R_HEX_LD_GOT_32_6_X 91 +#define R_HEX_LD_GOT_16_X 92 +#define R_HEX_LD_GOT_11_X 93 +#define R_HEX_23_REG 94 +#define R_HEX_GD_PLT_B22_PCREL_X 95 +#define R_HEX_GD_PLT_B32_PCREL_X 96 +#define R_HEX_LD_PLT_B22_PCREL_X 97 +#define R_HEX_LD_PLT_B32_PCREL_X 98 +#define R_HEX_27_REG 99 + #endif /* elf-knowledge.h */ diff --git a/src/elflint.c b/src/elflint.c index 864de710..e56e1465 100644 --- a/src/elflint.c +++ b/src/elflint.c @@ -331,7 +331,7 @@ static const int valid_e_machine[] = EM_AVR, EM_FR30, EM_D10V, EM_D30V, EM_V850, EM_M32R, EM_MN10300, EM_MN10200, EM_PJ, EM_OPENRISC, EM_ARC_A5, EM_XTENSA, EM_ALPHA, EM_TILEGX, EM_TILEPRO, EM_AARCH64, EM_BPF, EM_RISCV, EM_CSKY, EM_LOONGARCH, - EM_ARCV2 + EM_ARCV2, EM_QDSP6 }; #define nvalid_e_machine \ (sizeof (valid_e_machine) / sizeof (valid_e_machine[0])) diff --git a/tests/Makefile.am b/tests/Makefile.am index 40e0eaa5..b7fb7238 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -320,7 +320,7 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \ hello_i386.ko.bz2 hello_x86_64.ko.bz2 \ hello_ppc64.ko.bz2 hello_s390.ko.bz2 hello_aarch64.ko.bz2 \ hello_m68k.ko.bz2 hello_riscv64.ko.bz2 hello_csky.ko.bz2 \ - hello_arc_hs4.ko.bz2 \ + hello_arc_hs4.ko.bz2 hello_hexagon.ko.bz2 \ run-unstrip-test.sh run-unstrip-test2.sh \ testfile-info-link.bz2 testfile-info-link.debuginfo.bz2 \ testfile-info-link.stripped.bz2 run-unstrip-test3.sh \ diff --git a/tests/hello_hexagon.ko.bz2 b/tests/hello_hexagon.ko.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..e60d2c1bda6e11cc6483f8db5537c36b583a4b5b GIT binary patch literal 11184 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 literal 0 HcmV?d00001 diff --git a/tests/run-strip-reloc-ko.sh b/tests/run-strip-reloc-ko.sh --- a/tests/run-strip-reloc-ko.sh +++ b/tests/run-strip-reloc-ko.sh @@ -4,7 +4,7 @@ testfiles hello_i386.ko hello_x86_64.ko hello_ppc64.ko hello_s390.ko \ hello_aarch64.ko hello_m68k.ko hello_riscv64.ko hello_csky.ko \ - hello_arc_hs4.ko + hello_arc_hs4.ko hello_hexagon.ko # Most simple hello world kernel module for various architectures. # Make sure that it contains debuginfo with CONFIG_DEBUG_INFO=y. @@ -47,5 +47,6 @@ runtest hello_m68k.ko 1 runtest hello_riscv64.ko 1 runtest hello_csky.ko 1 runtest hello_arc_hs4.ko 1 +runtest hello_hexagon.ko 1 exit $runtest_status From patchwork Tue Apr 2 19:55:46 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matheus Tavares Bernardino X-Patchwork-Id: 87944 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 7E580386EC13 for ; Tue, 2 Apr 2024 19:56:27 +0000 (GMT) X-Original-To: elfutils-devel@sourceware.org Delivered-To: elfutils-devel@sourceware.org Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) by sourceware.org (Postfix) with ESMTPS id BCDCE386C5B9 for ; Tue, 2 Apr 2024 19:56:11 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org BCDCE386C5B9 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=quicinc.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=quicinc.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org BCDCE386C5B9 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1712087773; cv=none; b=q+OE/nmHUnb716FNCTD01ZLa9AbR3wyqu8E2Nl5u5fOS530C/IJBYDnXCpN+8vMxQ3GE6zIAVGHlrAz1yypSxwgevwb2bpQ6M/rWjnEgZI6+yNceJP1XQz30589b5f7GPmtLHq0NFh1PppxEWjdDZO76iHyCLKtCBcnkpEuZSd8= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1712087773; c=relaxed/simple; bh=CQf9kmQmEaa8eiNtdAKA7GU/+WQ00Q/rUlJFqhHJC6c=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=IsWqQ1h3v6M2XFXEPlyJ9O+F81iLXWmNS6DIHp0uoVPhR1s1MJYXLf3Snjo3Ox1kPj76A7Fa4M46yJcZsr0+xKlCzkLDo8S/VA/7Xk8i3nE0ayPKwjP011VohOyHk3e1XYd62c/1LYyWEdv97zebc8prY/9YmVbXPP/pBiWByAE= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.24/8.17.1.24) with ESMTP id 432J7ITv016090; Tue, 2 Apr 2024 19:56:01 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h= from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding:content-type; s= qcppdkim1; bh=ejEEm4Mh5b3ExzSfy6tHJGDd2Z38y1das7pqs+KPHY8=; b=Yj Tl4UcElmRf0KEFXwGD2gU/9lG1yapgb3rvPhUczelO5PVjk1UmhyAMJbDCoeL2Ue oxiA4m5KlZVvg2uNUXznD9HKhNkyJ4nlIosC5Y1YbRaLLskZeqaDiQ2cLamJaSO4 VnZadllniGa8lPL5Cb0UacaOz7sPgtCbrLiEjoYcKjJDmvmenqMDuABOdfabiAAV Q+4wyKhDy8gYueefAbqwSkSQIPVeWougOviEPwfJimLmqSSdsmcqsUErKXM9ANSj eBRdgg8o0MVhLK1DY4KqccalK3PLAMOnhisiWiFIjGS/nrxVxmNu2NaRMDEPGsMB 6mXjH6iicI/UKH0QZo6Q== Received: from nalasppmta01.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3x8h5esc6m-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 02 Apr 2024 19:56:01 +0000 (GMT) Received: from nalasex01a.na.qualcomm.com (nalasex01a.na.qualcomm.com [10.47.209.196]) by NALASPPMTA01.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 432Ju01k013459 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 2 Apr 2024 19:56:00 GMT Received: from hu-mathbern-lv.qualcomm.com (10.49.16.6) by nalasex01a.na.qualcomm.com (10.47.209.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Tue, 2 Apr 2024 12:56:00 -0700 From: Matheus Tavares Bernardino To: CC: , , , , Subject: [PATCH v2 2/2] Hexagon: implement machine flag check Date: Tue, 2 Apr 2024 16:55:46 -0300 Message-ID: X-Mailer: git-send-email 2.37.2 In-Reply-To: References: MIME-Version: 1.0 X-Originating-IP: [10.49.16.6] X-ClientProxiedBy: nalasex01c.na.qualcomm.com (10.47.97.35) To nalasex01a.na.qualcomm.com (10.47.209.196) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-GUID: 9AS-PdB5s7DEq6VPtsj0ApgSTtoT7Zuu X-Proofpoint-ORIG-GUID: 9AS-PdB5s7DEq6VPtsj0ApgSTtoT7Zuu X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-04-02_13,2024-04-01_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 mlxscore=0 lowpriorityscore=0 spamscore=0 mlxlogscore=663 suspectscore=0 adultscore=0 bulkscore=0 impostorscore=0 clxscore=1015 malwarescore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2403210001 definitions=main-2404020147 X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_MSPIKE_H2, 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: elfutils-devel@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Elfutils-devel mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: elfutils-devel-bounces+patchwork=sourceware.org@sourceware.org This fixes the "invalid machine flag" error from eu-elflint when passing hexagon binaries. Signed-off-by: Matheus Tavares Bernardino --- backends/hexagon_init.c | 1 + backends/hexagon_symbol.c | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/backends/hexagon_init.c b/backends/hexagon_init.c index 9c8c6d8d..1cd27513 100644 --- a/backends/hexagon_init.c +++ b/backends/hexagon_init.c @@ -45,6 +45,7 @@ hexagon_init (Elf *elf __attribute__ ((unused)), { hexagon_init_reloc (eh); HOOK (eh, reloc_simple_type); + HOOK (eh, machine_flag_check); return eh; } diff --git a/backends/hexagon_symbol.c b/backends/hexagon_symbol.c index b341243e..1e681e9f 100644 --- a/backends/hexagon_symbol.c +++ b/backends/hexagon_symbol.c @@ -56,3 +56,11 @@ hexagon_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type, return ELF_T_NUM; } } + +bool +hexagon_machine_flag_check (GElf_Word flags) +{ + GElf_Word arch_variant = flags &~ EF_HEXAGON_MACH; + /* 0x8000 covers the "tiny core" arch variants. */ + return arch_variant == 0 || arch_variant == 0x8000; +}