From de3d46b3e7cb0f8f5bd9164ee83177c13c37355b Mon Sep 17 00:00:00 2001 From: Shahab Vahedi Date: Wed, 21 Dec 2022 12:27:05 +0100 Subject: [PATCH] Add support for Synopsys ARCv2 processors There is no regression in tests for an x86_64 build, while the new hello_arc_hs4.ko is added as well. This is the only meaningful test that I could add at the moment, given the features supported by this port. $ cat tests/test-suite.log ========================================== elfutils 0.188: tests/test-suite.log ========================================== # TOTAL: 236 # PASS: 235 # SKIP: 1 # XFAIL: 0 # FAIL: 0 # XPASS: 0 # ERROR: 0 .. contents:: :depth: 2 SKIP: run-lfs-symbols.sh ======================== LFS testing is irrelevant on this system SKIP run-lfs-symbols.sh (exit status: 77) $ cat tests/run-strip-reloc.sh.log runtest hello_i386.ko runtest hello_x86_64.ko runtest hello_ppc64.ko runtest hello_s390.ko runtest hello_aarch64.ko runtest hello_m68k.ko runtest hello_riscv64.ko runtest hello_csky.ko runtest hello_arc_hs4.ko <-- [ new ARC HS4 test ] runtest /home/shahab/pahole_pkg/elfutils-git/bld_arc/src/strip runtest /home/shahab/pahole_pkg/elfutils-git/bld_arc/src/strip.o runtest strip-uncompressed.o runtest strip-compressed.o runtest testfile-debug-rel-ppc64.o runtest testfile-debug-rel-ppc64-z.o runtest testfile-debug-rel-ppc64-g.o PASS run-strip-reloc.sh (exit status: 0) Signed-off-by: Shahab Vahedi --- backends/ChangeLog | 9 ++++ backends/Makefile.am | 6 ++- backends/arc_init.c | 59 +++++++++++++++++++++++++ backends/arc_reloc.def | 87 +++++++++++++++++++++++++++++++++++++ backends/arc_symbol.c | 81 ++++++++++++++++++++++++++++++++++ libebl/ChangeLog | 5 +++ libebl/eblopenbackend.c | 2 + src/ChangeLog | 4 ++ src/elflint.c | 1 + tests/ChangeLog | 6 +++ tests/Makefile.am | 1 + tests/hello_arc_hs4.ko.bz2 | Bin 0 -> 15004 bytes tests/run-strip-reloc.sh | 4 +- 13 files changed, 262 insertions(+), 3 deletions(-) create mode 100644 backends/arc_init.c create mode 100644 backends/arc_reloc.def create mode 100644 backends/arc_symbol.c create mode 100644 tests/hello_arc_hs4.ko.bz2 diff --git a/backends/ChangeLog b/backends/ChangeLog index 5813ddccc..f28ab89bc 100644 --- a/backends/ChangeLog +++ b/backends/ChangeLog @@ -1,3 +1,12 @@ +2022-12-21 Shahab Vahedi + + * Makefile.am (modules): Add arc. + (arc_SRCS): Added. + (libebl_backends_a_SOURCES): Append arc_SRCS. + * arc_init.c: New file. + * arc_reloc.def: New file. + * arc_symbol.c: New file. + 2022-12-02 Hengqi Chen * Makefile.am (modules): Add loongarch. diff --git a/backends/Makefile.am b/backends/Makefile.am index 0824123dc..f373e5fb0 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 + m68k bpf riscv csky loongarch arc i386_SRCS = i386_init.c i386_symbol.c i386_corenote.c i386_cfi.c \ i386_retval.c i386_regs.c i386_auxv.c \ @@ -98,12 +98,14 @@ csky_SRCS = csky_attrs.c csky_init.c csky_symbol.c csky_cfi.c \ loongarch_SRCS = loongarch_init.c loongarch_symbol.c +arc_SRCS = arc_init.c arc_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) + $(loongarch_SRCS) $(arc_SRCS) libebl_backends_pic_a_SOURCES = am_libebl_backends_pic_a_OBJECTS = $(libebl_backends_a_SOURCES:.c=.os) diff --git a/backends/arc_init.c b/backends/arc_init.c new file mode 100644 index 000000000..a7cceceb9 --- /dev/null +++ b/backends/arc_init.c @@ -0,0 +1,59 @@ +/* Initialization of ARC specific backend library. + Copyright (C) 2022 Synopsys Inc. + 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 . */ + +/* More details on an ARC elf can be found at: + https://github.com/foss-for-synopsys-dwc-arc-processors/ \ + arc-ABI-manual/blob/master/arcv3-elf.md */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#define BACKEND arc_ +#define RELOC_PREFIX R_ARC_ +#include "libebl_CPU.h" + +/* This defines the common reloc hooks based on arc_reloc.def. */ +#include "common-reloc.c" + +Ebl * +arc_init (Elf *elf __attribute__ ((unused)), + GElf_Half machine __attribute__ ((unused)), + Ebl *eh) +{ + arc_init_reloc (eh); + HOOK (eh, machine_flag_check); + HOOK (eh, reloc_simple_type); + HOOK (eh, section_type_name); + + /* /bld/gcc-stage2/arc-snps-linux-gnu/libgcc/libgcc.map.in + #define __LIBGCC_DWARF_FRAME_REGISTERS__. */ + eh->frame_nregs = 146; + + return eh; +} diff --git a/backends/arc_reloc.def b/backends/arc_reloc.def new file mode 100644 index 000000000..dfa306290 --- /dev/null +++ b/backends/arc_reloc.def @@ -0,0 +1,87 @@ +/* List the relocation types for ARC. -*- C -*- + 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, EXEC|DYN) +RELOC_TYPE (8, REL|EXEC|DYN) +RELOC_TYPE (16, REL|EXEC|DYN) +RELOC_TYPE (24, REL|EXEC|DYN) +RELOC_TYPE (32, REL|EXEC|DYN) +RELOC_TYPE (N8, REL|EXEC|DYN) +RELOC_TYPE (N16, REL|EXEC|DYN) +RELOC_TYPE (N24, REL|EXEC|DYN) +RELOC_TYPE (N32, REL|EXEC|DYN) +RELOC_TYPE (SDA, REL) +RELOC_TYPE (SECTOFF, REL) +RELOC_TYPE (S21H_PCREL, REL) +RELOC_TYPE (S21W_PCREL, REL) +RELOC_TYPE (S25H_PCREL, REL) +RELOC_TYPE (S25W_PCREL, REL) +RELOC_TYPE (SDA32, REL) +RELOC_TYPE (SDA_LDST, REL) +RELOC_TYPE (SDA_LDST1, REL) +RELOC_TYPE (SDA_LDST2, REL) +RELOC_TYPE (SDA16_LD, REL) +RELOC_TYPE (SDA16_LD1, REL) +RELOC_TYPE (SDA16_LD2, REL) +RELOC_TYPE (S13_PCREL, REL) +RELOC_TYPE (W, REL) +RELOC_TYPE (32_ME, REL) +RELOC_TYPE (N32_ME, REL) +RELOC_TYPE (SECTOFF_ME, REL) +RELOC_TYPE (SDA32_ME, REL) +RELOC_TYPE (W_ME, REL) +RELOC_TYPE (SDA_12, REL) +RELOC_TYPE (SDA16_ST2, REL) +RELOC_TYPE (32_PCREL, REL) +RELOC_TYPE (PC32, REL) +RELOC_TYPE (GOTPC32, REL) +RELOC_TYPE (PLT32, REL) +RELOC_TYPE (COPY, EXEC|DYN) +RELOC_TYPE (GLOB_DAT, EXEC|DYN) +RELOC_TYPE (JMP_SLOT, EXEC|DYN) +RELOC_TYPE (RELATIVE, EXEC|DYN) +RELOC_TYPE (GOTOFF, REL) +RELOC_TYPE (GOTPC, REL) +RELOC_TYPE (GOT32, REL) +RELOC_TYPE (S21W_PCREL_PLT, REL) +RELOC_TYPE (S25H_PCREL_PLT, REL) +RELOC_TYPE (JLI_SECTOFF, REL) +RELOC_TYPE (TLS_DTPMOD, REL) +RELOC_TYPE (TLS_DTPOFF, REL) +RELOC_TYPE (TLS_TPOFF, REL) +RELOC_TYPE (TLS_GD_GOT, REL) +RELOC_TYPE (TLS_GD_LD, REL) +RELOC_TYPE (TLS_GD_CALL, REL) +RELOC_TYPE (TLS_IE_GOT, REL) +RELOC_TYPE (TLS_DTPOFF_S9, REL) +RELOC_TYPE (TLS_LE_S9, REL) +RELOC_TYPE (TLS_LE_32, REL) +RELOC_TYPE (S25W_PCREL_PLT, REL) +RELOC_TYPE (S21H_PCREL_PLT, REL) +RELOC_TYPE (NPS_CMEM16, REL) diff --git a/backends/arc_symbol.c b/backends/arc_symbol.c new file mode 100644 index 000000000..be69814ec --- /dev/null +++ b/backends/arc_symbol.c @@ -0,0 +1,81 @@ +/* ARC specific symbolic name handling. + 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 arc_ +#include "libebl_CPU.h" + + +/* Check whether machine flags are valid. */ +bool +arc_machine_flag_check (GElf_Word flags) +{ + return ((flags & ~EF_ARC_ALL_MSK) == 0); +} + +/* Check for the simple reloc types. */ +Elf_Type +arc_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type, + int *addsub __attribute ((unused))) +{ + switch (type) + { + case R_ARC_32: + return ELF_T_WORD; + case R_ARC_16: + return ELF_T_HALF; + case R_ARC_8: + return ELF_T_BYTE; + default: + return ELF_T_NUM; + } +} + +/* Return symbolic representation of section type. */ +const char * +arc_section_type_name (int type, + char *buf __attribute__ ((unused)), + size_t len __attribute__ ((unused))) +{ + switch (type) + { + case SHT_ARC_ATTRIBUTES: + return "ARC_ATTRIBUTES"; + default: + break; + } + + return NULL; +} diff --git a/libebl/ChangeLog b/libebl/ChangeLog index 5f9ea552c..519087dc2 100644 --- a/libebl/ChangeLog +++ b/libebl/ChangeLog @@ -1,3 +1,8 @@ +2022-12-21 Shahab Vahedi + + * eblopenbackend.c (arc_init): New function declaration. + (machines): Add entry for arc. + 2022-12-02 Hengqi Chen * eblopenbackend.c (machines): Add entries for LoongArch. diff --git a/libebl/eblopenbackend.c b/libebl/eblopenbackend.c index b87aef197..084a1544b 100644 --- a/libebl/eblopenbackend.c +++ b/libebl/eblopenbackend.c @@ -56,6 +56,7 @@ Ebl *bpf_init (Elf *, GElf_Half, Ebl *); Ebl *riscv_init (Elf *, GElf_Half, Ebl *); Ebl *csky_init (Elf *, GElf_Half, Ebl *); Ebl *loongarch_init (Elf *, GElf_Half, Ebl *); +Ebl *arc_init (Elf *, GElf_Half, Ebl *); /* This table should contain the complete list of architectures as far as the ELF specification is concerned. */ @@ -152,6 +153,7 @@ static const struct { riscv_init, "elf_riscv", "riscv", 5, EM_RISCV, ELFCLASS32, ELFDATA2LSB }, { csky_init, "elf_csky", "csky", 4, EM_CSKY, ELFCLASS32, ELFDATA2LSB }, { loongarch_init, "elf_loongarch", "loongarch", 9, EM_LOONGARCH, ELFCLASS64, ELFDATA2LSB }, + { arc_init, "elf_arc", "arc", 3, EM_ARCV2, ELFCLASS32, ELFDATA2LSB }, }; #define nmachines (sizeof (machines) / sizeof (machines[0])) diff --git a/src/ChangeLog b/src/ChangeLog index b679f0923..db8a81eee 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2022-12-21 Shahab Vahedi + + * elflint.c (valid_e_machine): Add EM_ARCV2. + 2022-12-02 Hengqi Chen * elflint.c (valid_e_machine): Add EM_LOONGARCH. diff --git a/src/elflint.c b/src/elflint.c index b9548862c..b4eac32f5 100644 --- a/src/elflint.c +++ b/src/elflint.c @@ -330,6 +330,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 }; #define nvalid_e_machine \ (sizeof (valid_e_machine) / sizeof (valid_e_machine[0])) diff --git a/tests/ChangeLog b/tests/ChangeLog index b656029fe..8c841fa10 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,9 @@ +2022-12-21 Shahab Vahedi + + * hello_arc_hs4.ko.bz2: New testfile. + * run-strip-reloc.sh: Add ARC HS4 test. + * Makefile.am (EXTRA_DIST): Add hello_arc_hs4.ko.bz2. + 2022-11-01 Aaron Merey * run-debuginfod-section.sh (RPM_BUILDID): Use buildid from non-zstd diff --git a/tests/Makefile.am b/tests/Makefile.am index 356b3fbfe..c35a7c333 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -285,6 +285,7 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \ run-strip-reloc.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 \ 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_arc_hs4.ko.bz2 b/tests/hello_arc_hs4.ko.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..56ccb3c494e84450c7aeac5f57f94aef8336f8e0 GIT binary patch literal 15004 zc-n<^Q+OQ=*KBO;*y)a~9ka1*8#}hq*tTukN#mrkZQE$j_J6<2b9H82u9@}B+{_Zy z1@p3r=uoTaxFHzHL5N5G`~PB}_XjE;-fsQJtnb!T_x5iHNZLLK%}NLe2!vxYUyAA~ zob7iJ|NMA{DY`4!Eoe`ttEqYTkoEueD1n7ydsh9-vGqU*xIhToc`h%~r}^7kbReoS zaV0c)B?k$VFLa^rG~|*>BU!OHz!Vi?flW{zOFokV3o+CNirK1W)rdy zCGvTJ!#Z#ti>5>kYa&Mhf&+>xu-rNjOb9_pD2u8j4fxL!B%<0x94Z7?c_0S_2L!Y* z1O#Lu#QzKH!eHvCq%@@^C7G($@<+AjNs7&iWN*U27eOE@WO*R8R3!&0d?lCz;^jX! zD!MfEG6eX4LTF)*c?gu{C^innG9}A2fqd0~?DA1A8->b0qL3A(OPi5H_%@`J?N{ zHN@fIpp*n6Ve}MFo<2eBc@VAl&@90ll`06daWFl+y=9Y-0fdnnj6bpffDjDgH z$v+DHGS7B+)UGwNhXO!io(Lo4%dX6*Lfj-z@-3?Uk?5XyzkPJclk>{86-@&ssM&ba zD&+^(ZUnPrTJU7cJN?4=ZR^+DkHqtd`Y;vh_7J{S4D?MBz?iIFY@$i!qU@=0WS|Vk zR_@V}$#EH|hxw=3hQ~&(qOrvw$|SZD8>|*bB&{2UIy4B6JD`ZD>lZ@FLtg7YdQo^_C#qIGV-{=hvU3#7&Rvf3~N#&^81!7h{Sts|U|r zMEn(JYCUgUHcST8&-3cLwO47KJMseQoZmJQqgbYgLu9^ z683O^!|6i{L}vXJjVw3EI#_cy0E3H$s)MD;|J*3qR*LNjzpK38UzGS!R90upu9^8h zDFUoqGSh15rW12X2@rG1hOCKXQNrJE-}(MFNI;cw6PXQDRj!GjbSJS0CYO-=B6o8z zaI)R}X|9%L!1Lqu+i5mw@rQ)YydzkFD`qYXS6UP9zVVl=3a{!ZTGc$7URUp6Q<^;a zm?T}A9yB#_ehMhAoE}<5Ex;YV+%{WMxBH6q5$8eXOhJilirw?@(*x?h^j7V9CDxng}YdW2`taz45e%FrwO1Blf|+% z_&I#bcxEqS)YR_YFnluXAC4(4LQYAYOt)3Vx{O>;8P#@B+5MZsH%Dad@a^@pNo%}z z<7~@RD(ei4Zoy6#7?=9uP+Ws)&l?I~zHo;HLsSq}s=tM_gYt!2{drm35?l5Xip6FU zS%e@n&>N$a4oY$?D80*b$IzcBB8#A1W#Psk@V`Gm_B#(UA=D0%9+|HlI#wQ+!KI+@ z3_N5djQW~2DP+Y+^RoVx+M%$bKV_SUfGtugjhla-ws*d6&7Jid{93YoORzha`ux5{ zx;7W)NF!sCGt)EN!Oz%(@+mjkyHT#YLP_x4tw0eo=RfpLw42K`SJHO2g-{r7=U##= zrD?$g-~Ri)+464Bc5(YyUV!ZghIwaFVyWA%K0r%k`}4|uqot>V&pL5IsN;UAM^Z6G zt%uhpT;DO=r~4*?b3whYbiapnrWci$87=XbYv)E_{K2Y$>)f!rn`m#v(P(W?`?~e_ zAM);De>TN51f1?}Q_52GrmPKmc)a&Wh>k4s{Q5IQ=6F1ca?-o`&$b{vUT0#pm#F?w zjma`A_Vk$0_&OXql;@BgjECs(lik3f>`311_+Hy3&VQ8$miKiSS+Fli(RPkf8kBUz zIMwgy<&pUDWmnD7=KYYJ;dK6K2fAvIt=*$yyPpGlUDaPXV>2Z^ zUI}_O=RMhDpnafQ_39~*@;M$DHf$65;jbpfnYYM2bcb=`-A<7ofMRLjt=KMSq+`?L zvxW3v<7K*4e72PLDzDYHZoMC>I_9?IA~h6SUmxpsu$D%|GQzT!d_yENX2*D+J#$0p z*2jBaEO^pm)4xNt{hq?CvxVoN#odGVd`Nw>@1xS9)~WKHi1A=7$|F=OU$7)R%Fdnp zSAu%+hxeO^A-h-6c8a1AlfXBLc%sM?aM=V3!ZLFu$XKdD1kPtkI!{+gU9Co9IB@wR9t5kO~VOhpI*iP%J= zv>q-2t1pA2-iEa|PBFYZTIhzXb4Cbhg@T%iz@j`XRzH2w*8i=JmTiHOh@>LTL_HHJ z3NuM`agDz0O|mUU71`Pmi45DU3c`3ICh)$mS_}dt+znAT+I&&QQABwuS&=oJQbfaU zJ)In3QjMGdA-=5N7;cl6Jk+4lpkGtheVA^Bn$ET5kSt?h5ar!?OYYKvt&)UYh7^gU z%vySk`o|d5oszdYB=}Y1PHZ2acoC<4+D4BFb4o+8FV1JpXo+C#QwTpqBcEMj0#U7H z;()g319ihDbznXcX& zlqexDJIE^a zJZzLuQ_!!^I3}dngU%4$oB)YL{c67+z;z)vg+*nsNfRUT42v&OEF=PIK34CBPKRi$ zD~Gd>yfULcUgV@wu+-Ek#^7BF@3zjJh`^#d!pI`vmg|!5ri@`E z;3lQMF^!6*DvTK-LLN(uNcGXSVNrjTH;IJDB>3EPPf~+5sq}fM zDqN`yzIY5LTjZm&idogOUqrHSFd(ls;Aq0LYFz`0#|{sIvh@mw6&jLBmCGct=>6;% ziJzphY@3}ayh<6=cWSL$Av^rul2x3QvvnLRofTsu6I_y}ru^RIC{w5{Lu z6;N4eKHp((FzIiJHCf2?j+KZ9`S?O%dXR9bfvghsxThx$+*W+c-!`CYM8vzSR8Ktx z<^@)5icbbKG>>(NFVkuXf*Hs~=`PH)sbgSc5ppA`cT%{gJT%@GAB73NWn*8Kq&8?CR z)hkhF>ugf1Pc;to-0H1vnfx!tW~M>|&x^xCkiEAjsib{P%4dkB)kpOvs*myWd&vzV z1h?O9H|BOEeREHeszz3jgtO!ZQ`<2cw&`0dA&=gRBZbwLHPX*v;!&WVei$H#yanYC zqnkXlj}5TR!w|s%9dB;hPCkwfacF@|?QoeCI{PLNy^>V4n?%UL1lSs)P^%Op^ZF2M z@I3!@O1M7fgO#8nDW@2Wc&S0EeiC#}CeW6`O|EbYL!H=3G!$2?nw-qMRyzrm%SZEX z{3SEvb1!M{?(Az|C}jXsTrd)=jDN^`91O>|HZUSs#_XjLa(sqBoHUC4TUE!Y@8*^y zu`bjpd_g%(jFBT%TJaN`&)$wHenfzrv=fZcKSsqIDMRknhGk2YCbRO zaO4~uO3Bajpqk)JPB-C)B)3Mj%@HpZm~+c+=H%4N!^2e%pb*3e6(jT^M@BBlKI~>& z| zzVOh)-R=rv&6c*1n4Fws7f6hfZ7%^nlUQ@sS)rKBv^3ihbJ9kPP@;wSY4Wq^x;wxA zOt%ne6;&_i7W>@0FKU(kZayDt*u_`woIEF2jj4_%b;QE6{qi=QCEBv5x0y)0b7U#s zt9mzAwfW%hRU=7oyFk>2&(6KM_erPYSm zh%iQ^x0fP^6Oyu%8&+*w^-H*Q7qDaUC?`$`>RfP{msOI{)4=o*KLVjpc)w75wp(Mg zjoe7J#1GcczQno=ic}S1<`lXTr*~muws|W|W zf%X$AX}aA;$7M1+TG*<;ns4;0@%TJ>a=&V417Xk#FITIa?B1W9{Be$R*m|RJXfo2g@P3x_riTeJLS zK^Ls8TS++f%f2l+TgAxR!l7Kp@ud2P) z`E$MQeth(l2`$_nIG*UtJ(K+DG}`=kc++U>VQ=F#ZDi=i!nNXwPrOt@ESokqA25Bwb+s7;G~?%B~FaoH1vVlLK3#eQPfXXkfV=33wzx zje>VZu>`{yeLMYmM&00x6kVT|em0UFU-3lqx?t|Lz21YKVK~$*=viP$pWS4zcc`Ux zY;6g}D1Xc(WHd|SAEN!{?J$q&9gM&lXby#f%d$YQaN6#_DviICKl<^Nr9sRoeYaSs zayP`AsoUheL#r6|Ktel;2wifoR8{J`sBq1R^|-{QQp3ATd(mSb`tP(wy~%Vm2A9#v zsok1KLqoHp?fclsH;{09xA~iwnDa@9vz`CX!Rwda1C($+VtY+3q(ePthB_?4Xz=d==+s7RPyEmUwXX}`X-7^1>RUxO`?A#^d4sXFhiQ5I#R2o}Ude9tuMM$^yXoNPB?9ZG46x zf<$&!)sY`=*j)eqoDFZ^Ah7Zb z(^ySF>Ol_YBY2>J+GUFQqW*hZ@jf>7BCr>H-ZLkDObMKTfo>T&CHvJRD&Q+aAsOrd z2cZr)`ZELQ2oYh7OZ4g7gSeu){{Y-$d>IJhdCsVCHwmJ+@MVp`1=edEUDd9NqjY!w zBboW!>vMFQnBlSX)NtH#v6% zBqCVi_d2c0q_TjN1_&$Qle^h>L9^8fM&Q|w4*Ft4ots7nn9E<{^mU{$*wk){ ziYAsFt+qnSmeNtR$_*d-`6YXM^06!w<3*h;+gH4{X-ylw7?J)Y>>H&d>$r9>t|%Gm zkpr=lc8_W$ND%$ilM^>{bK==^tJT6QTQ2%xK^_<(Y#%O;5Bd%wL=&baqj1&FEv1dL z>mY1~pAB&5wY>gF@Ljy@GTi&U=8KZpD+NuRXc-2yuQudq6}U3!Q+@kf(Ymu;m@~4q zy3xM??POks!n%I@Scl+LCOI=JIx4=~&ylGM0{U)&iKW`hfT6=uuG?S9fknayX(GUa z=_=MucbJ#*>4hpbiOeGZWx;jzS+n|r=xt8ehZ5Ws`gLof7@q>pU~+8+3lx6BHyKHb z+1=?-1J$4|J~(mIJu92h(&*lx=qGe@bF1T*XZ8bqo=C_C?$nKBkNo5!$_uMM;fGu= zBs5Ce3IsOOJ!5~xE#9RH-BqgPSdB}k%`@~2Q=mPMJ19#>#%Xjjn!^AQJbdtFUn*I* z^}I}w%R(q>JZ!$~4t)8|c-6NQMGNs*WBSKoYa8c9>M!iRyfQ6U{b}1@jRJkBy?~t| zcsxwVW;D)1f(LwdGg_dj#FRr;mwprP*zenx)|mRHkXFYB9I0Q!^QVGYh#48hkjIms z`)($W`+xVIP)|bwR$k^UdViu6!S(>-SAI(b>XCN|ZThdwS9PR{!;0dIm7xL-@dao?pb>kYWkBnf=cnuh0bf(&s ztqz15$7eRFW=hnj^;(}5Si4p8^bLMHOZ=`Z?I2z`|H(7!-nwEKs*+p)@pSXut!cdc zFMlhtO|3&DHzbIA2>dhcO{w97&|lN*BfS}WgqJr}j6^)vgvJR2%()@CVvIpZ@+KjR zfS)=dNe_iTFmIfl3}@U=sNYkd6#pW5{*w4KHluFsnf1%4<2!yA>Yv#W2LvtWcf#8Y zS*-U?pY^kvD_2M3Dzq!wAZ!zMK)AS3zFhJHGK`8%2oMwmC!t`QFD)VCy$JlyK$ml( zq@sv!_#R$m5})u2@-h@y`@txwSuN=hqO)~o=@?*ip=cd2K9v9ORp?4V>AXjIt#u^h z>at+;YJc;xSpfInT2$Ny^Do;Dr9J-*RF+F4?!15}8hBQw3CCGvDyVU55~@VB^wn%)?`D_Z@G{ zA$%?LV1l_wEBRMWMt<&@0lk;cT6Sfft$t5Uj|MEAEDzf4pvHwXlnUCx31FWW?Xt9f zm^?8n`YB1U>yYl#cN$N!#eF^EtEUllJ+>pMHvPQZ^yO!`N&!L95~tr0b zi?V~rr#t+i|4+q$^@1K7vH&>*L;wctc-_I*-H}JS{c_jWpES(kMU7&dR0!r%L^yFM zLY14NYZeDp_T{_!Z=-P)&ILYaF5nk>S!309mcE2D*bSC^0mDCK+1wHJXZrwE|}WtvKh4d3|j?yble&7pZv{n6EtOx@)|yN!W^ zyw1v^Uzs9sUKw17kJIibA@#rKg}qR)uRuu36G_NUdk^efwSIb;vAarN$;HhfV=cXI zYs)Tn1^umFsHvHXQxt_8nLb;5tpYB^`65UOukXnAQ>LXIbtolpD3B1QQV0H}+DrjR zA=a5}_>;|4qQO_0pYj}cS-({$h>qx12;g^cp8g4U=;+ur_oV*1|~)&mst-NK$!ahp2_(q>Qkc;Fzo(O6obMpbD_i7w+O@biw98 zKF62&`ck}l@FH=TOaCZX;y?{OYIOrF43Gw(>j4zm?Hj6)|5`xUMVI>p#QJ~DMSrhn z$q#Oj!7x;W$eotmr0PgWBu2?GCBLEXF8!-v=I^&` zq6$hxmO27<^C6XpD7Sj~9L+P(fXH@o2&5yjP^cU%P4IG_9$+9sbH zRaNDCw*2Q{_`SI1!3brp*78cX!u+2@1Unq_sWht|3{ZjqfxQ#|`~@JBWsQRD{zz7? zFq$KwS0-zp^L8Ez+b0}9M`JQ@Dt=Eu@91EV7Zzq{yQjsz_U^>_eHRY2aA;Vtbs2Fh zGXK2G!^44eg1wB$VUW zX_+&O4k5(EDZxn(90`lxM0-8*)7>x+MuP7x=?so`D}qxyjofbma1_I_ww~=1wmV!H zHv_&~UG8qL&HlP&`Mx84EiE5i&HCLhnIEqxY8e58KmP;)RU|Qeb0hSe#{~ddiOs^6 z?5wm(h7?ze$nt^SAB{2T(_A?DTHN{d@hb|x-7V=J1olTHhDIc27tXB?@-V14{{}5j z>tcXYAn*my(<=;ZyeoH+l4H8lyw`2+WD>qlfOa`B5HD|m15g=Xq@9U|l$PPAeB9HU zW-9(oOkzfQio#Ps2<^h(AgF_+trb&UZ*O1`VUT$^sZsI znaHmD^T6EWf>kw@1D&))XbZ8!A73#04677~ZLYvhj(r=AMILd>UD(#&ncLR`8@TA_ zi0#1dJ9HNnILdxHq$;dJH!?W9I#k+EMjG`g7SnKDBk|pkP z3k4B|Dwt11f3UA3nwgR@Om^4tVLrB*g^B)FnHd;Lt%#%79r2Kbuz z7cwYRhR%O3V^9!UP35fkRPu^VAcy-xX{D>9rJ+ft>X!_}t*3_Dby6~#JQFp&PK%;! zt(`%2`?6My+Vqfz<4Ol+53$625*(WZFg55tHaLVGVtOz)js$)|*fL?h6jKHg(YrG1xG@)M>BTUl`eJ8hlIb*zXVfw z8mu6pcp1VbJ2odX;hBB1y?5df?P$EiR|QU?@Uo$X#a$C6`Lof@3~V3|6d?>57kI>en95{d++BDLYnx?|HfH z2Zg7r@@9IA()~DF#^Vg*AJ(g)Ka*=C0%d;`7QNeLiL;1w2_()3R`OGCR!4{*C=)}2 zl6|}=Je<-wYOW3a@Mpfi-L+;`9oa6~<{$+m9OcPz6yU{G_j#lo$Y~zt zF!Fd?@ZRFq)$EL^sp1CvgK}8Elr6Q`yT0iU1hcy0`GNd^Zf_~V>v6AVeHwl>SN_IM zT>=e5wm8i@y!~&G?YlYGXO8+r8D(1Jj``Jp!v0+?JG78(*8VLw5p>6X7wW~v5XGtaDpVeIDTN20jGRytsM!uY-tqHNl~@E8 zKdXBA7F_k%nKT{+zLk-RG@W>U*oljV;i6u6{#e^BL6_I+j`%q_G_0nv_L{>M^QzPa zSSCih#wHLJua&lW%*SpBmz{2?$4iZrs{2=a{+ajTK-KJdXFj_@u<@Xi{^`5Nodsv- zGj_VUJ8OUQ6Ki~HtMIE4a<9)*qIaSJN+pT>iU8;D&^Kt`z!=}~1y|NhSx4OQmimj9 z>)J=UyBI=JFWJO+BEHd=iiueGe7X9n_VC{@oAn2Lx3X+sy+?g4;m*e zMlmn$-zy@XwA)O#|6q5PMp*WfC`fZYu6y+(i? ztn;hdK>PA$ujk1vxjjdj&a=7{!q&7b`L@^S_jyTgb@)KsnPJJaNS-SPSsgb%0#U)5N`Fc=UB z5S1S^kVjRT8($7FNiJ@07Lg`%p0S)q^bP`LBhD8lia-!xO7i>nH+-)=81y=^ZF$-_ z9c^DSG-*131t?F{(;fq;Q>dS);lxnPTPNJ#*;t6cJ1dKXlHYQIlC6j6z%H!#vUD7Q z>mvR92pU*AJ@qANIXjXhvy7^rPS`)`X*e8NDmk5&N7{|k6~2uWI?n@pVFa7+-exIDQj4y@8pf>?EL*HB3i=7k7=7rS7s^h zW>4y(7Q9`-!jp%|%BW-Q)|C{XeX;Npk_Z)(12xxc;z0@~fh_u43Y&TDAIxkz7WAWA zPuw}hl;?i#w&p48(-=Ju_NF7mqs3(w;~=l@wbDKl&z`#aC9hi6nR#?Gjuu7bTD)~b zCa4qGN}a&gnQqt*x5;d`gh>`QLmyf|^E-w1`wzL66K%ZfY*zfp~`jenQ9r48I~ro*`R%IEw?s$;sdy z77t4CuK?ah^g@ioN32O`j*Iqzp84Dd?>bT85i}V?%wN;qI=I^S&nFTd4+AivWQByn zBS2{};Xv_9zku)n$?OR2>M>E%1HyKYs;Dro_*NzYB&Bj=>|sOT$B(8vui&it_y?3B z+-)i} zWvEEm^NejVchV<9WX#x^gn_PVb^c;|JpJOe!}fRRqyW@^D9(Uw)CezrC4F^*L+G1d z_`mR3g#uxV{U0Bjh(`aJDC2iq8I4bljL`%LM8&#H2a)kE3R7}Pgoz}&;ER4g#8N0n zWi}~ayi=@vYA49XmBP=GqP=xRDAIwfQD~(oI~>+3BH;=ZQvZzU4hWR{hjiN_ZN4R^ z9VesD7DQddMl}s!9e8uy4z)f7pKP7Ujv%8_C+=e-Ap@B1BXamK6Wu|v zRH5RGSr~vDw@k%#`d_v=I(Hih0*=1Bt+(tkxl(K-H@Ne4CTg*ZZ8`M9y4uM9cp=qN zO&iVNP?$MmJ3l~6t&EIiDP*YJY#^}#Gn_;)CQ$OljKrkL5Fj(nizFsN=#1FV1!=6F z2@HNjmXv181fW#GByz$KhLQZ{`9n#Z5VHT8H8My6hXv_5^r2nceRX_dyJKaYY21Qx zh66pmTKn4_c2l3yH-iM;sDdxkd_k>smN}6(lu$#~a>xC>g_G7ge_G7Y)MPR=2MP1%S(L>6k$VEK-Q8+?zO zAw4WD6DJ`IuN)KwfCdH&-$M~$Arepx2^Wc&TtHf@=;{h%iU50c^$u3za~t`)i~KCk z8wB>@oVIQES!iu|t93&Ij4^1)fa+*L-wy@g;9Fu)|5JwgcVU`bZ5k_OER zkokCSuR@Jght3Tt)eb%zPDy)}_Fh{>2N;C|nWkC~0ieXJ;ma{uMb0s654^9o~k|uJ|;H9fMcoZFFPkvyc7H&r*f*3G4 zu58JkgbJioCR}>gnSAy`G#K+eWy!H}Qv&Eb+D8NJ*prE&F(VNP)d3hP@O-M+FOt_nFze3;dpdyUpm)pH^0P~6(XKsyrFs82q;lPl<@-xI^TuPQV3xO zyR<}kf*XOW%I)Cb=HMpnn-YCqd7NcNg{{@4+TZgE*v$5k4s(Y0#oAt0f{Aey_|Swq zb)LNh9p)T$ry_mzToB?>2Ab-J4wMtk{cs~Eyg}^LBfOy`vEfDeqCp2j z2jV(*JdqCNNGjIeqH-~E!fC!#MI%UygRrF^!@wbk;LEOX5g0=d)O~AUl?*kJMdEjc zr*Rz0N)26rv21JaU-DqINv>LaeU#S5-uAeUF{sK>XYfF0qc|qGx3!KaxCBaxm)C1J zzK|fZkO48MDS`U_A0)X6&=TT~-Sc@@aQ}=*fcYw~KTX4;r}X}Z?GYHN&?1ggpH+UH+7llB2RACjl?jizvI=RT*U zyjl>{ryI%|w23J@lU}H+V1o35stHkX__|F|@x(zDq%m#g;`@dNo`|ulm3q=33F~~K zLd$@;+n``ofG8Qv4Ha0K5(P996=jG%~|OUTG24W9jSA{ zZKqg`kI)CBDUq-edJJt-HXepf`a_*)=w4DS-?3g!Gp|~e3|eW{W#rBKSKbH}2YBk9 zsjm`hU?X?da|PKDnigqL7q(e*v4Ih*DbmqQ&pqu-!x0wqu1F->J4yb`TBA^DSxXj^ zGJ4)?IcTM~GpeXogemKb&|~yPwMDXn4V)Us;J%k+A=moHA^rQd(pR@={-{^06xL7H_hBD`+7{3jFk zs~6K5)>t!g7Qdd<>-BLBRt%s56CE2F1r*hE%Gw@R{20!KZe204a1?UH%67CRq?_{O zLV>jG?lh?#;{j=(!(m8=(hen>n@Fy%E^u1vsvVdH4^<5l27uGh{7d*Q)U0wjY3CX2nRP0Q^{g~ZdviGH;NGL%QI@#WJE;gAl*3o zGmqWpSC}q2l8D6N;W(P&*k(dy_$p%Rg>o1(jur(Mk+MT^43?K0@-gS!>!y=3Wo>6N z4&k=pQG7(5kK5aWK6H`&vr+UdLviR&4oq~STf;Z)t{OY_m9v?;-m;%0a9!MSH*XK0 z>h$UNMAHO5|sI3w2@4jk$g3dZ*>zo)kUIbkS%y=Dh`RSo3~g5SI&V zQPnh#Es1!ov-aU3qqH7@E0*MaM6uMpcI4T~0JU?5HaClQT0tT;aE!5dLPShZBXtBn zvv?J31*u!lRtd@Y<(-x^s!c@VL&22Xxi}v&(?;GVg3Uc4T=?cQID08 zjhUoLiu8*n%B#S78|_~@+8eGjMPQxe!^zYrGj>8`d&O<{H6f2BFH1Q>eO+>fY6opKb)ilK8)P4)N*BAx6q)5{q+8 zfQf8iMT*syfyY|z`|0k+Nj7$UBqj#*ME>tjLRN#E=0LcP%|jLw)tH({o*iI1*s+?o zRC=Hk$ZS7GPjcY4?a}I{Vxm~utO`dypRLW+{NM|<2(?_tqHxB1V!_pHX#?HFY8^iA zTU2PuX_^L|T@Q85joQ-=iO9|$0%>m=5{IYTpgM2P_?z$kXV=eiy3~3{Ar`bN{)V#G z{<6qA^51+jNLd$<3iQ`Gd2GzYT=r1Q*C#BR`h{({WG=tU$GTXxjR(qikb&*rFf`vR zX;p$Jp-1!ASThC1s^F|0A#I=<#AXc5X)Zqqd+G-khSQ-ZehH!1Sk&U$+rP29#A;hd zlLO_{#5X|Td~Vog&(Yuvz4jACEwk`t^pqssj95@K4)uv=%8eT>7lVk=97Ie=<~Bkj zxMT!@`ZkQ`Le?`K89U42DmKL`3n`bSrD2@@q!OPH0~!~~v$^t?x}gVX59#%63}q2z zcA%EoUrg&H@tFcPorgo2;!8EjTBk=aF>M(V#r;ehNeZ|7OYKy(>#);yU_P@f+dNl# z*a2rlpHsb`WrnOL+C9@CNC@lWX)p~vZrWv@y~sG_lQ?3F+d<~U|K(X3ep&%v*h|GB zH(dgUswRK+jcvY_S-A_`>752rRm;Z==g3KHGHR@d(#KWQ5^hu>A;3MQT^|(fKC+)u z(`>pTU%;IIwW>^Mrb$gHroX0vQU;o(Z#7(UGqa;H)+rONA~#+nBtS~bR`JjGezBpa z*XeGeRVZ(xMK~-bkd8yZ!Ra#vxW}!X5+K4p=|0vJR}D)RWl!;JceX_e9Z$m$Fe!vP~2=c5sE7m3pC>LdmnSq+ZUgEv+kcILf3ARKe2MS(2$p zmpWLf1A5w06}q)IX=E6(y3F zlEdJmS_ZYnkWXKfQ8tI9){vFpGIPP!o_7w(BB!tA)=+=i3J=W4X-;W|n3=lf=1#Qq z>O>f~Z)YTd2U+`SmUP@|BgB<;2_R#{A!K_fK+y6LDD3^!1Di>K+Hbux=5GoO%vzVa z($-88fsow(g~p-W{-|PTaHHbP;&BR<&!hRTOZ&kTwu$!$+I9Q0=8N@Z+Xndb%z^eO zr=nJ}@iD8DsoW4N(Q{*Oo%bNSjOo~$h6S{ z%gG`1<%f(TPN6oCh~qIRIbH}A)ur!YzQpXQOVYzis$I6)h$HvuRkvQc4j3t-ze{Vg z^JmengtPPu~ii*24ZRpC;sZ9Ucpug%%Z*Kzl(!f2Zv=IBYan|!CACW7-;meE5bwhTqN)4C{M-a{WRdTwP4?cNxs zdn~GztO<5xbT<+Cg>nKWb)FK<8JX;q_@8FPpt z=)_Dx7u998F~$*95y6Sr9y*Y(-%k&9g@m9iL7<|6<3WO3Wj+TS;St^ewaJ{v%ABYi z+7i#xWkIqej#)KPU{z`}SJ8;Od9gXo>x@rla83+tv0jxlT!%pty?zLL6*roSECSua zh2B^yxoLLb$@w+Lv$7ok8o-&$n=qS(HZ`AT0toJY65PS9qkMEe+|LU*B()B5&X+$k zLLauQmlsH2q{ynJ=C$&F?u(fo*c>_~SxcK0(4gf-boyo9+Q=EV7$B8ESAx9v&_m|l zSZ2b)w=QY^DkUJxFV#MSnb7RThPqPbD$aftkdHP|T2geE$z;V2^_pV42yU9vIAG>itOb+#GLr}-Nf>g_9y#5Ru bSgA!H(J?{~OZ9JbJ4q3nk^~BGap3;|2pvT? literal 0 Hc-jL100001 diff --git a/tests/run-strip-reloc.sh b/tests/run-strip-reloc.sh index b7ec14203..033ed2785 100755 --- a/tests/run-strip-reloc.sh +++ b/tests/run-strip-reloc.sh @@ -18,7 +18,8 @@ . $srcdir/test-subr.sh 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_aarch64.ko hello_m68k.ko hello_riscv64.ko hello_csky.ko \ + hello_arc_hs4.ko tempfiles readelf.out readelf.out1 readelf.out2 tempfiles out.stripped1 out.debug1 out.stripped2 out.debug2 @@ -120,6 +121,7 @@ runtest hello_aarch64.ko 1 runtest hello_m68k.ko 1 runtest hello_riscv64.ko 1 runtest hello_csky.ko 1 +runtest hello_arc_hs4.ko 1 # self test, shouldn't impact non-ET_REL files at all. runtest ${abs_top_builddir}/src/strip 0 -- 2.47.2