PATCH: readelf: Print sh_flags in hex

H. J. Lu hjl@lucon.org
Tue Aug 9 14:47:00 GMT 2005


On Tue, Aug 09, 2005 at 07:03:53AM -0700, H. J. Lu wrote:
> On Tue, Aug 09, 2005 at 10:27:28AM +0100, Nick Clifton wrote:
> > Hi H. J.
> > 
> > >When sh_flags has processor/OS specific bits, there is no way to see
> > >what they really are. This patch adds a -f switch to dump sh_flags in
> > >hex.
> > 
> > There are a couple of problems with this patch:
> > 
> > >+  if (do_full_section_flags)
> > >+    {
> > >+      sprintf (buff, "%08x", (int) sh_flags);
> > >+      return buff;
> > >+    }
> > 
> > This means that the decoded values of the flags will not be shown.  If 
> > this is the intended purpose then the description displayed by --help 
> > ought to explicitly say that.  ie change:
> > 
> >      "Display the full section flags"
> > to:
> >      "Display the section flags as a hexadecimal value"
> 
> I can do that.
> 
> > 
> > Presumably the --section-flags switch implies the --section switch, so 
> > the code in parse_args() to handle case 'f' ought to include a 
> > "do_sections++".  The other, minor problem with the value displayed by 
> 
> Sure.
> 
> > this new switch is that it is not prefixed by "0x" so that the reader 
> > knows that it is a hexadecimal value.
> 
> None of the hex values are displayed with 0x prefix. But I don't mind
> to add one to section flag.
> 
> > 
> > In my opinion however I think that it would be more useful if the 
> > --section-flags switch not only displayed the hex value of the flags 
> > field, but it also provided a more verbose decoding of these flags.  ie 
> > "Write" instead of "W", "TLS instead of "T", and so on.  It could also 
> > specifically show which bits of the OS and PROC specific flags are set. 
> >  (This could be deduced from the full hex display, but it makes it 
> > easier for the user).  This would however probably require displaying 
> > the flags on a line of their own.  eg:
> > 
> >   [Nr] Name    Type            Addr     Off    Size   ES Lk Inf Al
> >   [ 0] .text   PROGBITS        00001010 001010 000011 00  0   0  4
> >        Flags [0x10000006]: Allocate, Executable, PROC Specific (1 << 28)
> 
> If a section flag has more than a few bits, like WAXPoILG, a line may
> be too long. I add this flag because I want to see exactly what HP
> linker puts there. 'o' and 'p' aren't tell me anything. May be
> 
>    [Nr] Name    Type            Addr     Off    Size   ES Lk Inf Al
>         Flags
>    [ 0] .text   PROGBITS        00001010 001010 000011 00  0   0  4
> 	[0x10000006]: ALLOC, EXEC, PROC (0x1000000)
> 
> will work since most, if not all, of OS/PROC SHF_XXX are defined as
> 0xXXXXXXXX.

Since the current readelf doesn't provide complete information on
sh_flags, should I just change the default one to

    [Nr] Name    Type            Addr     Off    Size   ES Lk Inf Al
         Flags
    [ 0] .text   PROGBITS        00001010 001010 000011 00  0   0  4
 	[0x10000006]: ALLOC, EXEC, PROC (0x1000000)


H.J.



More information about the Binutils mailing list