buildtools: fix build with coverage
authorDavid Marchand <david.marchand@redhat.com>
Mon, 25 Nov 2019 08:10:07 +0000 (09:10 +0100)
committerDavid Marchand <david.marchand@redhat.com>
Tue, 26 Nov 2019 08:04:36 +0000 (09:04 +0100)
A compiler can reuse a variable name and prefix it when instrumenting
with coverage.

Example:
$ make defconfig T=x86_64-native-linux-gcc O=master
$ make EXTRA_CFLAGS='--coverage' O=master
[...]
    CC rte_flow.o
 rte_flow_dynf_metadata_offs is not flagged as experimental but is listed
 in version map
 Please add __rte_experimental to the definition of
 rte_flow_dynf_metadata_offs

$ objdump -t master/build/lib/librte_ethdev/rte_flow.o |grep _offs$
0000000000000000 l     F .text.startup 000000000000000a
  _GLOBAL__sub_I_65535_0_rte_flow_dynf_metadata_offs
0000000000000620 g     O .data 0000000000000004
  rte_flow_dynf_metadata_offs

Protect against this by adding a space character in the pattern.

Fixes: a4bcd61de82d ("buildtools: add script to check experimental API exports")
Cc: stable@dpdk.org
Reported-by: Andrew Rybchenko <arybchenko@solarflare.com>
Signed-off-by: David Marchand <david.marchand@redhat.com>
Tested-by: Andrew Rybchenko <arybchenko@solarflare.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
buildtools/check-experimental-syms.sh

index abebb89..f3603e5 100755 (executable)
@@ -25,8 +25,8 @@ objdump -t $OBJFILE >$DUMPFILE
 ret=0
 for SYM in `$LIST_SYMBOL -S EXPERIMENTAL $MAPFILE |cut -d ' ' -f 3`
 do
-       if grep -q "\.text.*$SYM$" $DUMPFILE &&
-               ! grep -q "\.text\.experimental.*$SYM$" $DUMPFILE
+       if grep -q "\.text.*[[:space:]]$SYM$" $DUMPFILE &&
+               ! grep -q "\.text\.experimental.*[[:space:]]$SYM$" $DUMPFILE
        then
                cat >&2 <<- END_OF_MESSAGE
                $SYM is not flagged as experimental