From: Andreas Schwab Date: Tue, 9 Aug 2022 07:54:28 +0000 (+0200) Subject: backends: Handle new RISC-V specific definitions X-Git-Tag: elfutils-0.188~44 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d703772ee51ff9171e0b4f09e1b1d7c96369f9b9;p=thirdparty%2Felfutils.git backends: Handle new RISC-V specific definitions Handle PT_RISCV_ATTRIBUTES, SHT_RISCV_ATTRIBUTES, DT_RISCV_VARIANT_CC. Signed-off-by: Andreas Schwab --- diff --git a/backends/ChangeLog b/backends/ChangeLog index 495cdde4f..5b0daffe4 100644 --- a/backends/ChangeLog +++ b/backends/ChangeLog @@ -1,3 +1,12 @@ +2022-08-09 Andreas Schwab + + * riscv_init.c (riscv_init): HOOK segment_type_name, + section_type_name, dynamic_tag_name and dynamic_tag_check. + * riscv_symbol.c (riscv_segment_type_name): New function. + (riscv_section_type_name): Likewise. + (riscv_dynamic_tag_name): Likewise. + (riscv_dynamic_tag_check): Likewise. + 2022-06-01 Ulrich Drepper * Makefile.am (arm_SRCS): Add arm_machineflagname.c. diff --git a/backends/riscv_init.c b/backends/riscv_init.c index 141e08217..f2d460822 100644 --- a/backends/riscv_init.c +++ b/backends/riscv_init.c @@ -65,6 +65,10 @@ riscv_init (Elf *elf, HOOK (eh, check_special_symbol); HOOK (eh, machine_flag_check); HOOK (eh, set_initial_registers_tid); + HOOK (eh, segment_type_name); + HOOK (eh, section_type_name); + HOOK (eh, dynamic_tag_name); + HOOK (eh, dynamic_tag_check); if (eh->class == ELFCLASS64) eh->core_note = riscv64_core_note; else diff --git a/backends/riscv_symbol.c b/backends/riscv_symbol.c index c34b77020..c149b8ba2 100644 --- a/backends/riscv_symbol.c +++ b/backends/riscv_symbol.c @@ -119,3 +119,48 @@ riscv_check_special_symbol (Elf *elf, const GElf_Sym *sym, return false; } + +const char * +riscv_segment_type_name (int segment, char *buf __attribute__ ((unused)), + size_t len __attribute__ ((unused))) +{ + switch (segment) + { + case PT_RISCV_ATTRIBUTES: + return "RISCV_ATTRIBUTES"; + } + return NULL; +} + +/* Return symbolic representation of section type. */ +const char * +riscv_section_type_name (int type, + char *buf __attribute__ ((unused)), + size_t len __attribute__ ((unused))) +{ + switch (type) + { + case SHT_RISCV_ATTRIBUTES: + return "RISCV_ATTRIBUTES"; + } + + return NULL; +} + +const char * +riscv_dynamic_tag_name (int64_t tag, char *buf __attribute__ ((unused)), + size_t len __attribute__ ((unused))) +{ + switch (tag) + { + case DT_RISCV_VARIANT_CC: + return "RISCV_VARIANT_CC"; + } + return NULL; +} + +bool +riscv_dynamic_tag_check (int64_t tag) +{ + return tag == DT_RISCV_VARIANT_CC; +}