Re: [PATCH 02/18] objtool: Support data symbol printing

From: Josh Poimboeuf
Date: Thu Apr 14 2022 - 12:04:13 EST


On Thu, Apr 14, 2022 at 05:31:57PM +0200, Peter Zijlstra wrote:
> On Thu, Apr 14, 2022 at 08:21:48AM -0700, Josh Poimboeuf wrote:
> > On Thu, Apr 14, 2022 at 09:05:47AM +0200, Peter Zijlstra wrote:
> > > On Wed, Apr 13, 2022 at 04:19:37PM -0700, Josh Poimboeuf wrote:
> > >
> > > > @@ -34,8 +37,8 @@ static inline char *offstr(struct section *sec, unsigned long offset)
> > > >
> > > > str = malloc(strlen(name) + 20);
> > > >
> > > > - if (func)
> > > > - sprintf(str, "%s()+0x%lx", name, name_off);
> > > > + if (sym)
> > > > + sprintf(str, "%s%s+0x%lx", name, is_text ? "()" : "", name_off);
> > > > else
> > > > sprintf(str, "%s+0x%lx", name, name_off);
> > >
> > > So I like the patch, except that "()" thing is something where we differ
> > > from the kernel's %ps format and I've cursed it a number of times
> > > because I then have to manually edit (iow remove) things when pasting it
> > > in various scripts etc..
> >
> > Oh, hm, that's true. I can remove them if you prefer.
>
> Yeah, I think taking it out is best, easier if we're consistent with %ps
> for everybody.

Will do.

> > > That said, it totally makes sense to differentiate between a text and
> > > data symbol this way :/
> >
> > Yes, but if we're keeping the "Add sec+offset to warnings" patch then
> > that distinction is already (kind of) being made by showing the data
> > section name. And the data symbol warnings should be rare.
>
> Yes, I'd not seen that yet, what's that for? The Changelog alludes to
> something, but I don't think it actually does get used later.

Nick had asked for something like that, it's just a way to avoid doing
math every time we look at a warning, i.e. to convert func+offset to
sec+offset.

But it's kind of ugly and I'm not 100% happy with it.

Maybe it should be behind an option (--sec-offsets)?

--
Josh