From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124])
	by inbox.dpdk.org (Postfix) with ESMTP id 24BE0A034F;
	Tue,  8 Jun 2021 09:46:03 +0200 (CEST)
Received: from [217.70.189.124] (localhost [127.0.0.1])
	by mails.dpdk.org (Postfix) with ESMTP id 89707410E7;
	Tue,  8 Jun 2021 09:46:02 +0200 (CEST)
Received: from us-smtp-delivery-124.mimecast.com
 (us-smtp-delivery-124.mimecast.com [170.10.133.124])
 by mails.dpdk.org (Postfix) with ESMTP id CD5014013F
 for <dev@dpdk.org>; Tue,  8 Jun 2021 09:46:00 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
 s=mimecast20190719; t=1623138360;
 h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
 in-reply-to:in-reply-to:references:references;
 bh=iU0g73CxV7qhoETUt+QwnP7hVP6hjzSc5iBd5Mds1Ls=;
 b=KLx8HFmyjr86P5tOUBQovsgflg/Je1kqulMy8LjtY+tmOTAJ14IpzaHy9LfIKmNJmbFzJX
 JDppu26W+sa8MlSsYAXBJctgNjyoyFXLZ04DX57Xi3TXVJcpn58rZbMC2UB2q+j/JC6W8x
 DK2K4Tb9XRaxTdvKJVpheVQB2Fpy/mE=
Received: from mail-ua1-f71.google.com (mail-ua1-f71.google.com
 [209.85.222.71]) (Using TLS) by relay.mimecast.com with ESMTP id
 us-mta-590--z9ZnQfKMpqhAEeSzfXRug-1; Tue, 08 Jun 2021 03:45:56 -0400
X-MC-Unique: -z9ZnQfKMpqhAEeSzfXRug-1
Received: by mail-ua1-f71.google.com with SMTP id
 v20-20020ab076940000b029020b0b4ada34so6855773uaq.4
 for <dev@dpdk.org>; Tue, 08 Jun 2021 00:45:56 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=iU0g73CxV7qhoETUt+QwnP7hVP6hjzSc5iBd5Mds1Ls=;
 b=DiuxADponaH7c3XdyPrvuhu1ZsgjQqClM4lV21lCJpwoe/TLZbXkM9hBnvq7t7E9rp
 qbstAl6/e9XOcNhoL0Xz1ZqAgJwiY9ujvu+as7qkf+pZE3nsrRA/dDvuMrxGLNkv000n
 Je4SkUaSLiOzNGbvnwVcLKlfaumhOGL1qbDnCMdmnr+ZeJg6LbEOrCjLeQcWrVTpIS4a
 hyAO+deRnMp1t4bhxQvcf7wNHG61K3y5692qQXz1xQOZFt0Ybg2g2hexut0t6SCbe5jc
 o6S5SPLoJSNyRiRRNJ69QMx0nBFzxLWbxu0JpWAfl0d0/vMm1+jCCWmrBWiTm4m9Scw2
 klgA==
X-Gm-Message-State: AOAM5333rbe+d1mjQIVY3zZQaj03JTkrm4aVgoUN2wjsQhBVbukIo+V9
 NRDEr4hvrrAseGZwDGnR+6tcITMhIOMvffQjoX/HcOJ8jDmTq6Bs6iYdp0j0oVlDTjFBLa1vMQ2
 p3IPau88MxeOQAbpGRRg=
X-Received: by 2002:a67:f952:: with SMTP id u18mr3651727vsq.5.1623138356512;
 Tue, 08 Jun 2021 00:45:56 -0700 (PDT)
X-Google-Smtp-Source: ABdhPJwWWyARw5EQDW5CeCCpLJWmGI8ckb9lqnCvsnygdKgRzVkZUP7OrBfSjkn5h3HSKOxjguTKH44BTfcjHe4Be1U=
X-Received: by 2002:a67:f952:: with SMTP id u18mr3651719vsq.5.1623138356316;
 Tue, 08 Jun 2021 00:45:56 -0700 (PDT)
MIME-Version: 1.0
References: <1622849908-5710-1-git-send-email-navasile@linux.microsoft.com>
 <1622850274-6946-1-git-send-email-navasile@linux.microsoft.com>
 <1622850274-6946-11-git-send-email-navasile@linux.microsoft.com>
 <20210608055033.GA20476@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net>
In-Reply-To: <20210608055033.GA20476@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net>
From: David Marchand <david.marchand@redhat.com>
Date: Tue, 8 Jun 2021 09:45:44 +0200
Message-ID: <CAJFAV8zcJbP7jNLiSn7CHpu1Di=yted+BqPYNjA3vDfSqk=_cw@mail.gmail.com>
To: Narcisa Ana Maria Vasile <navasile@linux.microsoft.com>
Cc: dev <dev@dpdk.org>, Thomas Monjalon <thomas@monjalon.net>, 
 Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>, Khoa To <khot@microsoft.com>,
 navasile@microsoft.com, 
 "Dmitry Malloy (MESHCHANINOV)" <dmitrym@microsoft.com>, roretzla@microsoft.com,
 Tal Shnaiderman <talshn@nvidia.com>, Omar Cardona <ocardona@microsoft.com>, 
 Bruce Richardson <bruce.richardson@intel.com>,
 Pallavi Kadam <pallavi.kadam@intel.com>
Authentication-Results: relay.mimecast.com;
 auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=dmarchan@redhat.com
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset="UTF-8"
Subject: Re: [dpdk-dev] [PATCH v9 10/10] Enable the new EAL thread API
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
Errors-To: dev-bounces@dpdk.org
Sender: "dev" <dev-bounces@dpdk.org>

On Tue, Jun 8, 2021 at 7:50 AM Narcisa Ana Maria Vasile
<navasile@linux.microsoft.com> wrote:
>
> On Fri, Jun 04, 2021 at 04:44:34PM -0700, Narcisa Ana Maria Vasile wrote:
> > From: Narcisa Vasile <navasile@microsoft.com>
> >
> > Rename pthread_* occurrences with the new rte_thread_* API.
> > Enable the new API in the build system.
> >
> > Signed-off-by: Narcisa Vasile <navasile@microsoft.com>
> > ---
>
> I'll send v10.
> Can someone please help with an example on how to check for ABI breaks? Thank you!
>
> I've run:
> DPDK_ABI_REF_VERSION=v21.05 DPDK_ABI_REF_DIR=~/ref ./devtools/test-meson-builds.sh
> which doesn't give any warnings about the ABI break.

This should work the way you tried if you have working toolchains and
libabigail installed.
Something is off in your env.

Side note: ovsrobot is out those days (we have some trouble in one of
RH labs and it happens ovsrobot is hosted there), but you could try
with a github repo of yours + GHA, and the ABI failure should be
caught too.


I just tried on my rhel7 (gcc 4.8.5 + libabigail 1.8.2) with your
series applied.
$ DPDK_ABI_REF_VERSION=v21.05
DPDK_ABI_REF_DIR=~/git/pub/dpdk.org/reference
./devtools/test-meson-builds.sh
...
Error: ABI issue reported for 'abidiff --suppr
/home/dmarchan/git/pub/dpdk.org/devtools/../devtools/libabigail.abignore
--no-added-syms --headers-dir1
/home/dmarchan/git/pub/dpdk.org/reference/v21.05/build-gcc-shared/usr/local/include
--headers-dir2 /home/dmarchan/git/pub/dpdk.org/build-gcc-shared/install/usr/local/include
/home/dmarchan/git/pub/dpdk.org/reference/v21.05/build-gcc-shared/dump/librte_eal.dump
/home/dmarchan/git/pub/dpdk.org/build-gcc-shared/install/dump/librte_eal.dump'
ABIDIFF_ABI_CHANGE, this change requires a review (abidiff flagged
this as a potential issue).


$ abidiff --suppr
/home/dmarchan/git/pub/dpdk.org/devtools/../devtools/libabigail.abignore
--no-added-syms --headers-dir1
/home/dmarchan/git/pub/dpdk.org/reference/v21.05/build-gcc-shared/usr/local/include
--headers-dir2 /home/dmarchan/git/pub/dpdk.org/build-gcc-shared/install/usr/local/include
/home/dmarchan/git/pub/dpdk.org/reference/v21.05/build-gcc-shared/dump/librte_eal.dump
/home/dmarchan/git/pub/dpdk.org/build-gcc-shared/install/dump/librte_eal.dump
Functions changes summary: 0 Removed, 2 Changed (1 filtered out), 0
Added (20 filtered out) functions
Variables changes summary: 0 Removed, 0 Changed, 0 Added variable

2 functions with some indirect sub-type change:

  [C] 'function int rte_ctrl_thread_create(pthread_t*, const char*,
const pthread_attr_t*, void* (void*)*, void*)' at rte_lcore.h:443:1
has some indirect sub-type changes:
    parameter 1 of type 'pthread_t*' changed:
      in pointed to type 'typedef pthread_t' at rte_thread.h:42:1:
        typedef name changed from pthread_t to rte_thread_t at rte_thread.h:42:1
        underlying type 'unsigned long int' changed:
          entity changed from 'unsigned long int' to 'struct
rte_thread_tag' at rte_thread.h:40:1
          type size hasn't changed
    parameter 3 of type 'const pthread_attr_t*' changed:
      in pointed to type 'const pthread_attr_t':
        'const pthread_attr_t' changed to 'const rte_thread_attr_t'

  [C] 'function int rte_thread_setname(pthread_t, const char*)' at
rte_lcore.h:377:1 has some indirect sub-type changes:
    parameter 1 of type 'typedef pthread_t' changed:
      typedef name changed from pthread_t to rte_thread_t at rte_thread.h:42:1
      underlying type 'unsigned long int' changed:
        entity changed from 'unsigned long int' to 'struct
rte_thread_tag' at rte_thread.h:40:1
        type size hasn't changed



Can you check that in your env build-gcc-shared/ and the build
directory for references are configured with debug symbols?
You should see:
$ meson configure build-gcc-shared | awk '$1=="buildtype" {print $2}'
debugoptimized
$ meson configure reference/v21.05/build | awk '$1=="buildtype" {print $2}'
debugoptimized




>
> I've cloned the dpdk repo in "~/ref" and checkout v21.05 tag.
> "~/dpdk" is on a local branch that contains my changes:
>
> "./devtools/check-abi.sh ~/ref ~/dpdk" - didn't work.
>
> I've then used gen-abi.sh (with a small change to skip the *.symbols,
> since abidw can't handle them) to generate the *.dump files. Reruning check-abi.sh

gen-abi.sh is an internal script that works for an installed dpdk, not
a build directory.
$ ./devtools/gen-abi.sh
Usage: ./devtools/gen-abi.sh installdir


> worked this time, but didn't show the ABI break. This is the entire output:
>
> ------
> WARNING: could not identify an include directory for /home/administrator/ref, expect false positives...
> WARNING: could not identify an include directory for /home/administrator/dpdk, expect false positives...

check-abi.sh tries to find an include/ directory to filter changes on
private structures.
But there are multiple include/ dirs in a build directory, so the
script gives up on trying to filter and logs a warning.
This is not clearly written but, like gen-abi.sh, check-abi.sh works
on an installed directory.


> Functions changes summary: 0 Removed, 0 Changed, 0 Added function
> Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referenced by debug info
> ------
>
> I've also tried to compare each file:
> abidiff --suppr ./devtools/libabigail.abignore --no-added-syms  ~/ref/dump/librte_eal.dump ~/dpdk/dump/librte_eal.dump
>

Without debug info, libabigail won't catch/report much but symbol
removals, or basic changes in function signatures.


-- 
David Marchand