Page MenuHomeFreeBSD

readelf: simplify Xen string note printing

Authored by emaste on Mar 20 2020, 4:52 PM.

Diff Detail

rS FreeBSD src repository - subversion
Automatic diff as part of commit; lint not applicable.
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

3710 ↗(On Diff #69725)

I noticed that this type==0 case didn't exist before. Is this needed? If not, I think you can get rid of the function pointer field in struct note_desc.

3685 ↗(On Diff #69725)

Why don't we dump data in this case anymore?

3710 ↗(On Diff #69725)

It's needed to ensure that loop iteration over xen_notes[] terminates. One common trick which eliminates the need for the nul terminator is to iterate using this pattern:

for (i = 0; i < sizeof(xen_notes) / sizeof(xen_notes[0]) /* sometimes written "nitems(xen_notes)" */; i++)

but existing practice in this code seems to be what Ed is doing, so I think it is ok.

I don't have a strong feeling about the function pointer. Indeed, it can be dropped, but if in the future a note is added that requires a custom print function, it'll need to be re-added.

3685 ↗(On Diff #69725)

returning false now falls through to the unknown: case in dump_notes_data and prints it as hex

3710 ↗(On Diff #69725)

Yeah, my goal is to extend this to add custom print functions, and move all note printing to be done via tables like this.

markj added inline comments.
3685 ↗(On Diff #69725)

Oh, I mixed up the handling of nd->fp's return value.

This revision is now accepted and ready to land.Mar 20 2020, 9:17 PM
This revision was automatically updated to reflect the committed changes.