Skip to content

Commit

Permalink
wdump: More type & flag infos for program & section headers (open-wat…
Browse files Browse the repository at this point in the history
…com#1314)

Recognize more types for the ELF program and section headers,
Add missing infos for the flag field in the program headers
and section headers

--
Regards ... Detlef
  • Loading branch information
winspool authored Aug 1, 2024
1 parent b89fd78 commit eb79437
Show file tree
Hide file tree
Showing 2 changed files with 95 additions and 0 deletions.
90 changes: 90 additions & 0 deletions bld/exedump/c/elfexe.c
Original file line number Diff line number Diff line change
Expand Up @@ -283,6 +283,21 @@ static void dmp_prog_type( unsigned_32 type )
case PT_PHDR:
Wdputs( "address of progam header" );
break;
case PT_TLS:
Wdputs( "TLS" );
break;
case PT_GNU_EH_FRAME:
Wdputs( "GNU stack unwinding tables" );
break;
case PT_GNU_STACK:
Wdputs( "GNU stack executability" );
break;
case PT_GNU_RELRO:
Wdputs( "GNU readonly after reloc" );
break;
case PT_GNU_PROPERTY:
Wdputs( "GNU property" );
break;
case PT_LOPROC:
Wdputs( "processor specific" );
break;
Expand Down Expand Up @@ -334,6 +349,60 @@ static void dmp_sec_type( unsigned_32 type )
case SHT_DYNSYM:
Wdputs( "dynamic link symbol table" );
break;
case SHT_INIT_ARRAY:
Wdputs( "constructors" );
break;
case SHT_FINI_ARRAY:
Wdputs( "destructors" );
break;
case SHT_PREINIT_ARRAY:
Wdputs( "pre-constructors" );
break;
case SHT_GROUP:
Wdputs( "group" );
break;
case SHT_SYMTAB_SHNDX:
Wdputs( "extended section index" );
break;
case SHT_OS:
Wdputs( "identify target OS" );
break;
case SHT_IMPORTS:
Wdputs( "refs to external sysmbols" );
break;
case SHT_EXPORTS:
Wdputs( "symbols exported by ordinal" );
break;
case SHT_RES:
Wdputs( "read only resource data" );
break;
case SHT_IDMDLL:
Wdputs( "symbol name demangling infos" );
break;
case SHT_DEFLIB:
Wdputs( "default static libraries" );
break;
case SHT_GNU_ATTRIBUTES:
Wdputs( "GNU attributes" );
break;
case SHT_GNU_HASH:
Wdputs( "GNU hash" );
break;
case SHT_GNU_LIBLIST:
Wdputs( "GNU prelink library list" );
break;
case SHT_CHECKSUM:
Wdputs( "checksum for DSO content" );
break;
case SHT_GNU_verdef:
Wdputs( "GNU version definition" );
break;
case SHT_GNU_verneed:
Wdputs( "GNU version needs section" );
break;
case SHT_GNU_versym:
Wdputs( "GNU version symbol table" );
break;
case SHT_LOPROC:
Wdputs( "processor specific" );
break;
Expand Down Expand Up @@ -385,6 +454,27 @@ static void dmp_sec_flgs( unsigned_32 flags )
if( flags & SHF_EXECINSTR ) {
strcat( name, " EXEC_INSTR |" );
}
if( flags & SHF_MERGE ) {
strcat( name, " MERGE |" );
}
if( flags & SHF_STRINGS ) {
strcat( name, " STRINGS |" );
}
if( flags & SHF_INFO_LINK ) {
strcat( name, " INFO_LINK |" );
}
if( flags & SHF_OS_NONCONFORMING ) {
strcat( name, " OS_NONCONFORMING |" );
}
if( flags & SHF_GROUP ) {
strcat( name, " GROUP |" );
}
if( flags & SHF_TLS ) {
strcat( name, " TLS |" );
}
if( flags & SHF_COMPRESSED ) {
strcat( name, " COMPRESSED |" );
}
if( name[strlen(name)-1] == '|' ) {
name[strlen(name)-1] = '\0';
}
Expand Down
5 changes: 5 additions & 0 deletions bld/watcom/h/exeelf.h
Original file line number Diff line number Diff line change
Expand Up @@ -823,6 +823,11 @@ typedef struct {
#define PT_NOTE 4 // comments & auxiliary information
#define PT_SHLIB 5 // here be dragons
#define PT_PHDR 6 // address of prog. header in mem (for interp.)
#define PT_TLS 7 // thread local storage
#define PT_GNU_EH_FRAME 0x6474e550 // unwinding tables
#define PT_GNU_STACK 0x6474e551 // stack executability
#define PT_GNU_RELRO 0x6474e552 // readonly after reloc
#define PT_GNU_PROPERTY 0x6474e553 // GNU properties
#define PT_OS 0x60000001 // target os information
#define PT_RES 0x60000002 // read-only resource information
#define PT_LOPROC 0x70000000 // processor specific (start)
Expand Down

0 comments on commit eb79437

Please sign in to comment.