[PATCH 5/5] os: compress two conditions

Peter Hutterer peter.hutterer at who-t.net
Wed Oct 30 04:35:18 CET 2013


On Tue, Oct 29, 2013 at 10:10:34PM -0400, Jasper St. Pierre wrote:
> "almost identical"? Mind expanding on this?

the printf was a %s (symbol name) or %p (base addr) and the hex address
(depending on if we had a name or not). the pointer-to-string conversion is
now handled by symbol_name(), so now we print the same format string and it
only differs in two ways, name and addr.

Cheers,
   Peter


> On Tue, Oct 29, 2013 at 7:25 PM, Peter Hutterer <peter.hutterer at who-t.net>wrote:
> 
> > The recent change to use elfutils made these conditions almost identical.
> >
> > Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
> > ---
> >  os/backtrace.c | 29 +++++++++++------------------
> >  1 file changed, 11 insertions(+), 18 deletions(-)
> >
> > diff --git a/os/backtrace.c b/os/backtrace.c
> > index acf110a..c3a31bc 100644
> > --- a/os/backtrace.c
> > +++ b/os/backtrace.c
> > @@ -134,32 +134,25 @@ xorg_backtrace(void)
> >      size = backtrace(array, BT_SIZE);
> >      for (i = 0; i < size; i++) {
> >          int rc = dladdr(array[i], &info);
> > +        const char *name;
> > +        unsigned int addr;
> >
> >          if (rc == 0) {
> >              ErrorFSigSafe("%u: ?? [%p]\n", i, array[i]);
> >              continue;
> >          }
> >          mod = (info.dli_fname && *info.dli_fname) ? info.dli_fname :
> > "(vdso)";
> > -        if (info.dli_saddr)
> > -            ErrorFSigSafe(
> > -                "%u: %s (%s+0x%x) [%p]\n",
> > -                i,
> > -                mod,
> > -                info.dli_sname,
> > -                (unsigned int)((char *) array[i] -
> > -                               (char *) info.dli_saddr),
> > -                array[i]);
> > +
> > +        if (info.dli_saddr) {
> > +            name = info.dli_sname;
> > +            addr = (unsigned int)((char *) array[i] - (char *)
> > info.dli_saddr);
> > +        }
> >          else {
> > -            const char *name = symbol_name(array[i], info.dli_fbase);
> > -            ErrorFSigSafe(
> > -                "%u: %s (%s+0x%x) [%p]\n",
> > -                i,
> > -                mod,
> > -                name,
> > -                (unsigned int)((char *) array[i] -
> > -                               (char *) info.dli_fbase),
> > -                array[i]);
> > +            name = symbol_name(array[i], info.dli_fbase);
> > +            addr = (unsigned int)((char *) array[i] - (char *)
> > info.dli_fbase);
> >          }
> > +
> > +        ErrorFSigSafe("%u: %s (%s+0x%x) [%p]\n", i, mod, name, addr,
> > array[i]);
> >      }
> >      ErrorFSigSafe("\n");
> >  }
> > --
> > 1.8.3.1
> >
> > _______________________________________________
> > xorg-devel at lists.x.org: X.Org development
> > Archives: http://lists.x.org/archives/xorg-devel
> > Info: http://lists.x.org/mailman/listinfo/xorg-devel
> >
> 
> 
> 
> -- 
>   Jasper


More information about the xorg-devel mailing list