Add support for reporting Alpha and Vax symbol visibility in readelf.
[deliverable/binutils-gdb.git] / binutils / readelf.c
index 8e2902fdcac41201edd37c2351df3b465a533851..8933ccbb5357f3e645228f3ae08a54d19077358e 100644 (file)
@@ -60,9 +60,7 @@
 #include "bucomm.h"
 #include "elfcomm.h"
 #include "dwarf.h"
-#ifdef HAVE_LIBCTF
 #include "ctf-api.h"
-#endif
 
 #include "elf/common.h"
 #include "elf/external.h"
@@ -186,9 +184,7 @@ typedef struct elf_section_list
 #define DEBUG_DUMP     (1 << 2)        /* The -w command line switch.  */
 #define STRING_DUMP     (1 << 3)       /* The -p command line switch.  */
 #define RELOC_DUMP      (1 << 4)       /* The -R command line switch.  */
-#ifdef HAVE_LIBCTF
 #define CTF_DUMP        (1 << 5)        /* The --ctf command line switch.  */
-#endif
 
 typedef unsigned char dump_type;
 
@@ -255,20 +251,16 @@ static bfd_boolean do_dump = FALSE;
 static bfd_boolean do_version = FALSE;
 static bfd_boolean do_histogram = FALSE;
 static bfd_boolean do_debugging = FALSE;
-#ifdef HAVE_LIBCTF
 static bfd_boolean do_ctf = FALSE;
-#endif
 static bfd_boolean do_arch = FALSE;
 static bfd_boolean do_notes = FALSE;
 static bfd_boolean do_archive_index = FALSE;
 static bfd_boolean is_32bit_elf = FALSE;
 static bfd_boolean decompress_dumps = FALSE;
 
-#ifdef HAVE_LIBCTF
 static char *dump_ctf_parent_name;
 static char *dump_ctf_symtab_name;
 static char *dump_ctf_strtab_name;
-#endif
 
 struct group_list
 {
@@ -4409,12 +4401,10 @@ get_section_type_name (Filedata * filedata, unsigned int sh_type)
 #define OPTION_DWARF_DEPTH     514
 #define OPTION_DWARF_START     515
 #define OPTION_DWARF_CHECK     516
-#ifdef HAVE_LIBCTF
 #define OPTION_CTF_DUMP                517
 #define OPTION_CTF_PARENT      518
 #define OPTION_CTF_SYMBOLS     519
 #define OPTION_CTF_STRINGS     520
-#endif
 
 static struct option options[] =
 {
@@ -4453,13 +4443,11 @@ static struct option options[] =
   {"dwarf-start",      required_argument, 0, OPTION_DWARF_START},
   {"dwarf-check",      no_argument, 0, OPTION_DWARF_CHECK},
 
-#ifdef HAVE_LIBCTF
   {"ctf",              required_argument, 0, OPTION_CTF_DUMP},
 
   {"ctf-symbols",      required_argument, 0, OPTION_CTF_SYMBOLS},
   {"ctf-strings",      required_argument, 0, OPTION_CTF_STRINGS},
   {"ctf-parent",       required_argument, 0, OPTION_CTF_PARENT},
-#endif
 
   {"version",         no_argument, 0, 'v'},
   {"wide",            no_argument, 0, 'W'},
@@ -4510,7 +4498,6 @@ usage (FILE * stream)
   --dwarf-depth=N        Do not display DIEs at depth N or greater\n\
   --dwarf-start=N        Display DIEs starting with N, at the same depth\n\
                          or deeper\n"));
-#ifdef HAVE_LIBCTF
   fprintf (stream, _("\
   --ctf=<number|name>    Display CTF info from section <number|name>\n\
   --ctf-parent=<number|name>\n\
@@ -4519,7 +4506,6 @@ usage (FILE * stream)
                          Use section <number|name> as the CTF external symtab\n\n\
   --ctf-strings=<number|name>\n\
                          Use section <number|name> as the CTF external strtab\n\n"));
-#endif
 
 #ifdef SUPPORT_DISASSEMBLY
   fprintf (stream, _("\
@@ -4748,7 +4734,6 @@ parse_args (Filedata * filedata, int argc, char ** argv)
        case OPTION_DWARF_CHECK:
          dwarf_check = TRUE;
          break;
-#ifdef HAVE_LIBCTF
        case OPTION_CTF_DUMP:
          do_ctf = TRUE;
          request_dump (filedata, CTF_DUMP);
@@ -4762,7 +4747,6 @@ parse_args (Filedata * filedata, int argc, char ** argv)
        case OPTION_CTF_PARENT:
          dump_ctf_parent_name = strdup (optarg);
          break;
-#endif
        case OPTION_DYN_SYMS:
          do_dyn_syms = TRUE;
          break;
@@ -9045,6 +9029,11 @@ decode_arm_unwind (Filedata *                 filedata,
 
       remaining = 4;
     }
+  else
+    {
+      addr.section = SHN_UNDEF;
+      addr.offset = 0;
+    }
 
   if ((word & 0x80000000) == 0)
     {
@@ -11145,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 _("<unknown>");
+    } 
+}
+
 static const char *
 get_solaris_symbol_visibility (unsigned int visibility)
 {
@@ -11284,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;
@@ -12733,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.  */
@@ -13824,7 +13831,6 @@ dump_section_as_bytes (Elf_Internal_Shdr *  section,
   return TRUE;
 }
 
-#ifdef HAVE_LIBCTF
 static ctf_sect_t *
 shdr_to_ctf_sect (ctf_sect_t *buf, Elf_Internal_Shdr *shdr, Filedata *filedata)
 {
@@ -13978,7 +13984,6 @@ dump_section_as_ctf (Elf_Internal_Shdr * section, Filedata * filedata)
   free (strdata);
   return ret;
 }
-#endif /* HAVE_LIBCTF */
 
 static bfd_boolean
 load_specific_debug_section (enum dwarf_section_display_enum  debug,
@@ -14318,13 +14323,11 @@ process_section_contents (Filedata * filedata)
            res = FALSE;
        }
 
-#ifdef HAVE_LIBCTF
       if (dump & CTF_DUMP)
        {
          if (! dump_section_as_ctf (section, filedata))
            res = FALSE;
        }
-#endif
     }
 
   /* Check to see if the user requested a
@@ -20204,11 +20207,9 @@ main (int argc, char ** argv)
   if (cmdline.dump_sects != NULL)
     free (cmdline.dump_sects);
 
-#ifdef HAVE_LIBCTF
   free (dump_ctf_symtab_name);
   free (dump_ctf_strtab_name);
   free (dump_ctf_parent_name);
-#endif
 
   return err ? EXIT_FAILURE : EXIT_SUCCESS;
 }
This page took 0.029532 seconds and 4 git commands to generate.