[dpdk-dev] [PATCH v4] devtools: rework abi checker script

Olivier MATZ olivier.matz at 6wind.com
Mon Sep 25 11:11:20 CEST 2017


On Thu, Sep 21, 2017 at 11:40:35AM -0400, Neil Horman wrote:
> On Wed, Sep 20, 2017 at 11:12:53AM +0200, Olivier Matz wrote:
> > The initial version of the script had some limitations:
> > - cannot work on a non-clean workspace
> > - environment variables are not documented
> > - no compilation log in case of failure
> > - return success even it abi is incompatible
> >
> > This patch addresses these issues and rework the code.
> >
> > Signed-off-by: Olivier Matz <olivier.matz at 6wind.com>
> > ---
> >
> > v3->v4:
> > - clarify logs on incompatible abi
> > - log when an error returned an error
> > - [really] fix the report path
> > - log the output of make config in the proper file
> >
> > v2->v3:
> > - fix when not launched from dpdk root dir
> > - use "-Og -Wno-error" instead of "-O0"
> > - fix typo in commit log
> >
> > v1->v2:
> > - use /usr/bin/env to find bash (which is required)
> > - fix displayed path to html reports
> > - reword help for -f option
> >
> >
> >  devtools/validate-abi.sh | 397 ++++++++++++++++++++++++-----------------------
> >  1 file changed, 205 insertions(+), 192 deletions(-)
> >
> This looks better, thank you for the iterations.  One last note: The abi dumper
> utility errors out with error code of 12 if a given object has no exported
> symbols, and I see a few of those.  You may want to consider catching that
> error, logging an appropriate message and skipping the error emit.  That can be
> handled later though, as its a corner case.  I'd go with this patch, and then
> do a incremental improvement later

Unfortunately the error code 12 does not exist on my version of abi-dumper
(debian stable, v0.99.16). I'm currently doing this as a workaround:

    cmd $abidump ${i} -o $dst/${1}/${i}.dump -lver ${1} || true
    # hack to ignore empty SymbolsInfo section (no public ABI)
    if grep -q "'SymbolInfo' => {}," $dst/${1}/${i}.dump 2> /dev/null; then
        log "INFO" "${i} has no public ABI, remove dump file"
        cmd rm -f $dst/${1}/${i}.dump
    fi

I tested with the latest abi-dumper version, and I indeed see
these errors in the logs. It seems we don't go inside the 'if'
above with a recent abi-dumper, and the .dump file is not generated.

I can add a check to display the same additional log
"INFO" "${i} has no public ABI, remove dump file" if abi-dumper
returns 12. Something like this:

    ret=0
    cmd $abidump ${i} -o $dst/${1}/${i}.dump -lver ${1} || ret=$?
    # hack to ignore empty SymbolsInfo section (no public ABI)
    if [ ${ret} = 12 ]; then
            log "INFO" "${i} has no public ABI"
    fi
    if grep -q "'SymbolInfo' => {}," $dst/${1}/${i}.dump 2> /dev/null; then
        log "INFO" "${i} has no public ABI, remove dump file"
        cmd rm -f $dst/${1}/${i}.dump
    fi


Olivier


More information about the dev mailing list