* [PATCH 0/2] Add C-SKY support @ 2019-04-01 2:33 Mao Han 2019-04-01 2:33 ` [PATCH 2/2] Add backend support for C-SKY Mao Han ` (2 more replies) 0 siblings, 3 replies; 16+ messages in thread From: Mao Han @ 2019-04-01 2:33 UTC (permalink / raw) To: elfutils-devel; +Cc: Mao Han, ren_guo Hi, This patch add backend support for C-SKY architecture. Tested on X86 and got no regression. Also tested on C-SKY qemu. I didn't find any easy way to do the cross test, so I modified the test script to run the test suite with ssh, some testcases fail due to the script modification. PASS: run-arextract.sh PASS: run-arsymtest.sh PASS: run-ar.sh PASS: newfile PASS: test-nlist PASS: update1 PASS: update2 PASS: update3 PASS: update4 PASS: run-show-die-info.sh PASS: run-get-files.sh PASS: run-get-lines.sh PASS: run-next-files.sh PASS: run-next-lines.sh PASS: run-get-pubnames.sh PASS: run-get-aranges.sh PASS: run-allfcts.sh PASS: run-show-abbrev.sh PASS: run-line2addr.sh PASS: hash PASS: newscn PASS: run-strip-test.sh PASS: run-strip-test2.sh PASS: run-strip-test3.sh PASS: run-strip-test4.sh PASS: run-strip-test5.sh PASS: run-strip-test6.sh PASS: run-strip-test7.sh PASS: run-strip-test8.sh PASS: run-strip-test9.sh PASS: run-strip-test10.sh PASS: run-strip-test11.sh PASS: run-strip-test12.sh PASS: run-strip-nothing.sh PASS: run-strip-g.sh PASS: run-annobingroup.sh PASS: run-strip-groups.sh PASS: run-strip-reloc.sh PASS: run-strip-strmerge.sh PASS: run-strip-nobitsalign.sh PASS: run-strip-remove-keep.sh PASS: run-unstrip-test.sh PASS: run-unstrip-test2.sh PASS: run-unstrip-test3.sh PASS: run-unstrip-test4.sh PASS: run-unstrip-M.sh PASS: run-elfstrmerge-test.sh PASS: run-ecp-test.sh PASS: run-ecp-test2.sh PASS: run-alldts.sh PASS: run-elflint-test.sh PASS: run-elflint-self.sh PASS: run-ranlib-test.sh PASS: run-ranlib-test2.sh PASS: run-ranlib-test3.sh PASS: run-ranlib-test4.sh PASS: run-addrscopes.sh PASS: run-strings-test.sh PASS: run-funcscopes.sh PASS: run-find-prologues.sh PASS: run-allregs.sh PASS: run-addrcfi.sh PASS: run-dwarfcfi.sh PASS: run-nm-self.sh PASS: run-readelf-self.sh PASS: run-readelf-info-plus.sh SKIP: run-readelf-compressed.sh PASS: run-readelf-const-values.sh PASS: run-varlocs-self.sh FAIL: run-exprlocs-self.sh PASS: run-readelf-test1.sh PASS: run-readelf-test2.sh PASS: run-readelf-test3.sh PASS: run-readelf-test4.sh PASS: run-readelf-twofiles.sh PASS: run-readelf-macro.sh PASS: run-readelf-loc.sh PASS: run-readelf-ranges.sh PASS: run-readelf-aranges.sh PASS: run-readelf-line.sh PASS: run-readelf-z.sh PASS: run-readelf-n.sh FAIL: run-native-test.sh PASS: run-bug1-test.sh PASS: run-debuglink.sh PASS: run-debugaltlink.sh PASS: run-buildid.sh PASS: dwfl-bug-addr-overflow PASS: run-addrname-test.sh PASS: dwfl-bug-fd-leak PASS: dwfl-bug-report PASS: run-dwfl-bug-offline-rel.sh PASS: run-dwfl-addr-sect.sh PASS: run-disasm-x86.sh PASS: run-disasm-x86-64.sh PASS: run-early-offscn.sh FAIL: run-dwarf-getmacros.sh PASS: run-dwarf-ranges.sh PASS: run-test-flag-nobits.sh PASS: run-prelink-addr-test.sh PASS: run-dwarf-getstring.sh PASS: run-rerequest_tag.sh PASS: run-typeiter.sh PASS: run-readelf-d.sh PASS: run-readelf-gdb_index.sh PASS: run-unstrip-n.sh PASS: run-low_high_pc.sh PASS: run-macro-test.sh PASS: run-elf_cntl_gelf_getshdr.sh PASS: run-test-archive64.sh PASS: run-readelf-vmcoreinfo.sh PASS: run-readelf-mixed-corenote.sh PASS: run-dwfllines.sh PASS: run-readelf-variant.sh PASS: run-dwfl-report-elf-align.sh PASS: run-addr2line-test.sh PASS: run-addr2line-i-test.sh PASS: run-addr2line-i-lex-test.sh PASS: run-addr2line-i-demangle-test.sh PASS: run-addr2line-alt-debugpath.sh PASS: run-varlocs.sh PASS: run-exprlocs.sh PASS: run-funcretval.sh PASS: run-backtrace-native.sh SKIP: run-backtrace-data.sh PASS: run-backtrace-dwarf.sh SKIP: run-backtrace-native-biarch.sh SKIP: run-backtrace-native-core.sh SKIP: run-backtrace-native-core-biarch.sh PASS: run-backtrace-core-x86_64.sh PASS: run-backtrace-fp-core-x86_64.sh PASS: run-backtrace-fp-core-aarch64.sh PASS: run-backtrace-fp-core-ppc64le.sh PASS: run-backtrace-core-x32.sh PASS: run-backtrace-core-i386.sh PASS: run-backtrace-fp-core-i386.sh PASS: run-backtrace-core-ppc.sh PASS: run-backtrace-core-s390x.sh PASS: run-backtrace-core-s390.sh PASS: run-backtrace-core-aarch64.sh PASS: run-backtrace-core-sparc.sh PASS: run-backtrace-demangle.sh PASS: run-stack-d-test.sh PASS: run-stack-i-test.sh PASS: run-stack-demangled-test.sh PASS: run-readelf-zx.sh PASS: run-readelf-zp.sh PASS: run-readelf-addr.sh PASS: run-readelf-str.sh PASS: run-readelf-types.sh PASS: run-readelf-dwz-multi.sh PASS: run-allfcts-multi.sh FAIL: run-deleted.sh PASS: run-linkmap-cut.sh PASS: run-aggregate-size.sh PASS: run-peel-type.sh PASS: vdsosyms PASS: run-readelf-A.sh PASS: run-getsrc-die.sh PASS: run-strptr.sh PASS: newdata PASS: elfstrtab PASS: dwfl-proc-attach PASS: elfshphehdr PASS: run-lfs-symbols.sh PASS: run-dwelfgnucompressed.sh PASS: run-elfgetchdr.sh PASS: run-elfgetzdata.sh PASS: run-elfputzdata.sh PASS: run-zstrptr.sh PASS: run-compress-test.sh PASS: run-readelf-zdebug.sh PASS: run-readelf-zdebug-rel.sh PASS: emptyfile PASS: vendorelf PASS: fillfile PASS: dwarf_default_lower_bound PASS: run-dwarf-die-addr-die.sh PASS: run-get-units-invalid.sh PASS: run-get-units-split.sh PASS: run-attr-integrate-skel.sh PASS: run-all-dwarf-ranges.sh PASS: run-unit-info.sh PASS: run-reloc-bpf.sh PASS: run-next-cfi.sh PASS: run-next-cfi-self.sh PASS: run-copyadd-sections.sh PASS: run-copymany-sections.sh PASS: run-typeiter-many.sh PASS: run-strip-test-many.sh PASS: run-strip-version.sh PASS: msg_tst PASS: system-elf-libelf-test PASS: asm-tst1 PASS: asm-tst2 PASS: asm-tst3 PASS: asm-tst4 PASS: asm-tst5 PASS: asm-tst6 PASS: asm-tst7 PASS: asm-tst8 PASS: asm-tst9 PASS: run-disasm-bpf.sh ============================================================================ Testsuite summary for elfutils 0.176 ============================================================================ # TOTAL: 203 # PASS: 194 # SKIP: 5 # XFAIL: 0 # FAIL: 4 # XPASS: 0 # ERROR: 0 ============================================================================ See tests/test-suite.log Please report to https://sourceware.org/bugzilla ============================================================================ ========================================== elfutils 0.176: tests/test-suite.log ========================================== # TOTAL: 203 # PASS: 194 # SKIP: 5 # XFAIL: 0 # FAIL: 4 # XPASS: 0 # ERROR: 0 .. contents:: :depth: 2 SKIP: run-readelf-compressed.sh =============================== elfutils built without bzip2 support SKIP run-readelf-compressed.sh (exit status: 77) FAIL: run-exprlocs-self.sh ========================== /home/vmh/elfutilswk/tests/varlocs: dwarf_getlocation_attr for addr: .debug_addr section missing *** failure in /home/vmh/elfutilswk/tests/varlocs --exprlocs -e /home/vmh/elfutilswk/src/readelf FAIL run-exprlocs-self.sh (exit status: 1) FAIL: run-native-test.sh ======================== allregs: 23064: No such file or directory FAIL run-native-test.sh (exit status: 1) FAIL: run-dwarf-getmacros.sh ============================ --- dwarf-getmacros.out 2019-02-19 19:28:29.405840052 +0800 +++ /tmp/123 2019-02-19 19:28:27.789032052 +0800 @@ -1 +1,4 @@ -invalid opcode +opcode 255 with 0 arguments +file /home/petr/proj/elfutils/master/elfutils/x.c + FOO 0 +/file FAIL run-dwarf-getmacros.sh (exit status: 1) SKIP: run-backtrace-data.sh =========================== /home/vmh/elfutilswk/tests/backtrace-data: x86_64 linux only test SKIP run-backtrace-data.sh (exit status: 77) SKIP: run-backtrace-native-biarch.sh ==================================== biarch testing disabled SKIP run-backtrace-native-biarch.sh (exit status: 77) SKIP: run-backtrace-native-core.sh ================================== Aborted No core.12362 file generated SKIP run-backtrace-native-core.sh (exit status: 77) SKIP: run-backtrace-native-core-biarch.sh ========================================= biarch testing disabled SKIP run-backtrace-native-core-biarch.sh (exit status: 77) FAIL: run-deleted.sh ==================== PID 12587 - process TID 12587: #0 0x2ab79648 sleep #1 0x2ab79648 sleep #2 0x2aace6a4 /home/vmh/elfutilswk/src/stack: dwfl_thread_getframes tid 12587 at 0x2aace6a3 in /home/vmh/elfutilswk/tests/test-25076/deleted-lib.so: Callback returned failure ./run-deleted.sh: line 38: kill: (12587) - No such process FAIL run-deleted.sh (exit status: 1) Mao Han (2): libelf: Sync elf.h from glibc Add backend support for C-SKY backends/ChangeLog | 13 +++++ backends/Makefile.am | 9 +++- backends/csky_cfi.c | 59 +++++++++++++++++++++++ backends/csky_corenote.c | 60 +++++++++++++++++++++++ backends/csky_init.c | 64 +++++++++++++++++++++++++ backends/csky_initreg.c | 85 +++++++++++++++++++++++++++++++++ backends/csky_regs.c | 121 +++++++++++++++++++++++++++++++++++++++++++++++ backends/csky_reloc.def | 85 +++++++++++++++++++++++++++++++++ backends/csky_symbol.c | 76 +++++++++++++++++++++++++++++ libebl/eblopenbackend.c | 1 + libelf/ChangeLog | 4 ++ libelf/elf.h | 96 ++++++++++++++++++++++++++++++++++++- src/elflint.c | 2 +- 13 files changed, 670 insertions(+), 5 deletions(-) create mode 100644 backends/csky_cfi.c create mode 100644 backends/csky_corenote.c create mode 100644 backends/csky_init.c create mode 100644 backends/csky_initreg.c create mode 100644 backends/csky_regs.c create mode 100644 backends/csky_reloc.def create mode 100644 backends/csky_symbol.c -- 2.7.4 ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 2/2] Add backend support for C-SKY 2019-04-01 2:33 [PATCH 0/2] Add C-SKY support Mao Han @ 2019-04-01 2:33 ` Mao Han 2019-04-01 2:33 ` [PATCH 1/2] libelf: Sync elf.h from glibc Mao Han 2019-04-03 20:54 ` [PATCH 0/2] Add C-SKY support Mark Wielaard 2 siblings, 0 replies; 16+ messages in thread From: Mao Han @ 2019-04-01 2:33 UTC (permalink / raw) To: elfutils-devel; +Cc: Mao Han, ren_guo --- backends/ChangeLog | 13 +++++ backends/Makefile.am | 9 +++- backends/csky_cfi.c | 59 +++++++++++++++++++++++ backends/csky_corenote.c | 60 +++++++++++++++++++++++ backends/csky_init.c | 64 +++++++++++++++++++++++++ backends/csky_initreg.c | 85 +++++++++++++++++++++++++++++++++ backends/csky_regs.c | 121 +++++++++++++++++++++++++++++++++++++++++++++++ backends/csky_reloc.def | 85 +++++++++++++++++++++++++++++++++ backends/csky_symbol.c | 76 +++++++++++++++++++++++++++++ libebl/eblopenbackend.c | 1 + src/elflint.c | 2 +- 11 files changed, 572 insertions(+), 3 deletions(-) create mode 100644 backends/csky_cfi.c create mode 100644 backends/csky_corenote.c create mode 100644 backends/csky_init.c create mode 100644 backends/csky_initreg.c create mode 100644 backends/csky_regs.c create mode 100644 backends/csky_reloc.def create mode 100644 backends/csky_symbol.c diff --git a/backends/ChangeLog b/backends/ChangeLog index 0c61a0b..0c3193e 100644 --- a/backends/ChangeLog +++ b/backends/ChangeLog @@ -1,3 +1,16 @@ +2019-04-01 Mao Han <han_mao@c-sky.com> + + * backends/Makefile.am: Add C-SKY. + * backends/csky_cfi.c: New file. + * backends/csky_corenote.c: Likewise. + * backends/csky_init.c: Likewise. + * backends/csky_initreg.c: Likewise. + * backends/csky_regs.c: Likewise. + * backends/csky_reloc.def: Likewise. + * backends/csky_symbol.c: Likewise. + * libebl/eblopenbackend.c: Add C-SKY. + * src/elflint.c: Likewise. + 2019-02-15 Mark Wielaard <mark@klomp.org> * s390_init.c (s390_init): Hook check_special_symbol. diff --git a/backends/Makefile.am b/backends/Makefile.am index 2126a2e..155db8a 100644 --- a/backends/Makefile.am +++ b/backends/Makefile.am @@ -33,12 +33,13 @@ AM_CPPFLAGS += -I$(top_srcdir)/libebl -I$(top_srcdir)/libasm \ modules = i386 sh x86_64 ia64 alpha arm aarch64 sparc ppc ppc64 s390 \ - tilegx m68k bpf riscv + tilegx m68k bpf riscv csky libebl_pic = libebl_i386_pic.a libebl_sh_pic.a libebl_x86_64_pic.a \ libebl_ia64_pic.a libebl_alpha_pic.a libebl_arm_pic.a \ libebl_aarch64_pic.a libebl_sparc_pic.a libebl_ppc_pic.a \ libebl_ppc64_pic.a libebl_s390_pic.a libebl_tilegx_pic.a \ - libebl_m68k_pic.a libebl_bpf_pic.a libebl_riscv_pic.a + libebl_m68k_pic.a libebl_bpf_pic.a libebl_riscv_pic.a \ + libebl_csky_pic.a noinst_LIBRARIES = $(libebl_pic) noinst_DATA = $(libebl_pic:_pic.a=.so) @@ -136,6 +137,10 @@ riscv_SRCS = riscv_init.c riscv_symbol.c riscv_cfi.c riscv_regs.c \ libebl_riscv_pic_a_SOURCES = $(riscv_SRCS) am_libebl_riscv_pic_a_OBJECTS = $(riscv_SRCS:.c=.os) +csky_SRCS = csky_init.c csky_symbol.c csky_cfi.c csky_regs.c \ + csky_initreg.c csky_corenote.c +libebl_csky_pic_a_SOURCES = $(csky_SRCS) +am_libebl_csky_pic_a_OBJECTS = $(csky_SRCS:.c=.os) libebl_%.so libebl_%.map: libebl_%_pic.a $(libelf) $(libdw) $(libeu) @rm -f $(@:.so=.map) diff --git a/backends/csky_cfi.c b/backends/csky_cfi.c new file mode 100644 index 0000000..5c30a5f --- /dev/null +++ b/backends/csky_cfi.c @@ -0,0 +1,59 @@ +/* C-SKY ABI-specified defaults for DWARF CFI. + 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 <http://www.gnu.org/licenses/>. */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <dwarf.h> + +#define BACKEND csky_ +#include "libebl_CPU.h" + + +int +csky_abi_cfi (Ebl *ebl __attribute__ ((unused)), Dwarf_CIE *abi_info) +{ + static const uint8_t abi_cfi[] = + { + DW_CFA_def_cfa, ULEB128_7 (14), ULEB128_7 (0), + DW_CFA_val_offset, ULEB128_7 (14), ULEB128_7 (0), + +#define SV(n) DW_CFA_same_value, ULEB128_7 (n) + SV(4), SV (5), SV (6), SV (7), SV (8), SV (9), + SV(10), SV (11), SV (15), SV (16), SV (17) +#undef SV + }; + + abi_info->initial_instructions = abi_cfi; + abi_info->initial_instructions_end = &abi_cfi[sizeof abi_cfi]; + abi_info->data_alignment_factor = -4; + + abi_info->return_address_register = 15; /* lr. */ + + return 0; +} diff --git a/backends/csky_corenote.c b/backends/csky_corenote.c new file mode 100644 index 0000000..67af0b1 --- /dev/null +++ b/backends/csky_corenote.c @@ -0,0 +1,60 @@ +/* C-SKY specific core note 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 <http://www.gnu.org/licenses/>. */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <elf.h> +#include <inttypes.h> +#include <stddef.h> +#include <stdio.h> +#include <sys/time.h> + +#define BACKEND csky_ +#include "libebl_CPU.h" + +#define ULONG uint32_t +#define PID_T int32_t +#define UID_T uint32_t +#define GID_T uint32_t +#define ALIGN_ULONG 4 +#define ALIGN_PID_T 4 +#define ALIGN_UID_T 4 +#define ALIGN_GID_T 4 +#define TYPE_ULONG ELF_T_WORD +#define TYPE_PID_T ELF_T_SWORD +#define TYPE_UID_T ELF_T_WORD +#define TYPE_GID_T ELF_T_WORD + +static const Ebl_Register_Location prstatus_regs[] = + { + { .offset = 0, .regno = 0, .count = 38, .bits = 32 } /* r0..r31 */ + }; +#define PRSTATUS_REGS_SIZE (38 * 4) + +#include "linux-core-note.c" diff --git a/backends/csky_init.c b/backends/csky_init.c new file mode 100644 index 0000000..fa991d0 --- /dev/null +++ b/backends/csky_init.c @@ -0,0 +1,64 @@ +/* Initialization of C-SKY specific backend library. + 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 <http://www.gnu.org/licenses/>. */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#define BACKEND csky_ +#define RELOC_PREFIX R_CKCORE_ +#include "libebl_CPU.h" + +/* This defines the common reloc hooks based on csky_reloc.def. */ +#include "common-reloc.c" + +const char * +csky_init (Elf *elf __attribute__ ((unused)), + GElf_Half machine __attribute__ ((unused)), + Ebl *eh, + size_t ehlen) +{ + /* Check whether the Elf_BH object has a sufficent size. */ + if (ehlen < sizeof (Ebl)) + return NULL; + + /* We handle it. */ + eh->name = "C-SKY"; + csky_init_reloc (eh); + HOOK (eh, reloc_simple_type); + HOOK (eh, register_info); + HOOK (eh, abi_cfi); + HOOK (eh, core_note); + HOOK (eh, set_initial_registers_tid); + HOOK (eh, machine_flag_check); + HOOK (eh, section_type_name); + + /* gcc/config/ #define DWARF_FRAME_REGISTERS. */ + eh->frame_nregs = 71; + + return MODVERSION; +} diff --git a/backends/csky_initreg.c b/backends/csky_initreg.c new file mode 100644 index 0000000..be2c252 --- /dev/null +++ b/backends/csky_initreg.c @@ -0,0 +1,85 @@ +/* Fetch live process registers from TID. C-SKY version. + 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 <http://www.gnu.org/licenses/>. */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include "system.h" +#include <assert.h> +#if defined __CSKY__ && defined __linux__ +# include <sys/uio.h> +# include <sys/procfs.h> +# include <sys/ptrace.h> +#endif + +#define BACKEND csky_ +#include "libebl_CPU.h" + +bool +csky_set_initial_registers_tid (pid_t tid __attribute__ ((unused)), + ebl_tid_registers_t *setfunc __attribute__ ((unused)), + void *arg __attribute__ ((unused))) +{ +#if !defined __CSKY__ || !defined __linux__ + return false; +#else /* __CSKY__ */ + struct pt_regs user_regs; + struct iovec iovec; + iovec.iov_base = &user_regs; + iovec.iov_len = sizeof (user_regs); + if (ptrace (PTRACE_GETREGSET, tid, NT_PRSTATUS, &iovec) != 0) + return false; + + Dwarf_Word dwarf_regs[71]; + + /* lr. */ + dwarf_regs[15] = user_regs.lr; + /* sp. */ + dwarf_regs[14] = user_regs.usp; + /* r0 ~ r13. */ + dwarf_regs[0] = user_regs.a0; + dwarf_regs[1] = user_regs.a1; + dwarf_regs[2] = user_regs.a2; + dwarf_regs[3] = user_regs.a3; + for (int i = 4; i < 14; i++) + dwarf_regs[i] = user_regs.regs[i - 4]; + /* r ~ r13. */ + for (int i = 16; i < 31; i++) + dwarf_regs[i] = user_regs.exregs[i - 16]; + /* tls. */ + dwarf_regs[31] = user_regs.tls; + /* hi. */ + dwarf_regs[34] = user_regs.rhi; + /* lo. */ + dwarf_regs[35] = user_regs.rlo; + /* pc. */ + dwarf_regs[70] = user_regs.pc; + + return setfunc (0, 71, dwarf_regs, arg); +#endif +} diff --git a/backends/csky_regs.c b/backends/csky_regs.c new file mode 100644 index 0000000..f4390ed --- /dev/null +++ b/backends/csky_regs.c @@ -0,0 +1,121 @@ +/* Register names and numbers for C-SKY DWARF. + 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 <http://www.gnu.org/licenses/>. */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <string.h> +#include <dwarf.h> + +#define BACKEND csky_ +#include "libebl_CPU.h" + +ssize_t +csky_register_info (Ebl *ebl __attribute__ ((unused)), + int regno, char *name, size_t namelen, + const char **prefix, const char **setname, + int *bits, int *type) +{ + if (name == NULL) + return 71; + + *prefix = ""; + *bits = 38; + *type = DW_ATE_signed; + *setname = "integer"; + + switch (regno) + { + case 0: + stpcpy (name, "tls"); + namelen = 3; + break; + + case 1: + stpcpy (name, "lr"); + namelen = 2; + break; + + case 2: + stpcpy (name, "pc"); + namelen = 2; + break; + + case 3: + stpcpy (name, "sr"); + namelen = 2; + break; + + case 4: + stpcpy (name, "usp"); + namelen = 2; + break; + + case 5 ... 14: + name[0] = 'r'; + name[1] = regno - 5 + '0'; + namelen = 2; + break; + + case 15 ... 24: + name[0] = 'r'; + name[1] = '1'; + name[2] = regno - 15 + '0'; + namelen = 3; + break; + + case 25 ... 34: + name[0] = 'r'; + name[1] = '2'; + name[2] = regno - 25 + '0'; + namelen = 3; + break; + + case 35: + stpcpy (name, "r31"); + namelen = 3; + break; + + case 36: + stpcpy (name, "hi"); + namelen = 2; + break; + + case 37: + stpcpy (name, "lo"); + namelen = 2; + break; + + default: + *setname = NULL; + return 0; + } + + name[namelen++] = '\0'; + return namelen; +} diff --git a/backends/csky_reloc.def b/backends/csky_reloc.def new file mode 100644 index 0000000..c3e6c14 --- /dev/null +++ b/backends/csky_reloc.def @@ -0,0 +1,85 @@ +/* List the relocation types for csky. -*- 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 <http://www.gnu.org/licenses/>. */ + +/* NAME, REL|EXEC|DYN */ + + +RELOC_TYPE (NONE, REL|EXEC|DYN) +RELOC_TYPE (ADDR32, REL|EXEC|DYN) +RELOC_TYPE (PCRELIMM8BY4, REL) +RELOC_TYPE (PCRELIMM11BY2, REL) +RELOC_TYPE (PCREL32, REL|DYN) +RELOC_TYPE (PCRELJSR_IMM11BY2, REL) +RELOC_TYPE (RELATIVE, EXEC|DYN) +RELOC_TYPE (COPY, EXEC|DYN) +RELOC_TYPE (GLOB_DAT, EXEC|DYN) +RELOC_TYPE (JUMP_SLOT, EXEC|DYN) +RELOC_TYPE (GOTOFF, REL) +RELOC_TYPE (GOTPC, REL) +RELOC_TYPE (GOT32, REL) +RELOC_TYPE (PLT32, REL) +RELOC_TYPE (ADDRGOT, REL) +RELOC_TYPE (ADDRPLT, REL) +RELOC_TYPE (PCREL_IMM26BY2, REL) +RELOC_TYPE (PCREL_IMM16BY2, REL) +RELOC_TYPE (PCREL_IMM16BY4, REL) +RELOC_TYPE (PCREL_IMM10BY2, REL) +RELOC_TYPE (PCREL_IMM10BY4, REL) +RELOC_TYPE (ADDR_HI16, REL|DYN) +RELOC_TYPE (ADDR_LO16, REL|DYN) +RELOC_TYPE (GOTPC_HI16, REL) +RELOC_TYPE (GOTPC_LO16, REL) +RELOC_TYPE (GOTOFF_HI16, REL) +RELOC_TYPE (GOTOFF_LO16, REL) +RELOC_TYPE (GOT12, REL) +RELOC_TYPE (GOT_HI16, REL) +RELOC_TYPE (GOT_LO16, REL) +RELOC_TYPE (PLT12, REL) +RELOC_TYPE (PLT_HI16, REL) +RELOC_TYPE (PLT_LO16, REL) +RELOC_TYPE (ADDRGOT_HI16, REL) +RELOC_TYPE (ADDRGOT_LO16, REL) +RELOC_TYPE (ADDRPLT_HI16, REL) +RELOC_TYPE (ADDRPLT_LO16, REL) +RELOC_TYPE (PCREL_JSR_IMM26BY2, REL|DYN) +RELOC_TYPE (TOFFSET_LO16, REL) +RELOC_TYPE (DOFFSET_LO16, REL) +RELOC_TYPE (PCREL_IMM18BY2, REL) +RELOC_TYPE (DOFFSET_IMM18, REL) +RELOC_TYPE (DOFFSET_IMM18BY2, REL) +RELOC_TYPE (DOFFSET_IMM18BY4, REL) +RELOC_TYPE (GOT_IMM18BY4, REL) +RELOC_TYPE (PLT_IMM18BY4, REL) +RELOC_TYPE (PCREL_IMM7BY4, REL) +RELOC_TYPE (TLS_LE32, REL) +RELOC_TYPE (TLS_IE32, REL) +RELOC_TYPE (TLS_GD32, REL) +RELOC_TYPE (TLS_LDM32, REL) +RELOC_TYPE (TLS_LDO32, REL) +RELOC_TYPE (TLS_DTPMOD32, EXEC|DYN) +RELOC_TYPE (TLS_DTPOFF32, EXEC|DYN) +RELOC_TYPE (TLS_TPOFF32, EXEC|DYN) diff --git a/backends/csky_symbol.c b/backends/csky_symbol.c new file mode 100644 index 0000000..ece8131 --- /dev/null +++ b/backends/csky_symbol.c @@ -0,0 +1,76 @@ +/* C-SKY 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 <http://www.gnu.org/licenses/>. */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <assert.h> +#include <elf.h> +#include <stddef.h> +#include <string.h> + +#define BACKEND csky_ +#include "libebl_CPU.h" + +/* Check for the simple reloc types. */ +Elf_Type +csky_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type, + int *addsub __attribute__ ((unused))) +{ + switch (type) + { + case R_CKCORE_ADDR32: + return ELF_T_WORD; + default: + return ELF_T_NUM; + } +} + +bool +csky_machine_flag_check (GElf_Word flags) +{ + switch (flags & EF_CSKY_ABIMASK) + { + case EF_CSKY_ABIV1: + case EF_CSKY_ABIV2: + return true; + default: + return false; + } +} + +const char * +csky_section_type_name (int type, + char *buf __attribute__ ((unused)), + size_t len __attribute__ ((unused))) +{ + if (type == SHT_CSKY_ATTRIBUTES) + return "CSKY_ATTRIBUTES"; + + return NULL; +} diff --git a/libebl/eblopenbackend.c b/libebl/eblopenbackend.c index d54b720..e229dbd 100644 --- a/libebl/eblopenbackend.c +++ b/libebl/eblopenbackend.c @@ -135,6 +135,7 @@ static const struct { "bpf", "elf_bpf", "bpf", 3, EM_BPF, 0, 0 }, { "riscv", "elf_riscv", "riscv", 5, EM_RISCV, ELFCLASS64, ELFDATA2LSB }, { "riscv", "elf_riscv", "riscv", 5, EM_RISCV, ELFCLASS32, ELFDATA2LSB }, + { "csky", "elf_csky", "csky", 4, EM_CSKY, ELFCLASS32, ELFDATA2LSB }, }; #define nmachines (sizeof (machines) / sizeof (machines[0])) diff --git a/src/elflint.c b/src/elflint.c index 810c8bd..edb466d 100644 --- a/src/elflint.c +++ b/src/elflint.c @@ -330,7 +330,7 @@ static const int valid_e_machine[] = EM_CRIS, EM_JAVELIN, EM_FIREPATH, EM_ZSP, EM_MMIX, EM_HUANY, EM_PRISM, 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_TILEGX, EM_TILEPRO, EM_AARCH64, EM_BPF, EM_RISCV, EM_CSKY }; #define nvalid_e_machine \ (sizeof (valid_e_machine) / sizeof (valid_e_machine[0])) -- 2.7.4 ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 1/2] libelf: Sync elf.h from glibc 2019-04-01 2:33 [PATCH 0/2] Add C-SKY support Mao Han 2019-04-01 2:33 ` [PATCH 2/2] Add backend support for C-SKY Mao Han @ 2019-04-01 2:33 ` Mao Han 2019-04-03 20:54 ` [PATCH 0/2] Add C-SKY support Mark Wielaard 2 siblings, 0 replies; 16+ messages in thread From: Mao Han @ 2019-04-01 2:33 UTC (permalink / raw) To: elfutils-devel; +Cc: Mao Han, ren_guo --- libelf/ChangeLog | 4 +++ libelf/elf.h | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 98 insertions(+), 2 deletions(-) diff --git a/libelf/ChangeLog b/libelf/ChangeLog index d9b7749..d3bdac3 100644 --- a/libelf/ChangeLog +++ b/libelf/ChangeLog @@ -1,3 +1,7 @@ +2019-04-01 Mao Han <han_mao@c-sky.com> + + * elf.h: Update from glibc. + 2019-03-07 Mark Wielaard <mark@klomp.org> * elf32_updatefile.c (updatemmap): Use posix_memalign instead of diff --git a/libelf/elf.h b/libelf/elf.h index 75043bc..01648bd 100644 --- a/libelf/elf.h +++ b/libelf/elf.h @@ -1,5 +1,5 @@ /* This file defines standard ELF types, structures, and macros. - Copyright (C) 1995-2018 Free Software Foundation, Inc. + Copyright (C) 1995-2019 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -360,8 +360,9 @@ typedef struct #define EM_RISCV 243 /* RISC-V */ #define EM_BPF 247 /* Linux BPF -- in-kernel virtual machine */ +#define EM_CSKY 252 /* C-SKY */ -#define EM_NUM 248 +#define EM_NUM 253 /* Old spellings/synonyms. */ @@ -808,6 +809,9 @@ typedef struct #define NT_ARM_SYSTEM_CALL 0x404 /* ARM system call number */ #define NT_ARM_SVE 0x405 /* ARM Scalable Vector Extension registers */ +#define NT_VMCOREDD 0x700 /* Vmcore Device Dump Note. */ +#define NT_MIPS_DSP 0x800 /* MIPS DSP ASE registers. */ +#define NT_MIPS_FP_MODE 0x801 /* MIPS floating-point mode. */ /* Legal values for the note segment descriptor types for object files. */ @@ -1214,6 +1218,9 @@ typedef struct #define AT_L3_CACHESIZE 46 #define AT_L3_CACHEGEOMETRY 47 +#define AT_MINSIGSTKSZ 51 /* Stack needed for signal delivery + (AArch64). */ + /* Note section contents. Each entry in the note section begins with a header of a fixed form. */ @@ -3015,6 +3022,81 @@ enum /* Keep this the last entry. */ #define R_ARM_NUM 256 +/* C-SKY */ +#define R_CKCORE_NONE 0 /* no reloc */ +#define R_CKCORE_ADDR32 1 /* direct 32 bit (S + A) */ +#define R_CKCORE_PCRELIMM8BY4 2 /* disp ((S + A - P) >> 2) & 0xff */ +#define R_CKCORE_PCRELIMM11BY2 3 /* disp ((S + A - P) >> 1) & 0x7ff */ +#define R_CKCORE_PCREL32 5 /* 32-bit rel (S + A - P) */ +#define R_CKCORE_PCRELJSR_IMM11BY2 6 /* disp ((S + A - P) >>1) & 0x7ff */ +#define R_CKCORE_RELATIVE 9 /* 32 bit adjust program base(B + A)*/ +#define R_CKCORE_COPY 10 /* 32 bit adjust by program base */ +#define R_CKCORE_GLOB_DAT 11 /* off between got and sym (S) */ +#define R_CKCORE_JUMP_SLOT 12 /* PLT entry (S) */ +#define R_CKCORE_GOTOFF 13 /* offset to GOT (S + A - GOT) */ +#define R_CKCORE_GOTPC 14 /* PC offset to GOT (GOT + A - P) */ +#define R_CKCORE_GOT32 15 /* 32 bit GOT entry (G) */ +#define R_CKCORE_PLT32 16 /* 32 bit PLT entry (G) */ +#define R_CKCORE_ADDRGOT 17 /* GOT entry in GLOB_DAT (GOT + G) */ +#define R_CKCORE_ADDRPLT 18 /* PLT entry in GLOB_DAT (GOT + G) */ +#define R_CKCORE_PCREL_IMM26BY2 19 /* ((S + A - P) >> 1) & 0x3ffffff */ +#define R_CKCORE_PCREL_IMM16BY2 20 /* disp ((S + A - P) >> 1) & 0xffff */ +#define R_CKCORE_PCREL_IMM16BY4 21 /* disp ((S + A - P) >> 2) & 0xffff */ +#define R_CKCORE_PCREL_IMM10BY2 22 /* disp ((S + A - P) >> 1) & 0x3ff */ +#define R_CKCORE_PCREL_IMM10BY4 23 /* disp ((S + A - P) >> 2) & 0x3ff */ +#define R_CKCORE_ADDR_HI16 24 /* high & low 16 bit ADDR */ + /* ((S + A) >> 16) & 0xffff */ +#define R_CKCORE_ADDR_LO16 25 /* (S + A) & 0xffff */ +#define R_CKCORE_GOTPC_HI16 26 /* high & low 16 bit GOTPC */ + /* ((GOT + A - P) >> 16) & 0xffff */ +#define R_CKCORE_GOTPC_LO16 27 /* (GOT + A - P) & 0xffff */ +#define R_CKCORE_GOTOFF_HI16 28 /* high & low 16 bit GOTOFF */ + /* ((S + A - GOT) >> 16) & 0xffff */ +#define R_CKCORE_GOTOFF_LO16 29 /* (S + A - GOT) & 0xffff */ +#define R_CKCORE_GOT12 30 /* 12 bit disp GOT entry (G) */ +#define R_CKCORE_GOT_HI16 31 /* high & low 16 bit GOT */ + /* (G >> 16) & 0xffff */ +#define R_CKCORE_GOT_LO16 32 /* (G & 0xffff) */ +#define R_CKCORE_PLT12 33 /* 12 bit disp PLT entry (G) */ +#define R_CKCORE_PLT_HI16 34 /* high & low 16 bit PLT */ + /* (G >> 16) & 0xffff */ +#define R_CKCORE_PLT_LO16 35 /* G & 0xffff */ +#define R_CKCORE_ADDRGOT_HI16 36 /* high & low 16 bit ADDRGOT */ + /* (GOT + G * 4) & 0xffff */ +#define R_CKCORE_ADDRGOT_LO16 37 /* (GOT + G * 4) & 0xffff */ +#define R_CKCORE_ADDRPLT_HI16 38 /* high & low 16 bit ADDRPLT */ + /* ((GOT + G * 4) >> 16) & 0xFFFF */ +#define R_CKCORE_ADDRPLT_LO16 39 /* (GOT+G*4) & 0xffff */ +#define R_CKCORE_PCREL_JSR_IMM26BY2 40 /* disp ((S+A-P) >>1) & x3ffffff */ +#define R_CKCORE_TOFFSET_LO16 41 /* (S+A-BTEXT) & 0xffff */ +#define R_CKCORE_DOFFSET_LO16 42 /* (S+A-BTEXT) & 0xffff */ +#define R_CKCORE_PCREL_IMM18BY2 43 /* disp ((S+A-P) >>1) & 0x3ffff */ +#define R_CKCORE_DOFFSET_IMM18 44 /* disp (S+A-BDATA) & 0x3ffff */ +#define R_CKCORE_DOFFSET_IMM18BY2 45 /* disp ((S+A-BDATA)>>1) & 0x3ffff */ +#define R_CKCORE_DOFFSET_IMM18BY4 46 /* disp ((S+A-BDATA)>>2) & 0x3ffff */ +#define R_CKCORE_GOT_IMM18BY4 48 /* disp (G >> 2) */ +#define R_CKCORE_PLT_IMM18BY4 49 /* disp (G >> 2) */ +#define R_CKCORE_PCREL_IMM7BY4 50 /* disp ((S+A-P) >>2) & 0x7f */ +#define R_CKCORE_TLS_LE32 51 /* 32 bit offset to TLS block */ +#define R_CKCORE_TLS_IE32 52 +#define R_CKCORE_TLS_GD32 53 +#define R_CKCORE_TLS_LDM32 54 +#define R_CKCORE_TLS_LDO32 55 +#define R_CKCORE_TLS_DTPMOD32 56 +#define R_CKCORE_TLS_DTPOFF32 57 +#define R_CKCORE_TLS_TPOFF32 58 + +/* C-SKY elf header definition. */ +#define EF_CSKY_ABIMASK 0XF0000000 +#define EF_CSKY_OTHER 0X0FFF0000 +#define EF_CSKY_PROCESSOR 0X0000FFFF + +#define EF_CSKY_ABIV1 0X10000000 +#define EF_CSKY_ABIV2 0X20000000 + +/* C-SKY attributes section. */ +#define SHT_CSKY_ATTRIBUTES (SHT_LOPROC + 1) + /* IA-64 specific declarations. */ /* Processor specific flags for the Ehdr e_flags field. */ @@ -3915,6 +3997,16 @@ enum #define R_METAG_TLS_LE_HI16 60 #define R_METAG_TLS_LE_LO16 61 +/* NDS32 relocations. */ +#define R_NDS32_NONE 0 +#define R_NDS32_32_RELA 20 +#define R_NDS32_COPY 39 +#define R_NDS32_GLOB_DAT 40 +#define R_NDS32_JMP_SLOT 41 +#define R_NDS32_RELATIVE 42 +#define R_NDS32_TLS_TPOFF 102 +#define R_NDS32_TLS_DESC 119 + __END_DECLS #endif /* elf.h */ -- 2.7.4 ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 0/2] Add C-SKY support 2019-04-01 2:33 [PATCH 0/2] Add C-SKY support Mao Han 2019-04-01 2:33 ` [PATCH 2/2] Add backend support for C-SKY Mao Han 2019-04-01 2:33 ` [PATCH 1/2] libelf: Sync elf.h from glibc Mao Han @ 2019-04-03 20:54 ` Mark Wielaard 2019-04-04 6:19 ` Mao Han 2 siblings, 1 reply; 16+ messages in thread From: Mark Wielaard @ 2019-04-03 20:54 UTC (permalink / raw) To: Mao Han; +Cc: elfutils-devel, ren_guo Hi, On Mon, Apr 01, 2019 at 10:31:55AM +0800, Mao Han wrote: > This patch add backend support for C-SKY architecture. Thanks. I don't know anything about the C-SKY architecture. Do you have an URL to the ELF/DWARF supplemental spec that describes the ELF structures and DWARF register numbers C-SKY uses? It would be good to have that in the commit message and/or in a comment in the backend. In general please read the CONTRIBUTING file and add a Signed-off-by line if you agree with and can contribute the patch under the appropriate licenses. Please also add a copyright line to the new files. > Tested on X86 and got no regression. > Also tested on C-SKY qemu. I didn't find any easy way to do the cross test, > so I modified the test script to run the test suite with ssh, some testcases > fail due to the script modification. Does qemu support full system or user-mode only C-SKY? > FAIL: run-exprlocs-self.sh > ========================== > > /home/vmh/elfutilswk/tests/varlocs: dwarf_getlocation_attr for addr: .debug_addr section missing > *** failure in /home/vmh/elfutilswk/tests/varlocs --exprlocs -e /home/vmh/elfutilswk/src/readelf > FAIL run-exprlocs-self.sh (exit status: 1) This is somewhat surprising. Do you build with -gdwarf-5? If you could make the /home/vmh/elfutilswk/src/readelf binary available somewhere we could investigate what goes on. > FAIL: run-native-test.sh > ======================== > > allregs: 23064: No such file or directory > FAIL run-native-test.sh (exit status: 1) This is probably because of the script modifications. The test cannot find the running process. > FAIL: run-dwarf-getmacros.sh > ============================ > > --- dwarf-getmacros.out 2019-02-19 19:28:29.405840052 +0800 > +++ /tmp/123 2019-02-19 19:28:27.789032052 +0800 > @@ -1 +1,4 @@ > -invalid opcode > +opcode 255 with 0 arguments > +file /home/petr/proj/elfutils/master/elfutils/x.c > + FOO 0 > +/file > FAIL run-dwarf-getmacros.sh (exit status: 1) This is again surprising. I think something went wrong invoking the test. If you look at tests/run-dwarf-getmacros.sh you'll see that it runs the last testcase twice. Once with 2 and once with 3 arguments. The third argument is the empty string (but could really be anything). Maybe the empty string was lost somehow? > SKIP: run-backtrace-data.sh > =========================== > > /home/vmh/elfutilswk/tests/backtrace-data: x86_64 linux only test > SKIP run-backtrace-data.sh (exit status: 77) > > SKIP: run-backtrace-native-biarch.sh > ==================================== > > biarch testing disabled > SKIP run-backtrace-native-biarch.sh (exit status: 77) > > SKIP: run-backtrace-native-core.sh > ================================== > > Aborted > No core.12362 file generated > SKIP run-backtrace-native-core.sh (exit status: 77) > > SKIP: run-backtrace-native-core-biarch.sh > ========================================= > > biarch testing disabled > SKIP run-backtrace-native-core-biarch.sh (exit status: 77) I haven't looked at the code yet, so maybe none of the backtrace tests would work even if you could run in "full system mode". If you do have a way to generate a C-SKY core file it would be interesting to see if you can get a backtrace from it using eu-stack. > FAIL: run-deleted.sh > ==================== > > PID 12587 - process > TID 12587: > #0 0x2ab79648 sleep > #1 0x2ab79648 sleep > #2 0x2aace6a4 > /home/vmh/elfutilswk/src/stack: dwfl_thread_getframes tid 12587 at 0x2aace6a3 in /home/vmh/elfutilswk/tests/test-25076/deleted-lib.so: Callback returned failure > ./run-deleted.sh: line 38: kill: (12587) - No such process > FAIL run-deleted.sh (exit status: 1) This is again most likely because of script changes. The test cannot find the running process. Cheers, Mark ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 0/2] Add C-SKY support 2019-04-03 20:54 ` [PATCH 0/2] Add C-SKY support Mark Wielaard @ 2019-04-04 6:19 ` Mao Han 2019-04-04 6:27 ` Mao Han 0 siblings, 1 reply; 16+ messages in thread From: Mao Han @ 2019-04-04 6:19 UTC (permalink / raw) To: Mark Wielaard; +Cc: ren_guo, elfutils-devel Hi, On Wed, Apr 03, 2019 at 10:54:11PM +0200, Mark Wielaard wrote: > Hi, > > On Mon, Apr 01, 2019 at 10:31:55AM +0800, Mao Han wrote: > > This patch add backend support for C-SKY architecture. > > Thanks. I don't know anything about the C-SKY architecture. Do you > have an URL to the ELF/DWARF supplemental spec that describes the ELF > structures and DWARF register numbers C-SKY uses? It would be good to > have that in the commit message and/or in a comment in the backend. ELF structures can be found inside the ABI manual. CSKY V2 ABI manual: https://github.com/c-sky/csky-doc/blob/master/C-SKY_V2_CPU_Applications_Binary_I +nterface_Standards_Manual.pdf CSKY architecture user guide: https://github.com/c-sky/csky-doc/blob/master/CSKY%20Architecture%20user_guide.p +df The DWARF part of the document is out of date. GCC source code can be used as reference: const int csky_dbx_regno[FIRST_PSEUDO_REGISTER] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, -1, -1, 36, 37, 35, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, -1, -1, 72 }; The number in the array is the DWARF register numbers, the corresponding register can be found in the corresponding below. #define FIXED_REGISTERS \ /* r0 r1 r2 r3 r4 r5 r6 r7 */ \ { 0, 0, 0, 0, 0, 0, 0, 0, \ /* r8 r9 r10 r11 r12 r13 r14 r15 */ \ 0, 0, 0, 0, 0, 0, 1, 0, \ /* r16 r17 r18 r19 r20 r21 r22 r23 */ \ 0, 0, 0, 0, 0, 0, 0, 0, \ /* r24 r25 r26 r27 r28 r29 r30 tls */ \ 0, 0, 1, 1, 1, 1, 1, 1, \ /* reserve c hi lo */ \ 1, 1, 0, 0, \ /* reserved */ \ 1, 1, 1, 1, 1, 1, 1, 1, \ 1, 1, 1, 1, 1, 1, 1, 1, \ /* vr0 vr1 vr2 vr3 vr4 vr5 vr6 vr7 */ \ 0, 0, 0, 0, 0, 0, 0, 0, \ /* vr8 vr9 vr10 vr11 vr12 vr13 vr14 vr15 */ \ 0, 0, 0, 0, 0, 0, 0, 0 , \ /* reserved */ \ 1, 1, \ /* epc */ \ 1 \ } These code come from gcc/config/csky/csky.c and gcc/config/csky/csky.h: https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=gcc/config/csky/csky.c;h=e4ac93323c0 +287d8d3d8191d51260983490fcac1;hb=73c7feb34d49e52ca5b6c2342cda882a9b06a036 > In general please read the CONTRIBUTING file and add a Signed-off-by > line if you agree with and can contribute the patch under the > appropriate licenses. Please also add a copyright line to the new > files. > Ok, I'll add the Signed-off-by line and the copyright. > Does qemu support full system or user-mode only C-SKY? > Yes, we have support for both system-mode and user-mode. Our linux system is available at: https://gitlab.com/c-sky/buildroot Our linux ci enviroment: https://gitlab.com/c-sky/buildroot/-/jobs/187862406 > > FAIL: run-exprlocs-self.sh > > ========================== > > > > /home/vmh/elfutilswk/tests/varlocs: dwarf_getlocation_attr for addr: +.debug_addr section missing > > *** failure in /home/vmh/elfutilswk/tests/varlocs --exprlocs -e +/home/vmh/elfutilswk/src/readelf > > FAIL run-exprlocs-self.sh (exit status: 1) > > This is somewhat surprising. Do you build with -gdwarf-5? If you > could make the /home/vmh/elfutilswk/src/readelf binary available > somewhere we could investigate what goes on. > The default compile option is dwarf 4. I'v upload the binary to https://github.com/c-sky/test-result/blob/master/elfutils/readelf As I used the non-upstream version gcc to do the test, the machine code is 39(EM_RCE) not 252(EM_CSKY). > > > > biarch testing disabled > > SKIP run-backtrace-native-core-biarch.sh (exit status: 77) > > I haven't looked at the code yet, so maybe none of the backtrace tests > would work even if you could run in "full system mode". If you do have > a way to generate a C-SKY core file it would be interesting to see if > you can get a backtrace from it using eu-stack. > Ok, I'll try if I can get a backtrace with C-SKY core file. Thanks, Mao Han ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 0/2] Add C-SKY support 2019-04-04 6:19 ` Mao Han @ 2019-04-04 6:27 ` Mao Han 0 siblings, 0 replies; 16+ messages in thread From: Mao Han @ 2019-04-04 6:27 UTC (permalink / raw) To: Mark Wielaard; +Cc: elfutils-devel, ren_guo Hi, FIX NEWLINE IN LAST EMAIL On Wed, Apr 03, 2019 at 10:54:11PM +0200, Mark Wielaard wrote: > Hi, > > On Mon, Apr 01, 2019 at 10:31:55AM +0800, Mao Han wrote: > > This patch add backend support for C-SKY architecture. > > Thanks. I don't know anything about the C-SKY architecture. Do you > have an URL to the ELF/DWARF supplemental spec that describes the ELF > structures and DWARF register numbers C-SKY uses? It would be good to > have that in the commit message and/or in a comment in the backend. ELF structures can be found inside the ABI manual. CSKY V2 ABI manual: https://github.com/c-sky/csky-doc/blob/master/C-SKY_V2_CPU_Applications_Binary_Interface_Standards_Manual.pdf CSKY architecture user guide: https://github.com/c-sky/csky-doc/blob/master/CSKY%20Architecture%20user_guide.pdf The DWARF part of the document is out of date. GCC source code can be used as reference: const int csky_dbx_regno[FIRST_PSEUDO_REGISTER] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, -1, -1, 36, 37, 35, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, -1, -1, 72 }; The number in the array is the DWARF register numbers, the corresponding register can be found in the corresponding below. #define FIXED_REGISTERS \ /* r0 r1 r2 r3 r4 r5 r6 r7 */ \ { 0, 0, 0, 0, 0, 0, 0, 0, \ /* r8 r9 r10 r11 r12 r13 r14 r15 */ \ 0, 0, 0, 0, 0, 0, 1, 0, \ /* r16 r17 r18 r19 r20 r21 r22 r23 */ \ 0, 0, 0, 0, 0, 0, 0, 0, \ /* r24 r25 r26 r27 r28 r29 r30 tls */ \ 0, 0, 1, 1, 1, 1, 1, 1, \ /* reserve c hi lo */ \ 1, 1, 0, 0, \ /* reserved */ \ 1, 1, 1, 1, 1, 1, 1, 1, \ 1, 1, 1, 1, 1, 1, 1, 1, \ /* vr0 vr1 vr2 vr3 vr4 vr5 vr6 vr7 */ \ 0, 0, 0, 0, 0, 0, 0, 0, \ /* vr8 vr9 vr10 vr11 vr12 vr13 vr14 vr15 */ \ 0, 0, 0, 0, 0, 0, 0, 0 , \ /* reserved */ \ 1, 1, \ /* epc */ \ 1 \ } These code come from gcc/config/csky/csky.c and gcc/config/csky/csky.h: https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=gcc/config/csky/csky.c;h=e4ac93323c0287d8d3d8191d51260983490fcac1;hb=73c7feb34d49e52ca5b6c2342cda882a9b06a036 > In general please read the CONTRIBUTING file and add a Signed-off-by > line if you agree with and can contribute the patch under the > appropriate licenses. Please also add a copyright line to the new > files. > Ok, I'll add the Signed-off-by line and the copyright. > Does qemu support full system or user-mode only C-SKY? > Yes, we have support for both system-mode and user-mode. Our linux system is available at: https://gitlab.com/c-sky/buildroot Our linux ci enviroment: https://gitlab.com/c-sky/buildroot/-/jobs/187862406 > > FAIL: run-exprlocs-self.sh > > ========================== > > > > /home/vmh/elfutilswk/tests/varlocs: dwarf_getlocation_attr for addr: .debug_addr section missing > > *** failure in /home/vmh/elfutilswk/tests/varlocs --exprlocs -e /home/vmh/elfutilswk/src/readelf > > FAIL run-exprlocs-self.sh (exit status: 1) > > This is somewhat surprising. Do you build with -gdwarf-5? If you > could make the /home/vmh/elfutilswk/src/readelf binary available > somewhere we could investigate what goes on. > The default compile option is dwarf 4. I'v upload the binary to https://github.com/c-sky/test-result/blob/master/elfutils/readelf As I used the non-upstream version gcc to do the test, the machine code is 39(EM_RCE) not 252(EM_CSKY). > > > > biarch testing disabled > > SKIP run-backtrace-native-core-biarch.sh (exit status: 77) > > I haven't looked at the code yet, so maybe none of the backtrace tests > would work even if you could run in "full system mode". If you do have > a way to generate a C-SKY core file it would be interesting to see if > you can get a backtrace from it using eu-stack. > Ok, I'll try if I can get a backtrace with C-SKY core file. Thanks, Mao Han ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 1/2] libelf: Sync elf.h from glibc. @ 2020-08-28 22:42 Mark Wielaard 2020-09-07 7:29 ` Mark Wielaard 0 siblings, 1 reply; 16+ messages in thread From: Mark Wielaard @ 2020-08-28 22:42 UTC (permalink / raw) To: elfutils-devel; +Cc: Mark Wielaard Gets us DT_AARCH64_BTI_PLT and DT_AARCH64_PAC_PLT. Signed-off-by: Mark Wielaard <mark@klomp.org> --- libelf/ChangeLog | 4 ++++ libelf/elf.h | 2 ++ 2 files changed, 6 insertions(+) diff --git a/libelf/ChangeLog b/libelf/ChangeLog index 77044c1c..a3f15883 100644 --- a/libelf/ChangeLog +++ b/libelf/ChangeLog @@ -1,3 +1,7 @@ +2020-08-28 Mark Wielaard <mark@klomp.org> + + * elf.h: Update from glibc. + 2020-08-19 Mark Wielaard <mark@klomp.org> * elf32_updatenull.c (updatenull_wrlock): Fixup the sh_addralign diff --git a/libelf/elf.h b/libelf/elf.h index 197b557d..ff9f1dad 100644 --- a/libelf/elf.h +++ b/libelf/elf.h @@ -2875,6 +2875,8 @@ enum #define R_AARCH64_IRELATIVE 1032 /* STT_GNU_IFUNC relocation. */ /* AArch64 specific values for the Dyn d_tag field. */ +#define DT_AARCH64_BTI_PLT (DT_LOPROC + 1) +#define DT_AARCH64_PAC_PLT (DT_LOPROC + 3) #define DT_AARCH64_VARIANT_PCS (DT_LOPROC + 5) #define DT_AARCH64_NUM 6 -- 2.18.4 ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 1/2] libelf: Sync elf.h from glibc. 2020-08-28 22:42 [PATCH 1/2] libelf: Sync elf.h from glibc Mark Wielaard @ 2020-09-07 7:29 ` Mark Wielaard 0 siblings, 0 replies; 16+ messages in thread From: Mark Wielaard @ 2020-09-07 7:29 UTC (permalink / raw) To: elfutils-devel On Sat, 2020-08-29 at 00:42 +0200, Mark Wielaard wrote: > Gets us DT_AARCH64_BTI_PLT and DT_AARCH64_PAC_PLT. Pushed. ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 1/2] libelf: Sync elf.h from glibc. @ 2020-12-12 22:38 Mark Wielaard 2020-12-16 10:44 ` Dmitry V. Levin 0 siblings, 1 reply; 16+ messages in thread From: Mark Wielaard @ 2020-12-12 22:38 UTC (permalink / raw) To: elfutils-devel; +Cc: Mark Wielaard Adds SHF_GNU_RETAIN. Signed-off-by: Mark Wielaard <mark@klomp.org> --- libelf/ChangeLog | 4 ++++ libelf/elf.h | 13 +++++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/libelf/ChangeLog b/libelf/ChangeLog index 41727fbd..2d8bbe5d 100644 --- a/libelf/ChangeLog +++ b/libelf/ChangeLog @@ -1,3 +1,7 @@ +2020-12-12 Mark Wielaard <mark@klomp.org> + + * elf.h: Update from glibc. + 2020-12-12 Dmitry V. Levin <ldv@altlinux.org> * common.h: Fix spelling typo in comment. diff --git a/libelf/elf.h b/libelf/elf.h index 6439c1a4..8e3e618f 100644 --- a/libelf/elf.h +++ b/libelf/elf.h @@ -318,7 +318,7 @@ typedef struct /* reserved 184 */ #define EM_AVR32 185 /* Amtel 32-bit microprocessor */ #define EM_STM8 186 /* STMicroelectronics STM8 */ -#define EM_TILE64 187 /* Tileta TILE64 */ +#define EM_TILE64 187 /* Tilera TILE64 */ #define EM_TILEPRO 188 /* Tilera TILEPro */ #define EM_MICROBLAZE 189 /* Xilinx MicroBlaze */ #define EM_CUDA 190 /* NVIDIA CUDA */ @@ -441,7 +441,7 @@ typedef struct #define SHT_FINI_ARRAY 15 /* Array of destructors */ #define SHT_PREINIT_ARRAY 16 /* Array of pre-constructors */ #define SHT_GROUP 17 /* Section group */ -#define SHT_SYMTAB_SHNDX 18 /* Extended section indeces */ +#define SHT_SYMTAB_SHNDX 18 /* Extended section indices */ #define SHT_NUM 19 /* Number of defined types. */ #define SHT_LOOS 0x60000000 /* Start OS-specific. */ #define SHT_GNU_ATTRIBUTES 0x6ffffff5 /* Object attributes. */ @@ -478,6 +478,7 @@ typedef struct #define SHF_COMPRESSED (1 << 11) /* Section with compressed data. */ #define SHF_MASKOS 0x0ff00000 /* OS-specific. */ #define SHF_MASKPROC 0xf0000000 /* Processor-specific */ +#define SHF_GNU_RETAIN (1 << 21) /* Not to be GCed by linker. */ #define SHF_ORDERED (1 << 30) /* Special ordering requirement (Solaris). */ #define SHF_EXCLUDE (1U << 31) /* Section is excluded unless @@ -1046,7 +1047,7 @@ typedef struct #define VER_NDX_LORESERVE 0xff00 /* Beginning of reserved entries. */ #define VER_NDX_ELIMINATE 0xff01 /* Symbol is to be eliminated. */ -/* Auxialiary version information. */ +/* Auxiliary version information. */ typedef struct { @@ -2139,9 +2140,9 @@ enum #define EFA_PARISC_1_1 0x0210 /* PA-RISC 1.1 big-endian. */ #define EFA_PARISC_2_0 0x0214 /* PA-RISC 2.0 big-endian. */ -/* Additional section indeces. */ +/* Additional section indices. */ -#define SHN_PARISC_ANSI_COMMON 0xff00 /* Section for tenatively declared +#define SHN_PARISC_ANSI_COMMON 0xff00 /* Section for tentatively declared symbols in ANSI C. */ #define SHN_PARISC_HUGE_COMMON 0xff01 /* Common blocks in huge model. */ @@ -3970,7 +3971,7 @@ enum #define R_METAG_RELBRANCH 4 #define R_METAG_GETSETOFF 5 -/* Backward compatability */ +/* Backward compatibility */ #define R_METAG_REG32OP1 6 #define R_METAG_REG32OP2 7 #define R_METAG_REG32OP3 8 -- 2.20.1 ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 1/2] libelf: Sync elf.h from glibc. 2020-12-12 22:38 Mark Wielaard @ 2020-12-16 10:44 ` Dmitry V. Levin 2020-12-16 18:52 ` Mark Wielaard 0 siblings, 1 reply; 16+ messages in thread From: Dmitry V. Levin @ 2020-12-16 10:44 UTC (permalink / raw) To: elfutils-devel On Sat, Dec 12, 2020 at 11:38:54PM +0100, Mark Wielaard wrote: > Adds SHF_GNU_RETAIN. This is obviously OK. -- ldv ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 1/2] libelf: Sync elf.h from glibc. 2020-12-16 10:44 ` Dmitry V. Levin @ 2020-12-16 18:52 ` Mark Wielaard 0 siblings, 0 replies; 16+ messages in thread From: Mark Wielaard @ 2020-12-16 18:52 UTC (permalink / raw) To: Dmitry V. Levin; +Cc: elfutils-devel On Wed, Dec 16, 2020 at 01:44:44PM +0300, Dmitry V. Levin wrote: > On Sat, Dec 12, 2020 at 11:38:54PM +0100, Mark Wielaard wrote: > > Adds SHF_GNU_RETAIN. > > This is obviously OK. Thanks, pushed. ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 1/2] libelf: Sync elf.h from glibc. @ 2023-04-01 6:43 Youling Tang 2023-04-06 22:23 ` Mark Wielaard 0 siblings, 1 reply; 16+ messages in thread From: Youling Tang @ 2023-04-01 6:43 UTC (permalink / raw) To: elfutils-devel Adds R_LARCH_*. Signed-off-by: Youling Tang <tangyouling@loongson.cn> --- libelf/ChangeLog | 4 ++++ libelf/elf.h | 42 +++++++++++++++++++++++++++++++++++++++++- 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/libelf/ChangeLog b/libelf/ChangeLog index 8cc3c53c..1d5178ca 100644 --- a/libelf/ChangeLog +++ b/libelf/ChangeLog @@ -1,3 +1,7 @@ +2023-04-01 Youling Tang <tangyouling@loongson.cn> + + * elf.h: Update from glibc. + 2023-03-03 Mark Wielaard <mark@klomp.org> * libelf.h: Define ELFCOMPRESS_ZSTD if undefined. diff --git a/libelf/elf.h b/libelf/elf.h index da41bad3..4bc0e429 100644 --- a/libelf/elf.h +++ b/libelf/elf.h @@ -1,5 +1,5 @@ /* This file defines standard ELF types, structures, and macros. - Copyright (C) 1995-2022 Free Software Foundation, Inc. + Copyright (C) 1995-2023 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -4159,6 +4159,46 @@ enum #define R_LARCH_GNU_VTINHERIT 57 #define R_LARCH_GNU_VTENTRY 58 +/* reserved 59-63 */ + +#define R_LARCH_B16 64 +#define R_LARCH_B21 65 +#define R_LARCH_B26 66 +#define R_LARCH_ABS_HI20 67 +#define R_LARCH_ABS_LO12 68 +#define R_LARCH_ABS64_LO20 69 +#define R_LARCH_ABS64_HI12 70 +#define R_LARCH_PCALA_HI20 71 +#define R_LARCH_PCALA_LO12 72 +#define R_LARCH_PCALA64_LO20 73 +#define R_LARCH_PCALA64_HI12 74 +#define R_LARCH_GOT_PC_HI20 75 +#define R_LARCH_GOT_PC_LO12 76 +#define R_LARCH_GOT64_PC_LO20 77 +#define R_LARCH_GOT64_PC_HI12 78 +#define R_LARCH_GOT_HI20 79 +#define R_LARCH_GOT_LO12 80 +#define R_LARCH_GOT64_LO20 81 +#define R_LARCH_GOT64_HI12 82 +#define R_LARCH_TLS_LE_HI20 83 +#define R_LARCH_TLS_LE_LO12 84 +#define R_LARCH_TLS_LE64_LO20 85 +#define R_LARCH_TLS_LE64_HI12 86 +#define R_LARCH_TLS_IE_PC_HI20 87 +#define R_LARCH_TLS_IE_PC_LO12 88 +#define R_LARCH_TLS_IE64_PC_LO20 89 +#define R_LARCH_TLS_IE64_PC_HI12 90 +#define R_LARCH_TLS_IE_HI20 91 +#define R_LARCH_TLS_IE_LO12 92 +#define R_LARCH_TLS_IE64_LO20 93 +#define R_LARCH_TLS_IE64_HI12 94 +#define R_LARCH_TLS_LD_PC_HI20 95 +#define R_LARCH_TLS_LD_HI20 96 +#define R_LARCH_TLS_GD_PC_HI20 97 +#define R_LARCH_TLS_GD_HI20 98 +#define R_LARCH_32_PCREL 99 +#define R_LARCH_RELAX 100 + /* ARC specific declarations. */ /* Processor specific flags for the Ehdr e_flags field. */ -- 2.37.1 ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 1/2] libelf: Sync elf.h from glibc. 2023-04-01 6:43 Youling Tang @ 2023-04-06 22:23 ` Mark Wielaard 0 siblings, 0 replies; 16+ messages in thread From: Mark Wielaard @ 2023-04-06 22:23 UTC (permalink / raw) To: Youling Tang; +Cc: elfutils-devel On Sat, Apr 01, 2023 at 02:43:43PM +0800, Youling Tang wrote: > Adds R_LARCH_*. Thanks, pushed. ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 1/2] libelf: Sync elf.h from Glibc @ 2023-08-29 13:14 Xi Ruoyao 2023-08-29 13:23 ` Mark Wielaard 0 siblings, 1 reply; 16+ messages in thread From: Xi Ruoyao @ 2023-08-29 13:14 UTC (permalink / raw) To: elfutils-devel; +Cc: Youling Tang, Mark Wielaard, Xi Ruoyao Adds new LoongArch relocations. * elf.h: Update from glibc. Signed-off-by: Xi Ruoyao <xry111@xry111.site> --- libelf/elf.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/libelf/elf.h b/libelf/elf.h index 89fc8021..9c51073f 100644 --- a/libelf/elf.h +++ b/libelf/elf.h @@ -4205,6 +4205,15 @@ enum #define R_LARCH_TLS_GD_HI20 98 #define R_LARCH_32_PCREL 99 #define R_LARCH_RELAX 100 +#define R_LARCH_DELETE 101 +#define R_LARCH_ALIGN 102 +#define R_LARCH_PCREL20_S2 103 +#define R_LARCH_CFA 104 +#define R_LARCH_ADD6 105 +#define R_LARCH_SUB6 106 +#define R_LARCH_ADD_ULEB128 107 +#define R_LARCH_SUB_ULEB128 108 +#define R_LARCH_64_PCREL 109 /* ARC specific declarations. */ -- 2.42.0 ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 1/2] libelf: Sync elf.h from Glibc 2023-08-29 13:14 [PATCH 1/2] libelf: Sync elf.h from Glibc Xi Ruoyao @ 2023-08-29 13:23 ` Mark Wielaard 0 siblings, 0 replies; 16+ messages in thread From: Mark Wielaard @ 2023-08-29 13:23 UTC (permalink / raw) To: Xi Ruoyao, elfutils-devel; +Cc: Youling Tang On Tue, 2023-08-29 at 21:14 +0800, Xi Ruoyao via Elfutils-devel wrote: > Adds new LoongArch relocations. > > * elf.h: Update from glibc. Thanks, matches current glibc elf/elf.h. Pushed, Mark ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 0/2] Update LoongArch relocations for psABI v2.30 @ 2024-02-23 4:47 Xi Ruoyao 2024-02-23 4:47 ` [PATCH 1/2] libelf: Sync elf.h from glibc Xi Ruoyao 0 siblings, 1 reply; 16+ messages in thread From: Xi Ruoyao @ 2024-02-23 4:47 UTC (permalink / raw) To: elfutils-devel Cc: Mark Wielaard, WANG Xuerui, Jinyang He, Youling Tang, Xi Ruoyao LoongArch psABI v2.30 has introduced 17 new reloc types for TLS descriptor, TLS LE relaxation, and medium code model function call. Add them to elfutils. Tested on loongarch64-linux-gnu with Binutils-2.42 and GCC 14 (trunk). Xi Ruoyao (2): libelf: Sync elf.h from glibc backends: Update list of LoongArch relocations backends/loongarch_reloc.def | 17 +++++++++++++++++ libelf/elf.h | 31 ++++++++++++++++++++++++++++++- 2 files changed, 47 insertions(+), 1 deletion(-) -- 2.43.2 ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 1/2] libelf: Sync elf.h from glibc 2024-02-23 4:47 [PATCH 0/2] Update LoongArch relocations for psABI v2.30 Xi Ruoyao @ 2024-02-23 4:47 ` Xi Ruoyao 0 siblings, 0 replies; 16+ messages in thread From: Xi Ruoyao @ 2024-02-23 4:47 UTC (permalink / raw) To: elfutils-devel Cc: Mark Wielaard, WANG Xuerui, Jinyang He, Youling Tang, Xi Ruoyao Adds new LoongArch relocations. Signed-off-by: Xi Ruoyao <xry111@xry111.site> --- libelf/elf.h | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/libelf/elf.h b/libelf/elf.h index 7b4a8fe4..f2206e5c 100644 --- a/libelf/elf.h +++ b/libelf/elf.h @@ -1,5 +1,5 @@ /* This file defines standard ELF types, structures, and macros. - Copyright (C) 1995-2023 Free Software Foundation, Inc. + Copyright (C) 1995-2024 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -791,9 +791,12 @@ typedef struct Register */ #define NT_PPC_PKEY 0x110 /* Memory Protection Keys registers. */ +#define NT_PPC_DEXCR 0x111 /* PowerPC DEXCR registers. */ +#define NT_PPC_HASHKEYR 0x112 /* PowerPC HASHKEYR register. */ #define NT_386_TLS 0x200 /* i386 TLS slots (struct user_desc) */ #define NT_386_IOPERM 0x201 /* x86 io permission bitmap (1=deny) */ #define NT_X86_XSTATE 0x202 /* x86 extended state using xsave */ +#define NT_X86_SHSTK 0x204 /* x86 SHSTK state */ #define NT_S390_HIGH_GPRS 0x300 /* s390 upper register halves */ #define NT_S390_TIMER 0x301 /* s390 timer register */ #define NT_S390_TODCMP 0x302 /* s390 TOD clock comparator register */ @@ -832,6 +835,8 @@ typedef struct #define NT_MIPS_DSP 0x800 /* MIPS DSP ASE registers. */ #define NT_MIPS_FP_MODE 0x801 /* MIPS floating-point mode. */ #define NT_MIPS_MSA 0x802 /* MIPS SIMD registers. */ +#define NT_RISCV_CSR 0x900 /* RISC-V Control and Status Registers */ +#define NT_RISCV_VECTOR 0x901 /* RISC-V vector registers */ #define NT_LOONGARCH_CPUCFG 0xa00 /* LoongArch CPU config registers. */ #define NT_LOONGARCH_CSR 0xa01 /* LoongArch control and status registers. */ @@ -841,6 +846,8 @@ typedef struct SIMD Extension registers. */ #define NT_LOONGARCH_LBT 0xa04 /* LoongArch Loongson Binary Translation registers. */ +#define NT_LOONGARCH_HW_BREAK 0xa05 /* LoongArch hardware breakpoint registers */ +#define NT_LOONGARCH_HW_WATCH 0xa06 /* LoongArch hardware watchpoint registers */ /* Legal values for the note segment descriptor types for object files. */ @@ -3632,6 +3639,11 @@ enum /* x86-64 sh_type values. */ #define SHT_X86_64_UNWIND 0x70000001 /* Unwind information. */ +/* x86-64 d_tag values. */ +#define DT_X86_64_PLT (DT_LOPROC + 0) +#define DT_X86_64_PLTSZ (DT_LOPROC + 1) +#define DT_X86_64_PLTENT (DT_LOPROC + 3) +#define DT_X86_64_NUM 4 /* AM33 relocations. */ #define R_MN10300_NONE 0 /* No reloc. */ @@ -4319,6 +4331,23 @@ enum #define R_LARCH_ADD_ULEB128 107 #define R_LARCH_SUB_ULEB128 108 #define R_LARCH_64_PCREL 109 +#define R_LARCH_CALL36 110 +#define R_LARCH_TLS_DESC_PC_HI20 111 +#define R_LARCH_TLS_DESC_PC_LO12 112 +#define R_LARCH_TLS_DESC64_PC_LO20 113 +#define R_LARCH_TLS_DESC64_PC_HI12 114 +#define R_LARCH_TLS_DESC_HI20 115 +#define R_LARCH_TLS_DESC_LO12 116 +#define R_LARCH_TLS_DESC64_LO20 117 +#define R_LARCH_TLS_DESC64_HI12 118 +#define R_LARCH_TLS_DESC_LD 119 +#define R_LARCH_TLS_DESC_CALL 120 +#define R_LARCH_TLS_LE_HI20_R 121 +#define R_LARCH_TLS_LE_ADD_R 122 +#define R_LARCH_TLS_LE_LO12_R 123 +#define R_LARCH_TLS_LD_PCREL20_S2 124 +#define R_LARCH_TLS_GD_PCREL20_S2 125 +#define R_LARCH_TLS_DESC_PCREL20_S2 126 /* ARC specific declarations. */ -- 2.43.2 ^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2024-02-23 4:47 UTC | newest] Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2019-04-01 2:33 [PATCH 0/2] Add C-SKY support Mao Han 2019-04-01 2:33 ` [PATCH 2/2] Add backend support for C-SKY Mao Han 2019-04-01 2:33 ` [PATCH 1/2] libelf: Sync elf.h from glibc Mao Han 2019-04-03 20:54 ` [PATCH 0/2] Add C-SKY support Mark Wielaard 2019-04-04 6:19 ` Mao Han 2019-04-04 6:27 ` Mao Han 2020-08-28 22:42 [PATCH 1/2] libelf: Sync elf.h from glibc Mark Wielaard 2020-09-07 7:29 ` Mark Wielaard 2020-12-12 22:38 Mark Wielaard 2020-12-16 10:44 ` Dmitry V. Levin 2020-12-16 18:52 ` Mark Wielaard 2023-04-01 6:43 Youling Tang 2023-04-06 22:23 ` Mark Wielaard 2023-08-29 13:14 [PATCH 1/2] libelf: Sync elf.h from Glibc Xi Ruoyao 2023-08-29 13:23 ` Mark Wielaard 2024-02-23 4:47 [PATCH 0/2] Update LoongArch relocations for psABI v2.30 Xi Ruoyao 2024-02-23 4:47 ` [PATCH 1/2] libelf: Sync elf.h from glibc Xi Ruoyao
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).