Author: luporl
Date: Fri Jun 28 16:00:55 2019
New Revision: 349510
URL: https://svnweb.freebsd.org/changeset/base/349510

Log:
  [PowerPC64] readelf: print description for 'e_flags' in ELF header (ABI type)
  
  This prints out description text with the meaning of 'Flags' value in 
PowerPC64.
  
  Example:
  
  $ readelf -h ~/tmp/t1-Flag2
  ELF Header:
  
  Magic:   7f 45 4c 46 02 02 01 09 00 00 00 00 00 00 00 00
  Class:                             ELF64
  Data:                              2's complement, big endian
  Version:                           1 (current)
  OS/ABI:                            FreeBSD
  ABI Version:                       0
  Type:                              EXEC (Executable file)
  Machine:                           PowerPC 64-bit
  Version:                           0x1
  Entry point address:               0x10010000
  Start of program headers:          64 (bytes into file)
  Start of section headers:          209368 (bytes into file)
  Flags:                             0x2, OpenPOWER ELF V2 ABI
  Size of this header:               64 (bytes)
  Size of program headers:           56 (bytes)
  Number of program headers:         10
  Size of section headers:           64 (bytes)
  Number of section headers:         34
  Section header string table index: 31
  
  Submitted by:  alfredo.junior_eldorado.org.br
  Reviewed by:  luporl
  Differential Revision:        https://reviews.freebsd.org/D20782

Modified:
  head/contrib/elftoolchain/readelf/readelf.c

Modified: head/contrib/elftoolchain/readelf/readelf.c
==============================================================================
--- head/contrib/elftoolchain/readelf/readelf.c Fri Jun 28 15:52:40 2019        
(r349509)
+++ head/contrib/elftoolchain/readelf/readelf.c Fri Jun 28 16:00:55 2019        
(r349510)
@@ -2297,8 +2297,15 @@ dump_eflags(struct readelf *re, uint64_t e_flags)
                }
                edesc = mips_eflags_desc;
                break;
-       case EM_PPC:
        case EM_PPC64:
+               switch (e_flags) {
+               case 0: printf(", Unspecified or Power ELF V1 ABI"); break;
+               case 1: printf(", Power ELF V1 ABI"); break;
+               case 2: printf(", OpenPOWER ELF V2 ABI"); break;
+               default: break;
+               }
+               /* explicit fall through*/
+       case EM_PPC:
                edesc = powerpc_eflags_desc;
                break;
        case EM_RISCV:
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to