From 2057d69dccf36206be3bec5d48ff165621e9a06c Mon Sep 17 00:00:00 2001 From: Christos Zoulas Date: Tue, 11 Jun 2019 16:43:25 +0100 Subject: [PATCH] Add support for reporting Alpha and Vax symbol visibility in readelf. PR 24662 * readelf.c (get_alpha_symbol_other): New function. (get_symbol_other): Use for Alpha symbols. (is_32bit_pcrel_reloc): Add R_VAX_PCREL32. --- binutils/ChangeLog | 7 +++++++ binutils/readelf.c | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/binutils/ChangeLog b/binutils/ChangeLog index cf11c8d3c3..2b6d4023b5 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,10 @@ +2019-06-11 Christos Zoulas + + PR 24662 + * readelf.c (get_alpha_symbol_other): New function. + (get_symbol_other): Use for Alpha symbols. + (is_32bit_pcrel_reloc): Add R_VAX_PCREL32. + 2019-06-11 Christos Zoulas PR 24661 diff --git a/binutils/readelf.c b/binutils/readelf.c index 6246de65fa..8933ccbb53 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -11134,6 +11134,19 @@ get_symbol_visibility (unsigned int visibility) } } +static const char * +get_alpha_symbol_other (unsigned int other) +{ + switch (other) + { + case STO_ALPHA_NOPV: return "NOPV"; + case STO_ALPHA_STD_GPLOAD: return "STD GPLOAD"; + default: + error (_("Unrecognized alpah specific other value: %u"), other); + return _(""); + } +} + static const char * get_solaris_symbol_visibility (unsigned int visibility) { @@ -11273,6 +11286,9 @@ get_symbol_other (Filedata * filedata, unsigned int other) switch (filedata->file_header.e_machine) { + case EM_ALPHA: + result = get_alpha_symbol_other (other); + break; case EM_AARCH64: result = get_aarch64_symbol_other (other); break; @@ -12722,6 +12738,8 @@ is_32bit_pcrel_reloc (Filedata * filedata, unsigned int reloc_type) case EM_L1OM: case EM_K1OM: return reloc_type == 2; /* R_X86_64_PC32. */ + case EM_VAX: + return reloc_type == 4; /* R_VAX_PCREL32. */ case EM_XTENSA_OLD: case EM_XTENSA: return reloc_type == 14; /* R_XTENSA_32_PCREL. */