DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [RFC 0/6] Add ABI compatibility checks to the meson build
@ 2019-10-23  1:07 Kevin Laatz
  2019-10-23  1:07 ` [dpdk-dev] [RFC 1/6] build: enable debug info by default in meson builds Kevin Laatz
                   ` (7 more replies)
  0 siblings, 8 replies; 60+ messages in thread
From: Kevin Laatz @ 2019-10-23  1:07 UTC (permalink / raw)
  To: dev; +Cc: bruce.richardson, thomas, ray.kinsella, Kevin Laatz

With the recent changes made to stabilize ABI versioning in DPDK, it will
become increasingly important to check patches for ABI compatibility. We
propose adding the ABI compatibility checking to be done as part of the
build.

The advantages to adding the ABI compatibility checking to the build are
two-fold. Firstly, developers can easily check their patches to make sure
they don’t break the ABI without adding any extra steps. Secondly, it
makes the integration into existing CI seamless since there are no extra
scripts to make the CI run. The build will run as usual and if an
incompatibility is detected in the ABI, the build will fail and show the
incompatibility. As an added bonus, enabling the ABI compatibility checks
does not impact the build speed.

The proposed solution works as follows:
1. Generate the ABI dump of the baseline. This can be done with the new
   script added in this RFC. This step will only need to be done when the
   ABI version changes (so once a year) and can be added to master so it
   exists by default. This step can be skipped if the dump files for the
   baseline already exist.
2. Build with meson. If there is an ABI incompatibility, the build will
   fail and print the incompatibility information.

The patches accompanying this RFC add the ABI dump file generating script,
the meson option required to enable/disable the checks, and the required
meson changes to run the compatibility checks during the build.

This patchset depends on:
 - The "Implement the new ABI policy and add helper scripts" patchset
   (http://patches.dpdk.org/project/dpdk/list/?series=6913).
 - The "Add scanning for experimental symbols to meson" patchset
   (http://patches.dpdk.org/project/dpdk/list/?series=6744).
 - "build: enable extra warnings for meson build" patch
   (http://patches.dpdk.org/patch/60622/).

Bruce Richardson (2):
  build: enable debug info by default in meson builds
  build: use meson warning levels

Kevin Laatz (4):
  devtools: add abi dump generation script
  build: add meson option for abi related checks
  build: add lib abi checks to meson
  build: add drivers abi checks to meson

 buildtools/meson.build   |  4 ++++
 config/meson.build       | 40 +++++++++++++++++++++-------------------
 devtools/gen-abi-dump.sh | 24 ++++++++++++++++++++++++
 drivers/meson.build      | 17 ++++++++++++++++-
 lib/meson.build          | 17 ++++++++++++++++-
 meson.build              |  9 ++++++++-
 meson_options.txt        |  2 ++
 7 files changed, 91 insertions(+), 22 deletions(-)
 create mode 100755 devtools/gen-abi-dump.sh

-- 
2.17.1


^ permalink raw reply	[flat|nested] 60+ messages in thread

* [dpdk-dev] [RFC 1/6] build: enable debug info by default in meson builds
  2019-10-23  1:07 [dpdk-dev] [RFC 0/6] Add ABI compatibility checks to the meson build Kevin Laatz
@ 2019-10-23  1:07 ` Kevin Laatz
  2019-10-23  1:07 ` [dpdk-dev] [RFC 2/6] build: use meson warning levels Kevin Laatz
                   ` (6 subsequent siblings)
  7 siblings, 0 replies; 60+ messages in thread
From: Kevin Laatz @ 2019-10-23  1:07 UTC (permalink / raw)
  To: dev; +Cc: bruce.richardson, thomas, ray.kinsella

From: Bruce Richardson <bruce.richardson@intel.com>

We can turn on debug info by default in meson builds, since it has no
performance penalty. This is done by changing the default build type from
"release" to "debugoptimized". Since the latter using O2, we can using
extra cflags to override that back to O3, which will make little real
difference for actual debugging.

For real debug builds, the user can still do "meson --buildtype=debug ..."
and to remove the debug info "meson --buildtype=release ..." can be used.
These are all standard meson options.

The advantage of having debug builds by default using meson settings is
that we can then add checks for ABI compatibility into each build, and
disable them if we detect that the user has turned off the debug info.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
 meson.build | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/meson.build b/meson.build
index c5a3dda26..b77ccd6ef 100644
--- a/meson.build
+++ b/meson.build
@@ -7,10 +7,16 @@ project('DPDK', 'C',
 	version: run_command(find_program('cat', 'more'),
 		files('VERSION')).stdout().strip(),
 	license: 'BSD',
-	default_options: ['buildtype=release', 'default_library=static'],
+	default_options: ['buildtype=debugoptimized',
+			'default_library=static'],
 	meson_version: '>= 0.47.1'
 )
 
+# for default "debugoptimized" builds override optimization level 2 with 3
+if get_option('buildtype') == 'debugoptimized'
+	add_project_arguments('-O3', language: 'c')
+endif
+
 # set up some global vars for compiler, platform, configuration, etc.
 cc = meson.get_compiler('c')
 dpdk_conf = configuration_data()
-- 
2.17.1


^ permalink raw reply	[flat|nested] 60+ messages in thread

* [dpdk-dev] [RFC 2/6] build: use meson warning levels
  2019-10-23  1:07 [dpdk-dev] [RFC 0/6] Add ABI compatibility checks to the meson build Kevin Laatz
  2019-10-23  1:07 ` [dpdk-dev] [RFC 1/6] build: enable debug info by default in meson builds Kevin Laatz
@ 2019-10-23  1:07 ` Kevin Laatz
  2019-10-23  1:07 ` [dpdk-dev] [RFC 3/6] devtools: add abi dump generation script Kevin Laatz
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 60+ messages in thread
From: Kevin Laatz @ 2019-10-23  1:07 UTC (permalink / raw)
  To: dev; +Cc: bruce.richardson, thomas, ray.kinsella

From: Bruce Richardson <bruce.richardson@intel.com>

Rather than trying to manage all the cflags ourselves, we can use meson
warning levels to give the user more control. We remove the Wextra flag and
rely on meson to add it, by bumping up our default warning level.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
 config/meson.build | 40 +++++++++++++++++++++-------------------
 meson.build        |  3 ++-
 2 files changed, 23 insertions(+), 20 deletions(-)

diff --git a/config/meson.build b/config/meson.build
index b383e79c0..3bcfe0668 100644
--- a/config/meson.build
+++ b/config/meson.build
@@ -141,31 +141,33 @@ endif
 # add -include rte_config to cflags
 add_project_arguments('-include', 'rte_config.h', language: 'c')
 
-# enable extra warnings and disable any unwanted warnings
+# enable extra warnings and disable any unwanted warnings. "-Wall" is added
+# by meson at warning level 1, and "-Wextra" at level 2, so we can omit
+# those. Add extra warnings at level 2 or above. (2 is default level).
 warning_flags = [
-	# -Wall is added by meson by default, so add -Wextra only
-	'-Wextra',
-
-	# additional warnings in alphabetical order
-	'-Wcast-qual',
-	'-Wdeprecated',
-	'-Wformat-nonliteral',
-	'-Wformat-security',
-	'-Wmissing-declarations',
-	'-Wmissing-prototypes',
-	'-Wnested-externs',
-	'-Wold-style-definition',
-	'-Wpointer-arith',
-	'-Wsign-compare',
-	'-Wstrict-prototypes',
-	'-Wundef',
-	'-Wwrite-strings',
-
 	# globally disabled warnings
 	'-Wno-address-of-packed-member',
 	'-Wno-packed-not-aligned',
 	'-Wno-missing-field-initializers'
 ]
+if get_option('warning_level').to_int() >= 2
+	warning_flags += [
+		# additional warnings in alphabetical order
+		'-Wcast-qual',
+		'-Wdeprecated',
+		'-Wformat-nonliteral',
+		'-Wformat-security',
+		'-Wmissing-declarations',
+		'-Wmissing-prototypes',
+		'-Wnested-externs',
+		'-Wold-style-definition',
+		'-Wpointer-arith',
+		'-Wsign-compare',
+		'-Wstrict-prototypes',
+		'-Wundef',
+		'-Wwrite-strings',
+	]
+endif
 if not dpdk_conf.get('RTE_ARCH_64')
 # for 32-bit, don't warn about casting a 32-bit pointer to 64-bit int - it's fine!!
 	warning_flags += '-Wno-pointer-to-int-cast'
diff --git a/meson.build b/meson.build
index b77ccd6ef..dd83b0bcb 100644
--- a/meson.build
+++ b/meson.build
@@ -8,7 +8,8 @@ project('DPDK', 'C',
 		files('VERSION')).stdout().strip(),
 	license: 'BSD',
 	default_options: ['buildtype=debugoptimized',
-			'default_library=static'],
+			'default_library=static',
+			'warning_level=2'],
 	meson_version: '>= 0.47.1'
 )
 
-- 
2.17.1


^ permalink raw reply	[flat|nested] 60+ messages in thread

* [dpdk-dev] [RFC 3/6] devtools: add abi dump generation script
  2019-10-23  1:07 [dpdk-dev] [RFC 0/6] Add ABI compatibility checks to the meson build Kevin Laatz
  2019-10-23  1:07 ` [dpdk-dev] [RFC 1/6] build: enable debug info by default in meson builds Kevin Laatz
  2019-10-23  1:07 ` [dpdk-dev] [RFC 2/6] build: use meson warning levels Kevin Laatz
@ 2019-10-23  1:07 ` Kevin Laatz
  2019-10-23  1:07 ` [dpdk-dev] [RFC 4/6] build: add meson option for abi related checks Kevin Laatz
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 60+ messages in thread
From: Kevin Laatz @ 2019-10-23  1:07 UTC (permalink / raw)
  To: dev; +Cc: bruce.richardson, thomas, ray.kinsella, Kevin Laatz

This patch adds a script to generate ABI dump files. These files will be
required to perform ABI compatibility checks during the build later in the
patchset. This script should be run on a DPDK version with a stable ABI.

Since this is a tool designed for human use, we simplify it to just work
off a whole build directory, taking the parameter of the builddir and
generating the lib|drivers/abi dir. This is hardcoded into the script since
the meson build expects the .dump files in these directories.

Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
 devtools/gen-abi-dump.sh | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)
 create mode 100755 devtools/gen-abi-dump.sh

diff --git a/devtools/gen-abi-dump.sh b/devtools/gen-abi-dump.sh
new file mode 100755
index 000000000..ffedef10c
--- /dev/null
+++ b/devtools/gen-abi-dump.sh
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+builddir=$1
+
+if [ -z "$builddir" ] ; then
+	echo "Usage: $(basename $0) build_dir"
+	exit 1
+fi
+
+if [ ! -d "$builddir" ] ; then
+	echo "Error: build directory, '$builddir', doesn't exist"
+	exit 1
+fi
+
+for d in lib drivers ; do
+	mkdir -p $d/abi
+
+	for f in $builddir/$d/*.so* ; do
+		test -L "$f" && continue
+
+		libname=$(basename $f)
+		abidw --out-file $d/abi/${libname%.so*}.dump $f || exit 1
+	done
+done
-- 
2.17.1


^ permalink raw reply	[flat|nested] 60+ messages in thread

* [dpdk-dev] [RFC 4/6] build: add meson option for abi related checks
  2019-10-23  1:07 [dpdk-dev] [RFC 0/6] Add ABI compatibility checks to the meson build Kevin Laatz
                   ` (2 preceding siblings ...)
  2019-10-23  1:07 ` [dpdk-dev] [RFC 3/6] devtools: add abi dump generation script Kevin Laatz
@ 2019-10-23  1:07 ` Kevin Laatz
  2019-10-23  1:07 ` [dpdk-dev] [RFC 5/6] build: add lib abi checks to meson Kevin Laatz
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 60+ messages in thread
From: Kevin Laatz @ 2019-10-23  1:07 UTC (permalink / raw)
  To: dev; +Cc: bruce.richardson, thomas, ray.kinsella, Kevin Laatz

This patch adds a new meson option for running ABI compatibility checks
during the build. If enabled, the lib and drivers .so files will be
compared against any existing ABI dump files in lib|drivers/abi of the
source directory. If there are any incompatibilities, the build will fail
and display the incompatibility.

Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
---
 meson_options.txt | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/meson_options.txt b/meson_options.txt
index 000e38fd9..aefab391a 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -1,5 +1,7 @@
 # Please keep these options sorted alphabetically.
 
+option('abi_compat_checks', type: 'boolean', value: true,
+	description: 'enable abi compatibility checks to run during the build')
 option('allow_invalid_socket_id', type: 'boolean', value: false,
 	description: 'allow out-of-range NUMA socket id\'s for platforms that don\'t report the value correctly')
 option('drivers_install_subdir', type: 'string', value: 'dpdk/pmds-<VERSION>',
-- 
2.17.1


^ permalink raw reply	[flat|nested] 60+ messages in thread

* [dpdk-dev] [RFC 5/6] build: add lib abi checks to meson
  2019-10-23  1:07 [dpdk-dev] [RFC 0/6] Add ABI compatibility checks to the meson build Kevin Laatz
                   ` (3 preceding siblings ...)
  2019-10-23  1:07 ` [dpdk-dev] [RFC 4/6] build: add meson option for abi related checks Kevin Laatz
@ 2019-10-23  1:07 ` Kevin Laatz
  2019-10-23  1:07 ` [dpdk-dev] [RFC 6/6] build: add drivers " Kevin Laatz
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 60+ messages in thread
From: Kevin Laatz @ 2019-10-23  1:07 UTC (permalink / raw)
  To: dev; +Cc: bruce.richardson, thomas, ray.kinsella, Kevin Laatz

This patch adds the ABI compatibility check for the lib directory to the
meson build. If enabled, the ABI compatibility checks will run for all
.so's in the lib directory (provided a matching dump file exists). The
build will fail if an ABI incompatibility is detected.

Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
 buildtools/meson.build |  4 ++++
 lib/meson.build        | 17 ++++++++++++++++-
 2 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/buildtools/meson.build b/buildtools/meson.build
index 1ec2c2f95..a895c791c 100644
--- a/buildtools/meson.build
+++ b/buildtools/meson.build
@@ -7,6 +7,10 @@ pmdinfo = find_program('gen-pmdinfo-cfile.sh')
 
 check_experimental_syms = find_program('check-experimental-syms.sh')
 
+if get_option('abi_compat_checks')
+	abidiff = find_program('abidiff')
+endif
+
 # set up map-to-def script using python, either built-in or external
 python3 = import('python').find_installation(required: false)
 if python3.found()
diff --git a/lib/meson.build b/lib/meson.build
index 7849ac9f7..da180fb37 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -146,7 +146,9 @@ foreach l:libraries
 						version_map, '@INPUT@'],
 					capture: true,
 					input: static_lib,
-					output: name + '.exp_chk')
+					output: name + '.exp_chk',
+					install: false,
+					build_by_default: get_option('abi_compat_checks'))
 			endif
 
 			shared_lib = shared_library(libname,
@@ -164,6 +166,19 @@ foreach l:libraries
 					include_directories: includes,
 					dependencies: shared_deps)
 
+			if is_experimental == 0
+				custom_target(dir_name + '.abi_chk',
+					command: [abidiff,
+						meson.source_root() + '/lib/abi/'
+						+ dir_name + '.dump',
+						'@INPUT@'],
+					input: shared_lib,
+					output: dir_name + '.abi_chk',
+					capture: true,
+					install: false,
+					build_by_default: get_option('abi_compat_checks'))
+			endif
+
 			dpdk_libraries = [shared_lib] + dpdk_libraries
 			dpdk_static_libraries = [static_lib] + dpdk_static_libraries
 		endif # sources.length() > 0
-- 
2.17.1


^ permalink raw reply	[flat|nested] 60+ messages in thread

* [dpdk-dev] [RFC 6/6] build: add drivers abi checks to meson
  2019-10-23  1:07 [dpdk-dev] [RFC 0/6] Add ABI compatibility checks to the meson build Kevin Laatz
                   ` (4 preceding siblings ...)
  2019-10-23  1:07 ` [dpdk-dev] [RFC 5/6] build: add lib abi checks to meson Kevin Laatz
@ 2019-10-23  1:07 ` Kevin Laatz
  2019-11-29 12:13 ` [dpdk-dev] [RFC 0/6] Add ABI compatibility checks to the meson build David Marchand
  2019-11-29 17:10 ` [dpdk-dev] [PATCH v2 0/7] " Kevin Laatz
  7 siblings, 0 replies; 60+ messages in thread
From: Kevin Laatz @ 2019-10-23  1:07 UTC (permalink / raw)
  To: dev; +Cc: bruce.richardson, thomas, ray.kinsella, Kevin Laatz

This patch adds the ABI compatibility check for the drivers directory to
the meson build. If enabled, the ABI compatibility checks will run for all
.so's in the lib directory (provided a matching dump file exists). The
build will fail if an ABI incompatibility is detected.

Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
---
 drivers/meson.build | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/drivers/meson.build b/drivers/meson.build
index 3202ba00d..0fda5a9e0 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -158,7 +158,9 @@ foreach class:dpdk_driver_classes
 						version_map, '@INPUT@'],
 					capture: true,
 					input: static_lib,
-					output: lib_name + '.exp_chk')
+					output: lib_name + '.exp_chk'
+					install: false,
+					build_by_default: get_option('abi_compat_checks'))
 			endif
 
 			shared_lib = shared_library(lib_name,
@@ -183,6 +185,19 @@ foreach class:dpdk_driver_classes
 					include_directories: includes,
 					dependencies: static_objs)
 
+			if is_experimental == 0
+				custom_target('lib' + lib_name + '.abi_chk',
+					command: [abidiff,
+						meson.source_root() + '/drivers/abi/lib'
+						+ lib_name + '.dump',
+						'@INPUT@'],
+					input: shared_lib,
+					output: 'lib' + lib_name + '.abi_chk',
+					capture: true,
+					install: false,
+					build_by_default: get_option('abi_compat_checks'))
+			endif
+
 			dpdk_drivers += static_lib
 
 			set_variable('shared_@0@'.format(lib_name), shared_dep)
-- 
2.17.1


^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [dpdk-dev] [RFC 0/6] Add ABI compatibility checks to the meson build
  2019-10-23  1:07 [dpdk-dev] [RFC 0/6] Add ABI compatibility checks to the meson build Kevin Laatz
                   ` (5 preceding siblings ...)
  2019-10-23  1:07 ` [dpdk-dev] [RFC 6/6] build: add drivers " Kevin Laatz
@ 2019-11-29 12:13 ` David Marchand
  2019-11-29 17:10 ` [dpdk-dev] [PATCH v2 0/7] " Kevin Laatz
  7 siblings, 0 replies; 60+ messages in thread
From: David Marchand @ 2019-11-29 12:13 UTC (permalink / raw)
  To: Kevin Laatz; +Cc: dev, Bruce Richardson, Thomas Monjalon, Kinsella, Ray

Hello Kevin,

On Wed, Oct 23, 2019 at 11:26 AM Kevin Laatz <kevin.laatz@intel.com> wrote:
>
> With the recent changes made to stabilize ABI versioning in DPDK, it will
> become increasingly important to check patches for ABI compatibility. We
> propose adding the ABI compatibility checking to be done as part of the
> build.
>
> The advantages to adding the ABI compatibility checking to the build are
> two-fold. Firstly, developers can easily check their patches to make sure
> they don’t break the ABI without adding any extra steps. Secondly, it
> makes the integration into existing CI seamless since there are no extra
> scripts to make the CI run. The build will run as usual and if an
> incompatibility is detected in the ABI, the build will fail and show the
> incompatibility. As an added bonus, enabling the ABI compatibility checks
> does not impact the build speed.
>
> The proposed solution works as follows:
> 1. Generate the ABI dump of the baseline. This can be done with the new
>    script added in this RFC. This step will only need to be done when the
>    ABI version changes (so once a year) and can be added to master so it
>    exists by default. This step can be skipped if the dump files for the
>    baseline already exist.
> 2. Build with meson. If there is an ABI incompatibility, the build will
>    fail and print the incompatibility information.
>
> The patches accompanying this RFC add the ABI dump file generating script,
> the meson option required to enable/disable the checks, and the required
> meson changes to run the compatibility checks during the build.

Could you rebase this series on master?
Thanks.


-- 
David Marchand


^ permalink raw reply	[flat|nested] 60+ messages in thread

* [dpdk-dev] [PATCH v2 0/7] Add ABI compatibility checks to the meson build
  2019-10-23  1:07 [dpdk-dev] [RFC 0/6] Add ABI compatibility checks to the meson build Kevin Laatz
                   ` (6 preceding siblings ...)
  2019-11-29 12:13 ` [dpdk-dev] [RFC 0/6] Add ABI compatibility checks to the meson build David Marchand
@ 2019-11-29 17:10 ` Kevin Laatz
  2019-11-29 17:10   ` [dpdk-dev] [PATCH v2 1/7] build: enable debug info by default in meson builds Kevin Laatz
                     ` (7 more replies)
  7 siblings, 8 replies; 60+ messages in thread
From: Kevin Laatz @ 2019-11-29 17:10 UTC (permalink / raw)
  To: dev; +Cc: david.marchand, thomas, bruce.richardson, ray.kinsella, Kevin Laatz

With the recent changes made to stabilize ABI versioning in DPDK, it will
become increasingly important to check patches for ABI compatibility. We
propose adding the ABI compatibility checking to be done as part of the
build.

The advantages to adding the ABI compatibility checking to the build are
two-fold. Firstly, developers can easily check their patches to make sure
they don’t break the ABI without adding any extra steps. Secondly, it
makes the integration into existing CI seamless since there are no extra
scripts to make the CI run. The build will run as usual and if an
incompatibility is detected in the ABI, the build will fail and show the
incompatibility. As an added bonus, enabling the ABI compatibility checks
does not impact the build speed.

The proposed solution works as follows:
1. Generate the ABI dump of the baseline. This can be done with the new
   script added in this RFC. This step will only need to be done when the
   ABI version changes (so once a year) and can be added to master so it
   exists by default. This step can be skipped if the dump files for the
   baseline already exist.
2. Build with meson. If there is an ABI incompatibility, the build will
   fail and print the incompatibility information.

The patches accompanying this RFC add the ABI dump file generating script,
the meson option required to enable/disable the checks, and the required
meson changes to run the compatibility checks during the build.

---
v2:
  - Rebased on master for 19.11.
  - Moved the experimental syms checks next to the abi checks. This also
    removed the dependency on the experimental checks from the shared
    build.
  - General cleanup.

Bruce Richardson (2):
  build: enable debug info by default in meson builds
  build: use meson warning levels

Kevin Laatz (5):
  devtools: add abi dump generation script
  build: add meson option for abi related checks
  build: add lib abi checks to meson
  build: add drivers abi checks to meson
  build: clean up experimental syms check

 buildtools/meson.build   |  4 ++++
 config/meson.build       | 40 +++++++++++++++++++++-------------------
 devtools/gen-abi-dump.sh | 24 ++++++++++++++++++++++++
 drivers/meson.build      | 34 ++++++++++++++++++++++++----------
 lib/meson.build          | 34 ++++++++++++++++++++++++----------
 meson.build              |  9 ++++++++-
 meson_options.txt        |  2 ++
 7 files changed, 107 insertions(+), 40 deletions(-)
 create mode 100755 devtools/gen-abi-dump.sh

-- 
2.17.1


^ permalink raw reply	[flat|nested] 60+ messages in thread

* [dpdk-dev] [PATCH v2 1/7] build: enable debug info by default in meson builds
  2019-11-29 17:10 ` [dpdk-dev] [PATCH v2 0/7] " Kevin Laatz
@ 2019-11-29 17:10   ` Kevin Laatz
  2019-11-29 17:10   ` [dpdk-dev] [PATCH v2 2/7] build: use meson warning levels Kevin Laatz
                     ` (6 subsequent siblings)
  7 siblings, 0 replies; 60+ messages in thread
From: Kevin Laatz @ 2019-11-29 17:10 UTC (permalink / raw)
  To: dev; +Cc: david.marchand, thomas, bruce.richardson, ray.kinsella

From: Bruce Richardson <bruce.richardson@intel.com>

We can turn on debug info by default in meson builds, since it has no
performance penalty. This is done by changing the default build type from
"release" to "debugoptimized". Since the latter using O2, we can using
extra cflags to override that back to O3, which will make little real
difference for actual debugging.

For real debug builds, the user can still do "meson --buildtype=debug ..."
and to remove the debug info "meson --buildtype=release ..." can be used.
These are all standard meson options.

The advantage of having debug builds by default using meson settings is
that we can then add checks for ABI compatibility into each build, and
disable them if we detect that the user has turned off the debug info.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
 meson.build | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/meson.build b/meson.build
index b7ae9c8d9..3b7a2e7de 100644
--- a/meson.build
+++ b/meson.build
@@ -7,10 +7,16 @@ project('DPDK', 'C',
 	version: run_command(find_program('cat', 'more'),
 		files('VERSION')).stdout().strip(),
 	license: 'BSD',
-	default_options: ['buildtype=release', 'default_library=static'],
+	default_options: ['buildtype=debugoptimized',
+			'default_library=static'],
 	meson_version: '>= 0.47.1'
 )
 
+# for default "debugoptimized" builds override optimization level 2 with 3
+if get_option('buildtype') == 'debugoptimized'
+	add_project_arguments('-O3', language: 'c')
+endif
+
 # set up some global vars for compiler, platform, configuration, etc.
 cc = meson.get_compiler('c')
 dpdk_conf = configuration_data()
-- 
2.17.1


^ permalink raw reply	[flat|nested] 60+ messages in thread

* [dpdk-dev] [PATCH v2 2/7] build: use meson warning levels
  2019-11-29 17:10 ` [dpdk-dev] [PATCH v2 0/7] " Kevin Laatz
  2019-11-29 17:10   ` [dpdk-dev] [PATCH v2 1/7] build: enable debug info by default in meson builds Kevin Laatz
@ 2019-11-29 17:10   ` Kevin Laatz
  2019-11-29 17:10   ` [dpdk-dev] [PATCH v2 3/7] devtools: add abi dump generation script Kevin Laatz
                     ` (5 subsequent siblings)
  7 siblings, 0 replies; 60+ messages in thread
From: Kevin Laatz @ 2019-11-29 17:10 UTC (permalink / raw)
  To: dev; +Cc: david.marchand, thomas, bruce.richardson, ray.kinsella

From: Bruce Richardson <bruce.richardson@intel.com>

Rather than trying to manage all the cflags ourselves, we can use meson
warning levels to give the user more control. We remove the Wextra flag and
rely on meson to add it, by bumping up our default warning level.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
 config/meson.build | 40 +++++++++++++++++++++-------------------
 meson.build        |  3 ++-
 2 files changed, 23 insertions(+), 20 deletions(-)

diff --git a/config/meson.build b/config/meson.build
index 364a8d739..36a594970 100644
--- a/config/meson.build
+++ b/config/meson.build
@@ -158,31 +158,33 @@ endif
 # add -include rte_config to cflags
 add_project_arguments('-include', 'rte_config.h', language: 'c')
 
-# enable extra warnings and disable any unwanted warnings
+# enable extra warnings and disable any unwanted warnings. "-Wall" is added
+# by meson at warning level 1, and "-Wextra" at level 2, so we can omit
+# those. Add extra warnings at level 2 or above. (2 is default level).
 warning_flags = [
-	# -Wall is added by meson by default, so add -Wextra only
-	'-Wextra',
-
-	# additional warnings in alphabetical order
-	'-Wcast-qual',
-	'-Wdeprecated',
-	'-Wformat-nonliteral',
-	'-Wformat-security',
-	'-Wmissing-declarations',
-	'-Wmissing-prototypes',
-	'-Wnested-externs',
-	'-Wold-style-definition',
-	'-Wpointer-arith',
-	'-Wsign-compare',
-	'-Wstrict-prototypes',
-	'-Wundef',
-	'-Wwrite-strings',
-
 	# globally disabled warnings
 	'-Wno-address-of-packed-member',
 	'-Wno-packed-not-aligned',
 	'-Wno-missing-field-initializers'
 ]
+if get_option('warning_level').to_int() >= 2
+	warning_flags += [
+		# additional warnings in alphabetical order
+		'-Wcast-qual',
+		'-Wdeprecated',
+		'-Wformat-nonliteral',
+		'-Wformat-security',
+		'-Wmissing-declarations',
+		'-Wmissing-prototypes',
+		'-Wnested-externs',
+		'-Wold-style-definition',
+		'-Wpointer-arith',
+		'-Wsign-compare',
+		'-Wstrict-prototypes',
+		'-Wundef',
+		'-Wwrite-strings',
+	]
+endif
 if not dpdk_conf.get('RTE_ARCH_64')
 # for 32-bit, don't warn about casting a 32-bit pointer to 64-bit int - it's fine!!
 	warning_flags += '-Wno-pointer-to-int-cast'
diff --git a/meson.build b/meson.build
index 3b7a2e7de..7a8f97ad6 100644
--- a/meson.build
+++ b/meson.build
@@ -8,7 +8,8 @@ project('DPDK', 'C',
 		files('VERSION')).stdout().strip(),
 	license: 'BSD',
 	default_options: ['buildtype=debugoptimized',
-			'default_library=static'],
+			'default_library=static',
+			'warning_level=2'],
 	meson_version: '>= 0.47.1'
 )
 
-- 
2.17.1


^ permalink raw reply	[flat|nested] 60+ messages in thread

* [dpdk-dev] [PATCH v2 3/7] devtools: add abi dump generation script
  2019-11-29 17:10 ` [dpdk-dev] [PATCH v2 0/7] " Kevin Laatz
  2019-11-29 17:10   ` [dpdk-dev] [PATCH v2 1/7] build: enable debug info by default in meson builds Kevin Laatz
  2019-11-29 17:10   ` [dpdk-dev] [PATCH v2 2/7] build: use meson warning levels Kevin Laatz
@ 2019-11-29 17:10   ` Kevin Laatz
  2019-11-29 17:10   ` [dpdk-dev] [PATCH v2 4/7] build: add meson option for abi related checks Kevin Laatz
                     ` (4 subsequent siblings)
  7 siblings, 0 replies; 60+ messages in thread
From: Kevin Laatz @ 2019-11-29 17:10 UTC (permalink / raw)
  To: dev; +Cc: david.marchand, thomas, bruce.richardson, ray.kinsella, Kevin Laatz

This patch adds a script to generate ABI dump files. These files will be
required to perform ABI compatibility checks during the build later in the
patchset. This script should be run on a DPDK version with a stable ABI.

Since this is a tool designed for human use, we simplify it to just work
off a whole build directory, taking the parameter of the builddir and
generating the lib|drivers/abi dir. This is hardcoded into the script since
the meson build expects the .dump files in these directories.

Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
 devtools/gen-abi-dump.sh | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)
 create mode 100755 devtools/gen-abi-dump.sh

diff --git a/devtools/gen-abi-dump.sh b/devtools/gen-abi-dump.sh
new file mode 100755
index 000000000..ffedef10c
--- /dev/null
+++ b/devtools/gen-abi-dump.sh
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+builddir=$1
+
+if [ -z "$builddir" ] ; then
+	echo "Usage: $(basename $0) build_dir"
+	exit 1
+fi
+
+if [ ! -d "$builddir" ] ; then
+	echo "Error: build directory, '$builddir', doesn't exist"
+	exit 1
+fi
+
+for d in lib drivers ; do
+	mkdir -p $d/abi
+
+	for f in $builddir/$d/*.so* ; do
+		test -L "$f" && continue
+
+		libname=$(basename $f)
+		abidw --out-file $d/abi/${libname%.so*}.dump $f || exit 1
+	done
+done
-- 
2.17.1


^ permalink raw reply	[flat|nested] 60+ messages in thread

* [dpdk-dev] [PATCH v2 4/7] build: add meson option for abi related checks
  2019-11-29 17:10 ` [dpdk-dev] [PATCH v2 0/7] " Kevin Laatz
                     ` (2 preceding siblings ...)
  2019-11-29 17:10   ` [dpdk-dev] [PATCH v2 3/7] devtools: add abi dump generation script Kevin Laatz
@ 2019-11-29 17:10   ` Kevin Laatz
  2019-11-29 17:10   ` [dpdk-dev] [PATCH v2 5/7] build: add lib abi checks to meson Kevin Laatz
                     ` (3 subsequent siblings)
  7 siblings, 0 replies; 60+ messages in thread
From: Kevin Laatz @ 2019-11-29 17:10 UTC (permalink / raw)
  To: dev; +Cc: david.marchand, thomas, bruce.richardson, ray.kinsella, Kevin Laatz

This patch adds a new meson option for running ABI compatibility checks
during the build. If enabled, the lib and drivers .so files will be
compared against any existing ABI dump files in lib|drivers/abi of the
source directory. If there are any incompatibilities, the build will fail
and display the incompatibility.

Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
---
 meson_options.txt | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/meson_options.txt b/meson_options.txt
index bc369d06c..5f42def1d 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -1,5 +1,7 @@
 # Please keep these options sorted alphabetically.
 
+option('compat_checks', type: 'boolean', value: true,
+	description: 'enable abi compatibility checks and experimental syms checks to run during the build')
 option('disable_drivers', type: 'string', value: '',
 	description: 'Comma-separated list of drivers to explicitly disable.')
 option('drivers_install_subdir', type: 'string', value: 'dpdk/pmds-<VERSION>',
-- 
2.17.1


^ permalink raw reply	[flat|nested] 60+ messages in thread

* [dpdk-dev] [PATCH v2 5/7] build: add lib abi checks to meson
  2019-11-29 17:10 ` [dpdk-dev] [PATCH v2 0/7] " Kevin Laatz
                     ` (3 preceding siblings ...)
  2019-11-29 17:10   ` [dpdk-dev] [PATCH v2 4/7] build: add meson option for abi related checks Kevin Laatz
@ 2019-11-29 17:10   ` Kevin Laatz
  2019-11-29 17:10   ` [dpdk-dev] [PATCH v2 6/7] build: add drivers " Kevin Laatz
                     ` (2 subsequent siblings)
  7 siblings, 0 replies; 60+ messages in thread
From: Kevin Laatz @ 2019-11-29 17:10 UTC (permalink / raw)
  To: dev; +Cc: david.marchand, thomas, bruce.richardson, ray.kinsella, Kevin Laatz

This patch adds the ABI compatibility check for the lib directory to the
meson build. If enabled, the ABI compatibility checks will run for all
.so's in the lib directory (provided a matching dump file exists). The
build will fail if an ABI incompatibility is detected.

Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>

---
v2:
  - fixed conditional around abi check custom target
---
 buildtools/meson.build |  4 ++++
 lib/meson.build        | 13 +++++++++++++
 2 files changed, 17 insertions(+)

diff --git a/buildtools/meson.build b/buildtools/meson.build
index 6ef2c5721..56a1e3dee 100644
--- a/buildtools/meson.build
+++ b/buildtools/meson.build
@@ -7,6 +7,10 @@ pmdinfo = find_program('gen-pmdinfo-cfile.sh')
 
 check_experimental_syms = find_program('check-experimental-syms.sh')
 
+if get_option('abi_compat_checks')
+	abidiff = find_program('abidiff')
+endif
+
 # set up map-to-def script using python, either built-in or external
 python3 = import('python').find_installation(required: false)
 if python3.found()
diff --git a/lib/meson.build b/lib/meson.build
index 6ceb5e756..69ea3a2b0 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -180,6 +180,19 @@ foreach l:libraries
 					include_directories: includes,
 					dependencies: shared_deps)
 
+			if not is_windows and get_option('compat_checks')
+				custom_target(dir_name + '.abi_chk',
+					command: [abidiff,
+						meson.source_root() + '/lib/abi/'
+						+ dir_name + '.dump',
+						'@INPUT@'],
+					input: shared_lib,
+					output: dir_name + '.abi_chk',
+					capture: true,
+					install: false,
+					build_by_default: is_experimental == 0)
+			endif
+
 			dpdk_libraries = [shared_lib] + dpdk_libraries
 			dpdk_static_libraries = [static_lib] + dpdk_static_libraries
 		endif # sources.length() > 0
-- 
2.17.1


^ permalink raw reply	[flat|nested] 60+ messages in thread

* [dpdk-dev] [PATCH v2 6/7] build: add drivers abi checks to meson
  2019-11-29 17:10 ` [dpdk-dev] [PATCH v2 0/7] " Kevin Laatz
                     ` (4 preceding siblings ...)
  2019-11-29 17:10   ` [dpdk-dev] [PATCH v2 5/7] build: add lib abi checks to meson Kevin Laatz
@ 2019-11-29 17:10   ` Kevin Laatz
  2019-11-29 17:10   ` [dpdk-dev] [PATCH v2 7/7] build: clean up experimental syms check Kevin Laatz
  2019-11-29 21:08   ` [dpdk-dev] [PATCH v3 0/7] Add ABI compatibility checks to the meson build Kevin Laatz
  7 siblings, 0 replies; 60+ messages in thread
From: Kevin Laatz @ 2019-11-29 17:10 UTC (permalink / raw)
  To: dev; +Cc: david.marchand, thomas, bruce.richardson, ray.kinsella, Kevin Laatz

This patch adds the ABI compatibility check for the drivers directory to
the meson build. If enabled, the ABI compatibility checks will run for all
.so's in the lib directory (provided a matching dump file exists). The
build will fail if an ABI incompatibility is detected.

Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>

---
v2:
  - fixed conditional around abi check custom target
---
 drivers/meson.build | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/drivers/meson.build b/drivers/meson.build
index 72eec4608..e19eed419 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -196,6 +196,19 @@ foreach class:dpdk_driver_classes
 					include_directories: includes,
 					dependencies: static_deps)
 
+			if not is_windows and get_option('compat_checks')
+				custom_target('lib' + lib_name + '.abi_chk',
+					command: [abidiff,
+						meson.source_root() + '/drivers/abi/lib'
+						+ lib_name + '.dump',
+						'@INPUT@'],
+					input: shared_lib,
+					output: 'lib' + lib_name + '.abi_chk',
+					capture: true,
+					install: false,
+					build_by_default: is_experimental == 0)
+			endif
+
 			dpdk_drivers += static_lib
 
 			set_variable('shared_@0@'.format(lib_name), shared_dep)
-- 
2.17.1


^ permalink raw reply	[flat|nested] 60+ messages in thread

* [dpdk-dev] [PATCH v2 7/7] build: clean up experimental syms check
  2019-11-29 17:10 ` [dpdk-dev] [PATCH v2 0/7] " Kevin Laatz
                     ` (5 preceding siblings ...)
  2019-11-29 17:10   ` [dpdk-dev] [PATCH v2 6/7] build: add drivers " Kevin Laatz
@ 2019-11-29 17:10   ` Kevin Laatz
  2019-11-29 21:08   ` [dpdk-dev] [PATCH v3 0/7] Add ABI compatibility checks to the meson build Kevin Laatz
  7 siblings, 0 replies; 60+ messages in thread
From: Kevin Laatz @ 2019-11-29 17:10 UTC (permalink / raw)
  To: dev; +Cc: david.marchand, thomas, bruce.richardson, ray.kinsella, Kevin Laatz

This patch cleans up the meson build files in lib and drivers by moving the
custom target for checking the experimental syms next to the abi compat
checks. This also removes the dependency on the check for the shared build,
which was not required by anything, but was only added to force the
experimental syms check run.

Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
---
 drivers/meson.build | 21 +++++++++++----------
 lib/meson.build     | 21 +++++++++++----------
 2 files changed, 22 insertions(+), 20 deletions(-)

diff --git a/drivers/meson.build b/drivers/meson.build
index e19eed419..9b0955722 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -163,15 +163,6 @@ foreach class:dpdk_driver_classes
 					'-Wl,/implib:lib\\' + implib]
 			else
 				lk_args = ['-Wl,--version-script=' + version_map]
-				# on unix systems check the output of the
-				# experimental syms script, using it as a
-				# dependency of the .so build
-				lk_deps += custom_target(lib_name + '.exp_chk',
-					command: [check_experimental_syms,
-						version_map, '@INPUT@'],
-					capture: true,
-					input: static_lib,
-					output: lib_name + '.exp_chk')
 			endif
 
 			shared_lib = shared_library(lib_name,
@@ -181,7 +172,6 @@ foreach class:dpdk_driver_classes
 				dependencies: shared_deps,
 				c_args: cflags,
 				link_args: lk_args,
-				link_depends: lk_deps,
 				version: lib_version,
 				soversion: so_version,
 				install: true,
@@ -197,6 +187,17 @@ foreach class:dpdk_driver_classes
 					dependencies: static_deps)
 
 			if not is_windows and get_option('compat_checks')
+				# on unix systems check the output of the
+				# experimental syms script
+				custom_target(lib_name + '.exp_chk',
+					command: [check_experimental_syms,
+						version_map, '@INPUT@'],
+					capture: true,
+					input: static_lib,
+					output: lib_name + '.exp_chk',
+					install: false,
+					build_by_default: true)
+
 				custom_target('lib' + lib_name + '.abi_chk',
 					command: [abidiff,
 						meson.source_root() + '/drivers/abi/lib'
diff --git a/lib/meson.build b/lib/meson.build
index 69ea3a2b0..c448d9dff 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -154,15 +154,6 @@ foreach l:libraries
 					'-Wl,/implib:lib\\' + implib]
 			else
 				lk_args = ['-Wl,--version-script=' + version_map]
-				# on unix systems check the output of the
-				# experimental syms script, using it as a
-				# dependency of the .so build
-				lk_deps += custom_target(name + '.exp_chk',
-					command: [check_experimental_syms,
-						version_map, '@INPUT@'],
-					capture: true,
-					input: static_lib,
-					output: name + '.exp_chk')
 			endif
 
 			shared_lib = shared_library(libname,
@@ -172,7 +163,6 @@ foreach l:libraries
 					dependencies: shared_deps,
 					include_directories: includes,
 					link_args: lk_args,
-					link_depends: lk_deps,
 					version: lib_version,
 					soversion: so_version,
 					install: true)
@@ -181,6 +171,17 @@ foreach l:libraries
 					dependencies: shared_deps)
 
 			if not is_windows and get_option('compat_checks')
+				# on unix systems check the output of the
+				# experimental syms script
+				custom_target(name + '.exp_chk',
+					command: [check_experimental_syms,
+						version_map, '@INPUT@'],
+					capture: true,
+					input: static_lib,
+					output: name + '.exp_chk',
+					install: false,
+					build_by_default: true)
+
 				custom_target(dir_name + '.abi_chk',
 					command: [abidiff,
 						meson.source_root() + '/lib/abi/'
-- 
2.17.1


^ permalink raw reply	[flat|nested] 60+ messages in thread

* [dpdk-dev] [PATCH v3 0/7] Add ABI compatibility checks to the meson build
  2019-11-29 17:10 ` [dpdk-dev] [PATCH v2 0/7] " Kevin Laatz
                     ` (6 preceding siblings ...)
  2019-11-29 17:10   ` [dpdk-dev] [PATCH v2 7/7] build: clean up experimental syms check Kevin Laatz
@ 2019-11-29 21:08   ` Kevin Laatz
  2019-11-29 21:08     ` [dpdk-dev] [PATCH v3 1/7] build: enable debug info by default in meson builds Kevin Laatz
                       ` (8 more replies)
  7 siblings, 9 replies; 60+ messages in thread
From: Kevin Laatz @ 2019-11-29 21:08 UTC (permalink / raw)
  To: dev; +Cc: david.marchand, thomas, bruce.richardson, ray.kinsella, Kevin Laatz

With the recent changes made to stabilize ABI versioning in DPDK, it will
become increasingly important to check patches for ABI compatibility. We
propose adding the ABI compatibility checking to be done as part of the
build.

The advantages to adding the ABI compatibility checking to the build are
two-fold. Firstly, developers can easily check their patches to make sure
they don’t break the ABI without adding any extra steps. Secondly, it
makes the integration into existing CI seamless since there are no extra
scripts to make the CI run. The build will run as usual and if an
incompatibility is detected in the ABI, the build will fail and show the
incompatibility. As an added bonus, enabling the ABI compatibility checks
does not impact the build speed.

The proposed solution works as follows:
1. Generate the ABI dump of the baseline. This can be done with the new
   script added in this RFC. This step will only need to be done when the
   ABI version changes (so once a year) and can be added to master so it
   exists by default. This step can be skipped if the dump files for the
   baseline already exist.
2. Build with meson. If there is an ABI incompatibility, the build will
   fail and print the incompatibility information.

The patches accompanying this RFC add the ABI dump file generating script,
the meson option required to enable/disable the checks, and the required
meson changes to run the compatibility checks during the build.

---
v2:
  - Rebased on master for 19.11.
  - Moved the experimental syms checks next to the abi checks. This also
    removed the dependency on the experimental checks from the shared
    build.
  - General cleanup.

v3:
  - Fixed typo in meson option name in buildtools/meson.build.

Bruce Richardson (2):
  build: enable debug info by default in meson builds
  build: use meson warning levels

Kevin Laatz (5):
  devtools: add abi dump generation script
  build: add meson option for abi related checks
  build: add lib abi checks to meson
  build: add drivers abi checks to meson
  build: clean up experimental syms check

 buildtools/meson.build   |  4 ++++
 config/meson.build       | 40 +++++++++++++++++++++-------------------
 devtools/gen-abi-dump.sh | 24 ++++++++++++++++++++++++
 drivers/meson.build      | 34 ++++++++++++++++++++++++----------
 lib/meson.build          | 34 ++++++++++++++++++++++++----------
 meson.build              |  9 ++++++++-
 meson_options.txt        |  2 ++
 7 files changed, 107 insertions(+), 40 deletions(-)
 create mode 100755 devtools/gen-abi-dump.sh

-- 
2.17.1


^ permalink raw reply	[flat|nested] 60+ messages in thread

* [dpdk-dev] [PATCH v3 1/7] build: enable debug info by default in meson builds
  2019-11-29 21:08   ` [dpdk-dev] [PATCH v3 0/7] Add ABI compatibility checks to the meson build Kevin Laatz
@ 2019-11-29 21:08     ` Kevin Laatz
  2019-11-29 21:09     ` [dpdk-dev] [PATCH v3 2/7] build: use meson warning levels Kevin Laatz
                       ` (7 subsequent siblings)
  8 siblings, 0 replies; 60+ messages in thread
From: Kevin Laatz @ 2019-11-29 21:08 UTC (permalink / raw)
  To: dev; +Cc: david.marchand, thomas, bruce.richardson, ray.kinsella

From: Bruce Richardson <bruce.richardson@intel.com>

We can turn on debug info by default in meson builds, since it has no
performance penalty. This is done by changing the default build type from
"release" to "debugoptimized". Since the latter using O2, we can using
extra cflags to override that back to O3, which will make little real
difference for actual debugging.

For real debug builds, the user can still do "meson --buildtype=debug ..."
and to remove the debug info "meson --buildtype=release ..." can be used.
These are all standard meson options.

The advantage of having debug builds by default using meson settings is
that we can then add checks for ABI compatibility into each build, and
disable them if we detect that the user has turned off the debug info.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
 meson.build | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/meson.build b/meson.build
index b7ae9c8d9..3b7a2e7de 100644
--- a/meson.build
+++ b/meson.build
@@ -7,10 +7,16 @@ project('DPDK', 'C',
 	version: run_command(find_program('cat', 'more'),
 		files('VERSION')).stdout().strip(),
 	license: 'BSD',
-	default_options: ['buildtype=release', 'default_library=static'],
+	default_options: ['buildtype=debugoptimized',
+			'default_library=static'],
 	meson_version: '>= 0.47.1'
 )
 
+# for default "debugoptimized" builds override optimization level 2 with 3
+if get_option('buildtype') == 'debugoptimized'
+	add_project_arguments('-O3', language: 'c')
+endif
+
 # set up some global vars for compiler, platform, configuration, etc.
 cc = meson.get_compiler('c')
 dpdk_conf = configuration_data()
-- 
2.17.1


^ permalink raw reply	[flat|nested] 60+ messages in thread

* [dpdk-dev] [PATCH v3 2/7] build: use meson warning levels
  2019-11-29 21:08   ` [dpdk-dev] [PATCH v3 0/7] Add ABI compatibility checks to the meson build Kevin Laatz
  2019-11-29 21:08     ` [dpdk-dev] [PATCH v3 1/7] build: enable debug info by default in meson builds Kevin Laatz
@ 2019-11-29 21:09     ` Kevin Laatz
  2019-11-29 21:09     ` [dpdk-dev] [PATCH v3 3/7] devtools: add abi dump generation script Kevin Laatz
                       ` (6 subsequent siblings)
  8 siblings, 0 replies; 60+ messages in thread
From: Kevin Laatz @ 2019-11-29 21:09 UTC (permalink / raw)
  To: dev; +Cc: david.marchand, thomas, bruce.richardson, ray.kinsella

From: Bruce Richardson <bruce.richardson@intel.com>

Rather than trying to manage all the cflags ourselves, we can use meson
warning levels to give the user more control. We remove the Wextra flag and
rely on meson to add it, by bumping up our default warning level.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
 config/meson.build | 40 +++++++++++++++++++++-------------------
 meson.build        |  3 ++-
 2 files changed, 23 insertions(+), 20 deletions(-)

diff --git a/config/meson.build b/config/meson.build
index 364a8d739..36a594970 100644
--- a/config/meson.build
+++ b/config/meson.build
@@ -158,31 +158,33 @@ endif
 # add -include rte_config to cflags
 add_project_arguments('-include', 'rte_config.h', language: 'c')
 
-# enable extra warnings and disable any unwanted warnings
+# enable extra warnings and disable any unwanted warnings. "-Wall" is added
+# by meson at warning level 1, and "-Wextra" at level 2, so we can omit
+# those. Add extra warnings at level 2 or above. (2 is default level).
 warning_flags = [
-	# -Wall is added by meson by default, so add -Wextra only
-	'-Wextra',
-
-	# additional warnings in alphabetical order
-	'-Wcast-qual',
-	'-Wdeprecated',
-	'-Wformat-nonliteral',
-	'-Wformat-security',
-	'-Wmissing-declarations',
-	'-Wmissing-prototypes',
-	'-Wnested-externs',
-	'-Wold-style-definition',
-	'-Wpointer-arith',
-	'-Wsign-compare',
-	'-Wstrict-prototypes',
-	'-Wundef',
-	'-Wwrite-strings',
-
 	# globally disabled warnings
 	'-Wno-address-of-packed-member',
 	'-Wno-packed-not-aligned',
 	'-Wno-missing-field-initializers'
 ]
+if get_option('warning_level').to_int() >= 2
+	warning_flags += [
+		# additional warnings in alphabetical order
+		'-Wcast-qual',
+		'-Wdeprecated',
+		'-Wformat-nonliteral',
+		'-Wformat-security',
+		'-Wmissing-declarations',
+		'-Wmissing-prototypes',
+		'-Wnested-externs',
+		'-Wold-style-definition',
+		'-Wpointer-arith',
+		'-Wsign-compare',
+		'-Wstrict-prototypes',
+		'-Wundef',
+		'-Wwrite-strings',
+	]
+endif
 if not dpdk_conf.get('RTE_ARCH_64')
 # for 32-bit, don't warn about casting a 32-bit pointer to 64-bit int - it's fine!!
 	warning_flags += '-Wno-pointer-to-int-cast'
diff --git a/meson.build b/meson.build
index 3b7a2e7de..7a8f97ad6 100644
--- a/meson.build
+++ b/meson.build
@@ -8,7 +8,8 @@ project('DPDK', 'C',
 		files('VERSION')).stdout().strip(),
 	license: 'BSD',
 	default_options: ['buildtype=debugoptimized',
-			'default_library=static'],
+			'default_library=static',
+			'warning_level=2'],
 	meson_version: '>= 0.47.1'
 )
 
-- 
2.17.1


^ permalink raw reply	[flat|nested] 60+ messages in thread

* [dpdk-dev] [PATCH v3 3/7] devtools: add abi dump generation script
  2019-11-29 21:08   ` [dpdk-dev] [PATCH v3 0/7] Add ABI compatibility checks to the meson build Kevin Laatz
  2019-11-29 21:08     ` [dpdk-dev] [PATCH v3 1/7] build: enable debug info by default in meson builds Kevin Laatz
  2019-11-29 21:09     ` [dpdk-dev] [PATCH v3 2/7] build: use meson warning levels Kevin Laatz
@ 2019-11-29 21:09     ` Kevin Laatz
  2019-11-29 21:09     ` [dpdk-dev] [PATCH v3 4/7] build: add meson option for abi related checks Kevin Laatz
                       ` (5 subsequent siblings)
  8 siblings, 0 replies; 60+ messages in thread
From: Kevin Laatz @ 2019-11-29 21:09 UTC (permalink / raw)
  To: dev; +Cc: david.marchand, thomas, bruce.richardson, ray.kinsella, Kevin Laatz

This patch adds a script to generate ABI dump files. These files will be
required to perform ABI compatibility checks during the build later in the
patchset. This script should be run on a DPDK version with a stable ABI.

Since this is a tool designed for human use, we simplify it to just work
off a whole build directory, taking the parameter of the builddir and
generating the lib|drivers/abi dir. This is hardcoded into the script since
the meson build expects the .dump files in these directories.

Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
 devtools/gen-abi-dump.sh | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)
 create mode 100755 devtools/gen-abi-dump.sh

diff --git a/devtools/gen-abi-dump.sh b/devtools/gen-abi-dump.sh
new file mode 100755
index 000000000..ffedef10c
--- /dev/null
+++ b/devtools/gen-abi-dump.sh
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+builddir=$1
+
+if [ -z "$builddir" ] ; then
+	echo "Usage: $(basename $0) build_dir"
+	exit 1
+fi
+
+if [ ! -d "$builddir" ] ; then
+	echo "Error: build directory, '$builddir', doesn't exist"
+	exit 1
+fi
+
+for d in lib drivers ; do
+	mkdir -p $d/abi
+
+	for f in $builddir/$d/*.so* ; do
+		test -L "$f" && continue
+
+		libname=$(basename $f)
+		abidw --out-file $d/abi/${libname%.so*}.dump $f || exit 1
+	done
+done
-- 
2.17.1


^ permalink raw reply	[flat|nested] 60+ messages in thread

* [dpdk-dev] [PATCH v3 4/7] build: add meson option for abi related checks
  2019-11-29 21:08   ` [dpdk-dev] [PATCH v3 0/7] Add ABI compatibility checks to the meson build Kevin Laatz
                       ` (2 preceding siblings ...)
  2019-11-29 21:09     ` [dpdk-dev] [PATCH v3 3/7] devtools: add abi dump generation script Kevin Laatz
@ 2019-11-29 21:09     ` Kevin Laatz
  2019-11-29 21:09     ` [dpdk-dev] [PATCH v3 5/7] build: add lib abi checks to meson Kevin Laatz
                       ` (4 subsequent siblings)
  8 siblings, 0 replies; 60+ messages in thread
From: Kevin Laatz @ 2019-11-29 21:09 UTC (permalink / raw)
  To: dev; +Cc: david.marchand, thomas, bruce.richardson, ray.kinsella, Kevin Laatz

This patch adds a new meson option for running ABI compatibility checks
during the build. If enabled, the lib and drivers .so files will be
compared against any existing ABI dump files in lib|drivers/abi of the
source directory. If there are any incompatibilities, the build will fail
and display the incompatibility.

Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
---
 meson_options.txt | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/meson_options.txt b/meson_options.txt
index bc369d06c..5f42def1d 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -1,5 +1,7 @@
 # Please keep these options sorted alphabetically.
 
+option('compat_checks', type: 'boolean', value: true,
+	description: 'enable abi compatibility checks and experimental syms checks to run during the build')
 option('disable_drivers', type: 'string', value: '',
 	description: 'Comma-separated list of drivers to explicitly disable.')
 option('drivers_install_subdir', type: 'string', value: 'dpdk/pmds-<VERSION>',
-- 
2.17.1


^ permalink raw reply	[flat|nested] 60+ messages in thread

* [dpdk-dev] [PATCH v3 5/7] build: add lib abi checks to meson
  2019-11-29 21:08   ` [dpdk-dev] [PATCH v3 0/7] Add ABI compatibility checks to the meson build Kevin Laatz
                       ` (3 preceding siblings ...)
  2019-11-29 21:09     ` [dpdk-dev] [PATCH v3 4/7] build: add meson option for abi related checks Kevin Laatz
@ 2019-11-29 21:09     ` Kevin Laatz
  2019-11-29 21:09     ` [dpdk-dev] [PATCH v3 6/7] build: add drivers " Kevin Laatz
                       ` (3 subsequent siblings)
  8 siblings, 0 replies; 60+ messages in thread
From: Kevin Laatz @ 2019-11-29 21:09 UTC (permalink / raw)
  To: dev; +Cc: david.marchand, thomas, bruce.richardson, ray.kinsella, Kevin Laatz

This patch adds the ABI compatibility check for the lib directory to the
meson build. If enabled, the ABI compatibility checks will run for all
.so's in the lib directory (provided a matching dump file exists). The
build will fail if an ABI incompatibility is detected.

Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>

---
v2:
  - fixed conditional around abi check custom target
v3:
  - fix typo in meson option name
---
 buildtools/meson.build |  4 ++++
 lib/meson.build        | 13 +++++++++++++
 2 files changed, 17 insertions(+)

diff --git a/buildtools/meson.build b/buildtools/meson.build
index 6ef2c5721..1d6915708 100644
--- a/buildtools/meson.build
+++ b/buildtools/meson.build
@@ -7,6 +7,10 @@ pmdinfo = find_program('gen-pmdinfo-cfile.sh')
 
 check_experimental_syms = find_program('check-experimental-syms.sh')
 
+if get_option('compat_checks')
+	abidiff = find_program('abidiff')
+endif
+
 # set up map-to-def script using python, either built-in or external
 python3 = import('python').find_installation(required: false)
 if python3.found()
diff --git a/lib/meson.build b/lib/meson.build
index 6ceb5e756..69ea3a2b0 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -180,6 +180,19 @@ foreach l:libraries
 					include_directories: includes,
 					dependencies: shared_deps)
 
+			if not is_windows and get_option('compat_checks')
+				custom_target(dir_name + '.abi_chk',
+					command: [abidiff,
+						meson.source_root() + '/lib/abi/'
+						+ dir_name + '.dump',
+						'@INPUT@'],
+					input: shared_lib,
+					output: dir_name + '.abi_chk',
+					capture: true,
+					install: false,
+					build_by_default: is_experimental == 0)
+			endif
+
 			dpdk_libraries = [shared_lib] + dpdk_libraries
 			dpdk_static_libraries = [static_lib] + dpdk_static_libraries
 		endif # sources.length() > 0
-- 
2.17.1


^ permalink raw reply	[flat|nested] 60+ messages in thread

* [dpdk-dev] [PATCH v3 6/7] build: add drivers abi checks to meson
  2019-11-29 21:08   ` [dpdk-dev] [PATCH v3 0/7] Add ABI compatibility checks to the meson build Kevin Laatz
                       ` (4 preceding siblings ...)
  2019-11-29 21:09     ` [dpdk-dev] [PATCH v3 5/7] build: add lib abi checks to meson Kevin Laatz
@ 2019-11-29 21:09     ` Kevin Laatz
  2019-11-29 21:09     ` [dpdk-dev] [PATCH v3 7/7] build: clean up experimental syms check Kevin Laatz
                       ` (2 subsequent siblings)
  8 siblings, 0 replies; 60+ messages in thread
From: Kevin Laatz @ 2019-11-29 21:09 UTC (permalink / raw)
  To: dev; +Cc: david.marchand, thomas, bruce.richardson, ray.kinsella, Kevin Laatz

This patch adds the ABI compatibility check for the drivers directory to
the meson build. If enabled, the ABI compatibility checks will run for all
.so's in the lib directory (provided a matching dump file exists). The
build will fail if an ABI incompatibility is detected.

Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>

---
v2:
  - fixed conditional around abi check custom target
---
 drivers/meson.build | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/drivers/meson.build b/drivers/meson.build
index 72eec4608..e19eed419 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -196,6 +196,19 @@ foreach class:dpdk_driver_classes
 					include_directories: includes,
 					dependencies: static_deps)
 
+			if not is_windows and get_option('compat_checks')
+				custom_target('lib' + lib_name + '.abi_chk',
+					command: [abidiff,
+						meson.source_root() + '/drivers/abi/lib'
+						+ lib_name + '.dump',
+						'@INPUT@'],
+					input: shared_lib,
+					output: 'lib' + lib_name + '.abi_chk',
+					capture: true,
+					install: false,
+					build_by_default: is_experimental == 0)
+			endif
+
 			dpdk_drivers += static_lib
 
 			set_variable('shared_@0@'.format(lib_name), shared_dep)
-- 
2.17.1


^ permalink raw reply	[flat|nested] 60+ messages in thread

* [dpdk-dev] [PATCH v3 7/7] build: clean up experimental syms check
  2019-11-29 21:08   ` [dpdk-dev] [PATCH v3 0/7] Add ABI compatibility checks to the meson build Kevin Laatz
                       ` (5 preceding siblings ...)
  2019-11-29 21:09     ` [dpdk-dev] [PATCH v3 6/7] build: add drivers " Kevin Laatz
@ 2019-11-29 21:09     ` Kevin Laatz
  2019-12-03 11:03     ` [dpdk-dev] [PATCH v3 0/7] Add ABI compatibility checks to the meson build David Marchand
  2019-12-11 18:21     ` [dpdk-dev] [PATCH v4 0/3] " Kevin Laatz
  8 siblings, 0 replies; 60+ messages in thread
From: Kevin Laatz @ 2019-11-29 21:09 UTC (permalink / raw)
  To: dev; +Cc: david.marchand, thomas, bruce.richardson, ray.kinsella, Kevin Laatz

This patch cleans up the meson build files in lib and drivers by moving the
custom target for checking the experimental syms next to the abi compat
checks. This also removes the dependency on the check for the shared build,
which was not required by anything, but was only added to force the
experimental syms check run.

Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
---
 drivers/meson.build | 21 +++++++++++----------
 lib/meson.build     | 21 +++++++++++----------
 2 files changed, 22 insertions(+), 20 deletions(-)

diff --git a/drivers/meson.build b/drivers/meson.build
index e19eed419..9b0955722 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -163,15 +163,6 @@ foreach class:dpdk_driver_classes
 					'-Wl,/implib:lib\\' + implib]
 			else
 				lk_args = ['-Wl,--version-script=' + version_map]
-				# on unix systems check the output of the
-				# experimental syms script, using it as a
-				# dependency of the .so build
-				lk_deps += custom_target(lib_name + '.exp_chk',
-					command: [check_experimental_syms,
-						version_map, '@INPUT@'],
-					capture: true,
-					input: static_lib,
-					output: lib_name + '.exp_chk')
 			endif
 
 			shared_lib = shared_library(lib_name,
@@ -181,7 +172,6 @@ foreach class:dpdk_driver_classes
 				dependencies: shared_deps,
 				c_args: cflags,
 				link_args: lk_args,
-				link_depends: lk_deps,
 				version: lib_version,
 				soversion: so_version,
 				install: true,
@@ -197,6 +187,17 @@ foreach class:dpdk_driver_classes
 					dependencies: static_deps)
 
 			if not is_windows and get_option('compat_checks')
+				# on unix systems check the output of the
+				# experimental syms script
+				custom_target(lib_name + '.exp_chk',
+					command: [check_experimental_syms,
+						version_map, '@INPUT@'],
+					capture: true,
+					input: static_lib,
+					output: lib_name + '.exp_chk',
+					install: false,
+					build_by_default: true)
+
 				custom_target('lib' + lib_name + '.abi_chk',
 					command: [abidiff,
 						meson.source_root() + '/drivers/abi/lib'
diff --git a/lib/meson.build b/lib/meson.build
index 69ea3a2b0..c448d9dff 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -154,15 +154,6 @@ foreach l:libraries
 					'-Wl,/implib:lib\\' + implib]
 			else
 				lk_args = ['-Wl,--version-script=' + version_map]
-				# on unix systems check the output of the
-				# experimental syms script, using it as a
-				# dependency of the .so build
-				lk_deps += custom_target(name + '.exp_chk',
-					command: [check_experimental_syms,
-						version_map, '@INPUT@'],
-					capture: true,
-					input: static_lib,
-					output: name + '.exp_chk')
 			endif
 
 			shared_lib = shared_library(libname,
@@ -172,7 +163,6 @@ foreach l:libraries
 					dependencies: shared_deps,
 					include_directories: includes,
 					link_args: lk_args,
-					link_depends: lk_deps,
 					version: lib_version,
 					soversion: so_version,
 					install: true)
@@ -181,6 +171,17 @@ foreach l:libraries
 					dependencies: shared_deps)
 
 			if not is_windows and get_option('compat_checks')
+				# on unix systems check the output of the
+				# experimental syms script
+				custom_target(name + '.exp_chk',
+					command: [check_experimental_syms,
+						version_map, '@INPUT@'],
+					capture: true,
+					input: static_lib,
+					output: name + '.exp_chk',
+					install: false,
+					build_by_default: true)
+
 				custom_target(dir_name + '.abi_chk',
 					command: [abidiff,
 						meson.source_root() + '/lib/abi/'
-- 
2.17.1


^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [dpdk-dev] [PATCH v3 0/7] Add ABI compatibility checks to the meson build
  2019-11-29 21:08   ` [dpdk-dev] [PATCH v3 0/7] Add ABI compatibility checks to the meson build Kevin Laatz
                       ` (6 preceding siblings ...)
  2019-11-29 21:09     ` [dpdk-dev] [PATCH v3 7/7] build: clean up experimental syms check Kevin Laatz
@ 2019-12-03 11:03     ` David Marchand
  2019-12-03 15:27       ` Laatz, Kevin
  2019-12-11 18:21     ` [dpdk-dev] [PATCH v4 0/3] " Kevin Laatz
  8 siblings, 1 reply; 60+ messages in thread
From: David Marchand @ 2019-12-03 11:03 UTC (permalink / raw)
  To: Kevin Laatz; +Cc: dev, Thomas Monjalon, Bruce Richardson, Kinsella, Ray

On Fri, Nov 29, 2019 at 10:09 PM Kevin Laatz <kevin.laatz@intel.com> wrote:
>
> With the recent changes made to stabilize ABI versioning in DPDK, it will
> become increasingly important to check patches for ABI compatibility. We
> propose adding the ABI compatibility checking to be done as part of the
> build.
>
> The advantages to adding the ABI compatibility checking to the build are
> two-fold. Firstly, developers can easily check their patches to make sure
> they don’t break the ABI without adding any extra steps. Secondly, it
> makes the integration into existing CI seamless since there are no extra
> scripts to make the CI run. The build will run as usual and if an
> incompatibility is detected in the ABI, the build will fail and show the
> incompatibility. As an added bonus, enabling the ABI compatibility checks
> does not impact the build speed.
>
> The proposed solution works as follows:
> 1. Generate the ABI dump of the baseline. This can be done with the new
>    script added in this RFC. This step will only need to be done when the
>    ABI version changes (so once a year) and can be added to master so it
>    exists by default. This step can be skipped if the dump files for the
>    baseline already exist.
> 2. Build with meson. If there is an ABI incompatibility, the build will
>    fail and print the incompatibility information.
>
> The patches accompanying this RFC add the ABI dump file generating script,
> the meson option required to enable/disable the checks, and the required
> meson changes to run the compatibility checks during the build.

Global comments:
- why are patch 1 and 2 in this series, is this really needed?
- please squash patches 3, 4, 5 and 6, reading them separately is a
pain and they are quite small,
- if Windows does not support the ABI check, enforce this earlier in
meson and refuse enabling it rather than silently ignoring it,
- I would not enable this check by default
  - this is a developer option, people just building the dpdk don't
care about it,
  - can we have something like a tristate "auto" (default, triggers
the check if abidiff is installed), "disabled" and "enabled" (not
having abidiff installed triggers an error) ?
- please update the travis packages so that we can run those checks
for developers submitting patches
- I don't think you tested this series with
devtools/test-meson-builds.sh, please do. It fails with a custom build
directory and in the dpdk tree too:

Build targets in project: 1019
WARNING: Project specifies a minimum meson_version '>= 0.47.1' but
uses features which were added in newer versions:
 * 0.48.0: {'console arg in custom_target'}
 * 0.50.0: {'install arg in configure_file'}
Found ninja-1.9.0 at /usr/bin/ninja
ninja -C /home/dmarchan/builds/build-gcc-static
ninja: Entering directory `/home/dmarchan/builds/build-gcc-static'
[48/2291] Generating librte_kvargs.abi_chk with a meson_exe.py custom command.
FAILED: lib/librte_kvargs.abi_chk
/usr/bin/meson --internal exe
/home/dmarchan/builds/build-gcc-static/meson-private/meson_exe_abidiff_6511538ddd95d9672028017110fa45c67f01f7be.dat
file /home/dmarchan/dpdk/lib/abi/librte_kvargs.dump does not exist
[77/2291] Compiling C object
'lib/76b5a35@@rte_mbuf@sta/librte_mbuf_rte_mbuf.c.o'.
ninja: build stopped: subcommand failed.


--
David Marchand


^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [dpdk-dev] [PATCH v3 0/7] Add ABI compatibility checks to the meson build
  2019-12-03 11:03     ` [dpdk-dev] [PATCH v3 0/7] Add ABI compatibility checks to the meson build David Marchand
@ 2019-12-03 15:27       ` Laatz, Kevin
  2019-12-04  8:47         ` David Marchand
  2019-12-10 11:07         ` David Marchand
  0 siblings, 2 replies; 60+ messages in thread
From: Laatz, Kevin @ 2019-12-03 15:27 UTC (permalink / raw)
  To: David Marchand; +Cc: dev, Thomas Monjalon, Bruce Richardson, Kinsella, Ray

On 03/12/2019 11:03, David Marchand wrote:
> On Fri, Nov 29, 2019 at 10:09 PM Kevin Laatz <kevin.laatz@intel.com> wrote:
>> With the recent changes made to stabilize ABI versioning in DPDK, it will
>> become increasingly important to check patches for ABI compatibility. We
>> propose adding the ABI compatibility checking to be done as part of the
>> build.
>>
>> The advantages to adding the ABI compatibility checking to the build are
>> two-fold. Firstly, developers can easily check their patches to make sure
>> they don’t break the ABI without adding any extra steps. Secondly, it
>> makes the integration into existing CI seamless since there are no extra
>> scripts to make the CI run. The build will run as usual and if an
>> incompatibility is detected in the ABI, the build will fail and show the
>> incompatibility. As an added bonus, enabling the ABI compatibility checks
>> does not impact the build speed.
>>
>> The proposed solution works as follows:
>> 1. Generate the ABI dump of the baseline. This can be done with the new
>>     script added in this RFC. This step will only need to be done when the
>>     ABI version changes (so once a year) and can be added to master so it
>>     exists by default. This step can be skipped if the dump files for the
>>     baseline already exist.
>> 2. Build with meson. If there is an ABI incompatibility, the build will
>>     fail and print the incompatibility information.
>>
>> The patches accompanying this RFC add the ABI dump file generating script,
>> the meson option required to enable/disable the checks, and the required
>> meson changes to run the compatibility checks during the build.
> Global comments:
> - why are patch 1 and 2 in this series, is this really needed?
Not if we make this an 'auto' option. It would have needed debug info to 
do the ABI check.
> - please squash patches 3, 4, 5 and 6, reading them separately is a
> pain and they are quite small,
Will do
> - if Windows does not support the ABI check, enforce this earlier in
> meson and refuse enabling it rather than silently ignoring it,
Makes sense, will look into this.
> - I would not enable this check by default
>    - this is a developer option, people just building the dpdk don't
> care about it,
>    - can we have something like a tristate "auto" (default, triggers
> the check if abidiff is installed), "disabled" and "enabled" (not
> having abidiff installed triggers an error) ?
Seems reasonable, will change.
> - please update the travis packages so that we can run those checks
> for developers submitting patches
Will do.
> - I don't think you tested this series with
> devtools/test-meson-builds.sh, please do. It fails with a custom build
> directory and in the dpdk tree too:
>
> Build targets in project: 1019
> WARNING: Project specifies a minimum meson_version '>= 0.47.1' but
> uses features which were added in newer versions:
>   * 0.48.0: {'console arg in custom_target'}
>   * 0.50.0: {'install arg in configure_file'}
> Found ninja-1.9.0 at /usr/bin/ninja
> ninja -C /home/dmarchan/builds/build-gcc-static
> ninja: Entering directory `/home/dmarchan/builds/build-gcc-static'
> [48/2291] Generating librte_kvargs.abi_chk with a meson_exe.py custom command.
> FAILED: lib/librte_kvargs.abi_chk
> /usr/bin/meson --internal exe
> /home/dmarchan/builds/build-gcc-static/meson-private/meson_exe_abidiff_6511538ddd95d9672028017110fa45c67f01f7be.dat
> file /home/dmarchan/dpdk/lib/abi/librte_kvargs.dump does not exist
> [77/2291] Compiling C object
> 'lib/76b5a35@@rte_mbuf@sta/librte_mbuf_rte_mbuf.c.o'.
> ninja: build stopped: subcommand failed.

This is failing as the .dump files have not been created yet. They can 
be generated with devtools/gen-abi-dump.sh <build_dir>. This will 
generate a .dump file for each shared object in the builddir drivers and 
lib folders.

/Kevin



^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [dpdk-dev] [PATCH v3 0/7] Add ABI compatibility checks to the meson build
  2019-12-03 15:27       ` Laatz, Kevin
@ 2019-12-04  8:47         ` David Marchand
  2019-12-04 10:46           ` Bruce Richardson
  2019-12-04 11:56           ` Neil Horman
  2019-12-10 11:07         ` David Marchand
  1 sibling, 2 replies; 60+ messages in thread
From: David Marchand @ 2019-12-04  8:47 UTC (permalink / raw)
  To: Laatz, Kevin
  Cc: dev, Thomas Monjalon, Bruce Richardson, Kinsella, Ray, Neil Horman

On Tue, Dec 3, 2019 at 4:27 PM Laatz, Kevin <kevin.laatz@intel.com> wrote:
> > Build targets in project: 1019
> > WARNING: Project specifies a minimum meson_version '>= 0.47.1' but
> > uses features which were added in newer versions:
> >   * 0.48.0: {'console arg in custom_target'}
> >   * 0.50.0: {'install arg in configure_file'}
> > Found ninja-1.9.0 at /usr/bin/ninja
> > ninja -C /home/dmarchan/builds/build-gcc-static
> > ninja: Entering directory `/home/dmarchan/builds/build-gcc-static'
> > [48/2291] Generating librte_kvargs.abi_chk with a meson_exe.py custom command.
> > FAILED: lib/librte_kvargs.abi_chk
> > /usr/bin/meson --internal exe
> > /home/dmarchan/builds/build-gcc-static/meson-private/meson_exe_abidiff_6511538ddd95d9672028017110fa45c67f01f7be.dat
> > file /home/dmarchan/dpdk/lib/abi/librte_kvargs.dump does not exist
> > [77/2291] Compiling C object
> > 'lib/76b5a35@@rte_mbuf@sta/librte_mbuf_rte_mbuf.c.o'.
> > ninja: build stopped: subcommand failed.
>
> This is failing as the .dump files have not been created yet. They can
> be generated with devtools/gen-abi-dump.sh <build_dir>. This will
> generate a .dump file for each shared object in the builddir drivers and
> lib folders.

Throwing an idea, I did not investigate.

Could we refactor our tools/checks on the .map files to use the dump files?
We would then only maintain one file about symbols versioning.


-- 
David Marchand


^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [dpdk-dev] [PATCH v3 0/7] Add ABI compatibility checks to the meson build
  2019-12-04  8:47         ` David Marchand
@ 2019-12-04 10:46           ` Bruce Richardson
  2019-12-04 11:56           ` Neil Horman
  1 sibling, 0 replies; 60+ messages in thread
From: Bruce Richardson @ 2019-12-04 10:46 UTC (permalink / raw)
  To: David Marchand
  Cc: Laatz, Kevin, dev, Thomas Monjalon, Kinsella, Ray, Neil Horman

On Wed, Dec 04, 2019 at 09:47:31AM +0100, David Marchand wrote:
> On Tue, Dec 3, 2019 at 4:27 PM Laatz, Kevin <kevin.laatz@intel.com> wrote:
> > > Build targets in project: 1019
> > > WARNING: Project specifies a minimum meson_version '>= 0.47.1' but
> > > uses features which were added in newer versions:
> > >   * 0.48.0: {'console arg in custom_target'}
> > >   * 0.50.0: {'install arg in configure_file'}
> > > Found ninja-1.9.0 at /usr/bin/ninja
> > > ninja -C /home/dmarchan/builds/build-gcc-static
> > > ninja: Entering directory `/home/dmarchan/builds/build-gcc-static'
> > > [48/2291] Generating librte_kvargs.abi_chk with a meson_exe.py custom command.
> > > FAILED: lib/librte_kvargs.abi_chk
> > > /usr/bin/meson --internal exe
> > > /home/dmarchan/builds/build-gcc-static/meson-private/meson_exe_abidiff_6511538ddd95d9672028017110fa45c67f01f7be.dat
> > > file /home/dmarchan/dpdk/lib/abi/librte_kvargs.dump does not exist
> > > [77/2291] Compiling C object
> > > 'lib/76b5a35@@rte_mbuf@sta/librte_mbuf_rte_mbuf.c.o'.
> > > ninja: build stopped: subcommand failed.
> >
> > This is failing as the .dump files have not been created yet. They can
> > be generated with devtools/gen-abi-dump.sh <build_dir>. This will
> > generate a .dump file for each shared object in the builddir drivers and
> > lib folders.
> 
> Throwing an idea, I did not investigate.
> 
> Could we refactor our tools/checks on the .map files to use the dump files?
> We would then only maintain one file about symbols versioning.
> 
Could be looked into, but I'd worry about the complexity of the dump files
holding the whole API compared to the simpler map files which just have
a simple function listing.

/Bruce

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [dpdk-dev] [PATCH v3 0/7] Add ABI compatibility checks to the meson build
  2019-12-04  8:47         ` David Marchand
  2019-12-04 10:46           ` Bruce Richardson
@ 2019-12-04 11:56           ` Neil Horman
  2019-12-04 12:00             ` David Marchand
  1 sibling, 1 reply; 60+ messages in thread
From: Neil Horman @ 2019-12-04 11:56 UTC (permalink / raw)
  To: David Marchand
  Cc: Laatz, Kevin, dev, Thomas Monjalon, Bruce Richardson, Kinsella, Ray

On Wed, Dec 04, 2019 at 09:47:31AM +0100, David Marchand wrote:
> On Tue, Dec 3, 2019 at 4:27 PM Laatz, Kevin <kevin.laatz@intel.com> wrote:
> > > Build targets in project: 1019
> > > WARNING: Project specifies a minimum meson_version '>= 0.47.1' but
> > > uses features which were added in newer versions:
> > >   * 0.48.0: {'console arg in custom_target'}
> > >   * 0.50.0: {'install arg in configure_file'}
> > > Found ninja-1.9.0 at /usr/bin/ninja
> > > ninja -C /home/dmarchan/builds/build-gcc-static
> > > ninja: Entering directory `/home/dmarchan/builds/build-gcc-static'
> > > [48/2291] Generating librte_kvargs.abi_chk with a meson_exe.py custom command.
> > > FAILED: lib/librte_kvargs.abi_chk
> > > /usr/bin/meson --internal exe
> > > /home/dmarchan/builds/build-gcc-static/meson-private/meson_exe_abidiff_6511538ddd95d9672028017110fa45c67f01f7be.dat
> > > file /home/dmarchan/dpdk/lib/abi/librte_kvargs.dump does not exist
> > > [77/2291] Compiling C object
> > > 'lib/76b5a35@@rte_mbuf@sta/librte_mbuf_rte_mbuf.c.o'.
> > > ninja: build stopped: subcommand failed.
> >
> > This is failing as the .dump files have not been created yet. They can
> > be generated with devtools/gen-abi-dump.sh <build_dir>. This will
> > generate a .dump file for each shared object in the builddir drivers and
> > lib folders.
> 
> Throwing an idea, I did not investigate.
> 
> Could we refactor our tools/checks on the .map files to use the dump files?
> We would then only maintain one file about symbols versioning.
> 
Thats a chicken and egg problem.  The map file is the canonical source for
versioning information. Any information that is encoded in the output of objdump
regarding versioning is sourced from the map files, so while you could use the
objdump output to check versioning, you can't remove the need for map files to
encode it.

If you want to remove the map files, we would need to look at the creation of
macros to encode versioning information for each symbol you want to export, and
use that to dynamically build a version map file (simmilar to what the linux
kernel EXPORT_SYMBOL does).  But that just moves version tracking around, it
doesn't really eliminate it.

Neil

> 
> -- 
> David Marchand
> 
> 

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [dpdk-dev] [PATCH v3 0/7] Add ABI compatibility checks to the meson build
  2019-12-04 11:56           ` Neil Horman
@ 2019-12-04 12:00             ` David Marchand
  0 siblings, 0 replies; 60+ messages in thread
From: David Marchand @ 2019-12-04 12:00 UTC (permalink / raw)
  To: Neil Horman
  Cc: Laatz, Kevin, dev, Thomas Monjalon, Bruce Richardson, Kinsella, Ray

On Wed, Dec 4, 2019 at 12:56 PM Neil Horman <nhorman@tuxdriver.com> wrote:
>
> On Wed, Dec 04, 2019 at 09:47:31AM +0100, David Marchand wrote:
> > On Tue, Dec 3, 2019 at 4:27 PM Laatz, Kevin <kevin.laatz@intel.com> wrote:
> > > > Build targets in project: 1019
> > > > WARNING: Project specifies a minimum meson_version '>= 0.47.1' but
> > > > uses features which were added in newer versions:
> > > >   * 0.48.0: {'console arg in custom_target'}
> > > >   * 0.50.0: {'install arg in configure_file'}
> > > > Found ninja-1.9.0 at /usr/bin/ninja
> > > > ninja -C /home/dmarchan/builds/build-gcc-static
> > > > ninja: Entering directory `/home/dmarchan/builds/build-gcc-static'
> > > > [48/2291] Generating librte_kvargs.abi_chk with a meson_exe.py custom command.
> > > > FAILED: lib/librte_kvargs.abi_chk
> > > > /usr/bin/meson --internal exe
> > > > /home/dmarchan/builds/build-gcc-static/meson-private/meson_exe_abidiff_6511538ddd95d9672028017110fa45c67f01f7be.dat
> > > > file /home/dmarchan/dpdk/lib/abi/librte_kvargs.dump does not exist
> > > > [77/2291] Compiling C object
> > > > 'lib/76b5a35@@rte_mbuf@sta/librte_mbuf_rte_mbuf.c.o'.
> > > > ninja: build stopped: subcommand failed.
> > >
> > > This is failing as the .dump files have not been created yet. They can
> > > be generated with devtools/gen-abi-dump.sh <build_dir>. This will
> > > generate a .dump file for each shared object in the builddir drivers and
> > > lib folders.
> >
> > Throwing an idea, I did not investigate.
> >
> > Could we refactor our tools/checks on the .map files to use the dump files?
> > We would then only maintain one file about symbols versioning.
> >
> Thats a chicken and egg problem.  The map file is the canonical source for
> versioning information. Any information that is encoded in the output of objdump
> regarding versioning is sourced from the map files, so while you could use the
> objdump output to check versioning, you can't remove the need for map files to
> encode it.

Ah ah.. yes.
^U on this idea.


-- 
David Marchand


^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [dpdk-dev] [PATCH v3 0/7] Add ABI compatibility checks to the meson build
  2019-12-03 15:27       ` Laatz, Kevin
  2019-12-04  8:47         ` David Marchand
@ 2019-12-10 11:07         ` David Marchand
  2019-12-10 11:36           ` Laatz, Kevin
  1 sibling, 1 reply; 60+ messages in thread
From: David Marchand @ 2019-12-10 11:07 UTC (permalink / raw)
  To: Laatz, Kevin; +Cc: dev, Thomas Monjalon, Bruce Richardson, Kinsella, Ray

On Tue, Dec 3, 2019 at 4:27 PM Laatz, Kevin <kevin.laatz@intel.com> wrote:
>
> On 03/12/2019 11:03, David Marchand wrote:
> > On Fri, Nov 29, 2019 at 10:09 PM Kevin Laatz <kevin.laatz@intel.com> wrote:
> >> With the recent changes made to stabilize ABI versioning in DPDK, it will
> >> become increasingly important to check patches for ABI compatibility. We
> >> propose adding the ABI compatibility checking to be done as part of the
> >> build.
> >>
> >> The advantages to adding the ABI compatibility checking to the build are
> >> two-fold. Firstly, developers can easily check their patches to make sure
> >> they don’t break the ABI without adding any extra steps. Secondly, it
> >> makes the integration into existing CI seamless since there are no extra
> >> scripts to make the CI run. The build will run as usual and if an
> >> incompatibility is detected in the ABI, the build will fail and show the
> >> incompatibility. As an added bonus, enabling the ABI compatibility checks
> >> does not impact the build speed.
> >>
> >> The proposed solution works as follows:
> >> 1. Generate the ABI dump of the baseline. This can be done with the new
> >>     script added in this RFC. This step will only need to be done when the
> >>     ABI version changes (so once a year) and can be added to master so it
> >>     exists by default. This step can be skipped if the dump files for the
> >>     baseline already exist.
> >> 2. Build with meson. If there is an ABI incompatibility, the build will
> >>     fail and print the incompatibility information.
> >>
> >> The patches accompanying this RFC add the ABI dump file generating script,
> >> the meson option required to enable/disable the checks, and the required
> >> meson changes to run the compatibility checks during the build.
> > Global comments:
> > - why are patch 1 and 2 in this series, is this really needed?
> Not if we make this an 'auto' option. It would have needed debug info to
> do the ABI check.
> > - please squash patches 3, 4, 5 and 6, reading them separately is a
> > pain and they are quite small,
> Will do
> > - if Windows does not support the ABI check, enforce this earlier in
> > meson and refuse enabling it rather than silently ignoring it,
> Makes sense, will look into this.
> > - I would not enable this check by default
> >    - this is a developer option, people just building the dpdk don't
> > care about it,
> >    - can we have something like a tristate "auto" (default, triggers
> > the check if abidiff is installed), "disabled" and "enabled" (not
> > having abidiff installed triggers an error) ?
> Seems reasonable, will change.
> > - please update the travis packages so that we can run those checks
> > for developers submitting patches
> Will do.
> > - I don't think you tested this series with
> > devtools/test-meson-builds.sh, please do. It fails with a custom build
> > directory and in the dpdk tree too:
> >
> > Build targets in project: 1019
> > WARNING: Project specifies a minimum meson_version '>= 0.47.1' but
> > uses features which were added in newer versions:
> >   * 0.48.0: {'console arg in custom_target'}
> >   * 0.50.0: {'install arg in configure_file'}
> > Found ninja-1.9.0 at /usr/bin/ninja
> > ninja -C /home/dmarchan/builds/build-gcc-static
> > ninja: Entering directory `/home/dmarchan/builds/build-gcc-static'
> > [48/2291] Generating librte_kvargs.abi_chk with a meson_exe.py custom command.
> > FAILED: lib/librte_kvargs.abi_chk
> > /usr/bin/meson --internal exe
> > /home/dmarchan/builds/build-gcc-static/meson-private/meson_exe_abidiff_6511538ddd95d9672028017110fa45c67f01f7be.dat
> > file /home/dmarchan/dpdk/lib/abi/librte_kvargs.dump does not exist
> > [77/2291] Compiling C object
> > 'lib/76b5a35@@rte_mbuf@sta/librte_mbuf_rte_mbuf.c.o'.
> > ninja: build stopped: subcommand failed.
>
> This is failing as the .dump files have not been created yet. They can
> be generated with devtools/gen-abi-dump.sh <build_dir>. This will
> generate a .dump file for each shared object in the builddir drivers and
> lib folders.

Pinging on this series, since the sooner we integrate it, the better.
We also need those dump files as part of the series, as it is not
obvious what reviewers (at least me :-)) should do about them.

Please can you work on a new revision?


Thanks.


--
David Marchand


^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [dpdk-dev] [PATCH v3 0/7] Add ABI compatibility checks to the meson build
  2019-12-10 11:07         ` David Marchand
@ 2019-12-10 11:36           ` Laatz, Kevin
  0 siblings, 0 replies; 60+ messages in thread
From: Laatz, Kevin @ 2019-12-10 11:36 UTC (permalink / raw)
  To: David Marchand; +Cc: dev, Thomas Monjalon, Bruce Richardson, Kinsella, Ray


On 10/12/2019 11:07, David Marchand wrote:
> On Tue, Dec 3, 2019 at 4:27 PM Laatz, Kevin <kevin.laatz@intel.com> wrote:
>> On 03/12/2019 11:03, David Marchand wrote:
>>> On Fri, Nov 29, 2019 at 10:09 PM Kevin Laatz <kevin.laatz@intel.com> wrote:
>>>> With the recent changes made to stabilize ABI versioning in DPDK, it will
>>>> become increasingly important to check patches for ABI compatibility. We
>>>> propose adding the ABI compatibility checking to be done as part of the
>>>> build.
>>>>
>>>> The advantages to adding the ABI compatibility checking to the build are
>>>> two-fold. Firstly, developers can easily check their patches to make sure
>>>> they don’t break the ABI without adding any extra steps. Secondly, it
>>>> makes the integration into existing CI seamless since there are no extra
>>>> scripts to make the CI run. The build will run as usual and if an
>>>> incompatibility is detected in the ABI, the build will fail and show the
>>>> incompatibility. As an added bonus, enabling the ABI compatibility checks
>>>> does not impact the build speed.
>>>>
>>>> The proposed solution works as follows:
>>>> 1. Generate the ABI dump of the baseline. This can be done with the new
>>>>      script added in this RFC. This step will only need to be done when the
>>>>      ABI version changes (so once a year) and can be added to master so it
>>>>      exists by default. This step can be skipped if the dump files for the
>>>>      baseline already exist.
>>>> 2. Build with meson. If there is an ABI incompatibility, the build will
>>>>      fail and print the incompatibility information.
>>>>
>>>> The patches accompanying this RFC add the ABI dump file generating script,
>>>> the meson option required to enable/disable the checks, and the required
>>>> meson changes to run the compatibility checks during the build.
>>> Global comments:
>>> - why are patch 1 and 2 in this series, is this really needed?
>> Not if we make this an 'auto' option. It would have needed debug info to
>> do the ABI check.
>>> - please squash patches 3, 4, 5 and 6, reading them separately is a
>>> pain and they are quite small,
>> Will do
>>> - if Windows does not support the ABI check, enforce this earlier in
>>> meson and refuse enabling it rather than silently ignoring it,
>> Makes sense, will look into this.
>>> - I would not enable this check by default
>>>     - this is a developer option, people just building the dpdk don't
>>> care about it,
>>>     - can we have something like a tristate "auto" (default, triggers
>>> the check if abidiff is installed), "disabled" and "enabled" (not
>>> having abidiff installed triggers an error) ?
>> Seems reasonable, will change.
>>> - please update the travis packages so that we can run those checks
>>> for developers submitting patches
>> Will do.
>>> - I don't think you tested this series with
>>> devtools/test-meson-builds.sh, please do. It fails with a custom build
>>> directory and in the dpdk tree too:
>>>
>>> Build targets in project: 1019
>>> WARNING: Project specifies a minimum meson_version '>= 0.47.1' but
>>> uses features which were added in newer versions:
>>>    * 0.48.0: {'console arg in custom_target'}
>>>    * 0.50.0: {'install arg in configure_file'}
>>> Found ninja-1.9.0 at /usr/bin/ninja
>>> ninja -C /home/dmarchan/builds/build-gcc-static
>>> ninja: Entering directory `/home/dmarchan/builds/build-gcc-static'
>>> [48/2291] Generating librte_kvargs.abi_chk with a meson_exe.py custom command.
>>> FAILED: lib/librte_kvargs.abi_chk
>>> /usr/bin/meson --internal exe
>>> /home/dmarchan/builds/build-gcc-static/meson-private/meson_exe_abidiff_6511538ddd95d9672028017110fa45c67f01f7be.dat
>>> file /home/dmarchan/dpdk/lib/abi/librte_kvargs.dump does not exist
>>> [77/2291] Compiling C object
>>> 'lib/76b5a35@@rte_mbuf@sta/librte_mbuf_rte_mbuf.c.o'.
>>> ninja: build stopped: subcommand failed.
>> This is failing as the .dump files have not been created yet. They can
>> be generated with devtools/gen-abi-dump.sh <build_dir>. This will
>> generate a .dump file for each shared object in the builddir drivers and
>> lib folders.
> Pinging on this series, since the sooner we integrate it, the better.
> We also need those dump files as part of the series, as it is not
> obvious what reviewers (at least me :-)) should do about them.
>
> Please can you work on a new revision?

Hi David,

I'm working on this. There were some extra things that needed to be 
worked out and added, like suppressing warnings about breaking 
experimental functions. I'm also adding the .dump files, currently 
filtering them to only add the ones we need.

Thanks,
Kevin


>
> Thanks.
>
>
> --
> David Marchand
>

^ permalink raw reply	[flat|nested] 60+ messages in thread

* [dpdk-dev] [PATCH v4 0/3] Add ABI compatibility checks to the meson build
  2019-11-29 21:08   ` [dpdk-dev] [PATCH v3 0/7] Add ABI compatibility checks to the meson build Kevin Laatz
                       ` (7 preceding siblings ...)
  2019-12-03 11:03     ` [dpdk-dev] [PATCH v3 0/7] Add ABI compatibility checks to the meson build David Marchand
@ 2019-12-11 18:21     ` Kevin Laatz
  2019-12-11 18:21       ` [dpdk-dev] [PATCH v4 2/3] build: add abi checks to meson Kevin Laatz
                         ` (3 more replies)
  8 siblings, 4 replies; 60+ messages in thread
From: Kevin Laatz @ 2019-12-11 18:21 UTC (permalink / raw)
  To: dev; +Cc: thomas, david.marchand, bruce.richardson, ray.kinsella, Kevin Laatz

With the recent changes made to stabilize ABI versioning in DPDK, it will
become increasingly important to check patches for ABI compatibility. We
propose adding the ABI compatibility checking to be done as part of the
build.

The advantages to adding the ABI compatibility checking to the build are
two-fold. Firstly, developers can easily check their patches to make sure
they don’t break the ABI without adding any extra steps. Secondly, it
makes the integration into existing CI seamless since there are no extra
scripts to make the CI run. The build will run as usual and if an
incompatibility is detected in the ABI, the build will fail and show the
incompatibility. As an added bonus, enabling the ABI compatibility checks
does not impact the build speed.

The proposed solution works as follows:
1. Generate the ABI dump of the baseline. This can be done with the new
   script added in this RFC. This step will only need to be done when the
   ABI version changes (so once a year) and can be added to master so it
   exists by default. This step can be skipped if the dump files for the
   baseline already exist.
2. Build with meson. If there is an ABI incompatibility, the build will
   fail and print the incompatibility information.

The patches accompanying this RFC add the ABI dump file generating script,
the meson option required to enable/disable the checks, and the required
meson changes to run the compatibility checks during the build.

Note: This patch set depends on: http://patches.dpdk.org/patch/63765/.
The generated .dump files in this patch set are based on the changes in the
patch "build: fix soname info for 19.11 compatibility". If a decision is
made to use a different format for the sonames, then a v5 of this set will
be required as the .dump files will need to be regenerated.

---
v2:
  - Rebased on master for 19.11.
  - Moved the experimental syms checks next to the abi checks. This also
    removed the dependency on the experimental checks from the shared
    build.
  - General cleanup.

v3:
  - Fixed typo in meson option name in buildtools/meson.build.

v4:
  - removed commits 1 and 2 from the patch set since they are not needed
    as part of this change
  - squash commits 3,4,5,6 into a single commit
  - changes meson option from type boolean to feature
  - update travis packages
  - move check for windows to earlier in build
  - add abignore file to suppress experimental functions
  - make the directories we store dump files in hidden
  - add .dump files for v20.0 ABI to patch set

Kevin Laatz (3):
  build: add dump files for v20.0 ABI
  build: add abi checks to meson
  build: clean up experimental syms check

 .travis.yml                                   |    9 +-
 buildtools/dpdk.abignore                      |    2 +
 buildtools/meson.build                        |    3 +
 config/meson.build                            |   10 +
 devtools/gen-abi-dump.sh                      |   24 +
 drivers/.abi/librte_bus_dpaa.dump             | 5303 ++++++++++++++
 drivers/.abi/librte_bus_fslmc.dump            | 5084 +++++++++++++
 drivers/.abi/librte_bus_ifpga.dump            |  973 +++
 drivers/.abi/librte_bus_pci.dump              |  835 +++
 drivers/.abi/librte_bus_vdev.dump             |  408 ++
 drivers/.abi/librte_bus_vmbus.dump            |  918 +++
 drivers/.abi/librte_common_cpt.dump           |   36 +
 drivers/.abi/librte_common_dpaax.dump         |  177 +
 drivers/.abi/librte_common_octeontx.dump      |   77 +
 drivers/.abi/librte_common_octeontx2.dump     |  988 +++
 drivers/.abi/librte_mempool_bucket.dump       |   15 +
 drivers/.abi/librte_mempool_dpaa.dump         |  323 +
 drivers/.abi/librte_mempool_dpaa2.dump        |  484 ++
 drivers/.abi/librte_mempool_octeontx.dump     |   22 +
 drivers/.abi/librte_mempool_octeontx2.dump    |  643 ++
 drivers/.abi/librte_mempool_ring.dump         |   15 +
 drivers/.abi/librte_mempool_stack.dump        |   16 +
 drivers/.abi/librte_pmd_af_packet.dump        |   22 +
 drivers/.abi/librte_pmd_af_xdp.dump           |   23 +
 drivers/.abi/librte_pmd_ark.dump              |   26 +
 drivers/.abi/librte_pmd_atlantic.dump         | 1296 ++++
 drivers/.abi/librte_pmd_avp.dump              |   26 +
 drivers/.abi/librte_pmd_axgbe.dump            |   27 +
 .../.abi/librte_pmd_bbdev_fpga_lte_fec.dump   |   74 +
 drivers/.abi/librte_pmd_bbdev_null.dump       |   17 +
 drivers/.abi/librte_pmd_bbdev_turbo_sw.dump   |   17 +
 drivers/.abi/librte_pmd_bnx2x.dump            |   28 +
 drivers/.abi/librte_pmd_bnxt.dump             | 3499 +++++++++
 drivers/.abi/librte_pmd_bond.dump             | 3586 +++++++++
 drivers/.abi/librte_pmd_caam_jr.dump          |   47 +
 drivers/.abi/librte_pmd_ccp.dump              | 1870 +++++
 drivers/.abi/librte_pmd_crypto_scheduler.dump | 1473 ++++
 drivers/.abi/librte_pmd_cxgbe.dump            |   27 +
 drivers/.abi/librte_pmd_dpaa.dump             | 2929 ++++++++
 drivers/.abi/librte_pmd_dpaa2.dump            | 3319 +++++++++
 drivers/.abi/librte_pmd_dpaa2_event.dump      |   36 +
 drivers/.abi/librte_pmd_dpaa2_sec.dump        | 1511 ++++
 drivers/.abi/librte_pmd_dpaa_event.dump       |   32 +
 drivers/.abi/librte_pmd_dpaa_sec.dump         | 1459 ++++
 drivers/.abi/librte_pmd_dsw_event.dump        |   23 +
 drivers/.abi/librte_pmd_e1000.dump            | 3414 +++++++++
 drivers/.abi/librte_pmd_ena.dump              |   32 +
 drivers/.abi/librte_pmd_enetc.dump            |   27 +
 drivers/.abi/librte_pmd_enic.dump             | 3282 +++++++++
 drivers/.abi/librte_pmd_failsafe.dump         | 3162 ++++++++
 drivers/.abi/librte_pmd_fm10k.dump            |  894 +++
 drivers/.abi/librte_pmd_hinic.dump            | 3110 ++++++++
 drivers/.abi/librte_pmd_hns3.dump             |   28 +
 drivers/.abi/librte_pmd_i40e.dump             | 3553 +++++++++
 drivers/.abi/librte_pmd_iavf.dump             |   71 +
 drivers/.abi/librte_pmd_ice.dump              | 6395 +++++++++++++++++
 drivers/.abi/librte_pmd_ifc.dump              |   24 +
 drivers/.abi/librte_pmd_ixgbe.dump            | 3369 +++++++++
 drivers/.abi/librte_pmd_kni.dump              |   22 +
 drivers/.abi/librte_pmd_liquidio.dump         |   27 +
 drivers/.abi/librte_pmd_memif.dump            |   27 +
 drivers/.abi/librte_pmd_netvsc.dump           |   28 +
 drivers/.abi/librte_pmd_nfp.dump              |   27 +
 drivers/.abi/librte_pmd_nitrox.dump           |   19 +
 drivers/.abi/librte_pmd_null.dump             |   22 +
 drivers/.abi/librte_pmd_null_crypto.dump      | 1317 ++++
 drivers/.abi/librte_pmd_octeontx.dump         |   49 +
 drivers/.abi/librte_pmd_octeontx2.dump        | 3140 ++++++++
 drivers/.abi/librte_pmd_octeontx2_crypto.dump |   28 +
 drivers/.abi/librte_pmd_octeontx2_event.dump  |   29 +
 .../.abi/librte_pmd_octeontx_compress.dump    |   25 +
 drivers/.abi/librte_pmd_octeontx_crypto.dump  |   28 +
 drivers/.abi/librte_pmd_octeontx_event.dump   |   36 +
 drivers/.abi/librte_pmd_opdl_event.dump       |   28 +
 drivers/.abi/librte_pmd_openssl.dump          | 1315 ++++
 drivers/.abi/librte_pmd_pcap.dump             |   23 +
 drivers/.abi/librte_pmd_pfe.dump              |   41 +
 drivers/.abi/librte_pmd_qat.dump              |  118 +
 drivers/.abi/librte_pmd_qede.dump             |   46 +
 drivers/.abi/librte_pmd_ring.dump             |  142 +
 drivers/.abi/librte_pmd_sfc.dump              | 3905 ++++++++++
 drivers/.abi/librte_pmd_skeleton_event.dump   |   25 +
 drivers/.abi/librte_pmd_softnic.dump          | 5523 ++++++++++++++
 drivers/.abi/librte_pmd_sw_event.dump         |   28 +
 drivers/.abi/librte_pmd_tap.dump              |   26 +
 drivers/.abi/librte_pmd_thunderx.dump         |   28 +
 drivers/.abi/librte_pmd_vdev_netvsc.dump      |   22 +
 drivers/.abi/librte_pmd_vhost.dump            |   57 +
 drivers/.abi/librte_pmd_virtio.dump           | 3808 ++++++++++
 drivers/.abi/librte_pmd_virtio_crypto.dump    | 1419 ++++
 drivers/.abi/librte_pmd_vmxnet3.dump          |   27 +
 drivers/.abi/librte_pmd_zlib.dump             | 1035 +++
 drivers/.abi/librte_rawdev_dpaa2_cmdif.dump   |   32 +
 drivers/.abi/librte_rawdev_dpaa2_qdma.dump    |  185 +
 drivers/.abi/librte_rawdev_ioat.dump          |   19 +
 drivers/.abi/librte_rawdev_ntb.dump           |  772 ++
 drivers/.abi/librte_rawdev_octeontx2_dma.dump |   23 +
 drivers/.abi/librte_rawdev_skeleton.dump      |   21 +
 drivers/meson.build                           |   34 +-
 lib/.abi/librte_acl.dump                      |  329 +
 lib/.abi/librte_bbdev.dump                    | 1789 +++++
 lib/.abi/librte_bitratestats.dump             |   85 +
 lib/.abi/librte_bpf.dump                      |  280 +
 lib/.abi/librte_cfgfile.dump                  |  188 +
 lib/.abi/librte_cmdline.dump                  |  728 ++
 lib/.abi/librte_compressdev.dump              | 1249 ++++
 lib/.abi/librte_cryptodev.dump                | 1806 +++++
 lib/.abi/librte_distributor.dump              |  627 ++
 lib/.abi/librte_eal.dump                      | 3330 +++++++++
 lib/.abi/librte_efd.dump                      |  319 +
 lib/.abi/librte_ethdev.dump                   | 5272 ++++++++++++++
 lib/.abi/librte_eventdev.dump                 | 5520 ++++++++++++++
 lib/.abi/librte_fib.dump                      |  327 +
 lib/.abi/librte_flow_classify.dump            | 1054 +++
 lib/.abi/librte_gro.dump                      |  428 ++
 lib/.abi/librte_gso.dump                      |  402 ++
 lib/.abi/librte_hash.dump                     |  578 ++
 lib/.abi/librte_ip_frag.dump                  |  814 +++
 lib/.abi/librte_ipsec.dump                    | 1269 ++++
 lib/.abi/librte_jobstats.dump                 |  197 +
 lib/.abi/librte_kni.dump                      |  657 ++
 lib/.abi/librte_kvargs.dump                   |   98 +
 lib/.abi/librte_latencystats.dump             |  427 ++
 lib/.abi/librte_lpm.dump                      |  330 +
 lib/.abi/librte_mbuf.dump                     |  746 ++
 lib/.abi/librte_member.dump                   |  216 +
 lib/.abi/librte_mempool.dump                  |  764 ++
 lib/.abi/librte_meter.dump                    |  197 +
 lib/.abi/librte_metrics.dump                  |  102 +
 lib/.abi/librte_net.dump                      |  489 ++
 lib/.abi/librte_pci.dump                      |   85 +
 lib/.abi/librte_pdump.dump                    |  339 +
 lib/.abi/librte_pipeline.dump                 | 1795 +++++
 lib/.abi/librte_port.dump                     |  567 ++
 lib/.abi/librte_power.dump                    |  490 ++
 lib/.abi/librte_rawdev.dump                   |  840 +++
 lib/.abi/librte_rcu.dump                      |  218 +
 lib/.abi/librte_reorder.dump                  |  455 ++
 lib/.abi/librte_rib.dump                      |  556 ++
 lib/.abi/librte_ring.dump                     |  285 +
 lib/.abi/librte_sched.dump                    | 1108 +++
 lib/.abi/librte_security.dump                 | 1125 +++
 lib/.abi/librte_stack.dump                    |  183 +
 lib/.abi/librte_table.dump                    |  544 ++
 lib/.abi/librte_telemetry.dump                |  122 +
 lib/.abi/librte_timer.dump                    |  322 +
 lib/.abi/librte_vhost.dump                    | 1624 +++++
 lib/meson.build                               |   34 +-
 meson.build                                   |    4 +
 meson_options.txt                             |    2 +
 150 files changed, 129912 insertions(+), 22 deletions(-)
 create mode 100644 buildtools/dpdk.abignore
 create mode 100755 devtools/gen-abi-dump.sh
 create mode 100644 drivers/.abi/librte_bus_dpaa.dump
 create mode 100644 drivers/.abi/librte_bus_fslmc.dump
 create mode 100644 drivers/.abi/librte_bus_ifpga.dump
 create mode 100644 drivers/.abi/librte_bus_pci.dump
 create mode 100644 drivers/.abi/librte_bus_vdev.dump
 create mode 100644 drivers/.abi/librte_bus_vmbus.dump
 create mode 100644 drivers/.abi/librte_common_cpt.dump
 create mode 100644 drivers/.abi/librte_common_dpaax.dump
 create mode 100644 drivers/.abi/librte_common_octeontx.dump
 create mode 100644 drivers/.abi/librte_common_octeontx2.dump
 create mode 100644 drivers/.abi/librte_mempool_bucket.dump
 create mode 100644 drivers/.abi/librte_mempool_dpaa.dump
 create mode 100644 drivers/.abi/librte_mempool_dpaa2.dump
 create mode 100644 drivers/.abi/librte_mempool_octeontx.dump
 create mode 100644 drivers/.abi/librte_mempool_octeontx2.dump
 create mode 100644 drivers/.abi/librte_mempool_ring.dump
 create mode 100644 drivers/.abi/librte_mempool_stack.dump
 create mode 100644 drivers/.abi/librte_pmd_af_packet.dump
 create mode 100644 drivers/.abi/librte_pmd_af_xdp.dump
 create mode 100644 drivers/.abi/librte_pmd_ark.dump
 create mode 100644 drivers/.abi/librte_pmd_atlantic.dump
 create mode 100644 drivers/.abi/librte_pmd_avp.dump
 create mode 100644 drivers/.abi/librte_pmd_axgbe.dump
 create mode 100644 drivers/.abi/librte_pmd_bbdev_fpga_lte_fec.dump
 create mode 100644 drivers/.abi/librte_pmd_bbdev_null.dump
 create mode 100644 drivers/.abi/librte_pmd_bbdev_turbo_sw.dump
 create mode 100644 drivers/.abi/librte_pmd_bnx2x.dump
 create mode 100644 drivers/.abi/librte_pmd_bnxt.dump
 create mode 100644 drivers/.abi/librte_pmd_bond.dump
 create mode 100644 drivers/.abi/librte_pmd_caam_jr.dump
 create mode 100644 drivers/.abi/librte_pmd_ccp.dump
 create mode 100644 drivers/.abi/librte_pmd_crypto_scheduler.dump
 create mode 100644 drivers/.abi/librte_pmd_cxgbe.dump
 create mode 100644 drivers/.abi/librte_pmd_dpaa.dump
 create mode 100644 drivers/.abi/librte_pmd_dpaa2.dump
 create mode 100644 drivers/.abi/librte_pmd_dpaa2_event.dump
 create mode 100644 drivers/.abi/librte_pmd_dpaa2_sec.dump
 create mode 100644 drivers/.abi/librte_pmd_dpaa_event.dump
 create mode 100644 drivers/.abi/librte_pmd_dpaa_sec.dump
 create mode 100644 drivers/.abi/librte_pmd_dsw_event.dump
 create mode 100644 drivers/.abi/librte_pmd_e1000.dump
 create mode 100644 drivers/.abi/librte_pmd_ena.dump
 create mode 100644 drivers/.abi/librte_pmd_enetc.dump
 create mode 100644 drivers/.abi/librte_pmd_enic.dump
 create mode 100644 drivers/.abi/librte_pmd_failsafe.dump
 create mode 100644 drivers/.abi/librte_pmd_fm10k.dump
 create mode 100644 drivers/.abi/librte_pmd_hinic.dump
 create mode 100644 drivers/.abi/librte_pmd_hns3.dump
 create mode 100644 drivers/.abi/librte_pmd_i40e.dump
 create mode 100644 drivers/.abi/librte_pmd_iavf.dump
 create mode 100644 drivers/.abi/librte_pmd_ice.dump
 create mode 100644 drivers/.abi/librte_pmd_ifc.dump
 create mode 100644 drivers/.abi/librte_pmd_ixgbe.dump
 create mode 100644 drivers/.abi/librte_pmd_kni.dump
 create mode 100644 drivers/.abi/librte_pmd_liquidio.dump
 create mode 100644 drivers/.abi/librte_pmd_memif.dump
 create mode 100644 drivers/.abi/librte_pmd_netvsc.dump
 create mode 100644 drivers/.abi/librte_pmd_nfp.dump
 create mode 100644 drivers/.abi/librte_pmd_nitrox.dump
 create mode 100644 drivers/.abi/librte_pmd_null.dump
 create mode 100644 drivers/.abi/librte_pmd_null_crypto.dump
 create mode 100644 drivers/.abi/librte_pmd_octeontx.dump
 create mode 100644 drivers/.abi/librte_pmd_octeontx2.dump
 create mode 100644 drivers/.abi/librte_pmd_octeontx2_crypto.dump
 create mode 100644 drivers/.abi/librte_pmd_octeontx2_event.dump
 create mode 100644 drivers/.abi/librte_pmd_octeontx_compress.dump
 create mode 100644 drivers/.abi/librte_pmd_octeontx_crypto.dump
 create mode 100644 drivers/.abi/librte_pmd_octeontx_event.dump
 create mode 100644 drivers/.abi/librte_pmd_opdl_event.dump
 create mode 100644 drivers/.abi/librte_pmd_openssl.dump
 create mode 100644 drivers/.abi/librte_pmd_pcap.dump
 create mode 100644 drivers/.abi/librte_pmd_pfe.dump
 create mode 100644 drivers/.abi/librte_pmd_qat.dump
 create mode 100644 drivers/.abi/librte_pmd_qede.dump
 create mode 100644 drivers/.abi/librte_pmd_ring.dump
 create mode 100644 drivers/.abi/librte_pmd_sfc.dump
 create mode 100644 drivers/.abi/librte_pmd_skeleton_event.dump
 create mode 100644 drivers/.abi/librte_pmd_softnic.dump
 create mode 100644 drivers/.abi/librte_pmd_sw_event.dump
 create mode 100644 drivers/.abi/librte_pmd_tap.dump
 create mode 100644 drivers/.abi/librte_pmd_thunderx.dump
 create mode 100644 drivers/.abi/librte_pmd_vdev_netvsc.dump
 create mode 100644 drivers/.abi/librte_pmd_vhost.dump
 create mode 100644 drivers/.abi/librte_pmd_virtio.dump
 create mode 100644 drivers/.abi/librte_pmd_virtio_crypto.dump
 create mode 100644 drivers/.abi/librte_pmd_vmxnet3.dump
 create mode 100644 drivers/.abi/librte_pmd_zlib.dump
 create mode 100644 drivers/.abi/librte_rawdev_dpaa2_cmdif.dump
 create mode 100644 drivers/.abi/librte_rawdev_dpaa2_qdma.dump
 create mode 100644 drivers/.abi/librte_rawdev_ioat.dump
 create mode 100644 drivers/.abi/librte_rawdev_ntb.dump
 create mode 100644 drivers/.abi/librte_rawdev_octeontx2_dma.dump
 create mode 100644 drivers/.abi/librte_rawdev_skeleton.dump
 create mode 100644 lib/.abi/librte_acl.dump
 create mode 100644 lib/.abi/librte_bbdev.dump
 create mode 100644 lib/.abi/librte_bitratestats.dump
 create mode 100644 lib/.abi/librte_bpf.dump
 create mode 100644 lib/.abi/librte_cfgfile.dump
 create mode 100644 lib/.abi/librte_cmdline.dump
 create mode 100644 lib/.abi/librte_compressdev.dump
 create mode 100644 lib/.abi/librte_cryptodev.dump
 create mode 100644 lib/.abi/librte_distributor.dump
 create mode 100644 lib/.abi/librte_eal.dump
 create mode 100644 lib/.abi/librte_efd.dump
 create mode 100644 lib/.abi/librte_ethdev.dump
 create mode 100644 lib/.abi/librte_eventdev.dump
 create mode 100644 lib/.abi/librte_fib.dump
 create mode 100644 lib/.abi/librte_flow_classify.dump
 create mode 100644 lib/.abi/librte_gro.dump
 create mode 100644 lib/.abi/librte_gso.dump
 create mode 100644 lib/.abi/librte_hash.dump
 create mode 100644 lib/.abi/librte_ip_frag.dump
 create mode 100644 lib/.abi/librte_ipsec.dump
 create mode 100644 lib/.abi/librte_jobstats.dump
 create mode 100644 lib/.abi/librte_kni.dump
 create mode 100644 lib/.abi/librte_kvargs.dump
 create mode 100644 lib/.abi/librte_latencystats.dump
 create mode 100644 lib/.abi/librte_lpm.dump
 create mode 100644 lib/.abi/librte_mbuf.dump
 create mode 100644 lib/.abi/librte_member.dump
 create mode 100644 lib/.abi/librte_mempool.dump
 create mode 100644 lib/.abi/librte_meter.dump
 create mode 100644 lib/.abi/librte_metrics.dump
 create mode 100644 lib/.abi/librte_net.dump
 create mode 100644 lib/.abi/librte_pci.dump
 create mode 100644 lib/.abi/librte_pdump.dump
 create mode 100644 lib/.abi/librte_pipeline.dump
 create mode 100644 lib/.abi/librte_port.dump
 create mode 100644 lib/.abi/librte_power.dump
 create mode 100644 lib/.abi/librte_rawdev.dump
 create mode 100644 lib/.abi/librte_rcu.dump
 create mode 100644 lib/.abi/librte_reorder.dump
 create mode 100644 lib/.abi/librte_rib.dump
 create mode 100644 lib/.abi/librte_ring.dump
 create mode 100644 lib/.abi/librte_sched.dump
 create mode 100644 lib/.abi/librte_security.dump
 create mode 100644 lib/.abi/librte_stack.dump
 create mode 100644 lib/.abi/librte_table.dump
 create mode 100644 lib/.abi/librte_telemetry.dump
 create mode 100644 lib/.abi/librte_timer.dump
 create mode 100644 lib/.abi/librte_vhost.dump

-- 
2.17.1


^ permalink raw reply	[flat|nested] 60+ messages in thread

* [dpdk-dev] [PATCH v4 2/3] build: add abi checks to meson
  2019-12-11 18:21     ` [dpdk-dev] [PATCH v4 0/3] " Kevin Laatz
@ 2019-12-11 18:21       ` Kevin Laatz
  2019-12-11 18:21       ` [dpdk-dev] [PATCH v4 3/3] build: clean up experimental syms check Kevin Laatz
                         ` (2 subsequent siblings)
  3 siblings, 0 replies; 60+ messages in thread
From: Kevin Laatz @ 2019-12-11 18:21 UTC (permalink / raw)
  To: dev; +Cc: thomas, david.marchand, bruce.richardson, ray.kinsella, Kevin Laatz

This patch adds a script to generate ABI dump files. These files will be
required to perform ABI compatibility checks during the build later in the
patchset. This script should be run on a DPDK version with a stable ABI.

Since this is a tool designed for human use, we simplify it to just work
off a whole build directory, taking the parameter of the builddir and
generating the lib|drivers/abi dir. This is hardcoded into the script since
the meson build expects the .dump files in these directories.

The running of the scripts can be enabled/disabled using the new meson
option added in this patch.  If enabled, the lib and drivers .so files will
be compared against any existing ABI dump files in lib|drivers/abi of the
source directory. If there are any incompatibilities, the build will fail
and display the incompatibility.

Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>

---
v2:
  - fixed conditional around abi check custom target
v3:
  - fix typo in meson option name
v4:
  - squash commits 3,4,5,6 into a single commit
  - changes meson option from type boolean to feature
  - update travis packages
  - move check for windows to earlier in build
  - add abignore file to suppress experimental functions
  - make the directories we store dump files in hidden
---
 .travis.yml              |  9 +++++++--
 buildtools/dpdk.abignore |  2 ++
 buildtools/meson.build   |  3 +++
 config/meson.build       | 10 ++++++++++
 devtools/gen-abi-dump.sh | 24 ++++++++++++++++++++++++
 drivers/meson.build      | 13 +++++++++++++
 lib/meson.build          | 13 +++++++++++++
 meson.build              |  4 ++++
 meson_options.txt        |  2 ++
 9 files changed, 78 insertions(+), 2 deletions(-)
 create mode 100644 buildtools/dpdk.abignore
 create mode 100755 devtools/gen-abi-dump.sh

diff --git a/.travis.yml b/.travis.yml
index 8f90d06f2..c5654a530 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -21,7 +21,7 @@ aarch64_packages: &aarch64_packages
 
 extra_packages: &extra_packages
   - *required_packages
-  - [libbsd-dev, libpcap-dev, libcrypto++-dev, libjansson4]
+  - [libbsd-dev, libpcap-dev, libcrypto++-dev, libjansson4, abigail-tools]
 
 build_32b_packages: &build_32b_packages
   - *required_packages
@@ -115,6 +115,11 @@ matrix:
       apt:
         packages:
           - *extra_packages
-
+  - env: DEF_LIB="static" OPTS="-Dcompat_checks=enabled -Dbuildtype=debug" EXTRA_PACKAGES=1
+    compiler: gcc
+    addons:
+      apt:
+        packages:
+          - *extra_packages
 
 script: ./.ci/${TRAVIS_OS_NAME}-build.sh
diff --git a/buildtools/dpdk.abignore b/buildtools/dpdk.abignore
new file mode 100644
index 000000000..b866b7f26
--- /dev/null
+++ b/buildtools/dpdk.abignore
@@ -0,0 +1,2 @@
+[suppress_function]
+        symbol_version = EXPERIMENTAL
diff --git a/buildtools/meson.build b/buildtools/meson.build
index 6ef2c5721..378f8d07e 100644
--- a/buildtools/meson.build
+++ b/buildtools/meson.build
@@ -7,6 +7,9 @@ pmdinfo = find_program('gen-pmdinfo-cfile.sh')
 
 check_experimental_syms = find_program('check-experimental-syms.sh')
 
+abidiff = find_program('abidiff', required: compat_checks)
+abignore = files('dpdk.abignore')
+
 # set up map-to-def script using python, either built-in or external
 python3 = import('python').find_installation(required: false)
 if python3.found()
diff --git a/config/meson.build b/config/meson.build
index 01911ecf9..ea680af33 100644
--- a/config/meson.build
+++ b/config/meson.build
@@ -34,6 +34,16 @@ stable_so_version = abi_va.length() == 2 ? abi_va[0] : abi_va[0] + '.' + abi_va[
 experimental_abi_version = '0.' + ''.join(abi_va)
 experimental_so_version = '0.' + ''.join(stable_so_version.split('.'))
 
+# compatibility checks not available on windows
+compat_checks = disabler()
+if not is_windows
+	compat_checks = get_option('compat_checks')
+endif
+
+if not get_option('debug') and compat_checks.enabled()
+	error('Build type must have debug symbols when compat_checks=enabled')
+endif
+
 # extract all version information into the build configuration
 dpdk_conf.set('RTE_VER_YEAR', pver.get(0).to_int())
 dpdk_conf.set('RTE_VER_MONTH', pver.get(1).to_int())
diff --git a/devtools/gen-abi-dump.sh b/devtools/gen-abi-dump.sh
new file mode 100755
index 000000000..bc6eac8c8
--- /dev/null
+++ b/devtools/gen-abi-dump.sh
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+builddir=$1
+
+if [ -z "$builddir" ] ; then
+	echo "Usage: $(basename $0) build_dir"
+	exit 1
+fi
+
+if [ ! -d "$builddir" ] ; then
+	echo "Error: build directory, '$builddir', doesn't exist"
+	exit 1
+fi
+
+for d in lib drivers ; do
+	mkdir -p $d/.abi
+
+	for f in $builddir/$d/*.so* ; do
+		test -L "$f" && continue
+
+		libname=$(basename $f)
+		abidw --out-file $d/.abi/${libname%.so*}.dump $f || exit 1
+	done
+done
diff --git a/drivers/meson.build b/drivers/meson.build
index 4b17662b7..db58a67b9 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -196,6 +196,19 @@ foreach class:dpdk_driver_classes
 					include_directories: includes,
 					dependencies: static_deps)
 
+			if abidiff.found()
+				custom_target('lib' + lib_name + '.abi_chk',
+					command: [abidiff, '--no-added-syms',
+						'--suppr', abignore,
+						files('.abi/lib' + lib_name + '.dump'),
+						'@INPUT@'],
+					input: shared_lib,
+					output: 'lib' + lib_name + '.abi_chk',
+					capture: true,
+					install: false,
+					build_by_default: is_experimental == 0)
+			endif
+
 			dpdk_drivers += static_lib
 
 			set_variable('shared_@0@'.format(lib_name), shared_dep)
diff --git a/lib/meson.build b/lib/meson.build
index 0af3efab2..f0aba6635 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -180,6 +180,19 @@ foreach l:libraries
 					include_directories: includes,
 					dependencies: shared_deps)
 
+			if abidiff.found()
+				custom_target(dir_name + '.abi_chk',
+					command: [abidiff, '--no-added-syms',
+						'--suppr', abignore,
+						files('.abi/' + dir_name + '.dump'),
+						'@INPUT@'],
+					input: shared_lib,
+					output: dir_name + '.abi_chk',
+					capture: true,
+					install: false,
+					build_by_default: is_experimental == 0)
+			endif
+
 			dpdk_libraries = [shared_lib] + dpdk_libraries
 			dpdk_static_libraries = [static_lib] + dpdk_static_libraries
 		endif # sources.length() > 0
diff --git a/meson.build b/meson.build
index b7ae9c8d9..e840ccea7 100644
--- a/meson.build
+++ b/meson.build
@@ -128,3 +128,7 @@ foreach drv:dpdk_drvs_disabled
 	output_message += drv + ':\t' + reason + '\n\t'
 endforeach
 message(output_message + '\n')
+
+if compat_checks.auto() and not get_option('debug')
+	warning('Build type must be have debug symbols to run compatibility checks!\n')
+endif
diff --git a/meson_options.txt b/meson_options.txt
index bc369d06c..0c651cef3 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -1,5 +1,7 @@
 # Please keep these options sorted alphabetically.
 
+option('compat_checks', type: 'feature', value: 'auto',
+	description: 'Enable abi compatibility checks and experimental syms checks to run during the build. This requires debug build to be enabled.')
 option('disable_drivers', type: 'string', value: '',
 	description: 'Comma-separated list of drivers to explicitly disable.')
 option('drivers_install_subdir', type: 'string', value: 'dpdk/pmds-<VERSION>',
-- 
2.17.1


^ permalink raw reply	[flat|nested] 60+ messages in thread

* [dpdk-dev] [PATCH v4 3/3] build: clean up experimental syms check
  2019-12-11 18:21     ` [dpdk-dev] [PATCH v4 0/3] " Kevin Laatz
  2019-12-11 18:21       ` [dpdk-dev] [PATCH v4 2/3] build: add abi checks to meson Kevin Laatz
@ 2019-12-11 18:21       ` Kevin Laatz
       [not found]       ` <20191211182147.19355-2-kevin.laatz@intel.com>
  2019-12-13 14:02       ` [dpdk-dev] [PATCH v5 0/3] Add ABI compatibility checks to the meson build Kevin Laatz
  3 siblings, 0 replies; 60+ messages in thread
From: Kevin Laatz @ 2019-12-11 18:21 UTC (permalink / raw)
  To: dev; +Cc: thomas, david.marchand, bruce.richardson, ray.kinsella, Kevin Laatz

This patch cleans up the meson build files in lib and drivers by moving the
custom target for checking the experimental syms next to the abi compat
checks. This also removes the dependency on the check for the shared build,
which was not required by anything, but was only added to force the
experimental syms check run.

Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
---
 drivers/meson.build | 21 +++++++++++----------
 lib/meson.build     | 21 +++++++++++----------
 2 files changed, 22 insertions(+), 20 deletions(-)

diff --git a/drivers/meson.build b/drivers/meson.build
index db58a67b9..4f4c93b73 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -163,15 +163,6 @@ foreach class:dpdk_driver_classes
 					'-Wl,/implib:lib\\' + implib]
 			else
 				lk_args = ['-Wl,--version-script=' + version_map]
-				# on unix systems check the output of the
-				# experimental syms script, using it as a
-				# dependency of the .so build
-				lk_deps += custom_target(lib_name + '.exp_chk',
-					command: [check_experimental_syms,
-						version_map, '@INPUT@'],
-					capture: true,
-					input: static_lib,
-					output: lib_name + '.exp_chk')
 			endif
 
 			shared_lib = shared_library(lib_name,
@@ -181,7 +172,6 @@ foreach class:dpdk_driver_classes
 				dependencies: shared_deps,
 				c_args: cflags,
 				link_args: lk_args,
-				link_depends: lk_deps,
 				version: lib_version,
 				soversion: so_version,
 				install: true,
@@ -197,6 +187,17 @@ foreach class:dpdk_driver_classes
 					dependencies: static_deps)
 
 			if abidiff.found()
+				# on unix systems check the output of the
+				# experimental syms script
+				custom_target(lib_name + '.exp_chk',
+					command: [check_experimental_syms,
+						version_map, '@INPUT@'],
+					capture: true,
+					input: static_lib,
+					output: lib_name + '.exp_chk',
+					install: false,
+					build_by_default: true)
+
 				custom_target('lib' + lib_name + '.abi_chk',
 					command: [abidiff, '--no-added-syms',
 						'--suppr', abignore,
diff --git a/lib/meson.build b/lib/meson.build
index f0aba6635..b0f915969 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -154,15 +154,6 @@ foreach l:libraries
 					'-Wl,/implib:lib\\' + implib]
 			else
 				lk_args = ['-Wl,--version-script=' + version_map]
-				# on unix systems check the output of the
-				# experimental syms script, using it as a
-				# dependency of the .so build
-				lk_deps += custom_target(name + '.exp_chk',
-					command: [check_experimental_syms,
-						version_map, '@INPUT@'],
-					capture: true,
-					input: static_lib,
-					output: name + '.exp_chk')
 			endif
 
 			shared_lib = shared_library(libname,
@@ -172,7 +163,6 @@ foreach l:libraries
 					dependencies: shared_deps,
 					include_directories: includes,
 					link_args: lk_args,
-					link_depends: lk_deps,
 					version: lib_version,
 					soversion: so_version,
 					install: true)
@@ -181,6 +171,17 @@ foreach l:libraries
 					dependencies: shared_deps)
 
 			if abidiff.found()
+				# on unix systems check the output of the
+				# experimental syms script
+				custom_target(name + '.exp_chk',
+					command: [check_experimental_syms,
+						version_map, '@INPUT@'],
+					capture: true,
+					input: static_lib,
+					output: name + '.exp_chk',
+					install: false,
+					build_by_default: true)
+
 				custom_target(dir_name + '.abi_chk',
 					command: [abidiff, '--no-added-syms',
 						'--suppr', abignore,
-- 
2.17.1


^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [dpdk-dev] [PATCH v4 1/3] build: add dump files for v20.0 ABI
       [not found]       ` <20191211182147.19355-2-kevin.laatz@intel.com>
@ 2019-12-12  8:43         ` David Marchand
  2019-12-12  9:36           ` David Marchand
  2019-12-12  9:45           ` Laatz, Kevin
  0 siblings, 2 replies; 60+ messages in thread
From: David Marchand @ 2019-12-12  8:43 UTC (permalink / raw)
  To: Kevin Laatz, dev; +Cc: thomas, bruce.richardson, ray.kinsella



On 11/12/2019 19:21, Kevin Laatz wrote:
> This patch adds the .dump files generated for the v20.0 ABI. These files
> will be used to compare the ABI during the meson build when the
> compat_checks meson is enabled. If there is a mismatch between the .dump
> files (the baseline, ie. current stable ABI version) and the code being
> compiled, then abidiff will report an error and the build will fail.
> 
> The .dump files are stored in the drivers/.abi and lib/.abi directories.
> The directories are hidden to reduce clutter in the respective directories
> and also to discourage changing these files since they should not be
> modified.
> 
> Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
> ---
>  drivers/.abi/librte_bus_dpaa.dump             | 5303 ++++++++++++++
>  drivers/.abi/librte_bus_fslmc.dump            | 5084 +++++++++++++
>  drivers/.abi/librte_bus_ifpga.dump            |  973 +++
>  drivers/.abi/librte_bus_pci.dump              |  835 +++
>  drivers/.abi/librte_bus_vdev.dump             |  408 ++
>  drivers/.abi/librte_bus_vmbus.dump            |  918 +++
>  drivers/.abi/librte_common_cpt.dump           |   36 +
>  drivers/.abi/librte_common_dpaax.dump         |  177 +
>  drivers/.abi/librte_common_octeontx.dump      |   77 +
>  drivers/.abi/librte_common_octeontx2.dump     |  988 +++
>  drivers/.abi/librte_mempool_bucket.dump       |   15 +
>  drivers/.abi/librte_mempool_dpaa.dump         |  323 +
>  drivers/.abi/librte_mempool_dpaa2.dump        |  484 ++
>  drivers/.abi/librte_mempool_octeontx.dump     |   22 +
>  drivers/.abi/librte_mempool_octeontx2.dump    |  643 ++
>  drivers/.abi/librte_mempool_ring.dump         |   15 +
>  drivers/.abi/librte_mempool_stack.dump        |   16 +
>  drivers/.abi/librte_pmd_af_packet.dump        |   22 +
>  drivers/.abi/librte_pmd_af_xdp.dump           |   23 +
>  drivers/.abi/librte_pmd_ark.dump              |   26 +
>  drivers/.abi/librte_pmd_atlantic.dump         | 1296 ++++
>  drivers/.abi/librte_pmd_avp.dump              |   26 +
>  drivers/.abi/librte_pmd_axgbe.dump            |   27 +
>  .../.abi/librte_pmd_bbdev_fpga_lte_fec.dump   |   74 +
>  drivers/.abi/librte_pmd_bbdev_null.dump       |   17 +
>  drivers/.abi/librte_pmd_bbdev_turbo_sw.dump   |   17 +
>  drivers/.abi/librte_pmd_bnx2x.dump            |   28 +
>  drivers/.abi/librte_pmd_bnxt.dump             | 3499 +++++++++
>  drivers/.abi/librte_pmd_bond.dump             | 3586 +++++++++
>  drivers/.abi/librte_pmd_caam_jr.dump          |   47 +
>  drivers/.abi/librte_pmd_ccp.dump              | 1870 +++++
>  drivers/.abi/librte_pmd_crypto_scheduler.dump | 1473 ++++
>  drivers/.abi/librte_pmd_cxgbe.dump            |   27 +
>  drivers/.abi/librte_pmd_dpaa.dump             | 2929 ++++++++
>  drivers/.abi/librte_pmd_dpaa2.dump            | 3319 +++++++++
>  drivers/.abi/librte_pmd_dpaa2_event.dump      |   36 +
>  drivers/.abi/librte_pmd_dpaa2_sec.dump        | 1511 ++++
>  drivers/.abi/librte_pmd_dpaa_event.dump       |   32 +
>  drivers/.abi/librte_pmd_dpaa_sec.dump         | 1459 ++++
>  drivers/.abi/librte_pmd_dsw_event.dump        |   23 +
>  drivers/.abi/librte_pmd_e1000.dump            | 3414 +++++++++
>  drivers/.abi/librte_pmd_ena.dump              |   32 +
>  drivers/.abi/librte_pmd_enetc.dump            |   27 +
>  drivers/.abi/librte_pmd_enic.dump             | 3282 +++++++++
>  drivers/.abi/librte_pmd_failsafe.dump         | 3162 ++++++++
>  drivers/.abi/librte_pmd_fm10k.dump            |  894 +++
>  drivers/.abi/librte_pmd_hinic.dump            | 3110 ++++++++
>  drivers/.abi/librte_pmd_hns3.dump             |   28 +
>  drivers/.abi/librte_pmd_i40e.dump             | 3553 +++++++++
>  drivers/.abi/librte_pmd_iavf.dump             |   71 +
>  drivers/.abi/librte_pmd_ice.dump              | 6395 +++++++++++++++++
>  drivers/.abi/librte_pmd_ifc.dump              |   24 +
>  drivers/.abi/librte_pmd_ixgbe.dump            | 3369 +++++++++
>  drivers/.abi/librte_pmd_kni.dump              |   22 +
>  drivers/.abi/librte_pmd_liquidio.dump         |   27 +
>  drivers/.abi/librte_pmd_memif.dump            |   27 +
>  drivers/.abi/librte_pmd_netvsc.dump           |   28 +
>  drivers/.abi/librte_pmd_nfp.dump              |   27 +
>  drivers/.abi/librte_pmd_nitrox.dump           |   19 +
>  drivers/.abi/librte_pmd_null.dump             |   22 +
>  drivers/.abi/librte_pmd_null_crypto.dump      | 1317 ++++
>  drivers/.abi/librte_pmd_octeontx.dump         |   49 +
>  drivers/.abi/librte_pmd_octeontx2.dump        | 3140 ++++++++
>  drivers/.abi/librte_pmd_octeontx2_crypto.dump |   28 +
>  drivers/.abi/librte_pmd_octeontx2_event.dump  |   29 +
>  .../.abi/librte_pmd_octeontx_compress.dump    |   25 +
>  drivers/.abi/librte_pmd_octeontx_crypto.dump  |   28 +
>  drivers/.abi/librte_pmd_octeontx_event.dump   |   36 +
>  drivers/.abi/librte_pmd_opdl_event.dump       |   28 +
>  drivers/.abi/librte_pmd_openssl.dump          | 1315 ++++
>  drivers/.abi/librte_pmd_pcap.dump             |   23 +
>  drivers/.abi/librte_pmd_pfe.dump              |   41 +
>  drivers/.abi/librte_pmd_qat.dump              |  118 +
>  drivers/.abi/librte_pmd_qede.dump             |   46 +
>  drivers/.abi/librte_pmd_ring.dump             |  142 +
>  drivers/.abi/librte_pmd_sfc.dump              | 3905 ++++++++++
>  drivers/.abi/librte_pmd_skeleton_event.dump   |   25 +
>  drivers/.abi/librte_pmd_softnic.dump          | 5523 ++++++++++++++
>  drivers/.abi/librte_pmd_sw_event.dump         |   28 +
>  drivers/.abi/librte_pmd_tap.dump              |   26 +
>  drivers/.abi/librte_pmd_thunderx.dump         |   28 +
>  drivers/.abi/librte_pmd_vdev_netvsc.dump      |   22 +
>  drivers/.abi/librte_pmd_vhost.dump            |   57 +
>  drivers/.abi/librte_pmd_virtio.dump           | 3808 ++++++++++
>  drivers/.abi/librte_pmd_virtio_crypto.dump    | 1419 ++++
>  drivers/.abi/librte_pmd_vmxnet3.dump          |   27 +
>  drivers/.abi/librte_pmd_zlib.dump             | 1035 +++
>  drivers/.abi/librte_rawdev_dpaa2_cmdif.dump   |   32 +
>  drivers/.abi/librte_rawdev_dpaa2_qdma.dump    |  185 +
>  drivers/.abi/librte_rawdev_ioat.dump          |   19 +
>  drivers/.abi/librte_rawdev_ntb.dump           |  772 ++
>  drivers/.abi/librte_rawdev_octeontx2_dma.dump |   23 +
>  drivers/.abi/librte_rawdev_skeleton.dump      |   21 +
>  lib/.abi/librte_acl.dump                      |  329 +
>  lib/.abi/librte_bbdev.dump                    | 1789 +++++
>  lib/.abi/librte_bitratestats.dump             |   85 +
>  lib/.abi/librte_bpf.dump                      |  280 +
>  lib/.abi/librte_cfgfile.dump                  |  188 +
>  lib/.abi/librte_cmdline.dump                  |  728 ++
>  lib/.abi/librte_compressdev.dump              | 1249 ++++
>  lib/.abi/librte_cryptodev.dump                | 1806 +++++
>  lib/.abi/librte_distributor.dump              |  627 ++
>  lib/.abi/librte_eal.dump                      | 3330 +++++++++
>  lib/.abi/librte_efd.dump                      |  319 +
>  lib/.abi/librte_ethdev.dump                   | 5272 ++++++++++++++
>  lib/.abi/librte_eventdev.dump                 | 5520 ++++++++++++++
>  lib/.abi/librte_fib.dump                      |  327 +
>  lib/.abi/librte_flow_classify.dump            | 1054 +++
>  lib/.abi/librte_gro.dump                      |  428 ++
>  lib/.abi/librte_gso.dump                      |  402 ++
>  lib/.abi/librte_hash.dump                     |  578 ++
>  lib/.abi/librte_ip_frag.dump                  |  814 +++
>  lib/.abi/librte_ipsec.dump                    | 1269 ++++
>  lib/.abi/librte_jobstats.dump                 |  197 +
>  lib/.abi/librte_kni.dump                      |  657 ++
>  lib/.abi/librte_kvargs.dump                   |   98 +
>  lib/.abi/librte_latencystats.dump             |  427 ++
>  lib/.abi/librte_lpm.dump                      |  330 +
>  lib/.abi/librte_mbuf.dump                     |  746 ++
>  lib/.abi/librte_member.dump                   |  216 +
>  lib/.abi/librte_mempool.dump                  |  764 ++
>  lib/.abi/librte_meter.dump                    |  197 +
>  lib/.abi/librte_metrics.dump                  |  102 +
>  lib/.abi/librte_net.dump                      |  489 ++
>  lib/.abi/librte_pci.dump                      |   85 +
>  lib/.abi/librte_pdump.dump                    |  339 +
>  lib/.abi/librte_pipeline.dump                 | 1795 +++++
>  lib/.abi/librte_port.dump                     |  567 ++
>  lib/.abi/librte_power.dump                    |  490 ++
>  lib/.abi/librte_rawdev.dump                   |  840 +++
>  lib/.abi/librte_rcu.dump                      |  218 +
>  lib/.abi/librte_reorder.dump                  |  455 ++
>  lib/.abi/librte_rib.dump                      |  556 ++
>  lib/.abi/librte_ring.dump                     |  285 +
>  lib/.abi/librte_sched.dump                    | 1108 +++
>  lib/.abi/librte_security.dump                 | 1125 +++
>  lib/.abi/librte_stack.dump                    |  183 +
>  lib/.abi/librte_table.dump                    |  544 ++
>  lib/.abi/librte_telemetry.dump                |  122 +
>  lib/.abi/librte_timer.dump                    |  322 +
>  lib/.abi/librte_vhost.dump                    | 1624 +++++
>  141 files changed, 129812 insertions(+)
This mail did not make it to the list, I suppose because of its size
(Thomas?).

You missed some drivers, which makes my tests fail right away:

$ for file in $(find lib/ drivers/ -name "*.map")
do
  pattern=$(basename ${file/_version.map})
  [ $(find lib/ drivers/ -name "*$pattern*.dump" |wc -l) = 0 ] ||
    continue
  echo $file
done

drivers/common/mvep/rte_common_mvep_version.map
drivers/crypto/snow3g/rte_pmd_snow3g_version.map
drivers/crypto/mvsam/rte_pmd_mvsam_version.map
drivers/crypto/kasumi/rte_pmd_kasumi_version.map
drivers/crypto/aesni_gcm/rte_pmd_aesni_gcm_version.map
drivers/crypto/aesni_mb/rte_pmd_aesni_mb_version.map
drivers/crypto/armv8/rte_pmd_armv8_version.map
drivers/crypto/zuc/rte_pmd_zuc_version.map
drivers/compress/isal/rte_pmd_isal_version.map
drivers/raw/ifpga/rte_rawdev_ifpga_version.map
drivers/net/szedata2/rte_pmd_szedata2_version.map
drivers/net/nfb/rte_pmd_nfb_version.map
drivers/net/mlx4/rte_pmd_mlx4_version.map
drivers/net/mvpp2/rte_pmd_mvpp2_version.map
drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map
drivers/net/mlx5/rte_pmd_mlx5_version.map
drivers/net/mvneta/rte_pmd_mvneta_version.map


I will try to fix this and test it further later today.


-- 
David Marchand


^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [dpdk-dev] [PATCH v4 1/3] build: add dump files for v20.0 ABI
  2019-12-12  8:43         ` [dpdk-dev] [PATCH v4 1/3] build: add dump files for v20.0 ABI David Marchand
@ 2019-12-12  9:36           ` David Marchand
  2019-12-12  9:45             ` Laatz, Kevin
  2019-12-12  9:45           ` Laatz, Kevin
  1 sibling, 1 reply; 60+ messages in thread
From: David Marchand @ 2019-12-12  9:36 UTC (permalink / raw)
  To: Kevin Laatz, dev; +Cc: Thomas Monjalon, Bruce Richardson, Kinsella, Ray

On Thu, Dec 12, 2019 at 9:43 AM David Marchand
<david.marchand@redhat.com> wrote:
> You missed some drivers, which makes my tests fail right away:
>
> $ for file in $(find lib/ drivers/ -name "*.map")
> do
>   pattern=$(basename ${file/_version.map})
>   [ $(find lib/ drivers/ -name "*$pattern*.dump" |wc -l) = 0 ] ||
>     continue
>   echo $file
> done
>
> drivers/common/mvep/rte_common_mvep_version.map
> drivers/crypto/snow3g/rte_pmd_snow3g_version.map
> drivers/crypto/mvsam/rte_pmd_mvsam_version.map
> drivers/crypto/kasumi/rte_pmd_kasumi_version.map
> drivers/crypto/aesni_gcm/rte_pmd_aesni_gcm_version.map
> drivers/crypto/aesni_mb/rte_pmd_aesni_mb_version.map
> drivers/crypto/armv8/rte_pmd_armv8_version.map
> drivers/crypto/zuc/rte_pmd_zuc_version.map
> drivers/compress/isal/rte_pmd_isal_version.map
> drivers/raw/ifpga/rte_rawdev_ifpga_version.map
> drivers/net/szedata2/rte_pmd_szedata2_version.map
> drivers/net/nfb/rte_pmd_nfb_version.map
> drivers/net/mlx4/rte_pmd_mlx4_version.map
> drivers/net/mvpp2/rte_pmd_mvpp2_version.map
> drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map
> drivers/net/mlx5/rte_pmd_mlx5_version.map
> drivers/net/mvneta/rte_pmd_mvneta_version.map
>
>
> I will try to fix this and test it further later today.

Could you have a look at:
https://travis-ci.com/david-marchand/dpdk/jobs/266421340

[13/2156] Generating librte_kvargs.abi...hk with a meson_exe.py custom command.
FAILED: /usr/local/bin/meson --internal exe --capture
lib/librte_kvargs.abi_chk -- /usr/bin/abidiff --no-added-syms --suppr
../buildtools/dpdk.abignore ../lib/.abi/librte_kvargs.dump
lib/librte_kvargs.so.20.0.1
/usr/bin/abidiff: unrecognized option: --no-added-syms
try the --help option for more information
[13/2156] Compiling C object 'lib/76b5...librte_eal_common_eal_common_dev.c.o'.
ninja: build stopped: subcommand failed.


Thanks.

-- 
David Marchand


^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [dpdk-dev] [PATCH v4 1/3] build: add dump files for v20.0 ABI
  2019-12-12  8:43         ` [dpdk-dev] [PATCH v4 1/3] build: add dump files for v20.0 ABI David Marchand
  2019-12-12  9:36           ` David Marchand
@ 2019-12-12  9:45           ` Laatz, Kevin
  1 sibling, 0 replies; 60+ messages in thread
From: Laatz, Kevin @ 2019-12-12  9:45 UTC (permalink / raw)
  To: David Marchand, dev; +Cc: thomas, bruce.richardson, ray.kinsella


On 12/12/2019 08:43, David Marchand wrote:
>
> On 11/12/2019 19:21, Kevin Laatz wrote:
>> This patch adds the .dump files generated for the v20.0 ABI. These files
>> will be used to compare the ABI during the meson build when the
>> compat_checks meson is enabled. If there is a mismatch between the .dump
>> files (the baseline, ie. current stable ABI version) and the code being
>> compiled, then abidiff will report an error and the build will fail.
>>
>> The .dump files are stored in the drivers/.abi and lib/.abi directories.
>> The directories are hidden to reduce clutter in the respective directories
>> and also to discourage changing these files since they should not be
>> modified.
>>
>> Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
>> ---
>>   drivers/.abi/librte_bus_dpaa.dump             | 5303 ++++++++++++++
>>   drivers/.abi/librte_bus_fslmc.dump            | 5084 +++++++++++++
>>   drivers/.abi/librte_bus_ifpga.dump            |  973 +++
>>   drivers/.abi/librte_bus_pci.dump              |  835 +++
>>   drivers/.abi/librte_bus_vdev.dump             |  408 ++
>>   drivers/.abi/librte_bus_vmbus.dump            |  918 +++
>>   drivers/.abi/librte_common_cpt.dump           |   36 +
>>   drivers/.abi/librte_common_dpaax.dump         |  177 +
>>   drivers/.abi/librte_common_octeontx.dump      |   77 +
>>   drivers/.abi/librte_common_octeontx2.dump     |  988 +++
>>   drivers/.abi/librte_mempool_bucket.dump       |   15 +
>>   drivers/.abi/librte_mempool_dpaa.dump         |  323 +
>>   drivers/.abi/librte_mempool_dpaa2.dump        |  484 ++
>>   drivers/.abi/librte_mempool_octeontx.dump     |   22 +
>>   drivers/.abi/librte_mempool_octeontx2.dump    |  643 ++
>>   drivers/.abi/librte_mempool_ring.dump         |   15 +
>>   drivers/.abi/librte_mempool_stack.dump        |   16 +
>>   drivers/.abi/librte_pmd_af_packet.dump        |   22 +
>>   drivers/.abi/librte_pmd_af_xdp.dump           |   23 +
>>   drivers/.abi/librte_pmd_ark.dump              |   26 +
>>   drivers/.abi/librte_pmd_atlantic.dump         | 1296 ++++
>>   drivers/.abi/librte_pmd_avp.dump              |   26 +
>>   drivers/.abi/librte_pmd_axgbe.dump            |   27 +
>>   .../.abi/librte_pmd_bbdev_fpga_lte_fec.dump   |   74 +
>>   drivers/.abi/librte_pmd_bbdev_null.dump       |   17 +
>>   drivers/.abi/librte_pmd_bbdev_turbo_sw.dump   |   17 +
>>   drivers/.abi/librte_pmd_bnx2x.dump            |   28 +
>>   drivers/.abi/librte_pmd_bnxt.dump             | 3499 +++++++++
>>   drivers/.abi/librte_pmd_bond.dump             | 3586 +++++++++
>>   drivers/.abi/librte_pmd_caam_jr.dump          |   47 +
>>   drivers/.abi/librte_pmd_ccp.dump              | 1870 +++++
>>   drivers/.abi/librte_pmd_crypto_scheduler.dump | 1473 ++++
>>   drivers/.abi/librte_pmd_cxgbe.dump            |   27 +
>>   drivers/.abi/librte_pmd_dpaa.dump             | 2929 ++++++++
>>   drivers/.abi/librte_pmd_dpaa2.dump            | 3319 +++++++++
>>   drivers/.abi/librte_pmd_dpaa2_event.dump      |   36 +
>>   drivers/.abi/librte_pmd_dpaa2_sec.dump        | 1511 ++++
>>   drivers/.abi/librte_pmd_dpaa_event.dump       |   32 +
>>   drivers/.abi/librte_pmd_dpaa_sec.dump         | 1459 ++++
>>   drivers/.abi/librte_pmd_dsw_event.dump        |   23 +
>>   drivers/.abi/librte_pmd_e1000.dump            | 3414 +++++++++
>>   drivers/.abi/librte_pmd_ena.dump              |   32 +
>>   drivers/.abi/librte_pmd_enetc.dump            |   27 +
>>   drivers/.abi/librte_pmd_enic.dump             | 3282 +++++++++
>>   drivers/.abi/librte_pmd_failsafe.dump         | 3162 ++++++++
>>   drivers/.abi/librte_pmd_fm10k.dump            |  894 +++
>>   drivers/.abi/librte_pmd_hinic.dump            | 3110 ++++++++
>>   drivers/.abi/librte_pmd_hns3.dump             |   28 +
>>   drivers/.abi/librte_pmd_i40e.dump             | 3553 +++++++++
>>   drivers/.abi/librte_pmd_iavf.dump             |   71 +
>>   drivers/.abi/librte_pmd_ice.dump              | 6395 +++++++++++++++++
>>   drivers/.abi/librte_pmd_ifc.dump              |   24 +
>>   drivers/.abi/librte_pmd_ixgbe.dump            | 3369 +++++++++
>>   drivers/.abi/librte_pmd_kni.dump              |   22 +
>>   drivers/.abi/librte_pmd_liquidio.dump         |   27 +
>>   drivers/.abi/librte_pmd_memif.dump            |   27 +
>>   drivers/.abi/librte_pmd_netvsc.dump           |   28 +
>>   drivers/.abi/librte_pmd_nfp.dump              |   27 +
>>   drivers/.abi/librte_pmd_nitrox.dump           |   19 +
>>   drivers/.abi/librte_pmd_null.dump             |   22 +
>>   drivers/.abi/librte_pmd_null_crypto.dump      | 1317 ++++
>>   drivers/.abi/librte_pmd_octeontx.dump         |   49 +
>>   drivers/.abi/librte_pmd_octeontx2.dump        | 3140 ++++++++
>>   drivers/.abi/librte_pmd_octeontx2_crypto.dump |   28 +
>>   drivers/.abi/librte_pmd_octeontx2_event.dump  |   29 +
>>   .../.abi/librte_pmd_octeontx_compress.dump    |   25 +
>>   drivers/.abi/librte_pmd_octeontx_crypto.dump  |   28 +
>>   drivers/.abi/librte_pmd_octeontx_event.dump   |   36 +
>>   drivers/.abi/librte_pmd_opdl_event.dump       |   28 +
>>   drivers/.abi/librte_pmd_openssl.dump          | 1315 ++++
>>   drivers/.abi/librte_pmd_pcap.dump             |   23 +
>>   drivers/.abi/librte_pmd_pfe.dump              |   41 +
>>   drivers/.abi/librte_pmd_qat.dump              |  118 +
>>   drivers/.abi/librte_pmd_qede.dump             |   46 +
>>   drivers/.abi/librte_pmd_ring.dump             |  142 +
>>   drivers/.abi/librte_pmd_sfc.dump              | 3905 ++++++++++
>>   drivers/.abi/librte_pmd_skeleton_event.dump   |   25 +
>>   drivers/.abi/librte_pmd_softnic.dump          | 5523 ++++++++++++++
>>   drivers/.abi/librte_pmd_sw_event.dump         |   28 +
>>   drivers/.abi/librte_pmd_tap.dump              |   26 +
>>   drivers/.abi/librte_pmd_thunderx.dump         |   28 +
>>   drivers/.abi/librte_pmd_vdev_netvsc.dump      |   22 +
>>   drivers/.abi/librte_pmd_vhost.dump            |   57 +
>>   drivers/.abi/librte_pmd_virtio.dump           | 3808 ++++++++++
>>   drivers/.abi/librte_pmd_virtio_crypto.dump    | 1419 ++++
>>   drivers/.abi/librte_pmd_vmxnet3.dump          |   27 +
>>   drivers/.abi/librte_pmd_zlib.dump             | 1035 +++
>>   drivers/.abi/librte_rawdev_dpaa2_cmdif.dump   |   32 +
>>   drivers/.abi/librte_rawdev_dpaa2_qdma.dump    |  185 +
>>   drivers/.abi/librte_rawdev_ioat.dump          |   19 +
>>   drivers/.abi/librte_rawdev_ntb.dump           |  772 ++
>>   drivers/.abi/librte_rawdev_octeontx2_dma.dump |   23 +
>>   drivers/.abi/librte_rawdev_skeleton.dump      |   21 +
>>   lib/.abi/librte_acl.dump                      |  329 +
>>   lib/.abi/librte_bbdev.dump                    | 1789 +++++
>>   lib/.abi/librte_bitratestats.dump             |   85 +
>>   lib/.abi/librte_bpf.dump                      |  280 +
>>   lib/.abi/librte_cfgfile.dump                  |  188 +
>>   lib/.abi/librte_cmdline.dump                  |  728 ++
>>   lib/.abi/librte_compressdev.dump              | 1249 ++++
>>   lib/.abi/librte_cryptodev.dump                | 1806 +++++
>>   lib/.abi/librte_distributor.dump              |  627 ++
>>   lib/.abi/librte_eal.dump                      | 3330 +++++++++
>>   lib/.abi/librte_efd.dump                      |  319 +
>>   lib/.abi/librte_ethdev.dump                   | 5272 ++++++++++++++
>>   lib/.abi/librte_eventdev.dump                 | 5520 ++++++++++++++
>>   lib/.abi/librte_fib.dump                      |  327 +
>>   lib/.abi/librte_flow_classify.dump            | 1054 +++
>>   lib/.abi/librte_gro.dump                      |  428 ++
>>   lib/.abi/librte_gso.dump                      |  402 ++
>>   lib/.abi/librte_hash.dump                     |  578 ++
>>   lib/.abi/librte_ip_frag.dump                  |  814 +++
>>   lib/.abi/librte_ipsec.dump                    | 1269 ++++
>>   lib/.abi/librte_jobstats.dump                 |  197 +
>>   lib/.abi/librte_kni.dump                      |  657 ++
>>   lib/.abi/librte_kvargs.dump                   |   98 +
>>   lib/.abi/librte_latencystats.dump             |  427 ++
>>   lib/.abi/librte_lpm.dump                      |  330 +
>>   lib/.abi/librte_mbuf.dump                     |  746 ++
>>   lib/.abi/librte_member.dump                   |  216 +
>>   lib/.abi/librte_mempool.dump                  |  764 ++
>>   lib/.abi/librte_meter.dump                    |  197 +
>>   lib/.abi/librte_metrics.dump                  |  102 +
>>   lib/.abi/librte_net.dump                      |  489 ++
>>   lib/.abi/librte_pci.dump                      |   85 +
>>   lib/.abi/librte_pdump.dump                    |  339 +
>>   lib/.abi/librte_pipeline.dump                 | 1795 +++++
>>   lib/.abi/librte_port.dump                     |  567 ++
>>   lib/.abi/librte_power.dump                    |  490 ++
>>   lib/.abi/librte_rawdev.dump                   |  840 +++
>>   lib/.abi/librte_rcu.dump                      |  218 +
>>   lib/.abi/librte_reorder.dump                  |  455 ++
>>   lib/.abi/librte_rib.dump                      |  556 ++
>>   lib/.abi/librte_ring.dump                     |  285 +
>>   lib/.abi/librte_sched.dump                    | 1108 +++
>>   lib/.abi/librte_security.dump                 | 1125 +++
>>   lib/.abi/librte_stack.dump                    |  183 +
>>   lib/.abi/librte_table.dump                    |  544 ++
>>   lib/.abi/librte_telemetry.dump                |  122 +
>>   lib/.abi/librte_timer.dump                    |  322 +
>>   lib/.abi/librte_vhost.dump                    | 1624 +++++
>>   141 files changed, 129812 insertions(+)
> This mail did not make it to the list, I suppose because of its size
> (Thomas?).

Yes, it was due to its size :(

Any suggested ways to send this instead? Maybe split drivers and lib 
into separate patches? What's the max size?

>
> You missed some drivers, which makes my tests fail right away:
>
> $ for file in $(find lib/ drivers/ -name "*.map")
> do
>    pattern=$(basename ${file/_version.map})
>    [ $(find lib/ drivers/ -name "*$pattern*.dump" |wc -l) = 0 ] ||
>      continue
>    echo $file
> done
>
> drivers/common/mvep/rte_common_mvep_version.map
> drivers/crypto/snow3g/rte_pmd_snow3g_version.map
> drivers/crypto/mvsam/rte_pmd_mvsam_version.map
> drivers/crypto/kasumi/rte_pmd_kasumi_version.map
> drivers/crypto/aesni_gcm/rte_pmd_aesni_gcm_version.map
> drivers/crypto/aesni_mb/rte_pmd_aesni_mb_version.map
> drivers/crypto/armv8/rte_pmd_armv8_version.map
> drivers/crypto/zuc/rte_pmd_zuc_version.map
> drivers/compress/isal/rte_pmd_isal_version.map
> drivers/raw/ifpga/rte_rawdev_ifpga_version.map
> drivers/net/szedata2/rte_pmd_szedata2_version.map
> drivers/net/nfb/rte_pmd_nfb_version.map
> drivers/net/mlx4/rte_pmd_mlx4_version.map
> drivers/net/mvpp2/rte_pmd_mvpp2_version.map
> drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map
> drivers/net/mlx5/rte_pmd_mlx5_version.map
> drivers/net/mvneta/rte_pmd_mvneta_version.map
>
>
> I will try to fix this and test it further later today.

Will try to get the build working with all and can re-spin the patch.



^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [dpdk-dev] [PATCH v4 1/3] build: add dump files for v20.0 ABI
  2019-12-12  9:36           ` David Marchand
@ 2019-12-12  9:45             ` Laatz, Kevin
  0 siblings, 0 replies; 60+ messages in thread
From: Laatz, Kevin @ 2019-12-12  9:45 UTC (permalink / raw)
  To: David Marchand, dev; +Cc: Thomas Monjalon, Bruce Richardson, Kinsella, Ray

On 12/12/2019 09:36, David Marchand wrote:
> On Thu, Dec 12, 2019 at 9:43 AM David Marchand
> <david.marchand@redhat.com> wrote:
>> You missed some drivers, which makes my tests fail right away:
>>
>> $ for file in $(find lib/ drivers/ -name "*.map")
>> do
>>    pattern=$(basename ${file/_version.map})
>>    [ $(find lib/ drivers/ -name "*$pattern*.dump" |wc -l) = 0 ] ||
>>      continue
>>    echo $file
>> done
>>
>> drivers/common/mvep/rte_common_mvep_version.map
>> drivers/crypto/snow3g/rte_pmd_snow3g_version.map
>> drivers/crypto/mvsam/rte_pmd_mvsam_version.map
>> drivers/crypto/kasumi/rte_pmd_kasumi_version.map
>> drivers/crypto/aesni_gcm/rte_pmd_aesni_gcm_version.map
>> drivers/crypto/aesni_mb/rte_pmd_aesni_mb_version.map
>> drivers/crypto/armv8/rte_pmd_armv8_version.map
>> drivers/crypto/zuc/rte_pmd_zuc_version.map
>> drivers/compress/isal/rte_pmd_isal_version.map
>> drivers/raw/ifpga/rte_rawdev_ifpga_version.map
>> drivers/net/szedata2/rte_pmd_szedata2_version.map
>> drivers/net/nfb/rte_pmd_nfb_version.map
>> drivers/net/mlx4/rte_pmd_mlx4_version.map
>> drivers/net/mvpp2/rte_pmd_mvpp2_version.map
>> drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map
>> drivers/net/mlx5/rte_pmd_mlx5_version.map
>> drivers/net/mvneta/rte_pmd_mvneta_version.map
>>
>>
>> I will try to fix this and test it further later today.
> Could you have a look at:
> https://travis-ci.com/david-marchand/dpdk/jobs/266421340

Sure, will have a look

>
> [13/2156] Generating librte_kvargs.abi...hk with a meson_exe.py custom command.
> FAILED: /usr/local/bin/meson --internal exe --capture
> lib/librte_kvargs.abi_chk -- /usr/bin/abidiff --no-added-syms --suppr
> ../buildtools/dpdk.abignore ../lib/.abi/librte_kvargs.dump
> lib/librte_kvargs.so.20.0.1
> /usr/bin/abidiff: unrecognized option: --no-added-syms
> try the --help option for more information
> [13/2156] Compiling C object 'lib/76b5...librte_eal_common_eal_common_dev.c.o'.
> ninja: build stopped: subcommand failed.
>
>
> Thanks.
>

^ permalink raw reply	[flat|nested] 60+ messages in thread

* [dpdk-dev] [PATCH v5 0/3] Add ABI compatibility checks to the meson build
  2019-12-11 18:21     ` [dpdk-dev] [PATCH v4 0/3] " Kevin Laatz
                         ` (2 preceding siblings ...)
       [not found]       ` <20191211182147.19355-2-kevin.laatz@intel.com>
@ 2019-12-13 14:02       ` Kevin Laatz
  2019-12-13 14:03         ` [dpdk-dev] [PATCH v5 2/3] build: add abi checks to meson Kevin Laatz
                           ` (2 more replies)
  3 siblings, 3 replies; 60+ messages in thread
From: Kevin Laatz @ 2019-12-13 14:02 UTC (permalink / raw)
  To: dev
  Cc: thomas, david.marchand, bruce.richardson, ray.kinsella, tdu, zr,
	cernay, Kevin Laatz

With the recent changes made to stabilize ABI versioning in DPDK, it will
become increasingly important to check patches for ABI compatibility. We
propose adding the ABI compatibility checking to be done as part of the
build.

The advantages to adding the ABI compatibility checking to the build are
two-fold. Firstly, developers can easily check their patches to make sure
they don’t break the ABI without adding any extra steps. Secondly, it
makes the integration into existing CI seamless since there are no extra
scripts to make the CI run. The build will run as usual and if an
incompatibility is detected in the ABI, the build will fail and show the
incompatibility. As an added bonus, enabling the ABI compatibility checks
does not impact the build speed.

The proposed solution works as follows:
1. Generate the ABI dump of the baseline. This can be done with the new
   script added in this set. This step will only need to be done when the
   ABI version changes (so once a year) and can be added to master so it
   exists by default. This step can be skipped if the dump files for the
   baseline already exist.
2. Build with meson. If there is an ABI incompatibility, the build will
   fail and print the incompatibility information.

The patches in this set include the ABI dump file generating script, the
dump files for drivers and libs, the meson option required to
enable/disable the checks, and the required meson changes to run the
compatibility checks during the build.

Note: This patch set depends on: http://patches.dpdk.org/patch/63765/.  The
generated .dump files in this patch set are based on the changes in the
patch "build: fix soname info for 19.11 compatibility". If a decision is
made to use a different format for the sonames, then a new version of this
patch set will be required as the .dump files will need to be regenerated.

Note: The following driver dump files are not included in these patches:
	common/mvep:    missing dependency, "libmusdk"
        net/mvneta:     missing dependency, "libmusdk"
        net/mvpp2:      missing dependency, "libmusdk"
        net/nfb:        missing dependency, "libnfb"
        crypto/mvsam:   missing dependency, "libmusdk"

They have not been included as I do not have access to these dependencies.
Please feel free to add them if you can! (Maintainers of the above Cc'ed).

---
v2:
  - Rebased on master for 19.11.
  - Moved the experimental syms checks next to the abi checks. This also
    removed the dependency on the experimental checks from the shared
    build.
  - General cleanup.

v3:
  - Fixed typo in meson option name in buildtools/meson.build.

v4:
  - removed commits 1 and 2 from the patch set since they are not needed
    as part of this change
  - squash commits 3,4,5,6 into a single commit
  - changes meson option from type boolean to feature
  - update travis packages
  - move check for windows to earlier in build
  - add abignore file to suppress experimental functions
  - make the directories we store dump files in hidden
  - add .dump files for v20.0 ABI to patch set

v5:
  - added more drivers' dump files
  - removed travis build with abi checks until the issues are resolved.

Kevin Laatz (3):
  build: add dump files for v20.0 ABI
  build: add abi checks to meson
  build: clean up experimental syms check

 buildtools/dpdk.abignore                      |    2 +
 buildtools/meson.build                        |    3 +
 config/meson.build                            |   10 +
 devtools/gen-abi-dump.sh                      |   24 +
 drivers/.abi/librte_bus_dpaa.dump             | 5303 ++++++++++++++
 drivers/.abi/librte_bus_fslmc.dump            | 5084 +++++++++++++
 drivers/.abi/librte_bus_ifpga.dump            |  972 +++
 drivers/.abi/librte_bus_pci.dump              |  834 +++
 drivers/.abi/librte_bus_vdev.dump             |  408 ++
 drivers/.abi/librte_bus_vmbus.dump            |  918 +++
 drivers/.abi/librte_common_cpt.dump           |   36 +
 drivers/.abi/librte_common_dpaax.dump         |  177 +
 drivers/.abi/librte_common_octeontx.dump      |   77 +
 drivers/.abi/librte_common_octeontx2.dump     |  988 +++
 drivers/.abi/librte_mempool_bucket.dump       |   15 +
 drivers/.abi/librte_mempool_dpaa.dump         |  323 +
 drivers/.abi/librte_mempool_dpaa2.dump        |  484 ++
 drivers/.abi/librte_mempool_octeontx.dump     |   22 +
 drivers/.abi/librte_mempool_octeontx2.dump    |  643 ++
 drivers/.abi/librte_mempool_ring.dump         |   15 +
 drivers/.abi/librte_mempool_stack.dump        |   16 +
 drivers/.abi/librte_pmd_aesni_gcm.dump        | 1315 ++++
 drivers/.abi/librte_pmd_aesni_mb.dump         | 1315 ++++
 drivers/.abi/librte_pmd_af_packet.dump        |   22 +
 drivers/.abi/librte_pmd_af_xdp.dump           |   23 +
 drivers/.abi/librte_pmd_ark.dump              |   26 +
 drivers/.abi/librte_pmd_atlantic.dump         | 1296 ++++
 drivers/.abi/librte_pmd_avp.dump              |   26 +
 drivers/.abi/librte_pmd_axgbe.dump            |   27 +
 .../.abi/librte_pmd_bbdev_fpga_lte_fec.dump   |   74 +
 drivers/.abi/librte_pmd_bbdev_null.dump       |   17 +
 drivers/.abi/librte_pmd_bbdev_turbo_sw.dump   |   17 +
 drivers/.abi/librte_pmd_bnx2x.dump            |   28 +
 drivers/.abi/librte_pmd_bnxt.dump             | 3499 +++++++++
 drivers/.abi/librte_pmd_bond.dump             | 3586 +++++++++
 drivers/.abi/librte_pmd_caam_jr.dump          |   47 +
 drivers/.abi/librte_pmd_ccp.dump              | 1870 +++++
 drivers/.abi/librte_pmd_crypto_scheduler.dump | 1473 ++++
 drivers/.abi/librte_pmd_cxgbe.dump            |   27 +
 drivers/.abi/librte_pmd_dpaa.dump             | 2929 ++++++++
 drivers/.abi/librte_pmd_dpaa2.dump            | 3319 +++++++++
 drivers/.abi/librte_pmd_dpaa2_event.dump      |   36 +
 drivers/.abi/librte_pmd_dpaa2_sec.dump        | 1511 ++++
 drivers/.abi/librte_pmd_dpaa_event.dump       |   32 +
 drivers/.abi/librte_pmd_dpaa_sec.dump         | 1459 ++++
 drivers/.abi/librte_pmd_dsw_event.dump        |   23 +
 drivers/.abi/librte_pmd_e1000.dump            | 3414 +++++++++
 drivers/.abi/librte_pmd_ena.dump              |   32 +
 drivers/.abi/librte_pmd_enetc.dump            |   27 +
 drivers/.abi/librte_pmd_enic.dump             | 3282 +++++++++
 drivers/.abi/librte_pmd_failsafe.dump         | 3162 ++++++++
 drivers/.abi/librte_pmd_fm10k.dump            |  894 +++
 drivers/.abi/librte_pmd_hinic.dump            | 3110 ++++++++
 drivers/.abi/librte_pmd_hns3.dump             |   28 +
 drivers/.abi/librte_pmd_i40e.dump             | 3553 +++++++++
 drivers/.abi/librte_pmd_iavf.dump             |   71 +
 drivers/.abi/librte_pmd_ice.dump              | 6395 +++++++++++++++++
 drivers/.abi/librte_pmd_ifc.dump              |   24 +
 drivers/.abi/librte_pmd_ipn3ke.dump           | 3581 +++++++++
 drivers/.abi/librte_pmd_isal.dump             | 1038 +++
 drivers/.abi/librte_pmd_ixgbe.dump            | 3369 +++++++++
 drivers/.abi/librte_pmd_kasumi.dump           |   41 +
 drivers/.abi/librte_pmd_kni.dump              |   22 +
 drivers/.abi/librte_pmd_liquidio.dump         |   27 +
 drivers/.abi/librte_pmd_memif.dump            |   27 +
 drivers/.abi/librte_pmd_mlx4.dump             | 2207 ++++++
 drivers/.abi/librte_pmd_mlx5.dump             | 2155 ++++++
 drivers/.abi/librte_pmd_netvsc.dump           |   28 +
 drivers/.abi/librte_pmd_nfp.dump              |   27 +
 drivers/.abi/librte_pmd_nitrox.dump           |   19 +
 drivers/.abi/librte_pmd_null.dump             |   22 +
 drivers/.abi/librte_pmd_null_crypto.dump      | 1317 ++++
 drivers/.abi/librte_pmd_octeontx.dump         |   49 +
 drivers/.abi/librte_pmd_octeontx2.dump        | 3140 ++++++++
 drivers/.abi/librte_pmd_octeontx2_crypto.dump |   28 +
 drivers/.abi/librte_pmd_octeontx2_event.dump  |   29 +
 .../.abi/librte_pmd_octeontx_compress.dump    |   26 +
 drivers/.abi/librte_pmd_octeontx_crypto.dump  |   28 +
 drivers/.abi/librte_pmd_octeontx_event.dump   |   36 +
 drivers/.abi/librte_pmd_opdl_event.dump       |   28 +
 drivers/.abi/librte_pmd_openssl.dump          | 1315 ++++
 drivers/.abi/librte_pmd_pcap.dump             |   23 +
 drivers/.abi/librte_pmd_pfe.dump              |   41 +
 drivers/.abi/librte_pmd_qat.dump              |  119 +
 drivers/.abi/librte_pmd_qede.dump             |   46 +
 drivers/.abi/librte_pmd_ring.dump             |  142 +
 drivers/.abi/librte_pmd_sfc.dump              | 3910 ++++++++++
 drivers/.abi/librte_pmd_skeleton_event.dump   |   25 +
 drivers/.abi/librte_pmd_snow3g.dump           | 1424 ++++
 drivers/.abi/librte_pmd_softnic.dump          | 5523 ++++++++++++++
 drivers/.abi/librte_pmd_sw_event.dump         |   28 +
 drivers/.abi/librte_pmd_szedata2.dump         |   28 +
 drivers/.abi/librte_pmd_tap.dump              |   26 +
 drivers/.abi/librte_pmd_thunderx.dump         |   28 +
 drivers/.abi/librte_pmd_vdev_netvsc.dump      |   22 +
 drivers/.abi/librte_pmd_vhost.dump            |   57 +
 drivers/.abi/librte_pmd_virtio.dump           | 3808 ++++++++++
 drivers/.abi/librte_pmd_virtio_crypto.dump    | 1419 ++++
 drivers/.abi/librte_pmd_vmxnet3.dump          |   27 +
 drivers/.abi/librte_pmd_zlib.dump             | 1035 +++
 drivers/.abi/librte_pmd_zuc.dump              | 1315 ++++
 drivers/.abi/librte_rawdev_dpaa2_cmdif.dump   |   32 +
 drivers/.abi/librte_rawdev_dpaa2_qdma.dump    |  185 +
 drivers/.abi/librte_rawdev_ifpga.dump         |  779 ++
 drivers/.abi/librte_rawdev_ioat.dump          |   19 +
 drivers/.abi/librte_rawdev_ntb.dump           |  771 ++
 drivers/.abi/librte_rawdev_octeontx2_dma.dump |   23 +
 drivers/.abi/librte_rawdev_skeleton.dump      |   21 +
 drivers/meson.build                           |   34 +-
 lib/.abi/librte_acl.dump                      |  329 +
 lib/.abi/librte_bbdev.dump                    | 1789 +++++
 lib/.abi/librte_bitratestats.dump             |   85 +
 lib/.abi/librte_bpf.dump                      |  280 +
 lib/.abi/librte_cfgfile.dump                  |  188 +
 lib/.abi/librte_cmdline.dump                  |  728 ++
 lib/.abi/librte_compressdev.dump              | 1249 ++++
 lib/.abi/librte_cryptodev.dump                | 1806 +++++
 lib/.abi/librte_distributor.dump              |  627 ++
 lib/.abi/librte_eal.dump                      | 3329 +++++++++
 lib/.abi/librte_efd.dump                      |  319 +
 lib/.abi/librte_ethdev.dump                   | 5272 ++++++++++++++
 lib/.abi/librte_eventdev.dump                 | 5519 ++++++++++++++
 lib/.abi/librte_fib.dump                      |  327 +
 lib/.abi/librte_flow_classify.dump            | 1054 +++
 lib/.abi/librte_gro.dump                      |  428 ++
 lib/.abi/librte_gso.dump                      |  402 ++
 lib/.abi/librte_hash.dump                     |  578 ++
 lib/.abi/librte_ip_frag.dump                  |  813 +++
 lib/.abi/librte_ipsec.dump                    | 1269 ++++
 lib/.abi/librte_jobstats.dump                 |  197 +
 lib/.abi/librte_kni.dump                      |  657 ++
 lib/.abi/librte_kvargs.dump                   |   98 +
 lib/.abi/librte_latencystats.dump             |  427 ++
 lib/.abi/librte_lpm.dump                      |  330 +
 lib/.abi/librte_mbuf.dump                     |  745 ++
 lib/.abi/librte_member.dump                   |  216 +
 lib/.abi/librte_mempool.dump                  |  763 ++
 lib/.abi/librte_meter.dump                    |  197 +
 lib/.abi/librte_metrics.dump                  |  102 +
 lib/.abi/librte_net.dump                      |  489 ++
 lib/.abi/librte_pci.dump                      |   85 +
 lib/.abi/librte_pdump.dump                    |  339 +
 lib/.abi/librte_pipeline.dump                 | 1795 +++++
 lib/.abi/librte_port.dump                     |  567 ++
 lib/.abi/librte_power.dump                    |  490 ++
 lib/.abi/librte_rawdev.dump                   |  839 +++
 lib/.abi/librte_rcu.dump                      |  217 +
 lib/.abi/librte_reorder.dump                  |  455 ++
 lib/.abi/librte_rib.dump                      |  556 ++
 lib/.abi/librte_ring.dump                     |  284 +
 lib/.abi/librte_sched.dump                    | 1108 +++
 lib/.abi/librte_security.dump                 | 1125 +++
 lib/.abi/librte_stack.dump                    |  183 +
 lib/.abi/librte_table.dump                    |  544 ++
 lib/.abi/librte_telemetry.dump                |  122 +
 lib/.abi/librte_timer.dump                    |  321 +
 lib/.abi/librte_vhost.dump                    | 1629 +++++
 lib/meson.build                               |   34 +-
 meson.build                                   |    4 +
 meson_options.txt                             |    2 +
 160 files changed, 145103 insertions(+), 20 deletions(-)
 create mode 100644 buildtools/dpdk.abignore
 create mode 100755 devtools/gen-abi-dump.sh
 create mode 100644 drivers/.abi/librte_bus_dpaa.dump
 create mode 100644 drivers/.abi/librte_bus_fslmc.dump
 create mode 100644 drivers/.abi/librte_bus_ifpga.dump
 create mode 100644 drivers/.abi/librte_bus_pci.dump
 create mode 100644 drivers/.abi/librte_bus_vdev.dump
 create mode 100644 drivers/.abi/librte_bus_vmbus.dump
 create mode 100644 drivers/.abi/librte_common_cpt.dump
 create mode 100644 drivers/.abi/librte_common_dpaax.dump
 create mode 100644 drivers/.abi/librte_common_octeontx.dump
 create mode 100644 drivers/.abi/librte_common_octeontx2.dump
 create mode 100644 drivers/.abi/librte_mempool_bucket.dump
 create mode 100644 drivers/.abi/librte_mempool_dpaa.dump
 create mode 100644 drivers/.abi/librte_mempool_dpaa2.dump
 create mode 100644 drivers/.abi/librte_mempool_octeontx.dump
 create mode 100644 drivers/.abi/librte_mempool_octeontx2.dump
 create mode 100644 drivers/.abi/librte_mempool_ring.dump
 create mode 100644 drivers/.abi/librte_mempool_stack.dump
 create mode 100644 drivers/.abi/librte_pmd_aesni_gcm.dump
 create mode 100644 drivers/.abi/librte_pmd_aesni_mb.dump
 create mode 100644 drivers/.abi/librte_pmd_af_packet.dump
 create mode 100644 drivers/.abi/librte_pmd_af_xdp.dump
 create mode 100644 drivers/.abi/librte_pmd_ark.dump
 create mode 100644 drivers/.abi/librte_pmd_atlantic.dump
 create mode 100644 drivers/.abi/librte_pmd_avp.dump
 create mode 100644 drivers/.abi/librte_pmd_axgbe.dump
 create mode 100644 drivers/.abi/librte_pmd_bbdev_fpga_lte_fec.dump
 create mode 100644 drivers/.abi/librte_pmd_bbdev_null.dump
 create mode 100644 drivers/.abi/librte_pmd_bbdev_turbo_sw.dump
 create mode 100644 drivers/.abi/librte_pmd_bnx2x.dump
 create mode 100644 drivers/.abi/librte_pmd_bnxt.dump
 create mode 100644 drivers/.abi/librte_pmd_bond.dump
 create mode 100644 drivers/.abi/librte_pmd_caam_jr.dump
 create mode 100644 drivers/.abi/librte_pmd_ccp.dump
 create mode 100644 drivers/.abi/librte_pmd_crypto_scheduler.dump
 create mode 100644 drivers/.abi/librte_pmd_cxgbe.dump
 create mode 100644 drivers/.abi/librte_pmd_dpaa.dump
 create mode 100644 drivers/.abi/librte_pmd_dpaa2.dump
 create mode 100644 drivers/.abi/librte_pmd_dpaa2_event.dump
 create mode 100644 drivers/.abi/librte_pmd_dpaa2_sec.dump
 create mode 100644 drivers/.abi/librte_pmd_dpaa_event.dump
 create mode 100644 drivers/.abi/librte_pmd_dpaa_sec.dump
 create mode 100644 drivers/.abi/librte_pmd_dsw_event.dump
 create mode 100644 drivers/.abi/librte_pmd_e1000.dump
 create mode 100644 drivers/.abi/librte_pmd_ena.dump
 create mode 100644 drivers/.abi/librte_pmd_enetc.dump
 create mode 100644 drivers/.abi/librte_pmd_enic.dump
 create mode 100644 drivers/.abi/librte_pmd_failsafe.dump
 create mode 100644 drivers/.abi/librte_pmd_fm10k.dump
 create mode 100644 drivers/.abi/librte_pmd_hinic.dump
 create mode 100644 drivers/.abi/librte_pmd_hns3.dump
 create mode 100644 drivers/.abi/librte_pmd_i40e.dump
 create mode 100644 drivers/.abi/librte_pmd_iavf.dump
 create mode 100644 drivers/.abi/librte_pmd_ice.dump
 create mode 100644 drivers/.abi/librte_pmd_ifc.dump
 create mode 100644 drivers/.abi/librte_pmd_ipn3ke.dump
 create mode 100644 drivers/.abi/librte_pmd_isal.dump
 create mode 100644 drivers/.abi/librte_pmd_ixgbe.dump
 create mode 100644 drivers/.abi/librte_pmd_kasumi.dump
 create mode 100644 drivers/.abi/librte_pmd_kni.dump
 create mode 100644 drivers/.abi/librte_pmd_liquidio.dump
 create mode 100644 drivers/.abi/librte_pmd_memif.dump
 create mode 100644 drivers/.abi/librte_pmd_mlx4.dump
 create mode 100644 drivers/.abi/librte_pmd_mlx5.dump
 create mode 100644 drivers/.abi/librte_pmd_netvsc.dump
 create mode 100644 drivers/.abi/librte_pmd_nfp.dump
 create mode 100644 drivers/.abi/librte_pmd_nitrox.dump
 create mode 100644 drivers/.abi/librte_pmd_null.dump
 create mode 100644 drivers/.abi/librte_pmd_null_crypto.dump
 create mode 100644 drivers/.abi/librte_pmd_octeontx.dump
 create mode 100644 drivers/.abi/librte_pmd_octeontx2.dump
 create mode 100644 drivers/.abi/librte_pmd_octeontx2_crypto.dump
 create mode 100644 drivers/.abi/librte_pmd_octeontx2_event.dump
 create mode 100644 drivers/.abi/librte_pmd_octeontx_compress.dump
 create mode 100644 drivers/.abi/librte_pmd_octeontx_crypto.dump
 create mode 100644 drivers/.abi/librte_pmd_octeontx_event.dump
 create mode 100644 drivers/.abi/librte_pmd_opdl_event.dump
 create mode 100644 drivers/.abi/librte_pmd_openssl.dump
 create mode 100644 drivers/.abi/librte_pmd_pcap.dump
 create mode 100644 drivers/.abi/librte_pmd_pfe.dump
 create mode 100644 drivers/.abi/librte_pmd_qat.dump
 create mode 100644 drivers/.abi/librte_pmd_qede.dump
 create mode 100644 drivers/.abi/librte_pmd_ring.dump
 create mode 100644 drivers/.abi/librte_pmd_sfc.dump
 create mode 100644 drivers/.abi/librte_pmd_skeleton_event.dump
 create mode 100644 drivers/.abi/librte_pmd_snow3g.dump
 create mode 100644 drivers/.abi/librte_pmd_softnic.dump
 create mode 100644 drivers/.abi/librte_pmd_sw_event.dump
 create mode 100644 drivers/.abi/librte_pmd_szedata2.dump
 create mode 100644 drivers/.abi/librte_pmd_tap.dump
 create mode 100644 drivers/.abi/librte_pmd_thunderx.dump
 create mode 100644 drivers/.abi/librte_pmd_vdev_netvsc.dump
 create mode 100644 drivers/.abi/librte_pmd_vhost.dump
 create mode 100644 drivers/.abi/librte_pmd_virtio.dump
 create mode 100644 drivers/.abi/librte_pmd_virtio_crypto.dump
 create mode 100644 drivers/.abi/librte_pmd_vmxnet3.dump
 create mode 100644 drivers/.abi/librte_pmd_zlib.dump
 create mode 100644 drivers/.abi/librte_pmd_zuc.dump
 create mode 100644 drivers/.abi/librte_rawdev_dpaa2_cmdif.dump
 create mode 100644 drivers/.abi/librte_rawdev_dpaa2_qdma.dump
 create mode 100644 drivers/.abi/librte_rawdev_ifpga.dump
 create mode 100644 drivers/.abi/librte_rawdev_ioat.dump
 create mode 100644 drivers/.abi/librte_rawdev_ntb.dump
 create mode 100644 drivers/.abi/librte_rawdev_octeontx2_dma.dump
 create mode 100644 drivers/.abi/librte_rawdev_skeleton.dump
 create mode 100644 lib/.abi/librte_acl.dump
 create mode 100644 lib/.abi/librte_bbdev.dump
 create mode 100644 lib/.abi/librte_bitratestats.dump
 create mode 100644 lib/.abi/librte_bpf.dump
 create mode 100644 lib/.abi/librte_cfgfile.dump
 create mode 100644 lib/.abi/librte_cmdline.dump
 create mode 100644 lib/.abi/librte_compressdev.dump
 create mode 100644 lib/.abi/librte_cryptodev.dump
 create mode 100644 lib/.abi/librte_distributor.dump
 create mode 100644 lib/.abi/librte_eal.dump
 create mode 100644 lib/.abi/librte_efd.dump
 create mode 100644 lib/.abi/librte_ethdev.dump
 create mode 100644 lib/.abi/librte_eventdev.dump
 create mode 100644 lib/.abi/librte_fib.dump
 create mode 100644 lib/.abi/librte_flow_classify.dump
 create mode 100644 lib/.abi/librte_gro.dump
 create mode 100644 lib/.abi/librte_gso.dump
 create mode 100644 lib/.abi/librte_hash.dump
 create mode 100644 lib/.abi/librte_ip_frag.dump
 create mode 100644 lib/.abi/librte_ipsec.dump
 create mode 100644 lib/.abi/librte_jobstats.dump
 create mode 100644 lib/.abi/librte_kni.dump
 create mode 100644 lib/.abi/librte_kvargs.dump
 create mode 100644 lib/.abi/librte_latencystats.dump
 create mode 100644 lib/.abi/librte_lpm.dump
 create mode 100644 lib/.abi/librte_mbuf.dump
 create mode 100644 lib/.abi/librte_member.dump
 create mode 100644 lib/.abi/librte_mempool.dump
 create mode 100644 lib/.abi/librte_meter.dump
 create mode 100644 lib/.abi/librte_metrics.dump
 create mode 100644 lib/.abi/librte_net.dump
 create mode 100644 lib/.abi/librte_pci.dump
 create mode 100644 lib/.abi/librte_pdump.dump
 create mode 100644 lib/.abi/librte_pipeline.dump
 create mode 100644 lib/.abi/librte_port.dump
 create mode 100644 lib/.abi/librte_power.dump
 create mode 100644 lib/.abi/librte_rawdev.dump
 create mode 100644 lib/.abi/librte_rcu.dump
 create mode 100644 lib/.abi/librte_reorder.dump
 create mode 100644 lib/.abi/librte_rib.dump
 create mode 100644 lib/.abi/librte_ring.dump
 create mode 100644 lib/.abi/librte_sched.dump
 create mode 100644 lib/.abi/librte_security.dump
 create mode 100644 lib/.abi/librte_stack.dump
 create mode 100644 lib/.abi/librte_table.dump
 create mode 100644 lib/.abi/librte_telemetry.dump
 create mode 100644 lib/.abi/librte_timer.dump
 create mode 100644 lib/.abi/librte_vhost.dump

-- 
2.17.1


^ permalink raw reply	[flat|nested] 60+ messages in thread

* [dpdk-dev] [PATCH v5 2/3] build: add abi checks to meson
  2019-12-13 14:02       ` [dpdk-dev] [PATCH v5 0/3] Add ABI compatibility checks to the meson build Kevin Laatz
@ 2019-12-13 14:03         ` Kevin Laatz
  2019-12-13 14:03         ` [dpdk-dev] [PATCH v5 3/3] build: clean up experimental syms check Kevin Laatz
  2019-12-13 16:40         ` [dpdk-dev] [PATCH v6 00/11] Add ABI compatibility checks to the meson build Kevin Laatz
  2 siblings, 0 replies; 60+ messages in thread
From: Kevin Laatz @ 2019-12-13 14:03 UTC (permalink / raw)
  To: dev
  Cc: thomas, david.marchand, bruce.richardson, ray.kinsella, tdu, zr,
	cernay, Kevin Laatz

This patch adds a script to generate ABI dump files. These files will be
required to perform ABI compatibility checks during the build later in the
patchset. This script should be run on a DPDK version with a stable ABI.

Since this is a tool designed for human use, we simplify it to just work
off a whole build directory, taking the parameter of the builddir and
generating the lib|drivers/abi dir. This is hardcoded into the script since
the meson build expects the .dump files in these directories.

The running of the scripts can be enabled/disabled using the new meson
option added in this patch.  If enabled, the lib and drivers .so files will
be compared against any existing ABI dump files in lib|drivers/abi of the
source directory. If there are any incompatibilities, the build will fail
and display the incompatibility.

Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>

---
v2:
  - fixed conditional around abi check custom target
  - fixed conditional around abi check custom target
v3:
  - fix typo in meson option name
v4:
  - squash commits 3,4,5,6 into a single commit
  - changes meson option from type boolean to feature
  - update travis packages
  - move check for windows to earlier in build
  - add abignore file to suppress experimental functions
  - make the directories we store dump files in hidden
v5:
  - remove travis build with abi checks. This can be added as a separate
    patch once the issue are fixed.
---
 buildtools/dpdk.abignore |  2 ++
 buildtools/meson.build   |  3 +++
 config/meson.build       | 10 ++++++++++
 devtools/gen-abi-dump.sh | 24 ++++++++++++++++++++++++
 drivers/meson.build      | 13 +++++++++++++
 lib/meson.build          | 13 +++++++++++++
 meson.build              |  4 ++++
 meson_options.txt        |  2 ++
 8 files changed, 71 insertions(+)
 create mode 100644 buildtools/dpdk.abignore
 create mode 100755 devtools/gen-abi-dump.sh

diff --git a/buildtools/dpdk.abignore b/buildtools/dpdk.abignore
new file mode 100644
index 000000000..b866b7f26
--- /dev/null
+++ b/buildtools/dpdk.abignore
@@ -0,0 +1,2 @@
+[suppress_function]
+        symbol_version = EXPERIMENTAL
diff --git a/buildtools/meson.build b/buildtools/meson.build
index 6ef2c5721..378f8d07e 100644
--- a/buildtools/meson.build
+++ b/buildtools/meson.build
@@ -7,6 +7,9 @@ pmdinfo = find_program('gen-pmdinfo-cfile.sh')
 
 check_experimental_syms = find_program('check-experimental-syms.sh')
 
+abidiff = find_program('abidiff', required: compat_checks)
+abignore = files('dpdk.abignore')
+
 # set up map-to-def script using python, either built-in or external
 python3 = import('python').find_installation(required: false)
 if python3.found()
diff --git a/config/meson.build b/config/meson.build
index 01911ecf9..ea680af33 100644
--- a/config/meson.build
+++ b/config/meson.build
@@ -34,6 +34,16 @@ stable_so_version = abi_va.length() == 2 ? abi_va[0] : abi_va[0] + '.' + abi_va[
 experimental_abi_version = '0.' + ''.join(abi_va)
 experimental_so_version = '0.' + ''.join(stable_so_version.split('.'))
 
+# compatibility checks not available on windows
+compat_checks = disabler()
+if not is_windows
+	compat_checks = get_option('compat_checks')
+endif
+
+if not get_option('debug') and compat_checks.enabled()
+	error('Build type must have debug symbols when compat_checks=enabled')
+endif
+
 # extract all version information into the build configuration
 dpdk_conf.set('RTE_VER_YEAR', pver.get(0).to_int())
 dpdk_conf.set('RTE_VER_MONTH', pver.get(1).to_int())
diff --git a/devtools/gen-abi-dump.sh b/devtools/gen-abi-dump.sh
new file mode 100755
index 000000000..bc6eac8c8
--- /dev/null
+++ b/devtools/gen-abi-dump.sh
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+builddir=$1
+
+if [ -z "$builddir" ] ; then
+	echo "Usage: $(basename $0) build_dir"
+	exit 1
+fi
+
+if [ ! -d "$builddir" ] ; then
+	echo "Error: build directory, '$builddir', doesn't exist"
+	exit 1
+fi
+
+for d in lib drivers ; do
+	mkdir -p $d/.abi
+
+	for f in $builddir/$d/*.so* ; do
+		test -L "$f" && continue
+
+		libname=$(basename $f)
+		abidw --out-file $d/.abi/${libname%.so*}.dump $f || exit 1
+	done
+done
diff --git a/drivers/meson.build b/drivers/meson.build
index 4b17662b7..db58a67b9 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -196,6 +196,19 @@ foreach class:dpdk_driver_classes
 					include_directories: includes,
 					dependencies: static_deps)
 
+			if abidiff.found()
+				custom_target('lib' + lib_name + '.abi_chk',
+					command: [abidiff, '--no-added-syms',
+						'--suppr', abignore,
+						files('.abi/lib' + lib_name + '.dump'),
+						'@INPUT@'],
+					input: shared_lib,
+					output: 'lib' + lib_name + '.abi_chk',
+					capture: true,
+					install: false,
+					build_by_default: is_experimental == 0)
+			endif
+
 			dpdk_drivers += static_lib
 
 			set_variable('shared_@0@'.format(lib_name), shared_dep)
diff --git a/lib/meson.build b/lib/meson.build
index 0af3efab2..f0aba6635 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -180,6 +180,19 @@ foreach l:libraries
 					include_directories: includes,
 					dependencies: shared_deps)
 
+			if abidiff.found()
+				custom_target(dir_name + '.abi_chk',
+					command: [abidiff, '--no-added-syms',
+						'--suppr', abignore,
+						files('.abi/' + dir_name + '.dump'),
+						'@INPUT@'],
+					input: shared_lib,
+					output: dir_name + '.abi_chk',
+					capture: true,
+					install: false,
+					build_by_default: is_experimental == 0)
+			endif
+
 			dpdk_libraries = [shared_lib] + dpdk_libraries
 			dpdk_static_libraries = [static_lib] + dpdk_static_libraries
 		endif # sources.length() > 0
diff --git a/meson.build b/meson.build
index b7ae9c8d9..e840ccea7 100644
--- a/meson.build
+++ b/meson.build
@@ -128,3 +128,7 @@ foreach drv:dpdk_drvs_disabled
 	output_message += drv + ':\t' + reason + '\n\t'
 endforeach
 message(output_message + '\n')
+
+if compat_checks.auto() and not get_option('debug')
+	warning('Build type must be have debug symbols to run compatibility checks!\n')
+endif
diff --git a/meson_options.txt b/meson_options.txt
index bc369d06c..0c651cef3 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -1,5 +1,7 @@
 # Please keep these options sorted alphabetically.
 
+option('compat_checks', type: 'feature', value: 'auto',
+	description: 'Enable abi compatibility checks and experimental syms checks to run during the build. This requires debug build to be enabled.')
 option('disable_drivers', type: 'string', value: '',
 	description: 'Comma-separated list of drivers to explicitly disable.')
 option('drivers_install_subdir', type: 'string', value: 'dpdk/pmds-<VERSION>',
-- 
2.17.1


^ permalink raw reply	[flat|nested] 60+ messages in thread

* [dpdk-dev] [PATCH v5 3/3] build: clean up experimental syms check
  2019-12-13 14:02       ` [dpdk-dev] [PATCH v5 0/3] Add ABI compatibility checks to the meson build Kevin Laatz
  2019-12-13 14:03         ` [dpdk-dev] [PATCH v5 2/3] build: add abi checks to meson Kevin Laatz
@ 2019-12-13 14:03         ` Kevin Laatz
  2019-12-13 16:40         ` [dpdk-dev] [PATCH v6 00/11] Add ABI compatibility checks to the meson build Kevin Laatz
  2 siblings, 0 replies; 60+ messages in thread
From: Kevin Laatz @ 2019-12-13 14:03 UTC (permalink / raw)
  To: dev
  Cc: thomas, david.marchand, bruce.richardson, ray.kinsella, tdu, zr,
	cernay, Kevin Laatz

This patch cleans up the meson build files in lib and drivers by moving the
custom target for checking the experimental syms next to the abi compat
checks. This also removes the dependency on the check for the shared build,
which was not required by anything, but was only added to force the
experimental syms check run.

Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
---
 drivers/meson.build | 21 +++++++++++----------
 lib/meson.build     | 21 +++++++++++----------
 2 files changed, 22 insertions(+), 20 deletions(-)

diff --git a/drivers/meson.build b/drivers/meson.build
index db58a67b9..4f4c93b73 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -163,15 +163,6 @@ foreach class:dpdk_driver_classes
 					'-Wl,/implib:lib\\' + implib]
 			else
 				lk_args = ['-Wl,--version-script=' + version_map]
-				# on unix systems check the output of the
-				# experimental syms script, using it as a
-				# dependency of the .so build
-				lk_deps += custom_target(lib_name + '.exp_chk',
-					command: [check_experimental_syms,
-						version_map, '@INPUT@'],
-					capture: true,
-					input: static_lib,
-					output: lib_name + '.exp_chk')
 			endif
 
 			shared_lib = shared_library(lib_name,
@@ -181,7 +172,6 @@ foreach class:dpdk_driver_classes
 				dependencies: shared_deps,
 				c_args: cflags,
 				link_args: lk_args,
-				link_depends: lk_deps,
 				version: lib_version,
 				soversion: so_version,
 				install: true,
@@ -197,6 +187,17 @@ foreach class:dpdk_driver_classes
 					dependencies: static_deps)
 
 			if abidiff.found()
+				# on unix systems check the output of the
+				# experimental syms script
+				custom_target(lib_name + '.exp_chk',
+					command: [check_experimental_syms,
+						version_map, '@INPUT@'],
+					capture: true,
+					input: static_lib,
+					output: lib_name + '.exp_chk',
+					install: false,
+					build_by_default: true)
+
 				custom_target('lib' + lib_name + '.abi_chk',
 					command: [abidiff, '--no-added-syms',
 						'--suppr', abignore,
diff --git a/lib/meson.build b/lib/meson.build
index f0aba6635..b0f915969 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -154,15 +154,6 @@ foreach l:libraries
 					'-Wl,/implib:lib\\' + implib]
 			else
 				lk_args = ['-Wl,--version-script=' + version_map]
-				# on unix systems check the output of the
-				# experimental syms script, using it as a
-				# dependency of the .so build
-				lk_deps += custom_target(name + '.exp_chk',
-					command: [check_experimental_syms,
-						version_map, '@INPUT@'],
-					capture: true,
-					input: static_lib,
-					output: name + '.exp_chk')
 			endif
 
 			shared_lib = shared_library(libname,
@@ -172,7 +163,6 @@ foreach l:libraries
 					dependencies: shared_deps,
 					include_directories: includes,
 					link_args: lk_args,
-					link_depends: lk_deps,
 					version: lib_version,
 					soversion: so_version,
 					install: true)
@@ -181,6 +171,17 @@ foreach l:libraries
 					dependencies: shared_deps)
 
 			if abidiff.found()
+				# on unix systems check the output of the
+				# experimental syms script
+				custom_target(name + '.exp_chk',
+					command: [check_experimental_syms,
+						version_map, '@INPUT@'],
+					capture: true,
+					input: static_lib,
+					output: name + '.exp_chk',
+					install: false,
+					build_by_default: true)
+
 				custom_target(dir_name + '.abi_chk',
 					command: [abidiff, '--no-added-syms',
 						'--suppr', abignore,
-- 
2.17.1


^ permalink raw reply	[flat|nested] 60+ messages in thread

* [dpdk-dev] [PATCH v6 00/11] Add ABI compatibility checks to the meson build
  2019-12-13 14:02       ` [dpdk-dev] [PATCH v5 0/3] Add ABI compatibility checks to the meson build Kevin Laatz
  2019-12-13 14:03         ` [dpdk-dev] [PATCH v5 2/3] build: add abi checks to meson Kevin Laatz
  2019-12-13 14:03         ` [dpdk-dev] [PATCH v5 3/3] build: clean up experimental syms check Kevin Laatz
@ 2019-12-13 16:40         ` Kevin Laatz
  2019-12-13 16:41           ` [dpdk-dev] [PATCH v6 01/11] lib: add dump files for v20.0 ABI Kevin Laatz
                             ` (11 more replies)
  2 siblings, 12 replies; 60+ messages in thread
From: Kevin Laatz @ 2019-12-13 16:40 UTC (permalink / raw)
  To: dev
  Cc: thomas, david.marchand, bruce.richardson, ray.kinsella, tdu, zr,
	cernay, Kevin Laatz

With the recent changes made to stabilize ABI versioning in DPDK, it will
become increasingly important to check patches for ABI compatibility. We
propose adding the ABI compatibility checking to be done as part of the
build.

The advantages to adding the ABI compatibility checking to the build are
two-fold. Firstly, developers can easily check their patches to make sure
they don’t break the ABI without adding any extra steps. Secondly, it
makes the integration into existing CI seamless since there are no extra
scripts to make the CI run. The build will run as usual and if an
incompatibility is detected in the ABI, the build will fail and show the
incompatibility. As an added bonus, enabling the ABI compatibility checks
does not impact the build speed.

The proposed solution works as follows:
1. Generate the ABI dump of the baseline. This can be done with the new
   script added in this set. This step will only need to be done when the
   ABI version changes (so once a year) and can be added to master so it
   exists by default. This step can be skipped if the dump files for the
   baseline already exist.
2. Build with meson. If there is an ABI incompatibility, the build will
   fail and print the incompatibility information.

The patches in this set include the ABI dump file generating script, the
dump files for drivers and libs, the meson option required to
enable/disable the checks, and the required meson changes to run the
compatibility checks during the build.

Note: This patch set depends on: http://patches.dpdk.org/patch/63765/.  The
generated .dump files in this patch set are based on the changes in the
patch "build: fix soname info for 19.11 compatibility". If a decision is
made to use a different format for the sonames, then a new version of this
patch set will be required as the .dump files will need to be regenerated.

Note: The following driver dump files are not included in these patches:
	common/mvep:    missing dependency, "libmusdk"
        net/mvneta:     missing dependency, "libmusdk"
        net/mvpp2:      missing dependency, "libmusdk"
        net/nfb:        missing dependency, "libnfb"
        crypto/mvsam:   missing dependency, "libmusdk"

They have not been included as I do not have access to these dependencies.
Please feel free to add them if you can! (Maintainers of the above Cc'ed).

---
v2:
  - Rebased on master for 19.11.
  - Moved the experimental syms checks next to the abi checks. This also
    removed the dependency on the experimental checks from the shared
    build.
  - General cleanup.

v3:
  - Fixed typo in meson option name in buildtools/meson.build.

v4:
  - removed commits 1 and 2 from the patch set since they are not needed
    as part of this change
  - squash commits 3,4,5,6 into a single commit
  - changes meson option from type boolean to feature
  - update travis packages
  - move check for windows to earlier in build
  - add abignore file to suppress experimental functions
  - make the directories we store dump files in hidden
  - add .dump files for v20.0 ABI to patch set

v5:
  - added more drivers' dump files
  - removed travis build with abi checks until the issues are resolved.

v6:
  - split up patch with dump files as it was too big for the ML

Kevin Laatz (11):
  lib: add dump files for v20.0 ABI
  drivers/bus: add dump files for v20.0 ABI
  drivers/mempool: add dump files for v20.0 ABI
  drivers/common: add dump files for v20.0 ABI
  drivers/raw: add dump files for v20.0 ABI
  drivers/crypto: add dump files for v20.0 ABI
  drivers/compress: add dump files for v20.0 ABI
  drivers/net: add dump files for v20.0 ABI
  drivers/net/intel: add dump files for v20.0 ABI
  build: add abi checks to meson
  build: clean up experimental syms check

 buildtools/dpdk.abignore                      |    2 +
 buildtools/meson.build                        |    3 +
 config/meson.build                            |   10 +
 devtools/gen-abi-dump.sh                      |   24 +
 drivers/.abi/librte_bus_dpaa.dump             | 5303 ++++++++++++++
 drivers/.abi/librte_bus_fslmc.dump            | 5084 +++++++++++++
 drivers/.abi/librte_bus_ifpga.dump            |  972 +++
 drivers/.abi/librte_bus_pci.dump              |  834 +++
 drivers/.abi/librte_bus_vdev.dump             |  408 ++
 drivers/.abi/librte_bus_vmbus.dump            |  918 +++
 drivers/.abi/librte_common_cpt.dump           |   36 +
 drivers/.abi/librte_common_dpaax.dump         |  177 +
 drivers/.abi/librte_common_octeontx.dump      |   77 +
 drivers/.abi/librte_common_octeontx2.dump     |  988 +++
 drivers/.abi/librte_mempool_bucket.dump       |   15 +
 drivers/.abi/librte_mempool_dpaa.dump         |  323 +
 drivers/.abi/librte_mempool_dpaa2.dump        |  484 ++
 drivers/.abi/librte_mempool_octeontx.dump     |   22 +
 drivers/.abi/librte_mempool_octeontx2.dump    |  643 ++
 drivers/.abi/librte_mempool_ring.dump         |   15 +
 drivers/.abi/librte_mempool_stack.dump        |   16 +
 drivers/.abi/librte_pmd_aesni_gcm.dump        | 1315 ++++
 drivers/.abi/librte_pmd_aesni_mb.dump         | 1315 ++++
 drivers/.abi/librte_pmd_af_packet.dump        |   22 +
 drivers/.abi/librte_pmd_af_xdp.dump           |   23 +
 drivers/.abi/librte_pmd_ark.dump              |   26 +
 drivers/.abi/librte_pmd_atlantic.dump         | 1296 ++++
 drivers/.abi/librte_pmd_avp.dump              |   26 +
 drivers/.abi/librte_pmd_axgbe.dump            |   27 +
 .../.abi/librte_pmd_bbdev_fpga_lte_fec.dump   |   74 +
 drivers/.abi/librte_pmd_bbdev_null.dump       |   17 +
 drivers/.abi/librte_pmd_bbdev_turbo_sw.dump   |   17 +
 drivers/.abi/librte_pmd_bnx2x.dump            |   28 +
 drivers/.abi/librte_pmd_bnxt.dump             | 3499 +++++++++
 drivers/.abi/librte_pmd_bond.dump             | 3586 +++++++++
 drivers/.abi/librte_pmd_caam_jr.dump          |   47 +
 drivers/.abi/librte_pmd_ccp.dump              | 1870 +++++
 drivers/.abi/librte_pmd_crypto_scheduler.dump | 1473 ++++
 drivers/.abi/librte_pmd_cxgbe.dump            |   27 +
 drivers/.abi/librte_pmd_dpaa.dump             | 2929 ++++++++
 drivers/.abi/librte_pmd_dpaa2.dump            | 3319 +++++++++
 drivers/.abi/librte_pmd_dpaa2_event.dump      |   36 +
 drivers/.abi/librte_pmd_dpaa2_sec.dump        | 1511 ++++
 drivers/.abi/librte_pmd_dpaa_event.dump       |   32 +
 drivers/.abi/librte_pmd_dpaa_sec.dump         | 1459 ++++
 drivers/.abi/librte_pmd_dsw_event.dump        |   23 +
 drivers/.abi/librte_pmd_e1000.dump            | 3414 +++++++++
 drivers/.abi/librte_pmd_ena.dump              |   32 +
 drivers/.abi/librte_pmd_enetc.dump            |   27 +
 drivers/.abi/librte_pmd_enic.dump             | 3282 +++++++++
 drivers/.abi/librte_pmd_failsafe.dump         | 3162 ++++++++
 drivers/.abi/librte_pmd_fm10k.dump            |  894 +++
 drivers/.abi/librte_pmd_hinic.dump            | 3110 ++++++++
 drivers/.abi/librte_pmd_hns3.dump             |   28 +
 drivers/.abi/librte_pmd_i40e.dump             | 3553 +++++++++
 drivers/.abi/librte_pmd_iavf.dump             |   71 +
 drivers/.abi/librte_pmd_ice.dump              | 6395 +++++++++++++++++
 drivers/.abi/librte_pmd_ifc.dump              |   24 +
 drivers/.abi/librte_pmd_ipn3ke.dump           | 3581 +++++++++
 drivers/.abi/librte_pmd_isal.dump             | 1038 +++
 drivers/.abi/librte_pmd_ixgbe.dump            | 3369 +++++++++
 drivers/.abi/librte_pmd_kasumi.dump           |   41 +
 drivers/.abi/librte_pmd_kni.dump              |   22 +
 drivers/.abi/librte_pmd_lio.dump              |   11 +
 drivers/.abi/librte_pmd_liquidio.dump         |   27 +
 drivers/.abi/librte_pmd_memif.dump            |   27 +
 drivers/.abi/librte_pmd_mlx4.dump             | 2207 ++++++
 drivers/.abi/librte_pmd_mlx5.dump             | 2155 ++++++
 drivers/.abi/librte_pmd_netvsc.dump           |   28 +
 drivers/.abi/librte_pmd_nfp.dump              |   27 +
 drivers/.abi/librte_pmd_nitrox.dump           |   19 +
 drivers/.abi/librte_pmd_null.dump             |   22 +
 drivers/.abi/librte_pmd_null_crypto.dump      | 1317 ++++
 drivers/.abi/librte_pmd_octeontx.dump         |   49 +
 drivers/.abi/librte_pmd_octeontx2.dump        | 3140 ++++++++
 drivers/.abi/librte_pmd_octeontx2_crypto.dump |   28 +
 drivers/.abi/librte_pmd_octeontx2_event.dump  |   29 +
 .../.abi/librte_pmd_octeontx_compress.dump    |   26 +
 drivers/.abi/librte_pmd_octeontx_crypto.dump  |   28 +
 drivers/.abi/librte_pmd_octeontx_event.dump   |   36 +
 drivers/.abi/librte_pmd_octeontx_ssovf.dump   |   16 +
 drivers/.abi/librte_pmd_octeontx_zip.dump     |   12 +
 drivers/.abi/librte_pmd_opdl_event.dump       |   28 +
 drivers/.abi/librte_pmd_openssl.dump          | 1315 ++++
 drivers/.abi/librte_pmd_pcap.dump             |   23 +
 drivers/.abi/librte_pmd_pfe.dump              |   41 +
 drivers/.abi/librte_pmd_qat.dump              |  119 +
 drivers/.abi/librte_pmd_qede.dump             |   46 +
 drivers/.abi/librte_pmd_ring.dump             |  142 +
 drivers/.abi/librte_pmd_sfc.dump              | 3910 ++++++++++
 drivers/.abi/librte_pmd_sfc_efx.dump          |   12 +
 drivers/.abi/librte_pmd_skeleton_event.dump   |   25 +
 drivers/.abi/librte_pmd_snow3g.dump           | 1424 ++++
 drivers/.abi/librte_pmd_softnic.dump          | 5523 ++++++++++++++
 drivers/.abi/librte_pmd_sw_event.dump         |   28 +
 drivers/.abi/librte_pmd_szedata2.dump         |   28 +
 drivers/.abi/librte_pmd_tap.dump              |   26 +
 drivers/.abi/librte_pmd_thunderx.dump         |   28 +
 drivers/.abi/librte_pmd_thunderx_nicvf.dump   |   12 +
 drivers/.abi/librte_pmd_vdev_netvsc.dump      |   22 +
 drivers/.abi/librte_pmd_vhost.dump            |   57 +
 drivers/.abi/librte_pmd_virtio.dump           | 3808 ++++++++++
 drivers/.abi/librte_pmd_virtio_crypto.dump    | 1419 ++++
 drivers/.abi/librte_pmd_vmxnet3.dump          |   27 +
 drivers/.abi/librte_pmd_vmxnet3_uio.dump      |   11 +
 drivers/.abi/librte_pmd_zlib.dump             | 1035 +++
 drivers/.abi/librte_pmd_zuc.dump              | 1315 ++++
 drivers/.abi/librte_rawdev_dpaa2_cmdif.dump   |   32 +
 drivers/.abi/librte_rawdev_dpaa2_qdma.dump    |  185 +
 drivers/.abi/librte_rawdev_ifpga.dump         |  779 ++
 drivers/.abi/librte_rawdev_ioat.dump          |   19 +
 drivers/.abi/librte_rawdev_ntb.dump           |  771 ++
 drivers/.abi/librte_rawdev_octeontx2_dma.dump |   23 +
 drivers/.abi/librte_rawdev_skeleton.dump      |   21 +
 drivers/meson.build                           |   34 +-
 lib/.abi/librte_acl.dump                      |  329 +
 lib/.abi/librte_bbdev.dump                    | 1789 +++++
 lib/.abi/librte_bitratestats.dump             |   85 +
 lib/.abi/librte_bpf.dump                      |  280 +
 lib/.abi/librte_cfgfile.dump                  |  188 +
 lib/.abi/librte_cmdline.dump                  |  728 ++
 lib/.abi/librte_compressdev.dump              | 1249 ++++
 lib/.abi/librte_cryptodev.dump                | 1806 +++++
 lib/.abi/librte_distributor.dump              |  627 ++
 lib/.abi/librte_eal.dump                      | 3329 +++++++++
 lib/.abi/librte_efd.dump                      |  319 +
 lib/.abi/librte_ethdev.dump                   | 5272 ++++++++++++++
 lib/.abi/librte_eventdev.dump                 | 5519 ++++++++++++++
 lib/.abi/librte_fib.dump                      |  327 +
 lib/.abi/librte_flow_classify.dump            | 1054 +++
 lib/.abi/librte_gro.dump                      |  428 ++
 lib/.abi/librte_gso.dump                      |  402 ++
 lib/.abi/librte_hash.dump                     |  578 ++
 lib/.abi/librte_ip_frag.dump                  |  813 +++
 lib/.abi/librte_ipsec.dump                    | 1269 ++++
 lib/.abi/librte_jobstats.dump                 |  197 +
 lib/.abi/librte_kni.dump                      |  657 ++
 lib/.abi/librte_kvargs.dump                   |   98 +
 lib/.abi/librte_latencystats.dump             |  427 ++
 lib/.abi/librte_lpm.dump                      |  330 +
 lib/.abi/librte_mbuf.dump                     |  745 ++
 lib/.abi/librte_member.dump                   |  216 +
 lib/.abi/librte_mempool.dump                  |  763 ++
 lib/.abi/librte_meter.dump                    |  197 +
 lib/.abi/librte_metrics.dump                  |  102 +
 lib/.abi/librte_net.dump                      |  489 ++
 lib/.abi/librte_pci.dump                      |   85 +
 lib/.abi/librte_pdump.dump                    |  339 +
 lib/.abi/librte_pipeline.dump                 | 1795 +++++
 lib/.abi/librte_port.dump                     |  567 ++
 lib/.abi/librte_power.dump                    |  490 ++
 lib/.abi/librte_rawdev.dump                   |  839 +++
 lib/.abi/librte_rcu.dump                      |  217 +
 lib/.abi/librte_reorder.dump                  |  455 ++
 lib/.abi/librte_rib.dump                      |  556 ++
 lib/.abi/librte_ring.dump                     |  284 +
 lib/.abi/librte_sched.dump                    | 1108 +++
 lib/.abi/librte_security.dump                 | 1125 +++
 lib/.abi/librte_stack.dump                    |  183 +
 lib/.abi/librte_table.dump                    |  544 ++
 lib/.abi/librte_telemetry.dump                |  122 +
 lib/.abi/librte_timer.dump                    |  321 +
 lib/.abi/librte_vhost.dump                    | 1629 +++++
 lib/meson.build                               |   34 +-
 meson.build                                   |    4 +
 meson_options.txt                             |    2 +
 166 files changed, 145177 insertions(+), 20 deletions(-)
 create mode 100644 buildtools/dpdk.abignore
 create mode 100755 devtools/gen-abi-dump.sh
 create mode 100644 drivers/.abi/librte_bus_dpaa.dump
 create mode 100644 drivers/.abi/librte_bus_fslmc.dump
 create mode 100644 drivers/.abi/librte_bus_ifpga.dump
 create mode 100644 drivers/.abi/librte_bus_pci.dump
 create mode 100644 drivers/.abi/librte_bus_vdev.dump
 create mode 100644 drivers/.abi/librte_bus_vmbus.dump
 create mode 100644 drivers/.abi/librte_common_cpt.dump
 create mode 100644 drivers/.abi/librte_common_dpaax.dump
 create mode 100644 drivers/.abi/librte_common_octeontx.dump
 create mode 100644 drivers/.abi/librte_common_octeontx2.dump
 create mode 100644 drivers/.abi/librte_mempool_bucket.dump
 create mode 100644 drivers/.abi/librte_mempool_dpaa.dump
 create mode 100644 drivers/.abi/librte_mempool_dpaa2.dump
 create mode 100644 drivers/.abi/librte_mempool_octeontx.dump
 create mode 100644 drivers/.abi/librte_mempool_octeontx2.dump
 create mode 100644 drivers/.abi/librte_mempool_ring.dump
 create mode 100644 drivers/.abi/librte_mempool_stack.dump
 create mode 100644 drivers/.abi/librte_pmd_aesni_gcm.dump
 create mode 100644 drivers/.abi/librte_pmd_aesni_mb.dump
 create mode 100644 drivers/.abi/librte_pmd_af_packet.dump
 create mode 100644 drivers/.abi/librte_pmd_af_xdp.dump
 create mode 100644 drivers/.abi/librte_pmd_ark.dump
 create mode 100644 drivers/.abi/librte_pmd_atlantic.dump
 create mode 100644 drivers/.abi/librte_pmd_avp.dump
 create mode 100644 drivers/.abi/librte_pmd_axgbe.dump
 create mode 100644 drivers/.abi/librte_pmd_bbdev_fpga_lte_fec.dump
 create mode 100644 drivers/.abi/librte_pmd_bbdev_null.dump
 create mode 100644 drivers/.abi/librte_pmd_bbdev_turbo_sw.dump
 create mode 100644 drivers/.abi/librte_pmd_bnx2x.dump
 create mode 100644 drivers/.abi/librte_pmd_bnxt.dump
 create mode 100644 drivers/.abi/librte_pmd_bond.dump
 create mode 100644 drivers/.abi/librte_pmd_caam_jr.dump
 create mode 100644 drivers/.abi/librte_pmd_ccp.dump
 create mode 100644 drivers/.abi/librte_pmd_crypto_scheduler.dump
 create mode 100644 drivers/.abi/librte_pmd_cxgbe.dump
 create mode 100644 drivers/.abi/librte_pmd_dpaa.dump
 create mode 100644 drivers/.abi/librte_pmd_dpaa2.dump
 create mode 100644 drivers/.abi/librte_pmd_dpaa2_event.dump
 create mode 100644 drivers/.abi/librte_pmd_dpaa2_sec.dump
 create mode 100644 drivers/.abi/librte_pmd_dpaa_event.dump
 create mode 100644 drivers/.abi/librte_pmd_dpaa_sec.dump
 create mode 100644 drivers/.abi/librte_pmd_dsw_event.dump
 create mode 100644 drivers/.abi/librte_pmd_e1000.dump
 create mode 100644 drivers/.abi/librte_pmd_ena.dump
 create mode 100644 drivers/.abi/librte_pmd_enetc.dump
 create mode 100644 drivers/.abi/librte_pmd_enic.dump
 create mode 100644 drivers/.abi/librte_pmd_failsafe.dump
 create mode 100644 drivers/.abi/librte_pmd_fm10k.dump
 create mode 100644 drivers/.abi/librte_pmd_hinic.dump
 create mode 100644 drivers/.abi/librte_pmd_hns3.dump
 create mode 100644 drivers/.abi/librte_pmd_i40e.dump
 create mode 100644 drivers/.abi/librte_pmd_iavf.dump
 create mode 100644 drivers/.abi/librte_pmd_ice.dump
 create mode 100644 drivers/.abi/librte_pmd_ifc.dump
 create mode 100644 drivers/.abi/librte_pmd_ipn3ke.dump
 create mode 100644 drivers/.abi/librte_pmd_isal.dump
 create mode 100644 drivers/.abi/librte_pmd_ixgbe.dump
 create mode 100644 drivers/.abi/librte_pmd_kasumi.dump
 create mode 100644 drivers/.abi/librte_pmd_kni.dump
 create mode 100644 drivers/.abi/librte_pmd_lio.dump
 create mode 100644 drivers/.abi/librte_pmd_liquidio.dump
 create mode 100644 drivers/.abi/librte_pmd_memif.dump
 create mode 100644 drivers/.abi/librte_pmd_mlx4.dump
 create mode 100644 drivers/.abi/librte_pmd_mlx5.dump
 create mode 100644 drivers/.abi/librte_pmd_netvsc.dump
 create mode 100644 drivers/.abi/librte_pmd_nfp.dump
 create mode 100644 drivers/.abi/librte_pmd_nitrox.dump
 create mode 100644 drivers/.abi/librte_pmd_null.dump
 create mode 100644 drivers/.abi/librte_pmd_null_crypto.dump
 create mode 100644 drivers/.abi/librte_pmd_octeontx.dump
 create mode 100644 drivers/.abi/librte_pmd_octeontx2.dump
 create mode 100644 drivers/.abi/librte_pmd_octeontx2_crypto.dump
 create mode 100644 drivers/.abi/librte_pmd_octeontx2_event.dump
 create mode 100644 drivers/.abi/librte_pmd_octeontx_compress.dump
 create mode 100644 drivers/.abi/librte_pmd_octeontx_crypto.dump
 create mode 100644 drivers/.abi/librte_pmd_octeontx_event.dump
 create mode 100644 drivers/.abi/librte_pmd_octeontx_ssovf.dump
 create mode 100644 drivers/.abi/librte_pmd_octeontx_zip.dump
 create mode 100644 drivers/.abi/librte_pmd_opdl_event.dump
 create mode 100644 drivers/.abi/librte_pmd_openssl.dump
 create mode 100644 drivers/.abi/librte_pmd_pcap.dump
 create mode 100644 drivers/.abi/librte_pmd_pfe.dump
 create mode 100644 drivers/.abi/librte_pmd_qat.dump
 create mode 100644 drivers/.abi/librte_pmd_qede.dump
 create mode 100644 drivers/.abi/librte_pmd_ring.dump
 create mode 100644 drivers/.abi/librte_pmd_sfc.dump
 create mode 100644 drivers/.abi/librte_pmd_sfc_efx.dump
 create mode 100644 drivers/.abi/librte_pmd_skeleton_event.dump
 create mode 100644 drivers/.abi/librte_pmd_snow3g.dump
 create mode 100644 drivers/.abi/librte_pmd_softnic.dump
 create mode 100644 drivers/.abi/librte_pmd_sw_event.dump
 create mode 100644 drivers/.abi/librte_pmd_szedata2.dump
 create mode 100644 drivers/.abi/librte_pmd_tap.dump
 create mode 100644 drivers/.abi/librte_pmd_thunderx.dump
 create mode 100644 drivers/.abi/librte_pmd_thunderx_nicvf.dump
 create mode 100644 drivers/.abi/librte_pmd_vdev_netvsc.dump
 create mode 100644 drivers/.abi/librte_pmd_vhost.dump
 create mode 100644 drivers/.abi/librte_pmd_virtio.dump
 create mode 100644 drivers/.abi/librte_pmd_virtio_crypto.dump
 create mode 100644 drivers/.abi/librte_pmd_vmxnet3.dump
 create mode 100644 drivers/.abi/librte_pmd_vmxnet3_uio.dump
 create mode 100644 drivers/.abi/librte_pmd_zlib.dump
 create mode 100644 drivers/.abi/librte_pmd_zuc.dump
 create mode 100644 drivers/.abi/librte_rawdev_dpaa2_cmdif.dump
 create mode 100644 drivers/.abi/librte_rawdev_dpaa2_qdma.dump
 create mode 100644 drivers/.abi/librte_rawdev_ifpga.dump
 create mode 100644 drivers/.abi/librte_rawdev_ioat.dump
 create mode 100644 drivers/.abi/librte_rawdev_ntb.dump
 create mode 100644 drivers/.abi/librte_rawdev_octeontx2_dma.dump
 create mode 100644 drivers/.abi/librte_rawdev_skeleton.dump
 create mode 100644 lib/.abi/librte_acl.dump
 create mode 100644 lib/.abi/librte_bbdev.dump
 create mode 100644 lib/.abi/librte_bitratestats.dump
 create mode 100644 lib/.abi/librte_bpf.dump
 create mode 100644 lib/.abi/librte_cfgfile.dump
 create mode 100644 lib/.abi/librte_cmdline.dump
 create mode 100644 lib/.abi/librte_compressdev.dump
 create mode 100644 lib/.abi/librte_cryptodev.dump
 create mode 100644 lib/.abi/librte_distributor.dump
 create mode 100644 lib/.abi/librte_eal.dump
 create mode 100644 lib/.abi/librte_efd.dump
 create mode 100644 lib/.abi/librte_ethdev.dump
 create mode 100644 lib/.abi/librte_eventdev.dump
 create mode 100644 lib/.abi/librte_fib.dump
 create mode 100644 lib/.abi/librte_flow_classify.dump
 create mode 100644 lib/.abi/librte_gro.dump
 create mode 100644 lib/.abi/librte_gso.dump
 create mode 100644 lib/.abi/librte_hash.dump
 create mode 100644 lib/.abi/librte_ip_frag.dump
 create mode 100644 lib/.abi/librte_ipsec.dump
 create mode 100644 lib/.abi/librte_jobstats.dump
 create mode 100644 lib/.abi/librte_kni.dump
 create mode 100644 lib/.abi/librte_kvargs.dump
 create mode 100644 lib/.abi/librte_latencystats.dump
 create mode 100644 lib/.abi/librte_lpm.dump
 create mode 100644 lib/.abi/librte_mbuf.dump
 create mode 100644 lib/.abi/librte_member.dump
 create mode 100644 lib/.abi/librte_mempool.dump
 create mode 100644 lib/.abi/librte_meter.dump
 create mode 100644 lib/.abi/librte_metrics.dump
 create mode 100644 lib/.abi/librte_net.dump
 create mode 100644 lib/.abi/librte_pci.dump
 create mode 100644 lib/.abi/librte_pdump.dump
 create mode 100644 lib/.abi/librte_pipeline.dump
 create mode 100644 lib/.abi/librte_port.dump
 create mode 100644 lib/.abi/librte_power.dump
 create mode 100644 lib/.abi/librte_rawdev.dump
 create mode 100644 lib/.abi/librte_rcu.dump
 create mode 100644 lib/.abi/librte_reorder.dump
 create mode 100644 lib/.abi/librte_rib.dump
 create mode 100644 lib/.abi/librte_ring.dump
 create mode 100644 lib/.abi/librte_sched.dump
 create mode 100644 lib/.abi/librte_security.dump
 create mode 100644 lib/.abi/librte_stack.dump
 create mode 100644 lib/.abi/librte_table.dump
 create mode 100644 lib/.abi/librte_telemetry.dump
 create mode 100644 lib/.abi/librte_timer.dump
 create mode 100644 lib/.abi/librte_vhost.dump

-- 
2.17.1


^ permalink raw reply	[flat|nested] 60+ messages in thread

* [dpdk-dev] [PATCH v6 01/11] lib: add dump files for v20.0 ABI
  2019-12-13 16:40         ` [dpdk-dev] [PATCH v6 00/11] Add ABI compatibility checks to the meson build Kevin Laatz
@ 2019-12-13 16:41           ` Kevin Laatz
  2019-12-13 16:41           ` [dpdk-dev] [PATCH v6 02/11] drivers/bus: " Kevin Laatz
                             ` (10 subsequent siblings)
  11 siblings, 0 replies; 60+ messages in thread
From: Kevin Laatz @ 2019-12-13 16:41 UTC (permalink / raw)
  To: dev
  Cc: thomas, david.marchand, bruce.richardson, ray.kinsella, tdu, zr,
	cernay, Kevin Laatz

This patch adds the lib .dump files generated for the v20.0 ABI. These
files will be used to compare the ABI during the meson build when the
compat_checks meson is enabled. If there is a mismatch between the .dump
files (the baseline, ie. current stable ABI version) and the code being
compiled, then abidiff will report an error and the build will fail.

The .dump files are stored in the lib/.abi directory.  The directory is
hidden to reduce clutter and also to discourage changing these files since
they should not be modified.

Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
---
 lib/.abi/librte_acl.dump           |  329 ++
 lib/.abi/librte_bbdev.dump         | 1789 +++++++++
 lib/.abi/librte_bitratestats.dump  |   85 +
 lib/.abi/librte_bpf.dump           |  280 ++
 lib/.abi/librte_cfgfile.dump       |  188 +
 lib/.abi/librte_cmdline.dump       |  728 ++++
 lib/.abi/librte_compressdev.dump   | 1249 +++++++
 lib/.abi/librte_cryptodev.dump     | 1806 +++++++++
 lib/.abi/librte_distributor.dump   |  627 ++++
 lib/.abi/librte_eal.dump           | 3329 +++++++++++++++++
 lib/.abi/librte_efd.dump           |  319 ++
 lib/.abi/librte_ethdev.dump        | 5272 ++++++++++++++++++++++++++
 lib/.abi/librte_eventdev.dump      | 5519 ++++++++++++++++++++++++++++
 lib/.abi/librte_fib.dump           |  327 ++
 lib/.abi/librte_flow_classify.dump | 1054 ++++++
 lib/.abi/librte_gro.dump           |  428 +++
 lib/.abi/librte_gso.dump           |  402 ++
 lib/.abi/librte_hash.dump          |  578 +++
 lib/.abi/librte_ip_frag.dump       |  813 ++++
 lib/.abi/librte_ipsec.dump         | 1269 +++++++
 lib/.abi/librte_jobstats.dump      |  197 +
 lib/.abi/librte_kni.dump           |  657 ++++
 lib/.abi/librte_kvargs.dump        |   98 +
 lib/.abi/librte_latencystats.dump  |  427 +++
 lib/.abi/librte_lpm.dump           |  330 ++
 lib/.abi/librte_mbuf.dump          |  745 ++++
 lib/.abi/librte_member.dump        |  216 ++
 lib/.abi/librte_mempool.dump       |  763 ++++
 lib/.abi/librte_meter.dump         |  197 +
 lib/.abi/librte_metrics.dump       |  102 +
 lib/.abi/librte_net.dump           |  489 +++
 lib/.abi/librte_pci.dump           |   85 +
 lib/.abi/librte_pdump.dump         |  339 ++
 lib/.abi/librte_pipeline.dump      | 1795 +++++++++
 lib/.abi/librte_port.dump          |  567 +++
 lib/.abi/librte_power.dump         |  490 +++
 lib/.abi/librte_rawdev.dump        |  839 +++++
 lib/.abi/librte_rcu.dump           |  217 ++
 lib/.abi/librte_reorder.dump       |  455 +++
 lib/.abi/librte_rib.dump           |  556 +++
 lib/.abi/librte_ring.dump          |  284 ++
 lib/.abi/librte_sched.dump         | 1108 ++++++
 lib/.abi/librte_security.dump      | 1125 ++++++
 lib/.abi/librte_stack.dump         |  183 +
 lib/.abi/librte_table.dump         |  544 +++
 lib/.abi/librte_telemetry.dump     |  122 +
 lib/.abi/librte_timer.dump         |  321 ++
 lib/.abi/librte_vhost.dump         | 1629 ++++++++
 48 files changed, 41271 insertions(+)
 create mode 100644 lib/.abi/librte_acl.dump
 create mode 100644 lib/.abi/librte_bbdev.dump
 create mode 100644 lib/.abi/librte_bitratestats.dump
 create mode 100644 lib/.abi/librte_bpf.dump
 create mode 100644 lib/.abi/librte_cfgfile.dump
 create mode 100644 lib/.abi/librte_cmdline.dump
 create mode 100644 lib/.abi/librte_compressdev.dump
 create mode 100644 lib/.abi/librte_cryptodev.dump
 create mode 100644 lib/.abi/librte_distributor.dump
 create mode 100644 lib/.abi/librte_eal.dump
 create mode 100644 lib/.abi/librte_efd.dump
 create mode 100644 lib/.abi/librte_ethdev.dump
 create mode 100644 lib/.abi/librte_eventdev.dump
 create mode 100644 lib/.abi/librte_fib.dump
 create mode 100644 lib/.abi/librte_flow_classify.dump
 create mode 100644 lib/.abi/librte_gro.dump
 create mode 100644 lib/.abi/librte_gso.dump
 create mode 100644 lib/.abi/librte_hash.dump
 create mode 100644 lib/.abi/librte_ip_frag.dump
 create mode 100644 lib/.abi/librte_ipsec.dump
 create mode 100644 lib/.abi/librte_jobstats.dump
 create mode 100644 lib/.abi/librte_kni.dump
 create mode 100644 lib/.abi/librte_kvargs.dump
 create mode 100644 lib/.abi/librte_latencystats.dump
 create mode 100644 lib/.abi/librte_lpm.dump
 create mode 100644 lib/.abi/librte_mbuf.dump
 create mode 100644 lib/.abi/librte_member.dump
 create mode 100644 lib/.abi/librte_mempool.dump
 create mode 100644 lib/.abi/librte_meter.dump
 create mode 100644 lib/.abi/librte_metrics.dump
 create mode 100644 lib/.abi/librte_net.dump
 create mode 100644 lib/.abi/librte_pci.dump
 create mode 100644 lib/.abi/librte_pdump.dump
 create mode 100644 lib/.abi/librte_pipeline.dump
 create mode 100644 lib/.abi/librte_port.dump
 create mode 100644 lib/.abi/librte_power.dump
 create mode 100644 lib/.abi/librte_rawdev.dump
 create mode 100644 lib/.abi/librte_rcu.dump
 create mode 100644 lib/.abi/librte_reorder.dump
 create mode 100644 lib/.abi/librte_rib.dump
 create mode 100644 lib/.abi/librte_ring.dump
 create mode 100644 lib/.abi/librte_sched.dump
 create mode 100644 lib/.abi/librte_security.dump
 create mode 100644 lib/.abi/librte_stack.dump
 create mode 100644 lib/.abi/librte_table.dump
 create mode 100644 lib/.abi/librte_telemetry.dump
 create mode 100644 lib/.abi/librte_timer.dump
 create mode 100644 lib/.abi/librte_vhost.dump

diff --git a/lib/.abi/librte_acl.dump b/lib/.abi/librte_acl.dump
new file mode 100644
index 000000000..edb47610a
--- /dev/null
+++ b/lib/.abi/librte_acl.dump
@@ -0,0 +1,329 @@
+<abi-corpus path='gcc//lib/librte_acl.so.20.0' architecture='elf-amd-x86_64' soname='librte_acl.so.20.0'>
+  <elf-needed>
+    <dependency name='libm.so.6'/>
+    <dependency name='libdl.so.2'/>
+    <dependency name='libnuma.so.1'/>
+    <dependency name='librte_eal.so.20.0'/>
+    <dependency name='librte_kvargs.so.20.0'/>
+    <dependency name='libbsd.so.0'/>
+    <dependency name='libpthread.so.0'/>
+    <dependency name='libc.so.6'/>
+    <dependency name='ld-linux-x86-64.so.2'/>
+  </elf-needed>
+  <elf-function-symbols>
+    <elf-symbol name='rte_acl_add_rules' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_acl_build' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_acl_classify' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_acl_classify_alg' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_acl_classify_scalar' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_acl_create' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_acl_dump' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_acl_find_existing' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_acl_free' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_acl_list_dump' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_acl_reset' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_acl_reset_rules' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_acl_set_ctx_classify' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+  </elf-function-symbols>
+  <abi-instr version='1.0' address-size='64' path='../lib/librte_acl/acl_bld.c' comp-dir-path='/root/klaatz/dpdk/gcc' language='LANG_C99'>
+    <type-decl name='int' size-in-bits='32' id='type-id-1'/>
+    <class-decl name='rte_acl_ctx' size-in-bits='7232' is-struct='yes' visibility='default' filepath='../lib/librte_acl/acl.h' line='159' column='1' id='type-id-2'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='name' type-id='type-id-3' visibility='default' filepath='../lib/librte_acl/acl.h' line='160' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='socket_id' type-id='type-id-4' visibility='default' filepath='../lib/librte_acl/acl.h' line='162' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='288'>
+        <var-decl name='alg' type-id='type-id-5' visibility='default' filepath='../lib/librte_acl/acl.h' line='164' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <var-decl name='rules' type-id='type-id-6' visibility='default' filepath='../lib/librte_acl/acl.h' line='165' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <var-decl name='max_rules' type-id='type-id-7' visibility='default' filepath='../lib/librte_acl/acl.h' line='166' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='416'>
+        <var-decl name='rule_sz' type-id='type-id-7' visibility='default' filepath='../lib/librte_acl/acl.h' line='167' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='448'>
+        <var-decl name='num_rules' type-id='type-id-7' visibility='default' filepath='../lib/librte_acl/acl.h' line='168' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='480'>
+        <var-decl name='num_categories' type-id='type-id-7' visibility='default' filepath='../lib/librte_acl/acl.h' line='169' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='512'>
+        <var-decl name='num_tries' type-id='type-id-7' visibility='default' filepath='../lib/librte_acl/acl.h' line='170' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='544'>
+        <var-decl name='match_index' type-id='type-id-7' visibility='default' filepath='../lib/librte_acl/acl.h' line='171' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='576'>
+        <var-decl name='no_match' type-id='type-id-8' visibility='default' filepath='../lib/librte_acl/acl.h' line='172' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='640'>
+        <var-decl name='idle' type-id='type-id-8' visibility='default' filepath='../lib/librte_acl/acl.h' line='173' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='704'>
+        <var-decl name='trans_table' type-id='type-id-9' visibility='default' filepath='../lib/librte_acl/acl.h' line='174' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='768'>
+        <var-decl name='data_indexes' type-id='type-id-10' visibility='default' filepath='../lib/librte_acl/acl.h' line='175' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='832'>
+        <var-decl name='trie' type-id='type-id-11' visibility='default' filepath='../lib/librte_acl/acl.h' line='176' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='2880'>
+        <var-decl name='mem' type-id='type-id-6' visibility='default' filepath='../lib/librte_acl/acl.h' line='177' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='2944'>
+        <var-decl name='mem_sz' type-id='type-id-12' visibility='default' filepath='../lib/librte_acl/acl.h' line='178' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='3008'>
+        <var-decl name='config' type-id='type-id-13' visibility='default' filepath='../lib/librte_acl/acl.h' line='179' column='1'/>
+      </data-member>
+    </class-decl>
+    <type-decl name='char' size-in-bits='8' id='type-id-14'/>
+    <type-decl name='unsigned long int' size-in-bits='64' id='type-id-15'/>
+
+    <array-type-def dimensions='1' type-id='type-id-14' size-in-bits='256' id='type-id-3'>
+      <subrange length='32' type-id='type-id-15' id='type-id-16'/>
+
+    </array-type-def>
+    <typedef-decl name='__int32_t' type-id='type-id-1' filepath='/usr/include/bits/types.h' line='41' column='1' id='type-id-17'/>
+    <typedef-decl name='int32_t' type-id='type-id-17' filepath='/usr/include/bits/stdint-intn.h' line='26' column='1' id='type-id-4'/>
+    <type-decl name='unnamed-enum-underlying-type' is-anonymous='yes' size-in-bits='32' alignment-in-bits='32' id='type-id-18'/>
+    <enum-decl name='rte_acl_classify_alg' filepath='../lib/librte_acl/rte_acl.h' line='237' column='1' id='type-id-5'>
+      <underlying-type type-id='type-id-18'/>
+      <enumerator name='RTE_ACL_CLASSIFY_DEFAULT' value='0'/>
+      <enumerator name='RTE_ACL_CLASSIFY_SCALAR' value='1'/>
+      <enumerator name='RTE_ACL_CLASSIFY_SSE' value='2'/>
+      <enumerator name='RTE_ACL_CLASSIFY_AVX2' value='3'/>
+      <enumerator name='RTE_ACL_CLASSIFY_NEON' value='4'/>
+      <enumerator name='RTE_ACL_CLASSIFY_ALTIVEC' value='5'/>
+      <enumerator name='RTE_ACL_CLASSIFY_NUM' value='6'/>
+    </enum-decl>
+    <type-decl name='void' id='type-id-19'/>
+    <pointer-type-def type-id='type-id-19' size-in-bits='64' id='type-id-6'/>
+    <type-decl name='unsigned int' size-in-bits='32' id='type-id-20'/>
+    <typedef-decl name='__uint32_t' type-id='type-id-20' filepath='/usr/include/bits/types.h' line='42' column='1' id='type-id-21'/>
+    <typedef-decl name='uint32_t' type-id='type-id-21' filepath='/usr/include/bits/stdint-uintn.h' line='26' column='1' id='type-id-7'/>
+    <typedef-decl name='__uint64_t' type-id='type-id-15' filepath='/usr/include/bits/types.h' line='45' column='1' id='type-id-22'/>
+    <typedef-decl name='uint64_t' type-id='type-id-22' filepath='/usr/include/bits/stdint-uintn.h' line='27' column='1' id='type-id-8'/>
+    <pointer-type-def type-id='type-id-8' size-in-bits='64' id='type-id-9'/>
+    <pointer-type-def type-id='type-id-7' size-in-bits='64' id='type-id-10'/>
+    <class-decl name='rte_acl_trie' size-in-bits='256' is-struct='yes' visibility='default' filepath='../lib/librte_acl/acl.h' line='147' column='1' id='type-id-23'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='type' type-id='type-id-7' visibility='default' filepath='../lib/librte_acl/acl.h' line='148' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='count' type-id='type-id-7' visibility='default' filepath='../lib/librte_acl/acl.h' line='149' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='root_index' type-id='type-id-7' visibility='default' filepath='../lib/librte_acl/acl.h' line='150' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='data_index' type-id='type-id-24' visibility='default' filepath='../lib/librte_acl/acl.h' line='151' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='num_data_indexes' type-id='type-id-7' visibility='default' filepath='../lib/librte_acl/acl.h' line='152' column='1'/>
+      </data-member>
+    </class-decl>
+    <qualified-type-def type-id='type-id-7' const='yes' id='type-id-25'/>
+    <pointer-type-def type-id='type-id-25' size-in-bits='64' id='type-id-24'/>
+
+    <array-type-def dimensions='1' type-id='type-id-23' size-in-bits='2048' id='type-id-11'>
+      <subrange length='8' type-id='type-id-15' id='type-id-26'/>
+
+    </array-type-def>
+    <typedef-decl name='size_t' type-id='type-id-15' filepath='/usr/lib/gcc/x86_64-redhat-linux/9/include/stddef.h' line='209' column='1' id='type-id-12'/>
+    <class-decl name='rte_acl_config' size-in-bits='4224' is-struct='yes' visibility='default' filepath='../lib/librte_acl/rte_acl.h' line='63' column='1' id='type-id-13'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='num_categories' type-id='type-id-7' visibility='default' filepath='../lib/librte_acl/rte_acl.h' line='64' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='num_fields' type-id='type-id-7' visibility='default' filepath='../lib/librte_acl/rte_acl.h' line='65' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='defs' type-id='type-id-27' visibility='default' filepath='../lib/librte_acl/rte_acl.h' line='66' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='4160'>
+        <var-decl name='max_size' type-id='type-id-12' visibility='default' filepath='../lib/librte_acl/rte_acl.h' line='68' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='rte_acl_field_def' size-in-bits='64' is-struct='yes' visibility='default' filepath='../lib/librte_acl/rte_acl.h' line='51' column='1' id='type-id-28'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='type' type-id='type-id-29' visibility='default' filepath='../lib/librte_acl/rte_acl.h' line='52' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='8'>
+        <var-decl name='size' type-id='type-id-29' visibility='default' filepath='../lib/librte_acl/rte_acl.h' line='53' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='16'>
+        <var-decl name='field_index' type-id='type-id-29' visibility='default' filepath='../lib/librte_acl/rte_acl.h' line='54' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='24'>
+        <var-decl name='input_index' type-id='type-id-29' visibility='default' filepath='../lib/librte_acl/rte_acl.h' line='55' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='offset' type-id='type-id-7' visibility='default' filepath='../lib/librte_acl/rte_acl.h' line='56' column='1'/>
+      </data-member>
+    </class-decl>
+    <type-decl name='unsigned char' size-in-bits='8' id='type-id-30'/>
+    <typedef-decl name='__uint8_t' type-id='type-id-30' filepath='/usr/include/bits/types.h' line='38' column='1' id='type-id-31'/>
+    <typedef-decl name='uint8_t' type-id='type-id-31' filepath='/usr/include/bits/stdint-uintn.h' line='24' column='1' id='type-id-29'/>
+
+    <array-type-def dimensions='1' type-id='type-id-28' size-in-bits='4096' id='type-id-27'>
+      <subrange length='64' type-id='type-id-15' id='type-id-32'/>
+
+    </array-type-def>
+    <pointer-type-def type-id='type-id-2' size-in-bits='64' id='type-id-33'/>
+    <qualified-type-def type-id='type-id-13' const='yes' id='type-id-34'/>
+    <pointer-type-def type-id='type-id-34' size-in-bits='64' id='type-id-35'/>
+    <function-decl name='rte_acl_build' mangled-name='rte_acl_build' filepath='../lib/librte_acl/acl_bld.c' line='1521' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_acl_build@@DPDK_20.0'>
+      <parameter type-id='type-id-33' name='ctx' filepath='../lib/librte_acl/acl_bld.c' line='1521' column='1'/>
+      <parameter type-id='type-id-35' name='cfg' filepath='../lib/librte_acl/acl_bld.c' line='1521' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+  </abi-instr>
+  <abi-instr version='1.0' address-size='64' path='../lib/librte_acl/acl_run_scalar.c' comp-dir-path='/root/klaatz/dpdk/gcc' language='LANG_C99'>
+    <qualified-type-def type-id='type-id-2' const='yes' id='type-id-36'/>
+    <pointer-type-def type-id='type-id-36' size-in-bits='64' id='type-id-37'/>
+    <qualified-type-def type-id='type-id-29' const='yes' id='type-id-38'/>
+    <pointer-type-def type-id='type-id-38' size-in-bits='64' id='type-id-39'/>
+    <pointer-type-def type-id='type-id-39' size-in-bits='64' id='type-id-40'/>
+    <function-decl name='rte_acl_classify_scalar' mangled-name='rte_acl_classify_scalar' filepath='../lib/librte_acl/acl_run_scalar.c' line='110' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_acl_classify_scalar@@DPDK_20.0'>
+      <parameter type-id='type-id-37' name='ctx' filepath='../lib/librte_acl/acl_run_scalar.c' line='110' column='1'/>
+      <parameter type-id='type-id-40' name='data' filepath='../lib/librte_acl/acl_run_scalar.c' line='110' column='1'/>
+      <parameter type-id='type-id-10' name='results' filepath='../lib/librte_acl/acl_run_scalar.c' line='111' column='1'/>
+      <parameter type-id='type-id-7' name='num' filepath='../lib/librte_acl/acl_run_scalar.c' line='111' column='1'/>
+      <parameter type-id='type-id-7' name='categories' filepath='../lib/librte_acl/acl_run_scalar.c' line='111' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+  </abi-instr>
+  <abi-instr version='1.0' address-size='64' path='../lib/librte_acl/rte_acl.c' comp-dir-path='/root/klaatz/dpdk/gcc' language='LANG_C99'>
+    <function-decl name='rte_acl_list_dump' mangled-name='rte_acl_list_dump' filepath='../lib/librte_acl/rte_acl.c' line='375' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_acl_list_dump@@DPDK_20.0'>
+      <return type-id='type-id-19'/>
+    </function-decl>
+    <function-decl name='rte_acl_dump' mangled-name='rte_acl_dump' filepath='../lib/librte_acl/rte_acl.c' line='357' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_acl_dump@@DPDK_20.0'>
+      <parameter type-id='type-id-37' name='ctx' filepath='../lib/librte_acl/rte_acl.c' line='357' column='1'/>
+      <return type-id='type-id-19'/>
+    </function-decl>
+    <function-decl name='rte_acl_reset' mangled-name='rte_acl_reset' filepath='../lib/librte_acl/rte_acl.c' line='345' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_acl_reset@@DPDK_20.0'>
+      <parameter type-id='type-id-33' name='ctx' filepath='../lib/librte_acl/rte_acl.c' line='345' column='1'/>
+      <return type-id='type-id-19'/>
+    </function-decl>
+    <function-decl name='rte_acl_reset_rules' mangled-name='rte_acl_reset_rules' filepath='../lib/librte_acl/rte_acl.c' line='335' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_acl_reset_rules@@DPDK_20.0'>
+      <parameter type-id='type-id-33' name='ctx' filepath='../lib/librte_acl/rte_acl.c' line='345' column='1'/>
+      <return type-id='type-id-19'/>
+    </function-decl>
+    <class-decl name='rte_acl_rule' size-in-bits='128' is-struct='yes' visibility='default' filepath='../lib/librte_acl/rte_acl.h' line='116' column='1' id='type-id-41'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='data' type-id='type-id-42' visibility='default' filepath='../lib/librte_acl/rte_acl.h' line='116' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='field' type-id='type-id-43' visibility='default' filepath='../lib/librte_acl/rte_acl.h' line='116' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='rte_acl_rule_data' size-in-bits='96' is-struct='yes' visibility='default' filepath='../lib/librte_acl/rte_acl.h' line='100' column='1' id='type-id-42'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='category_mask' type-id='type-id-7' visibility='default' filepath='../lib/librte_acl/rte_acl.h' line='101' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='priority' type-id='type-id-4' visibility='default' filepath='../lib/librte_acl/rte_acl.h' line='102' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='userdata' type-id='type-id-7' visibility='default' filepath='../lib/librte_acl/rte_acl.h' line='103' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='rte_acl_field' size-in-bits='128' is-struct='yes' visibility='default' filepath='../lib/librte_acl/rte_acl.h' line='75' column='1' id='type-id-44'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='value' type-id='type-id-45' visibility='default' filepath='../lib/librte_acl/rte_acl.h' line='76' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='mask_range' type-id='type-id-45' visibility='default' filepath='../lib/librte_acl/rte_acl.h' line='78' column='1'/>
+      </data-member>
+    </class-decl>
+    <union-decl name='rte_acl_field_types' size-in-bits='64' visibility='default' filepath='../lib/librte_acl/rte_acl.h' line='27' column='1' id='type-id-45'>
+      <data-member access='private'>
+        <var-decl name='u8' type-id='type-id-29' visibility='default' filepath='../lib/librte_acl/rte_acl.h' line='28' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='u16' type-id='type-id-46' visibility='default' filepath='../lib/librte_acl/rte_acl.h' line='29' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='u32' type-id='type-id-7' visibility='default' filepath='../lib/librte_acl/rte_acl.h' line='30' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='u64' type-id='type-id-8' visibility='default' filepath='../lib/librte_acl/rte_acl.h' line='31' column='1'/>
+      </data-member>
+    </union-decl>
+    <type-decl name='unsigned short int' size-in-bits='16' id='type-id-47'/>
+    <typedef-decl name='__uint16_t' type-id='type-id-47' filepath='/usr/include/bits/types.h' line='40' column='1' id='type-id-48'/>
+    <typedef-decl name='uint16_t' type-id='type-id-48' filepath='/usr/include/bits/stdint-uintn.h' line='25' column='1' id='type-id-46'/>
+
+    <array-type-def dimensions='1' type-id='type-id-44' size-in-bits='infinite' id='type-id-43'>
+      <subrange length='infinite' type-id='type-id-15' id='type-id-49'/>
+
+    </array-type-def>
+    <qualified-type-def type-id='type-id-41' const='yes' id='type-id-50'/>
+    <pointer-type-def type-id='type-id-50' size-in-bits='64' id='type-id-51'/>
+    <function-decl name='rte_acl_add_rules' mangled-name='rte_acl_add_rules' filepath='../lib/librte_acl/rte_acl.c' line='306' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_acl_add_rules@@DPDK_20.0'>
+      <parameter type-id='type-id-33' name='ctx' filepath='../lib/librte_acl/rte_acl.c' line='306' column='1'/>
+      <parameter type-id='type-id-51' name='rules' filepath='../lib/librte_acl/rte_acl.c' line='306' column='1'/>
+      <parameter type-id='type-id-7' name='num' filepath='../lib/librte_acl/rte_acl.c' line='307' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <class-decl name='rte_acl_param' size-in-bits='192' is-struct='yes' visibility='default' filepath='../lib/librte_acl/rte_acl.h' line='128' column='1' id='type-id-52'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='name' type-id='type-id-53' visibility='default' filepath='../lib/librte_acl/rte_acl.h' line='129' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='socket_id' type-id='type-id-1' visibility='default' filepath='../lib/librte_acl/rte_acl.h' line='130' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='96'>
+        <var-decl name='rule_size' type-id='type-id-7' visibility='default' filepath='../lib/librte_acl/rte_acl.h' line='131' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='max_rule_num' type-id='type-id-7' visibility='default' filepath='../lib/librte_acl/rte_acl.h' line='132' column='1'/>
+      </data-member>
+    </class-decl>
+    <qualified-type-def type-id='type-id-14' const='yes' id='type-id-54'/>
+    <pointer-type-def type-id='type-id-54' size-in-bits='64' id='type-id-53'/>
+    <qualified-type-def type-id='type-id-52' const='yes' id='type-id-55'/>
+    <pointer-type-def type-id='type-id-55' size-in-bits='64' id='type-id-56'/>
+    <function-decl name='rte_acl_create' mangled-name='rte_acl_create' filepath='../lib/librte_acl/rte_acl.c' line='210' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_acl_create@@DPDK_20.0'>
+      <parameter type-id='type-id-56' name='param' filepath='../lib/librte_acl/rte_acl.c' line='210' column='1'/>
+      <return type-id='type-id-33'/>
+    </function-decl>
+    <function-decl name='rte_acl_free' mangled-name='rte_acl_free' filepath='../lib/librte_acl/rte_acl.c' line='178' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_acl_free@@DPDK_20.0'>
+      <parameter type-id='type-id-33' name='ctx' filepath='../lib/librte_acl/rte_acl.c' line='178' column='1'/>
+      <return type-id='type-id-19'/>
+    </function-decl>
+    <function-decl name='rte_acl_find_existing' mangled-name='rte_acl_find_existing' filepath='../lib/librte_acl/rte_acl.c' line='154' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_acl_find_existing@@DPDK_20.0'>
+      <parameter type-id='type-id-53' name='name' filepath='../lib/librte_acl/rte_acl.c' line='154' column='1'/>
+      <return type-id='type-id-33'/>
+    </function-decl>
+    <function-decl name='rte_acl_classify' mangled-name='rte_acl_classify' filepath='../lib/librte_acl/rte_acl.c' line='146' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_acl_classify@@DPDK_20.0'>
+      <parameter type-id='type-id-37' name='ctx' filepath='../lib/librte_acl/rte_acl.c' line='146' column='1'/>
+      <parameter type-id='type-id-40' name='data' filepath='../lib/librte_acl/rte_acl.c' line='146' column='1'/>
+      <parameter type-id='type-id-10' name='results' filepath='../lib/librte_acl/rte_acl.c' line='147' column='1'/>
+      <parameter type-id='type-id-7' name='num' filepath='../lib/librte_acl/rte_acl.c' line='147' column='1'/>
+      <parameter type-id='type-id-7' name='categories' filepath='../lib/librte_acl/rte_acl.c' line='147' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='rte_acl_classify_alg' mangled-name='rte_acl_classify_alg' filepath='../lib/librte_acl/rte_acl.c' line='134' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_acl_classify_alg@@DPDK_20.0'>
+      <parameter type-id='type-id-37' name='ctx' filepath='../lib/librte_acl/rte_acl.c' line='134' column='1'/>
+      <parameter type-id='type-id-40' name='data' filepath='../lib/librte_acl/rte_acl.c' line='134' column='1'/>
+      <parameter type-id='type-id-10' name='results' filepath='../lib/librte_acl/rte_acl.c' line='135' column='1'/>
+      <parameter type-id='type-id-7' name='num' filepath='../lib/librte_acl/rte_acl.c' line='135' column='1'/>
+      <parameter type-id='type-id-7' name='categories' filepath='../lib/librte_acl/rte_acl.c' line='135' column='1'/>
+      <parameter type-id='type-id-5' name='alg' filepath='../lib/librte_acl/rte_acl.c' line='136' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='rte_acl_set_ctx_classify' mangled-name='rte_acl_set_ctx_classify' filepath='../lib/librte_acl/rte_acl.c' line='93' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_acl_set_ctx_classify@@DPDK_20.0'>
+      <parameter type-id='type-id-33' name='ctx' filepath='../lib/librte_acl/rte_acl.c' line='93' column='1'/>
+      <parameter type-id='type-id-5' name='alg' filepath='../lib/librte_acl/rte_acl.c' line='93' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+  </abi-instr>
+</abi-corpus>
diff --git a/lib/.abi/librte_bbdev.dump b/lib/.abi/librte_bbdev.dump
new file mode 100644
index 000000000..0cb51b8f9
--- /dev/null
+++ b/lib/.abi/librte_bbdev.dump
@@ -0,0 +1,1789 @@
+<abi-corpus path='gcc//lib/librte_bbdev.so.0.200' architecture='elf-amd-x86_64' soname='librte_bbdev.so.0.200'>
+  <elf-needed>
+    <dependency name='libm.so.6'/>
+    <dependency name='libdl.so.2'/>
+    <dependency name='libnuma.so.1'/>
+    <dependency name='librte_eal.so.20.0'/>
+    <dependency name='librte_kvargs.so.20.0'/>
+    <dependency name='librte_mbuf.so.20.0'/>
+    <dependency name='librte_mempool.so.20.0'/>
+    <dependency name='librte_ring.so.20.0'/>
+    <dependency name='libbsd.so.0'/>
+    <dependency name='libpthread.so.0'/>
+    <dependency name='libc.so.6'/>
+    <dependency name='ld-linux-x86-64.so.2'/>
+  </elf-needed>
+  <elf-function-symbols>
+    <elf-symbol name='rte_bbdev_allocate' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_bbdev_callback_register' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_bbdev_callback_unregister' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_bbdev_close' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_bbdev_count' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_bbdev_find_next' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_bbdev_get_named_dev' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_bbdev_info_get' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_bbdev_intr_enable' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_bbdev_is_valid' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_bbdev_op_pool_create' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_bbdev_op_type_str' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_bbdev_pmd_callback_process' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_bbdev_queue_configure' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_bbdev_queue_info_get' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_bbdev_queue_intr_ctl' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_bbdev_queue_intr_disable' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_bbdev_queue_intr_enable' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_bbdev_queue_start' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_bbdev_queue_stop' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_bbdev_release' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_bbdev_setup_queues' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_bbdev_start' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_bbdev_stats_get' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_bbdev_stats_reset' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_bbdev_stop' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+  </elf-function-symbols>
+  <elf-variable-symbols>
+    <elf-symbol name='rte_bbdev_devices' size='16384' version='EXPERIMENTAL' is-default-version='yes' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+  </elf-variable-symbols>
+  <abi-instr version='1.0' address-size='64' path='../lib/librte_bbdev/rte_bbdev.c' comp-dir-path='/root/klaatz/dpdk/gcc' language='LANG_C99'>
+    <class-decl name='rte_bbdev' size-in-bits='1024' is-struct='yes' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='442' column='1' id='type-id-1'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='enqueue_enc_ops' type-id='type-id-2' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='444' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='enqueue_dec_ops' type-id='type-id-3' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='446' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='dequeue_enc_ops' type-id='type-id-4' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='448' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='dequeue_dec_ops' type-id='type-id-5' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='450' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='enqueue_ldpc_enc_ops' type-id='type-id-2' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='452' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <var-decl name='enqueue_ldpc_dec_ops' type-id='type-id-3' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='454' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <var-decl name='dequeue_ldpc_enc_ops' type-id='type-id-4' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='456' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='448'>
+        <var-decl name='dequeue_ldpc_dec_ops' type-id='type-id-5' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='458' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='512'>
+        <var-decl name='dev_ops' type-id='type-id-6' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='459' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='576'>
+        <var-decl name='data' type-id='type-id-7' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='460' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='640'>
+        <var-decl name='state' type-id='type-id-8' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='461' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='704'>
+        <var-decl name='device' type-id='type-id-9' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='462' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='768'>
+        <var-decl name='list_cbs' type-id='type-id-10' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='464' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='896'>
+        <var-decl name='intr_handle' type-id='type-id-11' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='465' column='1'/>
+      </data-member>
+    </class-decl>
+    <type-decl name='unsigned short int' size-in-bits='16' id='type-id-12'/>
+    <typedef-decl name='__uint16_t' type-id='type-id-12' filepath='/usr/include/bits/types.h' line='40' column='1' id='type-id-13'/>
+    <typedef-decl name='uint16_t' type-id='type-id-13' filepath='/usr/include/bits/stdint-uintn.h' line='25' column='1' id='type-id-14'/>
+    <class-decl name='rte_bbdev_queue_data' size-in-bits='576' is-struct='yes' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='381' column='1' id='type-id-15'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='queue_private' type-id='type-id-16' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='382' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='conf' type-id='type-id-17' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='383' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='queue_stats' type-id='type-id-18' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='384' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='512'>
+        <var-decl name='started' type-id='type-id-19' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='385' column='1'/>
+      </data-member>
+    </class-decl>
+    <type-decl name='void' id='type-id-20'/>
+    <pointer-type-def type-id='type-id-20' size-in-bits='64' id='type-id-16'/>
+    <class-decl name='rte_bbdev_queue_conf' size-in-bits='128' is-struct='yes' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='138' column='1' id='type-id-17'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='socket' type-id='type-id-21' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='139' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='queue_size' type-id='type-id-22' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='140' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='priority' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='141' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='72'>
+        <var-decl name='deferred_start' type-id='type-id-19' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='142' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='96'>
+        <var-decl name='op_type' type-id='type-id-24' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='143' column='1'/>
+      </data-member>
+    </class-decl>
+    <type-decl name='int' size-in-bits='32' id='type-id-21'/>
+    <type-decl name='unsigned int' size-in-bits='32' id='type-id-25'/>
+    <typedef-decl name='__uint32_t' type-id='type-id-25' filepath='/usr/include/bits/types.h' line='42' column='1' id='type-id-26'/>
+    <typedef-decl name='uint32_t' type-id='type-id-26' filepath='/usr/include/bits/stdint-uintn.h' line='26' column='1' id='type-id-22'/>
+    <type-decl name='unsigned char' size-in-bits='8' id='type-id-27'/>
+    <typedef-decl name='__uint8_t' type-id='type-id-27' filepath='/usr/include/bits/types.h' line='38' column='1' id='type-id-28'/>
+    <typedef-decl name='uint8_t' type-id='type-id-28' filepath='/usr/include/bits/stdint-uintn.h' line='24' column='1' id='type-id-23'/>
+    <type-decl name='bool' size-in-bits='8' id='type-id-19'/>
+    <type-decl name='unnamed-enum-underlying-type' is-anonymous='yes' size-in-bits='32' alignment-in-bits='32' id='type-id-29'/>
+    <enum-decl name='rte_bbdev_op_type' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='728' column='1' id='type-id-24'>
+      <underlying-type type-id='type-id-29'/>
+      <enumerator name='RTE_BBDEV_OP_NONE' value='0'/>
+      <enumerator name='RTE_BBDEV_OP_TURBO_DEC' value='1'/>
+      <enumerator name='RTE_BBDEV_OP_TURBO_ENC' value='2'/>
+      <enumerator name='RTE_BBDEV_OP_LDPC_DEC' value='3'/>
+      <enumerator name='RTE_BBDEV_OP_LDPC_ENC' value='4'/>
+      <enumerator name='RTE_BBDEV_OP_TYPE_COUNT' value='5'/>
+    </enum-decl>
+    <class-decl name='rte_bbdev_stats' size-in-bits='320' is-struct='yes' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='246' column='1' id='type-id-18'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='enqueued_count' type-id='type-id-30' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='247' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='dequeued_count' type-id='type-id-30' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='248' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='enqueue_err_count' type-id='type-id-30' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='250' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='dequeue_err_count' type-id='type-id-30' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='252' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='acc_offload_cycles' type-id='type-id-30' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='259' column='1'/>
+      </data-member>
+    </class-decl>
+    <type-decl name='unsigned long int' size-in-bits='64' id='type-id-31'/>
+    <typedef-decl name='__uint64_t' type-id='type-id-31' filepath='/usr/include/bits/types.h' line='45' column='1' id='type-id-32'/>
+    <typedef-decl name='uint64_t' type-id='type-id-32' filepath='/usr/include/bits/stdint-uintn.h' line='27' column='1' id='type-id-30'/>
+    <pointer-type-def type-id='type-id-15' size-in-bits='64' id='type-id-33'/>
+    <class-decl name='rte_bbdev_enc_op' size-in-bits='704' is-struct='yes' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='746' column='1' id='type-id-34'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='status' type-id='type-id-21' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='748' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='mempool' type-id='type-id-35' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='750' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='opaque_data' type-id='type-id-16' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='752' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='' type-id='type-id-36' visibility='default'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='rte_mempool' size-in-bits='1536' is-struct='yes' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='216' column='1' id='type-id-37'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='name' type-id='type-id-38' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='222' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='' type-id='type-id-39' visibility='default'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <var-decl name='pool_config' type-id='type-id-16' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='228' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <var-decl name='mz' type-id='type-id-40' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='229' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='448'>
+        <var-decl name='flags' type-id='type-id-25' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='230' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='480'>
+        <var-decl name='socket_id' type-id='type-id-21' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='231' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='512'>
+        <var-decl name='size' type-id='type-id-22' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='232' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='544'>
+        <var-decl name='cache_size' type-id='type-id-22' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='233' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='576'>
+        <var-decl name='elt_size' type-id='type-id-22' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='236' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='608'>
+        <var-decl name='header_size' type-id='type-id-22' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='237' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='640'>
+        <var-decl name='trailer_size' type-id='type-id-22' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='238' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='672'>
+        <var-decl name='private_data_size' type-id='type-id-25' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='240' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='704'>
+        <var-decl name='ops_index' type-id='type-id-41' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='248' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='768'>
+        <var-decl name='local_cache' type-id='type-id-42' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='250' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='832'>
+        <var-decl name='populated_size' type-id='type-id-22' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='252' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='896'>
+        <var-decl name='elt_list' type-id='type-id-43' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='253' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='1024'>
+        <var-decl name='nb_mem_chunks' type-id='type-id-22' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='254' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='1088'>
+        <var-decl name='mem_list' type-id='type-id-44' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='255' column='1'/>
+      </data-member>
+    </class-decl>
+    <type-decl name='char' size-in-bits='8' id='type-id-45'/>
+
+    <array-type-def dimensions='1' type-id='type-id-45' size-in-bits='256' id='type-id-38'>
+      <subrange length='32' type-id='type-id-31' id='type-id-46'/>
+
+    </array-type-def>
+    <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='224' column='1' id='type-id-39'>
+      <data-member access='private'>
+        <var-decl name='pool_data' type-id='type-id-16' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='225' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='pool_id' type-id='type-id-30' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='226' column='1'/>
+      </data-member>
+    </union-decl>
+    <class-decl name='rte_memzone' size-in-bits='576' is-struct='yes' visibility='default' filepath='../lib/librte_eal/common/include/rte_memzone.h' line='49' column='1' id='type-id-47'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='name' type-id='type-id-38' visibility='default' filepath='../lib/librte_eal/common/include/rte_memzone.h' line='52' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='' type-id='type-id-48' visibility='default'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <var-decl name='len' type-id='type-id-49' visibility='default' filepath='../lib/librte_eal/common/include/rte_memzone.h' line='64' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='448'>
+        <var-decl name='hugepage_sz' type-id='type-id-30' visibility='default' filepath='../lib/librte_eal/common/include/rte_memzone.h' line='66' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='512'>
+        <var-decl name='socket_id' type-id='type-id-41' visibility='default' filepath='../lib/librte_eal/common/include/rte_memzone.h' line='68' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='544'>
+        <var-decl name='flags' type-id='type-id-22' visibility='default' filepath='../lib/librte_eal/common/include/rte_memzone.h' line='70' column='1'/>
+      </data-member>
+    </class-decl>
+    <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='../lib/librte_eal/common/include/rte_memzone.h' line='55' column='1' id='type-id-48'>
+      <data-member access='private'>
+        <var-decl name='phys_addr' type-id='type-id-50' visibility='default' filepath='../lib/librte_eal/common/include/rte_memzone.h' line='56' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='iova' type-id='type-id-51' visibility='default' filepath='../lib/librte_eal/common/include/rte_memzone.h' line='57' column='1'/>
+      </data-member>
+    </union-decl>
+    <typedef-decl name='phys_addr_t' type-id='type-id-30' filepath='../lib/librte_eal/common/include/rte_common.h' line='325' column='1' id='type-id-50'/>
+    <typedef-decl name='rte_iova_t' type-id='type-id-30' filepath='../lib/librte_eal/common/include/rte_common.h' line='335' column='1' id='type-id-51'/>
+    <typedef-decl name='size_t' type-id='type-id-31' filepath='/usr/lib/gcc/x86_64-redhat-linux/9/include/stddef.h' line='209' column='1' id='type-id-49'/>
+    <typedef-decl name='__int32_t' type-id='type-id-21' filepath='/usr/include/bits/types.h' line='41' column='1' id='type-id-52'/>
+    <typedef-decl name='int32_t' type-id='type-id-52' filepath='/usr/include/bits/stdint-intn.h' line='26' column='1' id='type-id-41'/>
+    <qualified-type-def type-id='type-id-47' const='yes' id='type-id-53'/>
+    <pointer-type-def type-id='type-id-53' size-in-bits='64' id='type-id-40'/>
+    <class-decl name='rte_mempool_cache' size-in-bits='98816' is-struct='yes' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='83' column='1' id='type-id-54'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='size' type-id='type-id-22' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='84' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='flushthresh' type-id='type-id-22' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='85' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='len' type-id='type-id-22' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='86' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='objs' type-id='type-id-55' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='91' column='1'/>
+      </data-member>
+    </class-decl>
+
+    <array-type-def dimensions='1' type-id='type-id-16' size-in-bits='98304' id='type-id-55'>
+      <subrange length='1536' type-id='type-id-31' id='type-id-56'/>
+
+    </array-type-def>
+    <pointer-type-def type-id='type-id-54' size-in-bits='64' id='type-id-42'/>
+    <class-decl name='rte_mempool_objhdr_list' size-in-bits='128' is-struct='yes' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='152' column='1' id='type-id-43'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='stqh_first' type-id='type-id-57' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='152' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='stqh_last' type-id='type-id-58' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='152' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='rte_mempool_objhdr' size-in-bits='192' is-struct='yes' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='136' column='1' id='type-id-59'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='next' type-id='type-id-60' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='137' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='mp' type-id='type-id-35' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='138' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='' type-id='type-id-61' visibility='default'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='__anonymous_struct__' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='137' column='1' id='type-id-60'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='stqe_next' type-id='type-id-57' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='137' column='1'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-59' size-in-bits='64' id='type-id-57'/>
+    <pointer-type-def type-id='type-id-37' size-in-bits='64' id='type-id-35'/>
+    <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='140' column='1' id='type-id-61'>
+      <data-member access='private'>
+        <var-decl name='iova' type-id='type-id-51' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='141' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='physaddr' type-id='type-id-50' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='142' column='1'/>
+      </data-member>
+    </union-decl>
+    <pointer-type-def type-id='type-id-57' size-in-bits='64' id='type-id-58'/>
+    <class-decl name='rte_mempool_memhdr_list' size-in-bits='128' is-struct='yes' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='171' column='1' id='type-id-44'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='stqh_first' type-id='type-id-62' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='171' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='stqh_last' type-id='type-id-63' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='171' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='rte_mempool_memhdr' size-in-bits='448' is-struct='yes' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='185' column='1' id='type-id-64'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='next' type-id='type-id-65' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='186' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='mp' type-id='type-id-35' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='187' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='addr' type-id='type-id-16' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='188' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='' type-id='type-id-66' visibility='default'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='len' type-id='type-id-49' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='194' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <var-decl name='free_cb' type-id='type-id-67' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='195' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <var-decl name='opaque' type-id='type-id-16' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='196' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='__anonymous_struct__' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='186' column='1' id='type-id-65'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='stqe_next' type-id='type-id-62' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='186' column='1'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-64' size-in-bits='64' id='type-id-62'/>
+    <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='190' column='1' id='type-id-66'>
+      <data-member access='private'>
+        <var-decl name='iova' type-id='type-id-51' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='191' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='phys_addr' type-id='type-id-50' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='192' column='1'/>
+      </data-member>
+    </union-decl>
+    <typedef-decl name='rte_mempool_memchunk_free_cb_t' type-id='type-id-68' filepath='../lib/librte_mempool/rte_mempool.h' line='176' column='1' id='type-id-69'/>
+    <pointer-type-def type-id='type-id-69' size-in-bits='64' id='type-id-67'/>
+    <pointer-type-def type-id='type-id-62' size-in-bits='64' id='type-id-63'/>
+    <union-decl name='__anonymous_union__' size-in-bits='512' is-anonymous='yes' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='753' column='1' id='type-id-36'>
+      <data-member access='private'>
+        <var-decl name='turbo_enc' type-id='type-id-70' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='755' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='ldpc_enc' type-id='type-id-71' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='757' column='1'/>
+      </data-member>
+    </union-decl>
+    <class-decl name='rte_bbdev_op_turbo_enc' size-in-bits='512' is-struct='yes' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='599' column='1' id='type-id-70'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='input' type-id='type-id-72' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='601' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='output' type-id='type-id-72' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='603' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='op_flags' type-id='type-id-22' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='605' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='288'>
+        <var-decl name='rv_index' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='608' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='296'>
+        <var-decl name='code_block_mode' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='610' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <var-decl name='' type-id='type-id-73' visibility='default'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='rte_bbdev_op_data' size-in-bits='128' is-struct='yes' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='204' column='1' id='type-id-72'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='data' type-id='type-id-74' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='234' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='offset' type-id='type-id-22' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='242' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='96'>
+        <var-decl name='length' type-id='type-id-22' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='255' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='rte_mbuf' size-in-bits='1024' is-struct='yes' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='480' column='1' id='type-id-75'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='cacheline0' type-id='type-id-76' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='481' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='buf_addr' type-id='type-id-16' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='483' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='' type-id='type-id-77' visibility='default'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='rearm_data' type-id='type-id-78' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='497' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='data_off' type-id='type-id-14' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='498' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='160'>
+        <var-decl name='nb_segs' type-id='type-id-14' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='515' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='176'>
+        <var-decl name='port' type-id='type-id-14' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='520' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='ol_flags' type-id='type-id-30' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='522' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='rx_descriptor_fields1' type-id='type-id-76' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='525' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='288'>
+        <var-decl name='pkt_len' type-id='type-id-22' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='561' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <var-decl name='data_len' type-id='type-id-14' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='562' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='336'>
+        <var-decl name='vlan_tci' type-id='type-id-14' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='564' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='416'>
+        <var-decl name='vlan_tci_outer' type-id='type-id-14' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='601' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='432'>
+        <var-decl name='buf_len' type-id='type-id-14' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='603' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='448'>
+        <var-decl name='timestamp' type-id='type-id-30' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='610' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='512'>
+        <var-decl name='cacheline1' type-id='type-id-76' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='613' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='576'>
+        <var-decl name='pool' type-id='type-id-35' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='621' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='640'>
+        <var-decl name='next' type-id='type-id-74' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='622' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='768'>
+        <var-decl name='priv_size' type-id='type-id-14' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='665' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='784'>
+        <var-decl name='timesync' type-id='type-id-14' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='668' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='800'>
+        <var-decl name='seqn' type-id='type-id-22' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='671' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='832'>
+        <var-decl name='shinfo' type-id='type-id-79' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='676' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='896'>
+        <var-decl name='dynfield1' type-id='type-id-80' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='678' column='1'/>
+      </data-member>
+    </class-decl>
+
+    <array-type-def dimensions='1' type-id='type-id-16' size-in-bits='infinite' id='type-id-81'>
+      <subrange length='infinite' type-id='type-id-31' id='type-id-82'/>
+
+    </array-type-def>
+    <typedef-decl name='MARKER' type-id='type-id-81' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='414' column='1' id='type-id-76'/>
+    <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='491' column='1' id='type-id-77'>
+      <data-member access='private'>
+        <var-decl name='buf_iova' type-id='type-id-51' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='492' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='buf_physaddr' type-id='type-id-51' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='493' column='1'/>
+      </data-member>
+    </union-decl>
+
+    <array-type-def dimensions='1' type-id='type-id-30' size-in-bits='infinite' id='type-id-83'>
+      <subrange length='infinite' type-id='type-id-31' id='type-id-82'/>
+
+    </array-type-def>
+    <typedef-decl name='MARKER64' type-id='type-id-83' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='420' column='1' id='type-id-78'/>
+    <pointer-type-def type-id='type-id-75' size-in-bits='64' id='type-id-74'/>
+    <class-decl name='rte_mbuf_ext_shared_info' size-in-bits='192' is-struct='yes' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='689' column='1' id='type-id-84'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='free_cb' type-id='type-id-85' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='690' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='fcb_opaque' type-id='type-id-16' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='691' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='refcnt_atomic' type-id='type-id-86' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='692' column='1'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-87' size-in-bits='64' id='type-id-88'/>
+    <typedef-decl name='rte_mbuf_extbuf_free_callback_t' type-id='type-id-88' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='684' column='1' id='type-id-85'/>
+    <class-decl name='__anonymous_struct__' size-in-bits='16' is-struct='yes' is-anonymous='yes' naming-typedef-id='type-id-86' visibility='default' filepath='../lib/librte_eal/common/include/generic/rte_atomic.h' line='223' column='1' id='type-id-89'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='cnt' type-id='type-id-90' visibility='default' filepath='../lib/librte_eal/common/include/generic/rte_atomic.h' line='224' column='1'/>
+      </data-member>
+    </class-decl>
+    <type-decl name='short int' size-in-bits='16' id='type-id-91'/>
+    <typedef-decl name='__int16_t' type-id='type-id-91' filepath='/usr/include/bits/types.h' line='39' column='1' id='type-id-92'/>
+    <typedef-decl name='int16_t' type-id='type-id-92' filepath='/usr/include/bits/stdint-intn.h' line='25' column='1' id='type-id-93'/>
+    <qualified-type-def type-id='type-id-93' volatile='yes' id='type-id-90'/>
+    <typedef-decl name='rte_atomic16_t' type-id='type-id-89' filepath='../lib/librte_eal/common/include/generic/rte_atomic.h' line='225' column='1' id='type-id-86'/>
+    <pointer-type-def type-id='type-id-84' size-in-bits='64' id='type-id-79'/>
+
+    <array-type-def dimensions='1' type-id='type-id-30' size-in-bits='128' id='type-id-80'>
+      <subrange length='2' type-id='type-id-31' id='type-id-94'/>
+
+    </array-type-def>
+    <union-decl name='__anonymous_union__' size-in-bits='192' is-anonymous='yes' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='611' column='1' id='type-id-73'>
+      <data-member access='private'>
+        <var-decl name='cb_params' type-id='type-id-95' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='613' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='tb_params' type-id='type-id-96' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='615' column='1'/>
+      </data-member>
+    </union-decl>
+    <class-decl name='rte_bbdev_op_enc_turbo_cb_params' size-in-bits='96' is-struct='yes' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='493' column='1' id='type-id-95'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='k' type-id='type-id-14' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='499' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='e' type-id='type-id-22' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='503' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='ncb' type-id='type-id-14' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='507' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='rte_bbdev_op_enc_turbo_tb_params' size-in-bits='192' is-struct='yes' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='511' column='1' id='type-id-96'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='k_neg' type-id='type-id-14' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='517' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='16'>
+        <var-decl name='k_pos' type-id='type-id-14' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='523' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='c_neg' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='525' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='40'>
+        <var-decl name='c' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='529' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='48'>
+        <var-decl name='cab' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='531' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='ea' type-id='type-id-22' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='535' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='96'>
+        <var-decl name='eb' type-id='type-id-22' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='539' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='ncb_neg' type-id='type-id-14' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='543' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='144'>
+        <var-decl name='ncb_pos' type-id='type-id-14' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='547' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='160'>
+        <var-decl name='r' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='549' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='rte_bbdev_op_ldpc_enc' size-in-bits='512' is-struct='yes' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='632' column='1' id='type-id-71'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='input' type-id='type-id-72' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='634' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='output' type-id='type-id-72' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='636' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='op_flags' type-id='type-id-22' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='639' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='288'>
+        <var-decl name='rv_index' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='642' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='296'>
+        <var-decl name='basegraph' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='646' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='304'>
+        <var-decl name='z_c' type-id='type-id-14' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='650' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <var-decl name='n_cb' type-id='type-id-14' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='654' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='336'>
+        <var-decl name='q_m' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='658' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='352'>
+        <var-decl name='n_filler' type-id='type-id-14' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='662' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='368'>
+        <var-decl name='code_block_mode' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='664' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <var-decl name='' type-id='type-id-97' visibility='default'/>
+      </data-member>
+    </class-decl>
+    <union-decl name='__anonymous_union__' size-in-bits='96' is-anonymous='yes' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='665' column='1' id='type-id-97'>
+      <data-member access='private'>
+        <var-decl name='cb_params' type-id='type-id-98' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='667' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='tb_params' type-id='type-id-99' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='669' column='1'/>
+      </data-member>
+    </union-decl>
+    <class-decl name='rte_bbdev_op_enc_ldpc_cb_params' size-in-bits='32' is-struct='yes' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='553' column='1' id='type-id-98'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='e' type-id='type-id-22' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='557' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='rte_bbdev_op_enc_ldpc_tb_params' size-in-bits='96' is-struct='yes' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='561' column='1' id='type-id-99'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='ea' type-id='type-id-22' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='565' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='eb' type-id='type-id-22' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='569' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='c' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='573' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='72'>
+        <var-decl name='r' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='575' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='80'>
+        <var-decl name='cab' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='577' column='1'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-34' size-in-bits='64' id='type-id-100'/>
+    <pointer-type-def type-id='type-id-100' size-in-bits='64' id='type-id-101'/>
+    <pointer-type-def type-id='type-id-102' size-in-bits='64' id='type-id-103'/>
+    <typedef-decl name='rte_bbdev_enqueue_enc_ops_t' type-id='type-id-103' filepath='../lib/librte_bbdev/rte_bbdev.h' line='389' column='1' id='type-id-2'/>
+    <class-decl name='rte_bbdev_dec_op' size-in-bits='1088' is-struct='yes' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='762' column='1' id='type-id-104'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='status' type-id='type-id-21' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='764' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='mempool' type-id='type-id-35' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='766' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='opaque_data' type-id='type-id-16' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='768' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='' type-id='type-id-105' visibility='default'/>
+      </data-member>
+    </class-decl>
+    <union-decl name='__anonymous_union__' size-in-bits='896' is-anonymous='yes' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='769' column='1' id='type-id-105'>
+      <data-member access='private'>
+        <var-decl name='turbo_dec' type-id='type-id-106' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='771' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='ldpc_dec' type-id='type-id-107' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='773' column='1'/>
+      </data-member>
+    </union-decl>
+    <class-decl name='rte_bbdev_op_turbo_dec' size-in-bits='640' is-struct='yes' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='358' column='1' id='type-id-106'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='input' type-id='type-id-72' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='360' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='hard_output' type-id='type-id-72' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='364' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='soft_output' type-id='type-id-72' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='366' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <var-decl name='op_flags' type-id='type-id-22' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='369' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='416'>
+        <var-decl name='rv_index' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='372' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='4'>
+        <var-decl name='iter_min' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='376' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='424'>
+        <var-decl name='iter_max' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='380' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='432'>
+        <var-decl name='iter_count' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='384' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='440'>
+        <var-decl name='ext_scale' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='386' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='448'>
+        <var-decl name='num_maps' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='390' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='456'>
+        <var-decl name='code_block_mode' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='393' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='480'>
+        <var-decl name='' type-id='type-id-108' visibility='default'/>
+      </data-member>
+    </class-decl>
+    <union-decl name='__anonymous_union__' size-in-bits='160' is-anonymous='yes' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='394' column='1' id='type-id-108'>
+      <data-member access='private'>
+        <var-decl name='cb_params' type-id='type-id-109' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='396' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='tb_params' type-id='type-id-110' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='398' column='1'/>
+      </data-member>
+    </union-decl>
+    <class-decl name='rte_bbdev_op_dec_turbo_cb_params' size-in-bits='64' is-struct='yes' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='259' column='1' id='type-id-109'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='k' type-id='type-id-14' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='265' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='e' type-id='type-id-22' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='269' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='rte_bbdev_op_dec_turbo_tb_params' size-in-bits='160' is-struct='yes' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='281' column='1' id='type-id-110'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='k_neg' type-id='type-id-14' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='285' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='16'>
+        <var-decl name='k_pos' type-id='type-id-14' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='289' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='c_neg' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='291' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='40'>
+        <var-decl name='c' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='295' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='48'>
+        <var-decl name='cab' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='297' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='ea' type-id='type-id-22' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='301' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='96'>
+        <var-decl name='eb' type-id='type-id-22' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='305' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='r' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='307' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='rte_bbdev_op_ldpc_dec' size-in-bits='896' is-struct='yes' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='431' column='1' id='type-id-107'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='input' type-id='type-id-72' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='435' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='hard_output' type-id='type-id-72' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='439' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='soft_output' type-id='type-id-72' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='441' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <var-decl name='harq_combined_input' type-id='type-id-72' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='443' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='512'>
+        <var-decl name='harq_combined_output' type-id='type-id-72' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='445' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='640'>
+        <var-decl name='op_flags' type-id='type-id-22' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='448' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='672'>
+        <var-decl name='rv_index' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='453' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='680'>
+        <var-decl name='iter_max' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='457' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='688'>
+        <var-decl name='iter_count' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='461' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='696'>
+        <var-decl name='basegraph' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='465' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='704'>
+        <var-decl name='z_c' type-id='type-id-14' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='469' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='720'>
+        <var-decl name='n_cb' type-id='type-id-14' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='473' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='736'>
+        <var-decl name='q_m' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='477' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='752'>
+        <var-decl name='n_filler' type-id='type-id-14' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='481' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='768'>
+        <var-decl name='code_block_mode' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='483' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='800'>
+        <var-decl name='' type-id='type-id-111' visibility='default'/>
+      </data-member>
+    </class-decl>
+    <union-decl name='__anonymous_union__' size-in-bits='96' is-anonymous='yes' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='484' column='1' id='type-id-111'>
+      <data-member access='private'>
+        <var-decl name='cb_params' type-id='type-id-112' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='486' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='tb_params' type-id='type-id-113' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='488' column='1'/>
+      </data-member>
+    </union-decl>
+    <class-decl name='rte_bbdev_op_dec_ldpc_cb_params' size-in-bits='32' is-struct='yes' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='273' column='1' id='type-id-112'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='e' type-id='type-id-22' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='277' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='rte_bbdev_op_dec_ldpc_tb_params' size-in-bits='96' is-struct='yes' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='311' column='1' id='type-id-113'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='ea' type-id='type-id-22' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='315' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='eb' type-id='type-id-22' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='319' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='c' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='323' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='72'>
+        <var-decl name='r' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='325' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='80'>
+        <var-decl name='cab' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='327' column='1'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-104' size-in-bits='64' id='type-id-114'/>
+    <pointer-type-def type-id='type-id-114' size-in-bits='64' id='type-id-115'/>
+    <pointer-type-def type-id='type-id-116' size-in-bits='64' id='type-id-117'/>
+    <typedef-decl name='rte_bbdev_enqueue_dec_ops_t' type-id='type-id-117' filepath='../lib/librte_bbdev/rte_bbdev.h' line='395' column='1' id='type-id-3'/>
+    <typedef-decl name='rte_bbdev_dequeue_enc_ops_t' type-id='type-id-103' filepath='../lib/librte_bbdev/rte_bbdev.h' line='401' column='1' id='type-id-4'/>
+    <typedef-decl name='rte_bbdev_dequeue_dec_ops_t' type-id='type-id-117' filepath='../lib/librte_bbdev/rte_bbdev.h' line='406' column='1' id='type-id-5'/>
+    <class-decl name='rte_bbdev_ops' size-in-bits='896' is-struct='yes' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_pmd.h' line='148' column='1' id='type-id-118'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='setup_queues' type-id='type-id-119' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_pmd.h' line='150' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='intr_enable' type-id='type-id-120' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_pmd.h' line='152' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='start' type-id='type-id-121' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_pmd.h' line='154' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='stop' type-id='type-id-122' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_pmd.h' line='156' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='close' type-id='type-id-123' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_pmd.h' line='158' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <var-decl name='info_get' type-id='type-id-124' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_pmd.h' line='161' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <var-decl name='stats_get' type-id='type-id-125' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_pmd.h' line='163' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='448'>
+        <var-decl name='stats_reset' type-id='type-id-126' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_pmd.h' line='165' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='512'>
+        <var-decl name='queue_setup' type-id='type-id-127' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_pmd.h' line='168' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='576'>
+        <var-decl name='queue_release' type-id='type-id-128' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_pmd.h' line='170' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='640'>
+        <var-decl name='queue_start' type-id='type-id-129' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_pmd.h' line='172' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='704'>
+        <var-decl name='queue_stop' type-id='type-id-130' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_pmd.h' line='174' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='768'>
+        <var-decl name='queue_intr_enable' type-id='type-id-131' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_pmd.h' line='177' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='832'>
+        <var-decl name='queue_intr_disable' type-id='type-id-132' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_pmd.h' line='179' column='1'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-1' size-in-bits='64' id='type-id-133'/>
+    <pointer-type-def type-id='type-id-134' size-in-bits='64' id='type-id-135'/>
+    <typedef-decl name='rte_bbdev_setup_queues_t' type-id='type-id-135' filepath='../lib/librte_bbdev/rte_bbdev_pmd.h' line='85' column='1' id='type-id-119'/>
+    <pointer-type-def type-id='type-id-136' size-in-bits='64' id='type-id-137'/>
+    <typedef-decl name='rte_bbdev_intr_enable_t' type-id='type-id-137' filepath='../lib/librte_bbdev/rte_bbdev_pmd.h' line='89' column='1' id='type-id-120'/>
+    <typedef-decl name='rte_bbdev_start_t' type-id='type-id-137' filepath='../lib/librte_bbdev/rte_bbdev_pmd.h' line='103' column='1' id='type-id-121'/>
+    <pointer-type-def type-id='type-id-138' size-in-bits='64' id='type-id-139'/>
+    <typedef-decl name='rte_bbdev_stop_t' type-id='type-id-139' filepath='../lib/librte_bbdev/rte_bbdev_pmd.h' line='106' column='1' id='type-id-122'/>
+    <typedef-decl name='rte_bbdev_close_t' type-id='type-id-137' filepath='../lib/librte_bbdev/rte_bbdev_pmd.h' line='109' column='1' id='type-id-123'/>
+    <class-decl name='rte_bbdev_driver_info' size-in-bits='448' is-struct='yes' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='292' column='1' id='type-id-140'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='driver_name' type-id='type-id-141' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='294' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='max_num_queues' type-id='type-id-25' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='297' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='96'>
+        <var-decl name='queue_size_lim' type-id='type-id-22' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='299' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='hardware_accelerated' type-id='type-id-19' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='301' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='136'>
+        <var-decl name='max_dl_queue_priority' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='303' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='144'>
+        <var-decl name='max_ul_queue_priority' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='305' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='152'>
+        <var-decl name='queue_intr_supported' type-id='type-id-19' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='307' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='160'>
+        <var-decl name='min_alignment' type-id='type-id-14' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='309' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='default_queue_conf' type-id='type-id-17' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='311' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <var-decl name='capabilities' type-id='type-id-142' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='313' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <var-decl name='cpu_flag_reqs' type-id='type-id-143' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='315' column='1'/>
+      </data-member>
+    </class-decl>
+    <qualified-type-def type-id='type-id-45' const='yes' id='type-id-144'/>
+    <pointer-type-def type-id='type-id-144' size-in-bits='64' id='type-id-141'/>
+    <class-decl name='rte_bbdev_op_cap' size-in-bits='160' is-struct='yes' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='778' column='1' id='type-id-145'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='type' type-id='type-id-24' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='779' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='cap' type-id='type-id-146' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='785' column='1'/>
+      </data-member>
+    </class-decl>
+    <union-decl name='__anonymous_union__' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='780' column='1' id='type-id-146'>
+      <data-member access='private'>
+        <var-decl name='turbo_dec' type-id='type-id-147' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='781' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='turbo_enc' type-id='type-id-148' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='782' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='ldpc_dec' type-id='type-id-149' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='783' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='ldpc_enc' type-id='type-id-150' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='784' column='1'/>
+      </data-member>
+    </union-decl>
+    <class-decl name='rte_bbdev_op_cap_turbo_dec' size-in-bits='64' is-struct='yes' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='674' column='1' id='type-id-147'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='capability_flags' type-id='type-id-22' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='676' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='max_llr_modulus' type-id='type-id-151' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='680' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='40'>
+        <var-decl name='num_buffers_src' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='682' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='48'>
+        <var-decl name='num_buffers_hard_out' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='684' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='56'>
+        <var-decl name='num_buffers_soft_out' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='686' column='1'/>
+      </data-member>
+    </class-decl>
+    <type-decl name='signed char' size-in-bits='8' id='type-id-152'/>
+    <typedef-decl name='__int8_t' type-id='type-id-152' filepath='/usr/include/bits/types.h' line='37' column='1' id='type-id-153'/>
+    <typedef-decl name='int8_t' type-id='type-id-153' filepath='/usr/include/bits/stdint-intn.h' line='24' column='1' id='type-id-151'/>
+    <class-decl name='rte_bbdev_op_cap_turbo_enc' size-in-bits='64' is-struct='yes' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='690' column='1' id='type-id-148'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='capability_flags' type-id='type-id-22' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='692' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='num_buffers_src' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='694' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='40'>
+        <var-decl name='num_buffers_dst' type-id='type-id-23' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='696' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='rte_bbdev_op_cap_ldpc_dec' size-in-bits='128' is-struct='yes' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='700' column='1' id='type-id-149'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='capability_flags' type-id='type-id-22' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='702' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='llr_size' type-id='type-id-151' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='704' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='40'>
+        <var-decl name='llr_decimals' type-id='type-id-151' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='706' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='48'>
+        <var-decl name='harq_memory_size' type-id='type-id-14' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='708' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='num_buffers_src' type-id='type-id-14' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='710' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='80'>
+        <var-decl name='num_buffers_hard_out' type-id='type-id-14' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='712' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='96'>
+        <var-decl name='num_buffers_soft_out' type-id='type-id-14' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='714' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='rte_bbdev_op_cap_ldpc_enc' size-in-bits='64' is-struct='yes' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='718' column='1' id='type-id-150'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='capability_flags' type-id='type-id-22' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='720' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='num_buffers_src' type-id='type-id-14' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='722' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='48'>
+        <var-decl name='num_buffers_dst' type-id='type-id-14' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev_op.h' line='724' column='1'/>
+      </data-member>
+    </class-decl>
+    <qualified-type-def type-id='type-id-145' const='yes' id='type-id-154'/>
+    <pointer-type-def type-id='type-id-154' size-in-bits='64' id='type-id-142'/>
+    <enum-decl name='rte_cpu_flag_t' filepath='../lib/librte_eal/common/include/arch/x86/rte_cpuflags.h' line='12' column='1' id='type-id-155'>
+      <underlying-type type-id='type-id-29'/>
+      <enumerator name='RTE_CPUFLAG_SSE3' value='0'/>
+      <enumerator name='RTE_CPUFLAG_PCLMULQDQ' value='1'/>
+      <enumerator name='RTE_CPUFLAG_DTES64' value='2'/>
+      <enumerator name='RTE_CPUFLAG_MONITOR' value='3'/>
+      <enumerator name='RTE_CPUFLAG_DS_CPL' value='4'/>
+      <enumerator name='RTE_CPUFLAG_VMX' value='5'/>
+      <enumerator name='RTE_CPUFLAG_SMX' value='6'/>
+      <enumerator name='RTE_CPUFLAG_EIST' value='7'/>
+      <enumerator name='RTE_CPUFLAG_TM2' value='8'/>
+      <enumerator name='RTE_CPUFLAG_SSSE3' value='9'/>
+      <enumerator name='RTE_CPUFLAG_CNXT_ID' value='10'/>
+      <enumerator name='RTE_CPUFLAG_FMA' value='11'/>
+      <enumerator name='RTE_CPUFLAG_CMPXCHG16B' value='12'/>
+      <enumerator name='RTE_CPUFLAG_XTPR' value='13'/>
+      <enumerator name='RTE_CPUFLAG_PDCM' value='14'/>
+      <enumerator name='RTE_CPUFLAG_PCID' value='15'/>
+      <enumerator name='RTE_CPUFLAG_DCA' value='16'/>
+      <enumerator name='RTE_CPUFLAG_SSE4_1' value='17'/>
+      <enumerator name='RTE_CPUFLAG_SSE4_2' value='18'/>
+      <enumerator name='RTE_CPUFLAG_X2APIC' value='19'/>
+      <enumerator name='RTE_CPUFLAG_MOVBE' value='20'/>
+      <enumerator name='RTE_CPUFLAG_POPCNT' value='21'/>
+      <enumerator name='RTE_CPUFLAG_TSC_DEADLINE' value='22'/>
+      <enumerator name='RTE_CPUFLAG_AES' value='23'/>
+      <enumerator name='RTE_CPUFLAG_XSAVE' value='24'/>
+      <enumerator name='RTE_CPUFLAG_OSXSAVE' value='25'/>
+      <enumerator name='RTE_CPUFLAG_AVX' value='26'/>
+      <enumerator name='RTE_CPUFLAG_F16C' value='27'/>
+      <enumerator name='RTE_CPUFLAG_RDRAND' value='28'/>
+      <enumerator name='RTE_CPUFLAG_HYPERVISOR' value='29'/>
+      <enumerator name='RTE_CPUFLAG_FPU' value='30'/>
+      <enumerator name='RTE_CPUFLAG_VME' value='31'/>
+      <enumerator name='RTE_CPUFLAG_DE' value='32'/>
+      <enumerator name='RTE_CPUFLAG_PSE' value='33'/>
+      <enumerator name='RTE_CPUFLAG_TSC' value='34'/>
+      <enumerator name='RTE_CPUFLAG_MSR' value='35'/>
+      <enumerator name='RTE_CPUFLAG_PAE' value='36'/>
+      <enumerator name='RTE_CPUFLAG_MCE' value='37'/>
+      <enumerator name='RTE_CPUFLAG_CX8' value='38'/>
+      <enumerator name='RTE_CPUFLAG_APIC' value='39'/>
+      <enumerator name='RTE_CPUFLAG_SEP' value='40'/>
+      <enumerator name='RTE_CPUFLAG_MTRR' value='41'/>
+      <enumerator name='RTE_CPUFLAG_PGE' value='42'/>
+      <enumerator name='RTE_CPUFLAG_MCA' value='43'/>
+      <enumerator name='RTE_CPUFLAG_CMOV' value='44'/>
+      <enumerator name='RTE_CPUFLAG_PAT' value='45'/>
+      <enumerator name='RTE_CPUFLAG_PSE36' value='46'/>
+      <enumerator name='RTE_CPUFLAG_PSN' value='47'/>
+      <enumerator name='RTE_CPUFLAG_CLFSH' value='48'/>
+      <enumerator name='RTE_CPUFLAG_DS' value='49'/>
+      <enumerator name='RTE_CPUFLAG_ACPI' value='50'/>
+      <enumerator name='RTE_CPUFLAG_MMX' value='51'/>
+      <enumerator name='RTE_CPUFLAG_FXSR' value='52'/>
+      <enumerator name='RTE_CPUFLAG_SSE' value='53'/>
+      <enumerator name='RTE_CPUFLAG_SSE2' value='54'/>
+      <enumerator name='RTE_CPUFLAG_SS' value='55'/>
+      <enumerator name='RTE_CPUFLAG_HTT' value='56'/>
+      <enumerator name='RTE_CPUFLAG_TM' value='57'/>
+      <enumerator name='RTE_CPUFLAG_PBE' value='58'/>
+      <enumerator name='RTE_CPUFLAG_DIGTEMP' value='59'/>
+      <enumerator name='RTE_CPUFLAG_TRBOBST' value='60'/>
+      <enumerator name='RTE_CPUFLAG_ARAT' value='61'/>
+      <enumerator name='RTE_CPUFLAG_PLN' value='62'/>
+      <enumerator name='RTE_CPUFLAG_ECMD' value='63'/>
+      <enumerator name='RTE_CPUFLAG_PTM' value='64'/>
+      <enumerator name='RTE_CPUFLAG_MPERF_APERF_MSR' value='65'/>
+      <enumerator name='RTE_CPUFLAG_ACNT2' value='66'/>
+      <enumerator name='RTE_CPUFLAG_ENERGY_EFF' value='67'/>
+      <enumerator name='RTE_CPUFLAG_FSGSBASE' value='68'/>
+      <enumerator name='RTE_CPUFLAG_BMI1' value='69'/>
+      <enumerator name='RTE_CPUFLAG_HLE' value='70'/>
+      <enumerator name='RTE_CPUFLAG_AVX2' value='71'/>
+      <enumerator name='RTE_CPUFLAG_SMEP' value='72'/>
+      <enumerator name='RTE_CPUFLAG_BMI2' value='73'/>
+      <enumerator name='RTE_CPUFLAG_ERMS' value='74'/>
+      <enumerator name='RTE_CPUFLAG_INVPCID' value='75'/>
+      <enumerator name='RTE_CPUFLAG_RTM' value='76'/>
+      <enumerator name='RTE_CPUFLAG_AVX512F' value='77'/>
+      <enumerator name='RTE_CPUFLAG_RDSEED' value='78'/>
+      <enumerator name='RTE_CPUFLAG_LAHF_SAHF' value='79'/>
+      <enumerator name='RTE_CPUFLAG_LZCNT' value='80'/>
+      <enumerator name='RTE_CPUFLAG_SYSCALL' value='81'/>
+      <enumerator name='RTE_CPUFLAG_XD' value='82'/>
+      <enumerator name='RTE_CPUFLAG_1GB_PG' value='83'/>
+      <enumerator name='RTE_CPUFLAG_RDTSCP' value='84'/>
+      <enumerator name='RTE_CPUFLAG_EM64T' value='85'/>
+      <enumerator name='RTE_CPUFLAG_INVTSC' value='86'/>
+      <enumerator name='RTE_CPUFLAG_NUMFLAGS' value='87'/>
+    </enum-decl>
+    <qualified-type-def type-id='type-id-155' const='yes' id='type-id-156'/>
+    <pointer-type-def type-id='type-id-156' size-in-bits='64' id='type-id-143'/>
+    <pointer-type-def type-id='type-id-140' size-in-bits='64' id='type-id-157'/>
+    <pointer-type-def type-id='type-id-158' size-in-bits='64' id='type-id-159'/>
+    <typedef-decl name='rte_bbdev_info_get_t' type-id='type-id-159' filepath='../lib/librte_bbdev/rte_bbdev_pmd.h' line='126' column='1' id='type-id-124'/>
+    <pointer-type-def type-id='type-id-18' size-in-bits='64' id='type-id-160'/>
+    <pointer-type-def type-id='type-id-161' size-in-bits='64' id='type-id-162'/>
+    <typedef-decl name='rte_bbdev_stats_get_t' type-id='type-id-162' filepath='../lib/librte_bbdev/rte_bbdev_pmd.h' line='119' column='1' id='type-id-125'/>
+    <typedef-decl name='rte_bbdev_stats_reset_t' type-id='type-id-139' filepath='../lib/librte_bbdev/rte_bbdev_pmd.h' line='123' column='1' id='type-id-126'/>
+    <qualified-type-def type-id='type-id-17' const='yes' id='type-id-163'/>
+    <pointer-type-def type-id='type-id-163' size-in-bits='64' id='type-id-164'/>
+    <pointer-type-def type-id='type-id-165' size-in-bits='64' id='type-id-166'/>
+    <typedef-decl name='rte_bbdev_queue_setup_t' type-id='type-id-166' filepath='../lib/librte_bbdev/rte_bbdev_pmd.h' line='92' column='1' id='type-id-127'/>
+    <pointer-type-def type-id='type-id-167' size-in-bits='64' id='type-id-168'/>
+    <typedef-decl name='rte_bbdev_queue_release_t' type-id='type-id-168' filepath='../lib/librte_bbdev/rte_bbdev_pmd.h' line='99' column='1' id='type-id-128'/>
+    <typedef-decl name='rte_bbdev_queue_start_t' type-id='type-id-168' filepath='../lib/librte_bbdev/rte_bbdev_pmd.h' line='112' column='1' id='type-id-129'/>
+    <typedef-decl name='rte_bbdev_queue_stop_t' type-id='type-id-168' filepath='../lib/librte_bbdev/rte_bbdev_pmd.h' line='116' column='1' id='type-id-130'/>
+    <typedef-decl name='rte_bbdev_queue_intr_enable_t' type-id='type-id-168' filepath='../lib/librte_bbdev/rte_bbdev_pmd.h' line='133' column='1' id='type-id-131'/>
+    <typedef-decl name='rte_bbdev_queue_intr_disable_t' type-id='type-id-168' filepath='../lib/librte_bbdev/rte_bbdev_pmd.h' line='140' column='1' id='type-id-132'/>
+    <qualified-type-def type-id='type-id-118' const='yes' id='type-id-169'/>
+    <pointer-type-def type-id='type-id-169' size-in-bits='64' id='type-id-6'/>
+    <class-decl name='rte_bbdev_data' size-in-bits='832' is-struct='yes' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='418' column='1' id='type-id-170'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='name' type-id='type-id-171' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='419' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='512'>
+        <var-decl name='dev_private' type-id='type-id-16' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='420' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='576'>
+        <var-decl name='num_queues' type-id='type-id-14' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='421' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='640'>
+        <var-decl name='queues' type-id='type-id-33' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='422' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='704'>
+        <var-decl name='dev_id' type-id='type-id-14' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='423' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='736'>
+        <var-decl name='socket_id' type-id='type-id-21' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='424' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='768'>
+        <var-decl name='started' type-id='type-id-19' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='425' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='784'>
+        <var-decl name='process_cnt' type-id='type-id-86' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='427' column='1'/>
+      </data-member>
+    </class-decl>
+
+    <array-type-def dimensions='1' type-id='type-id-45' size-in-bits='512' id='type-id-171'>
+      <subrange length='64' type-id='type-id-31' id='type-id-172'/>
+
+    </array-type-def>
+    <pointer-type-def type-id='type-id-170' size-in-bits='64' id='type-id-7'/>
+    <enum-decl name='rte_bbdev_state' filepath='../lib/librte_bbdev/rte_bbdev.h' line='47' column='1' id='type-id-8'>
+      <underlying-type type-id='type-id-29'/>
+      <enumerator name='RTE_BBDEV_UNUSED' value='0'/>
+      <enumerator name='RTE_BBDEV_INITIALIZED' value='1'/>
+    </enum-decl>
+    <class-decl name='rte_device' size-in-bits='448' is-struct='yes' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='104' column='1' id='type-id-173'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='next' type-id='type-id-174' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='105' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='name' type-id='type-id-141' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='106' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='driver' type-id='type-id-175' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='107' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='bus' type-id='type-id-176' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='108' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <var-decl name='numa_node' type-id='type-id-21' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='109' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <var-decl name='devargs' type-id='type-id-177' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='110' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='105' column='1' id='type-id-174'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='tqe_next' type-id='type-id-9' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='105' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='tqe_prev' type-id='type-id-178' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='105' column='1'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-173' size-in-bits='64' id='type-id-9'/>
+    <pointer-type-def type-id='type-id-9' size-in-bits='64' id='type-id-178'/>
+    <class-decl name='rte_driver' size-in-bits='256' is-struct='yes' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='89' column='1' id='type-id-179'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='next' type-id='type-id-180' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='90' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='name' type-id='type-id-141' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='91' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='alias' type-id='type-id-141' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='92' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='90' column='1' id='type-id-180'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='tqe_next' type-id='type-id-181' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='90' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='tqe_prev' type-id='type-id-182' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='90' column='1'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-179' size-in-bits='64' id='type-id-181'/>
+    <pointer-type-def type-id='type-id-181' size-in-bits='64' id='type-id-182'/>
+    <qualified-type-def type-id='type-id-179' const='yes' id='type-id-183'/>
+    <pointer-type-def type-id='type-id-183' size-in-bits='64' id='type-id-175'/>
+    <class-decl name='rte_bus' size-in-bits='1024' is-struct='yes' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='246' column='1' id='type-id-184'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='next' type-id='type-id-185' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='247' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='name' type-id='type-id-141' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='248' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='scan' type-id='type-id-186' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='249' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='probe' type-id='type-id-187' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='250' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <var-decl name='find_device' type-id='type-id-188' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='251' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <var-decl name='plug' type-id='type-id-189' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='252' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='448'>
+        <var-decl name='unplug' type-id='type-id-190' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='253' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='512'>
+        <var-decl name='parse' type-id='type-id-191' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='254' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='576'>
+        <var-decl name='dma_map' type-id='type-id-192' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='255' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='640'>
+        <var-decl name='dma_unmap' type-id='type-id-193' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='256' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='704'>
+        <var-decl name='conf' type-id='type-id-194' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='257' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='768'>
+        <var-decl name='get_iommu_class' type-id='type-id-195' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='258' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='832'>
+        <var-decl name='dev_iterate' type-id='type-id-196' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='259' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='896'>
+        <var-decl name='hot_unplug_handler' type-id='type-id-197' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='260' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='960'>
+        <var-decl name='sigbus_handler' type-id='type-id-198' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='262' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='247' column='1' id='type-id-185'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='tqe_next' type-id='type-id-199' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='247' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='tqe_prev' type-id='type-id-200' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='247' column='1'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-184' size-in-bits='64' id='type-id-199'/>
+    <pointer-type-def type-id='type-id-199' size-in-bits='64' id='type-id-200'/>
+    <pointer-type-def type-id='type-id-201' size-in-bits='64' id='type-id-202'/>
+    <typedef-decl name='rte_bus_scan_t' type-id='type-id-202' filepath='../lib/librte_eal/common/include/rte_bus.h' line='56' column='1' id='type-id-186'/>
+    <typedef-decl name='rte_bus_probe_t' type-id='type-id-202' filepath='../lib/librte_eal/common/include/rte_bus.h' line='68' column='1' id='type-id-187'/>
+    <qualified-type-def type-id='type-id-173' const='yes' id='type-id-203'/>
+    <pointer-type-def type-id='type-id-203' size-in-bits='64' id='type-id-204'/>
+    <pointer-type-def type-id='type-id-205' size-in-bits='64' id='type-id-206'/>
+    <typedef-decl name='rte_dev_cmp_t' type-id='type-id-206' filepath='../lib/librte_eal/common/include/rte_dev.h' line='202' column='1' id='type-id-207'/>
+    <pointer-type-def type-id='type-id-208' size-in-bits='64' id='type-id-209'/>
+    <typedef-decl name='rte_bus_find_device_t' type-id='type-id-209' filepath='../lib/librte_eal/common/include/rte_bus.h' line='93' column='1' id='type-id-188'/>
+    <pointer-type-def type-id='type-id-210' size-in-bits='64' id='type-id-211'/>
+    <typedef-decl name='rte_bus_plug_t' type-id='type-id-211' filepath='../lib/librte_eal/common/include/rte_bus.h' line='107' column='1' id='type-id-189'/>
+    <typedef-decl name='rte_bus_unplug_t' type-id='type-id-211' filepath='../lib/librte_eal/common/include/rte_bus.h' line='120' column='1' id='type-id-190'/>
+    <pointer-type-def type-id='type-id-212' size-in-bits='64' id='type-id-213'/>
+    <typedef-decl name='rte_bus_parse_t' type-id='type-id-213' filepath='../lib/librte_eal/common/include/rte_bus.h' line='140' column='1' id='type-id-191'/>
+    <pointer-type-def type-id='type-id-214' size-in-bits='64' id='type-id-215'/>
+    <typedef-decl name='rte_dev_dma_map_t' type-id='type-id-215' filepath='../lib/librte_eal/common/include/rte_bus.h' line='160' column='1' id='type-id-192'/>
+    <typedef-decl name='rte_dev_dma_unmap_t' type-id='type-id-215' filepath='../lib/librte_eal/common/include/rte_bus.h' line='181' column='1' id='type-id-193'/>
+    <class-decl name='rte_bus_conf' size-in-bits='32' is-struct='yes' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='225' column='1' id='type-id-194'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='scan_mode' type-id='type-id-216' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='226' column='1'/>
+      </data-member>
+    </class-decl>
+    <enum-decl name='rte_bus_scan_mode' filepath='../lib/librte_eal/common/include/rte_bus.h' line='216' column='1' id='type-id-216'>
+      <underlying-type type-id='type-id-29'/>
+      <enumerator name='RTE_BUS_SCAN_UNDEFINED' value='0'/>
+      <enumerator name='RTE_BUS_SCAN_WHITELIST' value='1'/>
+      <enumerator name='RTE_BUS_SCAN_BLACKLIST' value='2'/>
+    </enum-decl>
+    <enum-decl name='rte_iova_mode' filepath='../lib/librte_eal/common/include/rte_bus.h' line='39' column='1' id='type-id-217'>
+      <underlying-type type-id='type-id-29'/>
+      <enumerator name='RTE_IOVA_DC' value='0'/>
+      <enumerator name='RTE_IOVA_PA' value='1'/>
+      <enumerator name='RTE_IOVA_VA' value='2'/>
+    </enum-decl>
+    <pointer-type-def type-id='type-id-218' size-in-bits='64' id='type-id-219'/>
+    <typedef-decl name='rte_bus_get_iommu_class_t' type-id='type-id-219' filepath='../lib/librte_eal/common/include/rte_bus.h' line='240' column='1' id='type-id-195'/>
+    <class-decl name='rte_dev_iterator' size-in-bits='448' is-struct='yes' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='250' column='1' id='type-id-220'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='dev_str' type-id='type-id-141' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='251' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='bus_str' type-id='type-id-141' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='252' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='cls_str' type-id='type-id-141' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='253' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='bus' type-id='type-id-199' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='254' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='cls' type-id='type-id-221' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='255' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <var-decl name='device' type-id='type-id-9' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='256' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <var-decl name='class_device' type-id='type-id-16' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='257' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='rte_class' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-222'/>
+    <pointer-type-def type-id='type-id-222' size-in-bits='64' id='type-id-221'/>
+    <qualified-type-def type-id='type-id-220' const='yes' id='type-id-223'/>
+    <pointer-type-def type-id='type-id-223' size-in-bits='64' id='type-id-224'/>
+    <pointer-type-def type-id='type-id-225' size-in-bits='64' id='type-id-226'/>
+    <typedef-decl name='rte_dev_iterate_t' type-id='type-id-226' filepath='../lib/librte_eal/common/include/rte_dev.h' line='288' column='1' id='type-id-196'/>
+    <typedef-decl name='rte_bus_hot_unplug_handler_t' type-id='type-id-211' filepath='../lib/librte_eal/common/include/rte_bus.h' line='196' column='1' id='type-id-197'/>
+    <pointer-type-def type-id='type-id-227' size-in-bits='64' id='type-id-228'/>
+    <typedef-decl name='rte_bus_sigbus_handler_t' type-id='type-id-228' filepath='../lib/librte_eal/common/include/rte_bus.h' line='211' column='1' id='type-id-198'/>
+    <qualified-type-def type-id='type-id-184' const='yes' id='type-id-229'/>
+    <pointer-type-def type-id='type-id-229' size-in-bits='64' id='type-id-176'/>
+    <class-decl name='rte_devargs' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-230'/>
+    <pointer-type-def type-id='type-id-230' size-in-bits='64' id='type-id-177'/>
+    <class-decl name='rte_bbdev_cb_list' size-in-bits='128' is-struct='yes' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='436' column='1' id='type-id-10'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='tqh_first' type-id='type-id-231' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='436' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='tqh_last' type-id='type-id-232' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='436' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='rte_bbdev_callback' size-in-bits='384' is-struct='yes' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.c' line='78' column='1' id='type-id-233'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='next' type-id='type-id-234' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.c' line='79' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='cb_fn' type-id='type-id-235' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.c' line='80' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='cb_arg' type-id='type-id-16' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.c' line='81' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='ret_param' type-id='type-id-16' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.c' line='82' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <var-decl name='event' type-id='type-id-236' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.c' line='83' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='352'>
+        <var-decl name='active' type-id='type-id-22' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.c' line='84' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.c' line='79' column='1' id='type-id-234'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='tqe_next' type-id='type-id-231' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.c' line='79' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='tqe_prev' type-id='type-id-232' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.c' line='79' column='1'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-233' size-in-bits='64' id='type-id-231'/>
+    <pointer-type-def type-id='type-id-231' size-in-bits='64' id='type-id-232'/>
+    <enum-decl name='rte_bbdev_event_type' filepath='../lib/librte_bbdev/rte_bbdev.h' line='723' column='1' id='type-id-236'>
+      <underlying-type type-id='type-id-29'/>
+      <enumerator name='RTE_BBDEV_EVENT_UNKNOWN' value='0'/>
+      <enumerator name='RTE_BBDEV_EVENT_ERROR' value='1'/>
+      <enumerator name='RTE_BBDEV_EVENT_DEQUEUE' value='2'/>
+      <enumerator name='RTE_BBDEV_EVENT_MAX' value='3'/>
+    </enum-decl>
+    <pointer-type-def type-id='type-id-237' size-in-bits='64' id='type-id-238'/>
+    <typedef-decl name='rte_bbdev_cb_fn' type-id='type-id-238' filepath='../lib/librte_bbdev/rte_bbdev.h' line='743' column='1' id='type-id-235'/>
+    <class-decl name='rte_intr_handle' size-in-bits='213248' is-struct='yes' visibility='default' filepath='../lib/librte_eal/common/include/rte_eal_interrupts.h' line='69' column='1' id='type-id-239'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='' type-id='type-id-240' visibility='default'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='fd' type-id='type-id-21' visibility='default' filepath='../lib/librte_eal/common/include/rte_eal_interrupts.h' line='75' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='type' type-id='type-id-241' visibility='default' filepath='../lib/librte_eal/common/include/rte_eal_interrupts.h' line='76' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='96'>
+        <var-decl name='max_intr' type-id='type-id-22' visibility='default' filepath='../lib/librte_eal/common/include/rte_eal_interrupts.h' line='77' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='nb_efd' type-id='type-id-22' visibility='default' filepath='../lib/librte_eal/common/include/rte_eal_interrupts.h' line='78' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='160'>
+        <var-decl name='efd_counter_size' type-id='type-id-23' visibility='default' filepath='../lib/librte_eal/common/include/rte_eal_interrupts.h' line='79' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='efds' type-id='type-id-242' visibility='default' filepath='../lib/librte_eal/common/include/rte_eal_interrupts.h' line='80' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='16576'>
+        <var-decl name='elist' type-id='type-id-243' visibility='default' filepath='../lib/librte_eal/common/include/rte_eal_interrupts.h' line='81' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='213184'>
+        <var-decl name='intr_vec' type-id='type-id-244' visibility='default' filepath='../lib/librte_eal/common/include/rte_eal_interrupts.h' line='83' column='1'/>
+      </data-member>
+    </class-decl>
+    <union-decl name='__anonymous_union__' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='../lib/librte_eal/common/include/rte_eal_interrupts.h' line='71' column='1' id='type-id-240'>
+      <data-member access='private'>
+        <var-decl name='vfio_dev_fd' type-id='type-id-21' visibility='default' filepath='../lib/librte_eal/common/include/rte_eal_interrupts.h' line='72' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='uio_cfg_fd' type-id='type-id-21' visibility='default' filepath='../lib/librte_eal/common/include/rte_eal_interrupts.h' line='73' column='1'/>
+      </data-member>
+    </union-decl>
+    <enum-decl name='rte_intr_handle_type' filepath='../lib/librte_eal/common/include/rte_eal_interrupts.h' line='27' column='1' id='type-id-241'>
+      <underlying-type type-id='type-id-29'/>
+      <enumerator name='RTE_INTR_HANDLE_UNKNOWN' value='0'/>
+      <enumerator name='RTE_INTR_HANDLE_UIO' value='1'/>
+      <enumerator name='RTE_INTR_HANDLE_UIO_INTX' value='2'/>
+      <enumerator name='RTE_INTR_HANDLE_VFIO_LEGACY' value='3'/>
+      <enumerator name='RTE_INTR_HANDLE_VFIO_MSI' value='4'/>
+      <enumerator name='RTE_INTR_HANDLE_VFIO_MSIX' value='5'/>
+      <enumerator name='RTE_INTR_HANDLE_ALARM' value='6'/>
+      <enumerator name='RTE_INTR_HANDLE_EXT' value='7'/>
+      <enumerator name='RTE_INTR_HANDLE_VDEV' value='8'/>
+      <enumerator name='RTE_INTR_HANDLE_DEV_EVENT' value='9'/>
+      <enumerator name='RTE_INTR_HANDLE_VFIO_REQ' value='10'/>
+      <enumerator name='RTE_INTR_HANDLE_MAX' value='11'/>
+    </enum-decl>
+
+    <array-type-def dimensions='1' type-id='type-id-21' size-in-bits='16384' id='type-id-242'>
+      <subrange length='512' type-id='type-id-31' id='type-id-245'/>
+
+    </array-type-def>
+    <class-decl name='rte_epoll_event' size-in-bits='384' is-struct='yes' visibility='default' filepath='../lib/librte_eal/common/include/rte_eal_interrupts.h' line='61' column='1' id='type-id-246'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='status' type-id='type-id-247' visibility='default' filepath='../lib/librte_eal/common/include/rte_eal_interrupts.h' line='62' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='fd' type-id='type-id-21' visibility='default' filepath='../lib/librte_eal/common/include/rte_eal_interrupts.h' line='63' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='epfd' type-id='type-id-21' visibility='default' filepath='../lib/librte_eal/common/include/rte_eal_interrupts.h' line='64' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='epdata' type-id='type-id-248' visibility='default' filepath='../lib/librte_eal/common/include/rte_eal_interrupts.h' line='65' column='1'/>
+      </data-member>
+    </class-decl>
+    <qualified-type-def type-id='type-id-22' volatile='yes' id='type-id-247'/>
+    <class-decl name='rte_epoll_data' size-in-bits='256' is-struct='yes' visibility='default' filepath='../lib/librte_eal/common/include/rte_eal_interrupts.h' line='47' column='1' id='type-id-248'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='event' type-id='type-id-22' visibility='default' filepath='../lib/librte_eal/common/include/rte_eal_interrupts.h' line='48' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='data' type-id='type-id-16' visibility='default' filepath='../lib/librte_eal/common/include/rte_eal_interrupts.h' line='49' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='cb_fun' type-id='type-id-249' visibility='default' filepath='../lib/librte_eal/common/include/rte_eal_interrupts.h' line='50' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='cb_arg' type-id='type-id-16' visibility='default' filepath='../lib/librte_eal/common/include/rte_eal_interrupts.h' line='51' column='1'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-250' size-in-bits='64' id='type-id-251'/>
+    <typedef-decl name='rte_intr_event_cb_t' type-id='type-id-251' filepath='../lib/librte_eal/common/include/rte_eal_interrupts.h' line='45' column='1' id='type-id-249'/>
+
+    <array-type-def dimensions='1' type-id='type-id-246' size-in-bits='196608' id='type-id-243'>
+      <subrange length='512' type-id='type-id-31' id='type-id-245'/>
+
+    </array-type-def>
+    <pointer-type-def type-id='type-id-21' size-in-bits='64' id='type-id-244'/>
+    <pointer-type-def type-id='type-id-239' size-in-bits='64' id='type-id-11'/>
+
+    <array-type-def dimensions='1' type-id='type-id-1' size-in-bits='infinite' id='type-id-252'>
+      <subrange length='infinite' id='type-id-82'/>
+
+    </array-type-def>
+    <var-decl name='rte_bbdev_devices' type-id='type-id-252' mangled-name='rte_bbdev_devices' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='469' column='1' elf-symbol-id='rte_bbdev_devices@@EXPERIMENTAL'/>
+    <function-decl name='rte_bbdev_pmd_callback_process' mangled-name='rte_bbdev_pmd_callback_process' filepath='../lib/librte_bbdev/rte_bbdev.c' line='1019' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_bbdev_pmd_callback_process@@EXPERIMENTAL'>
+      <parameter type-id='type-id-133' name='dev' filepath='../lib/librte_bbdev/rte_bbdev.c' line='1019' column='1'/>
+      <parameter type-id='type-id-236' name='event' filepath='../lib/librte_bbdev/rte_bbdev.c' line='1020' column='1'/>
+      <parameter type-id='type-id-16' name='ret_param' filepath='../lib/librte_bbdev/rte_bbdev.c' line='1020' column='1'/>
+      <return type-id='type-id-20'/>
+    </function-decl>
+    <function-decl name='rte_bbdev_get_named_dev' mangled-name='rte_bbdev_get_named_dev' filepath='../lib/librte_bbdev/rte_bbdev.c' line='269' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_bbdev_get_named_dev@@EXPERIMENTAL'>
+      <parameter type-id='type-id-141' name='name' filepath='../lib/librte_bbdev/rte_bbdev.c' line='269' column='1'/>
+      <return type-id='type-id-133'/>
+    </function-decl>
+    <function-decl name='rte_bbdev_release' mangled-name='rte_bbdev_release' filepath='../lib/librte_bbdev/rte_bbdev.c' line='235' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_bbdev_release@@EXPERIMENTAL'>
+      <parameter type-id='type-id-133' name='bbdev' filepath='../lib/librte_bbdev/rte_bbdev.c' line='235' column='1'/>
+      <return type-id='type-id-21'/>
+    </function-decl>
+    <function-decl name='rte_bbdev_allocate' mangled-name='rte_bbdev_allocate' filepath='../lib/librte_bbdev/rte_bbdev.c' line='176' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_bbdev_allocate@@EXPERIMENTAL'>
+      <parameter type-id='type-id-141' name='name' filepath='../lib/librte_bbdev/rte_bbdev.c' line='176' column='1'/>
+      <return type-id='type-id-133'/>
+    </function-decl>
+    <function-decl name='rte_bbdev_queue_intr_ctl' mangled-name='rte_bbdev_queue_intr_ctl' filepath='../lib/librte_bbdev/rte_bbdev.c' line='1083' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_bbdev_queue_intr_ctl@@EXPERIMENTAL'>
+      <parameter type-id='type-id-14' name='dev_id' filepath='../lib/librte_bbdev/rte_bbdev.c' line='1083' column='1'/>
+      <parameter type-id='type-id-14' name='queue_id' filepath='../lib/librte_bbdev/rte_bbdev.c' line='1083' column='1'/>
+      <parameter type-id='type-id-21' name='epfd' filepath='../lib/librte_bbdev/rte_bbdev.c' line='1083' column='1'/>
+      <parameter type-id='type-id-21' name='op' filepath='../lib/librte_bbdev/rte_bbdev.c' line='1083' column='1'/>
+      <parameter type-id='type-id-16' name='data' filepath='../lib/librte_bbdev/rte_bbdev.c' line='1084' column='1'/>
+      <return type-id='type-id-21'/>
+    </function-decl>
+    <function-decl name='rte_bbdev_queue_intr_disable' mangled-name='rte_bbdev_queue_intr_disable' filepath='../lib/librte_bbdev/rte_bbdev.c' line='1072' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_bbdev_queue_intr_disable@@EXPERIMENTAL'>
+      <parameter type-id='type-id-14' name='dev_id' filepath='../lib/librte_bbdev/rte_bbdev.c' line='1072' column='1'/>
+      <parameter type-id='type-id-14' name='queue_id' filepath='../lib/librte_bbdev/rte_bbdev.c' line='1072' column='1'/>
+      <return type-id='type-id-21'/>
+    </function-decl>
+    <function-decl name='rte_bbdev_queue_intr_enable' mangled-name='rte_bbdev_queue_intr_enable' filepath='../lib/librte_bbdev/rte_bbdev.c' line='1061' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_bbdev_queue_intr_enable@@EXPERIMENTAL'>
+      <parameter type-id='type-id-14' name='dev_id' filepath='../lib/librte_bbdev/rte_bbdev.c' line='1072' column='1'/>
+      <parameter type-id='type-id-14' name='queue_id' filepath='../lib/librte_bbdev/rte_bbdev.c' line='1072' column='1'/>
+      <return type-id='type-id-21'/>
+    </function-decl>
+    <function-decl name='rte_bbdev_callback_unregister' mangled-name='rte_bbdev_callback_unregister' filepath='../lib/librte_bbdev/rte_bbdev.c' line='974' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_bbdev_callback_unregister@@EXPERIMENTAL'>
+      <parameter type-id='type-id-14' name='dev_id' filepath='../lib/librte_bbdev/rte_bbdev.c' line='974' column='1'/>
+      <parameter type-id='type-id-236' name='event' filepath='../lib/librte_bbdev/rte_bbdev.c' line='974' column='1'/>
+      <parameter type-id='type-id-235' name='cb_fn' filepath='../lib/librte_bbdev/rte_bbdev.c' line='975' column='1'/>
+      <parameter type-id='type-id-16' name='cb_arg' filepath='../lib/librte_bbdev/rte_bbdev.c' line='975' column='1'/>
+      <return type-id='type-id-21'/>
+    </function-decl>
+    <function-decl name='rte_bbdev_callback_register' mangled-name='rte_bbdev_callback_register' filepath='../lib/librte_bbdev/rte_bbdev.c' line='929' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_bbdev_callback_register@@EXPERIMENTAL'>
+      <parameter type-id='type-id-14' name='dev_id' filepath='../lib/librte_bbdev/rte_bbdev.c' line='929' column='1'/>
+      <parameter type-id='type-id-236' name='event' filepath='../lib/librte_bbdev/rte_bbdev.c' line='929' column='1'/>
+      <parameter type-id='type-id-235' name='cb_fn' filepath='../lib/librte_bbdev/rte_bbdev.c' line='930' column='1'/>
+      <parameter type-id='type-id-16' name='cb_arg' filepath='../lib/librte_bbdev/rte_bbdev.c' line='930' column='1'/>
+      <return type-id='type-id-21'/>
+    </function-decl>
+    <class-decl name='rte_bbdev_queue_info' size-in-bits='160' is-struct='yes' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='353' column='1' id='type-id-253'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='conf' type-id='type-id-17' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='355' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='started' type-id='type-id-19' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='357' column='1'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-253' size-in-bits='64' id='type-id-254'/>
+    <function-decl name='rte_bbdev_queue_info_get' mangled-name='rte_bbdev_queue_info_get' filepath='../lib/librte_bbdev/rte_bbdev.c' line='810' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_bbdev_queue_info_get@@EXPERIMENTAL'>
+      <parameter type-id='type-id-14' name='dev_id' filepath='../lib/librte_bbdev/rte_bbdev.c' line='810' column='1'/>
+      <parameter type-id='type-id-14' name='queue_id' filepath='../lib/librte_bbdev/rte_bbdev.c' line='810' column='1'/>
+      <parameter type-id='type-id-254' name='queue_info' filepath='../lib/librte_bbdev/rte_bbdev.c' line='811' column='1'/>
+      <return type-id='type-id-21'/>
+    </function-decl>
+    <class-decl name='rte_bbdev_info' size-in-bits='704' is-struct='yes' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='326' column='1' id='type-id-255'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='socket_id' type-id='type-id-21' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='327' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='dev_name' type-id='type-id-141' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='328' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='device' type-id='type-id-204' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='329' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='num_queues' type-id='type-id-14' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='330' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='208'>
+        <var-decl name='started' type-id='type-id-19' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='331' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='drv' type-id='type-id-140' visibility='default' filepath='../lib/librte_bbdev/rte_bbdev.h' line='332' column='1'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-255' size-in-bits='64' id='type-id-256'/>
+    <function-decl name='rte_bbdev_info_get' mangled-name='rte_bbdev_info_get' filepath='../lib/librte_bbdev/rte_bbdev.c' line='782' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_bbdev_info_get@@EXPERIMENTAL'>
+      <parameter type-id='type-id-14' name='dev_id' filepath='../lib/librte_bbdev/rte_bbdev.c' line='782' column='1'/>
+      <parameter type-id='type-id-256' name='dev_info' filepath='../lib/librte_bbdev/rte_bbdev.c' line='782' column='1'/>
+      <return type-id='type-id-21'/>
+    </function-decl>
+    <function-decl name='rte_bbdev_stats_reset' mangled-name='rte_bbdev_stats_reset' filepath='../lib/librte_bbdev/rte_bbdev.c' line='765' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_bbdev_stats_reset@@EXPERIMENTAL'>
+      <parameter type-id='type-id-14' name='dev_id' filepath='../lib/librte_bbdev/rte_bbdev.c' line='765' column='1'/>
+      <return type-id='type-id-21'/>
+    </function-decl>
+    <function-decl name='rte_bbdev_stats_get' mangled-name='rte_bbdev_stats_get' filepath='../lib/librte_bbdev/rte_bbdev.c' line='742' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_bbdev_stats_get@@EXPERIMENTAL'>
+      <parameter type-id='type-id-14' name='dev_id' filepath='../lib/librte_bbdev/rte_bbdev.c' line='742' column='1'/>
+      <parameter type-id='type-id-160' name='stats' filepath='../lib/librte_bbdev/rte_bbdev.c' line='742' column='1'/>
+      <return type-id='type-id-21'/>
+    </function-decl>
+    <function-decl name='rte_bbdev_queue_stop' mangled-name='rte_bbdev_queue_stop' filepath='../lib/librte_bbdev/rte_bbdev.c' line='682' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_bbdev_queue_stop@@EXPERIMENTAL'>
+      <parameter type-id='type-id-14' name='dev_id' filepath='../lib/librte_bbdev/rte_bbdev.c' line='682' column='1'/>
+      <parameter type-id='type-id-14' name='queue_id' filepath='../lib/librte_bbdev/rte_bbdev.c' line='682' column='1'/>
+      <return type-id='type-id-21'/>
+    </function-decl>
+    <function-decl name='rte_bbdev_queue_start' mangled-name='rte_bbdev_queue_start' filepath='../lib/librte_bbdev/rte_bbdev.c' line='652' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_bbdev_queue_start@@EXPERIMENTAL'>
+      <parameter type-id='type-id-14' name='dev_id' filepath='../lib/librte_bbdev/rte_bbdev.c' line='682' column='1'/>
+      <parameter type-id='type-id-14' name='queue_id' filepath='../lib/librte_bbdev/rte_bbdev.c' line='682' column='1'/>
+      <return type-id='type-id-21'/>
+    </function-decl>
+    <function-decl name='rte_bbdev_close' mangled-name='rte_bbdev_close' filepath='../lib/librte_bbdev/rte_bbdev.c' line='607' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_bbdev_close@@EXPERIMENTAL'>
+      <parameter type-id='type-id-14' name='dev_id' filepath='../lib/librte_bbdev/rte_bbdev.c' line='607' column='1'/>
+      <return type-id='type-id-21'/>
+    </function-decl>
+    <function-decl name='rte_bbdev_stop' mangled-name='rte_bbdev_stop' filepath='../lib/librte_bbdev/rte_bbdev.c' line='586' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_bbdev_stop@@EXPERIMENTAL'>
+      <parameter type-id='type-id-14' name='dev_id' filepath='../lib/librte_bbdev/rte_bbdev.c' line='765' column='1'/>
+      <return type-id='type-id-21'/>
+    </function-decl>
+    <function-decl name='rte_bbdev_start' mangled-name='rte_bbdev_start' filepath='../lib/librte_bbdev/rte_bbdev.c' line='554' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_bbdev_start@@EXPERIMENTAL'>
+      <parameter type-id='type-id-14' name='dev_id' filepath='../lib/librte_bbdev/rte_bbdev.c' line='554' column='1'/>
+      <return type-id='type-id-21'/>
+    </function-decl>
+    <function-decl name='rte_bbdev_queue_configure' mangled-name='rte_bbdev_queue_configure' filepath='../lib/librte_bbdev/rte_bbdev.c' line='436' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_bbdev_queue_configure@@EXPERIMENTAL'>
+      <parameter type-id='type-id-14' name='dev_id' filepath='../lib/librte_bbdev/rte_bbdev.c' line='436' column='1'/>
+      <parameter type-id='type-id-14' name='queue_id' filepath='../lib/librte_bbdev/rte_bbdev.c' line='436' column='1'/>
+      <parameter type-id='type-id-164' name='conf' filepath='../lib/librte_bbdev/rte_bbdev.c' line='437' column='1'/>
+      <return type-id='type-id-21'/>
+    </function-decl>
+    <function-decl name='rte_bbdev_intr_enable' mangled-name='rte_bbdev_intr_enable' filepath='../lib/librte_bbdev/rte_bbdev.c' line='404' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_bbdev_intr_enable@@EXPERIMENTAL'>
+      <parameter type-id='type-id-14' name='dev_id' filepath='../lib/librte_bbdev/rte_bbdev.c' line='404' column='1'/>
+      <return type-id='type-id-21'/>
+    </function-decl>
+    <function-decl name='rte_bbdev_setup_queues' mangled-name='rte_bbdev_setup_queues' filepath='../lib/librte_bbdev/rte_bbdev.c' line='314' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_bbdev_setup_queues@@EXPERIMENTAL'>
+      <parameter type-id='type-id-14' name='dev_id' filepath='../lib/librte_bbdev/rte_bbdev.c' line='314' column='1'/>
+      <parameter type-id='type-id-14' name='num_queues' filepath='../lib/librte_bbdev/rte_bbdev.c' line='314' column='1'/>
+      <parameter type-id='type-id-21' name='socket_id' filepath='../lib/librte_bbdev/rte_bbdev.c' line='314' column='1'/>
+      <return type-id='type-id-21'/>
+    </function-decl>
+    <function-decl name='rte_bbdev_find_next' mangled-name='rte_bbdev_find_next' filepath='../lib/librte_bbdev/rte_bbdev.c' line='304' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_bbdev_find_next@@EXPERIMENTAL'>
+      <parameter type-id='type-id-14' name='dev_id' filepath='../lib/librte_bbdev/rte_bbdev.c' line='304' column='1'/>
+      <return type-id='type-id-14'/>
+    </function-decl>
+    <function-decl name='rte_bbdev_is_valid' mangled-name='rte_bbdev_is_valid' filepath='../lib/librte_bbdev/rte_bbdev.c' line='295' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_bbdev_is_valid@@EXPERIMENTAL'>
+      <parameter type-id='type-id-14' name='dev_id' filepath='../lib/librte_bbdev/rte_bbdev.c' line='295' column='1'/>
+      <return type-id='type-id-19'/>
+    </function-decl>
+    <function-decl name='rte_bbdev_count' mangled-name='rte_bbdev_count' filepath='../lib/librte_bbdev/rte_bbdev.c' line='289' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_bbdev_count@@EXPERIMENTAL'>
+      <return type-id='type-id-14'/>
+    </function-decl>
+    <function-decl name='rte_bbdev_op_pool_create' mangled-name='rte_bbdev_op_pool_create' filepath='../lib/librte_bbdev/rte_bbdev.c' line='882' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_bbdev_op_pool_create@@EXPERIMENTAL'>
+      <parameter type-id='type-id-141' name='name' filepath='../lib/librte_bbdev/rte_bbdev.c' line='882' column='1'/>
+      <parameter type-id='type-id-24' name='type' filepath='../lib/librte_bbdev/rte_bbdev.c' line='882' column='1'/>
+      <parameter type-id='type-id-25' name='num_elements' filepath='../lib/librte_bbdev/rte_bbdev.c' line='883' column='1'/>
+      <parameter type-id='type-id-25' name='cache_size' filepath='../lib/librte_bbdev/rte_bbdev.c' line='883' column='1'/>
+      <parameter type-id='type-id-21' name='socket_id' filepath='../lib/librte_bbdev/rte_bbdev.c' line='884' column='1'/>
+      <return type-id='type-id-35'/>
+    </function-decl>
+    <function-decl name='rte_bbdev_op_type_str' mangled-name='rte_bbdev_op_type_str' filepath='../lib/librte_bbdev/rte_bbdev.c' line='1120' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_bbdev_op_type_str@@EXPERIMENTAL'>
+      <parameter type-id='type-id-24' name='op_type' filepath='../lib/librte_bbdev/rte_bbdev.c' line='1120' column='1'/>
+      <return type-id='type-id-141'/>
+    </function-decl>
+    <function-type size-in-bits='64' id='type-id-218'>
+      <return type-id='type-id-217'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-201'>
+      <return type-id='type-id-21'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-212'>
+      <parameter type-id='type-id-141'/>
+      <parameter type-id='type-id-16'/>
+      <return type-id='type-id-21'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-205'>
+      <parameter type-id='type-id-204'/>
+      <parameter type-id='type-id-16'/>
+      <return type-id='type-id-21'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-136'>
+      <parameter type-id='type-id-133'/>
+      <return type-id='type-id-21'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-167'>
+      <parameter type-id='type-id-133'/>
+      <parameter type-id='type-id-14'/>
+      <return type-id='type-id-21'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-165'>
+      <parameter type-id='type-id-133'/>
+      <parameter type-id='type-id-14'/>
+      <parameter type-id='type-id-164'/>
+      <return type-id='type-id-21'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-134'>
+      <parameter type-id='type-id-133'/>
+      <parameter type-id='type-id-14'/>
+      <parameter type-id='type-id-21'/>
+      <return type-id='type-id-21'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-210'>
+      <parameter type-id='type-id-9'/>
+      <return type-id='type-id-21'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-214'>
+      <parameter type-id='type-id-9'/>
+      <parameter type-id='type-id-16'/>
+      <parameter type-id='type-id-30'/>
+      <parameter type-id='type-id-49'/>
+      <return type-id='type-id-21'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-227'>
+      <parameter type-id='type-id-16'/>
+      <return type-id='type-id-21'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-208'>
+      <parameter type-id='type-id-204'/>
+      <parameter type-id='type-id-207'/>
+      <parameter type-id='type-id-16'/>
+      <return type-id='type-id-9'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-116'>
+      <parameter type-id='type-id-33'/>
+      <parameter type-id='type-id-115'/>
+      <parameter type-id='type-id-14'/>
+      <return type-id='type-id-14'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-102'>
+      <parameter type-id='type-id-33'/>
+      <parameter type-id='type-id-101'/>
+      <parameter type-id='type-id-14'/>
+      <return type-id='type-id-14'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-250'>
+      <parameter type-id='type-id-21'/>
+      <parameter type-id='type-id-16'/>
+      <return type-id='type-id-20'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-138'>
+      <parameter type-id='type-id-133'/>
+      <return type-id='type-id-20'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-158'>
+      <parameter type-id='type-id-133'/>
+      <parameter type-id='type-id-157'/>
+      <return type-id='type-id-20'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-161'>
+      <parameter type-id='type-id-133'/>
+      <parameter type-id='type-id-160'/>
+      <return type-id='type-id-20'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-68'>
+      <parameter type-id='type-id-62'/>
+      <parameter type-id='type-id-16'/>
+      <return type-id='type-id-20'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-237'>
+      <parameter type-id='type-id-14'/>
+      <parameter type-id='type-id-236'/>
+      <parameter type-id='type-id-16'/>
+      <parameter type-id='type-id-16'/>
+      <return type-id='type-id-20'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-87'>
+      <parameter type-id='type-id-16'/>
+      <parameter type-id='type-id-16'/>
+      <return type-id='type-id-20'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-225'>
+      <parameter type-id='type-id-16'/>
+      <parameter type-id='type-id-141'/>
+      <parameter type-id='type-id-224'/>
+      <return type-id='type-id-16'/>
+    </function-type>
+  </abi-instr>
+</abi-corpus>
diff --git a/lib/.abi/librte_bitratestats.dump b/lib/.abi/librte_bitratestats.dump
new file mode 100644
index 000000000..e4d97fdf4
--- /dev/null
+++ b/lib/.abi/librte_bitratestats.dump
@@ -0,0 +1,85 @@
+<abi-corpus path='gcc//lib/librte_bitratestats.so.20.0' architecture='elf-amd-x86_64' soname='librte_bitratestats.so.20.0'>
+  <elf-needed>
+    <dependency name='libm.so.6'/>
+    <dependency name='libdl.so.2'/>
+    <dependency name='libnuma.so.1'/>
+    <dependency name='librte_eal.so.20.0'/>
+    <dependency name='librte_kvargs.so.20.0'/>
+    <dependency name='librte_ethdev.so.20.0'/>
+    <dependency name='librte_net.so.20.0'/>
+    <dependency name='librte_mbuf.so.20.0'/>
+    <dependency name='librte_mempool.so.20.0'/>
+    <dependency name='librte_ring.so.20.0'/>
+    <dependency name='librte_meter.so.20.0'/>
+    <dependency name='librte_metrics.so.20.0'/>
+    <dependency name='libbsd.so.0'/>
+    <dependency name='libpthread.so.0'/>
+    <dependency name='libc.so.6'/>
+  </elf-needed>
+  <elf-function-symbols>
+    <elf-symbol name='rte_stats_bitrate_calc' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_stats_bitrate_create' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_stats_bitrate_reg' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+  </elf-function-symbols>
+  <abi-instr version='1.0' address-size='64' path='../lib/librte_bitratestats/rte_bitrate.c' comp-dir-path='/root/klaatz/dpdk/gcc' language='LANG_C99'>
+    <type-decl name='int' size-in-bits='32' id='type-id-1'/>
+    <class-decl name='rte_stats_bitrates' size-in-bits='16448' is-struct='yes' visibility='default' filepath='../lib/librte_bitratestats/rte_bitrate.c' line='26' column='1' id='type-id-2'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='port_stats' type-id='type-id-3' visibility='default' filepath='../lib/librte_bitratestats/rte_bitrate.c' line='27' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='16384'>
+        <var-decl name='id_stats_set' type-id='type-id-4' visibility='default' filepath='../lib/librte_bitratestats/rte_bitrate.c' line='28' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='rte_stats_bitrate' size-in-bits='512' is-struct='yes' visibility='default' filepath='../lib/librte_bitratestats/rte_bitrate.c' line='15' column='1' id='type-id-5'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='last_ibytes' type-id='type-id-6' visibility='default' filepath='../lib/librte_bitratestats/rte_bitrate.c' line='16' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='last_obytes' type-id='type-id-6' visibility='default' filepath='../lib/librte_bitratestats/rte_bitrate.c' line='17' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='peak_ibits' type-id='type-id-6' visibility='default' filepath='../lib/librte_bitratestats/rte_bitrate.c' line='18' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='peak_obits' type-id='type-id-6' visibility='default' filepath='../lib/librte_bitratestats/rte_bitrate.c' line='19' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='mean_ibits' type-id='type-id-6' visibility='default' filepath='../lib/librte_bitratestats/rte_bitrate.c' line='20' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <var-decl name='mean_obits' type-id='type-id-6' visibility='default' filepath='../lib/librte_bitratestats/rte_bitrate.c' line='21' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <var-decl name='ewma_ibits' type-id='type-id-6' visibility='default' filepath='../lib/librte_bitratestats/rte_bitrate.c' line='22' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='448'>
+        <var-decl name='ewma_obits' type-id='type-id-6' visibility='default' filepath='../lib/librte_bitratestats/rte_bitrate.c' line='23' column='1'/>
+      </data-member>
+    </class-decl>
+    <type-decl name='unsigned long int' size-in-bits='64' id='type-id-7'/>
+    <typedef-decl name='__uint64_t' type-id='type-id-7' filepath='/usr/include/bits/types.h' line='45' column='1' id='type-id-8'/>
+    <typedef-decl name='uint64_t' type-id='type-id-8' filepath='/usr/include/bits/stdint-uintn.h' line='27' column='1' id='type-id-6'/>
+
+    <array-type-def dimensions='1' type-id='type-id-5' size-in-bits='16384' id='type-id-3'>
+      <subrange length='32' type-id='type-id-7' id='type-id-9'/>
+
+    </array-type-def>
+    <type-decl name='unsigned short int' size-in-bits='16' id='type-id-10'/>
+    <typedef-decl name='__uint16_t' type-id='type-id-10' filepath='/usr/include/bits/types.h' line='40' column='1' id='type-id-11'/>
+    <typedef-decl name='uint16_t' type-id='type-id-11' filepath='/usr/include/bits/stdint-uintn.h' line='25' column='1' id='type-id-4'/>
+    <pointer-type-def type-id='type-id-2' size-in-bits='64' id='type-id-12'/>
+    <function-decl name='rte_stats_bitrate_calc' mangled-name='rte_stats_bitrate_calc' filepath='../lib/librte_bitratestats/rte_bitrate.c' line='58' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_stats_bitrate_calc@@DPDK_20.0'>
+      <parameter type-id='type-id-12' name='bitrate_data' filepath='../lib/librte_bitratestats/rte_bitrate.c' line='58' column='1'/>
+      <parameter type-id='type-id-4' name='port_id' filepath='../lib/librte_bitratestats/rte_bitrate.c' line='59' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='rte_stats_bitrate_reg' mangled-name='rte_stats_bitrate_reg' filepath='../lib/librte_bitratestats/rte_bitrate.c' line='39' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_stats_bitrate_reg@@DPDK_20.0'>
+      <parameter type-id='type-id-12' name='bitrate_data' filepath='../lib/librte_bitratestats/rte_bitrate.c' line='39' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='rte_stats_bitrate_create' mangled-name='rte_stats_bitrate_create' filepath='../lib/librte_bitratestats/rte_bitrate.c' line='32' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_stats_bitrate_create@@DPDK_20.0'>
+      <return type-id='type-id-12'/>
+    </function-decl>
+  </abi-instr>
+</abi-corpus>
diff --git a/lib/.abi/librte_bpf.dump b/lib/.abi/librte_bpf.dump
new file mode 100644
index 000000000..2bcd4a155
--- /dev/null
+++ b/lib/.abi/librte_bpf.dump
@@ -0,0 +1,280 @@
+<abi-corpus path='gcc//lib/librte_bpf.so.0.200' architecture='elf-amd-x86_64' soname='librte_bpf.so.0.200'>
+  <elf-needed>
+    <dependency name='libm.so.6'/>
+    <dependency name='libdl.so.2'/>
+    <dependency name='libnuma.so.1'/>
+    <dependency name='librte_eal.so.20.0'/>
+    <dependency name='librte_kvargs.so.20.0'/>
+    <dependency name='librte_mbuf.so.20.0'/>
+    <dependency name='librte_mempool.so.20.0'/>
+    <dependency name='librte_ring.so.20.0'/>
+    <dependency name='librte_net.so.20.0'/>
+    <dependency name='librte_ethdev.so.20.0'/>
+    <dependency name='librte_meter.so.20.0'/>
+    <dependency name='libelf.so.1'/>
+    <dependency name='libbsd.so.0'/>
+    <dependency name='libpthread.so.0'/>
+    <dependency name='libc.so.6'/>
+    <dependency name='ld-linux-x86-64.so.2'/>
+  </elf-needed>
+  <elf-function-symbols>
+    <elf-symbol name='rte_bpf_destroy' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_bpf_elf_load' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_bpf_eth_rx_elf_load' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_bpf_eth_rx_unload' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_bpf_eth_tx_elf_load' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_bpf_eth_tx_unload' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_bpf_exec' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_bpf_exec_burst' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_bpf_get_jit' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_bpf_load' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+  </elf-function-symbols>
+  <abi-instr version='1.0' address-size='64' path='../lib/librte_bpf/bpf.c' comp-dir-path='/root/klaatz/dpdk/gcc' language='LANG_C99'>
+    <type-decl name='int' size-in-bits='32' id='type-id-1'/>
+    <var-decl name='rte_bpf_logtype' type-id='type-id-1' visibility='default' filepath='../lib/librte_bpf/bpf_impl.h' line='31' column='1'/>
+    <class-decl name='rte_bpf' size-in-bits='704' is-struct='yes' visibility='default' filepath='../lib/librte_bpf/bpf_impl.h' line='17' column='1' id='type-id-2'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='prm' type-id='type-id-3' visibility='default' filepath='../lib/librte_bpf/bpf_impl.h' line='18' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='448'>
+        <var-decl name='jit' type-id='type-id-4' visibility='default' filepath='../lib/librte_bpf/bpf_impl.h' line='19' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='576'>
+        <var-decl name='sz' type-id='type-id-5' visibility='default' filepath='../lib/librte_bpf/bpf_impl.h' line='20' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='640'>
+        <var-decl name='stack_sz' type-id='type-id-6' visibility='default' filepath='../lib/librte_bpf/bpf_impl.h' line='21' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='rte_bpf_prm' size-in-bits='448' is-struct='yes' visibility='default' filepath='../lib/librte_bpf/rte_bpf.h' line='91' column='1' id='type-id-3'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='ins' type-id='type-id-7' visibility='default' filepath='../lib/librte_bpf/rte_bpf.h' line='92' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='nb_ins' type-id='type-id-6' visibility='default' filepath='../lib/librte_bpf/rte_bpf.h' line='93' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='xsym' type-id='type-id-8' visibility='default' filepath='../lib/librte_bpf/rte_bpf.h' line='94' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='nb_xsym' type-id='type-id-6' visibility='default' filepath='../lib/librte_bpf/rte_bpf.h' line='96' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='prog_arg' type-id='type-id-9' visibility='default' filepath='../lib/librte_bpf/rte_bpf.h' line='97' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='ebpf_insn' size-in-bits='64' is-struct='yes' visibility='default' filepath='../lib/librte_bpf/bpf_def.h' line='134' column='1' id='type-id-10'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='code' type-id='type-id-11' visibility='default' filepath='../lib/librte_bpf/bpf_def.h' line='135' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='4'>
+        <var-decl name='dst_reg' type-id='type-id-11' visibility='default' filepath='../lib/librte_bpf/bpf_def.h' line='136' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='8'>
+        <var-decl name='src_reg' type-id='type-id-11' visibility='default' filepath='../lib/librte_bpf/bpf_def.h' line='137' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='16'>
+        <var-decl name='off' type-id='type-id-12' visibility='default' filepath='../lib/librte_bpf/bpf_def.h' line='138' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='imm' type-id='type-id-13' visibility='default' filepath='../lib/librte_bpf/bpf_def.h' line='139' column='1'/>
+      </data-member>
+    </class-decl>
+    <type-decl name='unsigned char' size-in-bits='8' id='type-id-14'/>
+    <typedef-decl name='__uint8_t' type-id='type-id-14' filepath='/usr/include/bits/types.h' line='38' column='1' id='type-id-15'/>
+    <typedef-decl name='uint8_t' type-id='type-id-15' filepath='/usr/include/bits/stdint-uintn.h' line='24' column='1' id='type-id-11'/>
+    <type-decl name='short int' size-in-bits='16' id='type-id-16'/>
+    <typedef-decl name='__int16_t' type-id='type-id-16' filepath='/usr/include/bits/types.h' line='39' column='1' id='type-id-17'/>
+    <typedef-decl name='int16_t' type-id='type-id-17' filepath='/usr/include/bits/stdint-intn.h' line='25' column='1' id='type-id-12'/>
+    <typedef-decl name='__int32_t' type-id='type-id-1' filepath='/usr/include/bits/types.h' line='41' column='1' id='type-id-18'/>
+    <typedef-decl name='int32_t' type-id='type-id-18' filepath='/usr/include/bits/stdint-intn.h' line='26' column='1' id='type-id-13'/>
+    <qualified-type-def type-id='type-id-10' const='yes' id='type-id-19'/>
+    <pointer-type-def type-id='type-id-19' size-in-bits='64' id='type-id-7'/>
+    <type-decl name='unsigned int' size-in-bits='32' id='type-id-20'/>
+    <typedef-decl name='__uint32_t' type-id='type-id-20' filepath='/usr/include/bits/types.h' line='42' column='1' id='type-id-21'/>
+    <typedef-decl name='uint32_t' type-id='type-id-21' filepath='/usr/include/bits/stdint-uintn.h' line='26' column='1' id='type-id-6'/>
+    <class-decl name='rte_bpf_xsym' size-in-bits='1408' is-struct='yes' visibility='default' filepath='../lib/librte_bpf/rte_bpf.h' line='69' column='1' id='type-id-22'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='name' type-id='type-id-23' visibility='default' filepath='../lib/librte_bpf/rte_bpf.h' line='70' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='type' type-id='type-id-24' visibility='default' filepath='../lib/librte_bpf/rte_bpf.h' line='71' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='' type-id='type-id-25' visibility='default'/>
+      </data-member>
+    </class-decl>
+    <type-decl name='char' size-in-bits='8' id='type-id-26'/>
+    <qualified-type-def type-id='type-id-26' const='yes' id='type-id-27'/>
+    <pointer-type-def type-id='type-id-27' size-in-bits='64' id='type-id-23'/>
+    <type-decl name='unnamed-enum-underlying-type' is-anonymous='yes' size-in-bits='32' alignment-in-bits='32' id='type-id-28'/>
+    <enum-decl name='rte_bpf_xtype' filepath='../lib/librte_bpf/rte_bpf.h' line='60' column='1' id='type-id-24'>
+      <underlying-type type-id='type-id-28'/>
+      <enumerator name='RTE_BPF_XTYPE_FUNC' value='0'/>
+      <enumerator name='RTE_BPF_XTYPE_VAR' value='1'/>
+      <enumerator name='RTE_BPF_XTYPE_NUM' value='2'/>
+    </enum-decl>
+    <union-decl name='__anonymous_union__' size-in-bits='1280' is-anonymous='yes' visibility='default' filepath='../lib/librte_bpf/rte_bpf.h' line='72' column='1' id='type-id-25'>
+      <data-member access='private'>
+        <var-decl name='func' type-id='type-id-29' visibility='default' filepath='../lib/librte_bpf/rte_bpf.h' line='80' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='var' type-id='type-id-30' visibility='default' filepath='../lib/librte_bpf/rte_bpf.h' line='84' column='1'/>
+      </data-member>
+    </union-decl>
+    <class-decl name='__anonymous_struct__' size-in-bits='1280' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../lib/librte_bpf/rte_bpf.h' line='73' column='1' id='type-id-29'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='val' type-id='type-id-31' visibility='default' filepath='../lib/librte_bpf/rte_bpf.h' line='74' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='nb_args' type-id='type-id-6' visibility='default' filepath='../lib/librte_bpf/rte_bpf.h' line='76' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='args' type-id='type-id-32' visibility='default' filepath='../lib/librte_bpf/rte_bpf.h' line='77' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='1088'>
+        <var-decl name='ret' type-id='type-id-9' visibility='default' filepath='../lib/librte_bpf/rte_bpf.h' line='79' column='1'/>
+      </data-member>
+    </class-decl>
+    <type-decl name='unsigned long int' size-in-bits='64' id='type-id-33'/>
+    <typedef-decl name='__uint64_t' type-id='type-id-33' filepath='/usr/include/bits/types.h' line='45' column='1' id='type-id-34'/>
+    <typedef-decl name='uint64_t' type-id='type-id-34' filepath='/usr/include/bits/stdint-uintn.h' line='27' column='1' id='type-id-35'/>
+    <pointer-type-def type-id='type-id-36' size-in-bits='64' id='type-id-31'/>
+    <class-decl name='rte_bpf_arg' size-in-bits='192' is-struct='yes' visibility='default' filepath='../lib/librte_bpf/rte_bpf.h' line='41' column='1' id='type-id-9'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='type' type-id='type-id-37' visibility='default' filepath='../lib/librte_bpf/rte_bpf.h' line='42' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='size' type-id='type-id-5' visibility='default' filepath='../lib/librte_bpf/rte_bpf.h' line='47' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='buf_size' type-id='type-id-5' visibility='default' filepath='../lib/librte_bpf/rte_bpf.h' line='48' column='1'/>
+      </data-member>
+    </class-decl>
+    <enum-decl name='rte_bpf_arg_type' filepath='../lib/librte_bpf/rte_bpf.h' line='30' column='1' id='type-id-37'>
+      <underlying-type type-id='type-id-28'/>
+      <enumerator name='RTE_BPF_ARG_UNDEF' value='0'/>
+      <enumerator name='RTE_BPF_ARG_RAW' value='1'/>
+      <enumerator name='RTE_BPF_ARG_PTR' value='16'/>
+      <enumerator name='RTE_BPF_ARG_PTR_MBUF' value='17'/>
+      <enumerator name='RTE_BPF_ARG_RESERVED' value='18'/>
+    </enum-decl>
+    <typedef-decl name='size_t' type-id='type-id-33' filepath='/usr/lib/gcc/x86_64-redhat-linux/9/include/stddef.h' line='209' column='1' id='type-id-5'/>
+
+    <array-type-def dimensions='1' type-id='type-id-9' size-in-bits='960' id='type-id-32'>
+      <subrange length='5' type-id='type-id-33' id='type-id-38'/>
+
+    </array-type-def>
+    <class-decl name='__anonymous_struct__' size-in-bits='256' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../lib/librte_bpf/rte_bpf.h' line='81' column='1' id='type-id-30'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='val' type-id='type-id-39' visibility='default' filepath='../lib/librte_bpf/rte_bpf.h' line='82' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='desc' type-id='type-id-9' visibility='default' filepath='../lib/librte_bpf/rte_bpf.h' line='83' column='1'/>
+      </data-member>
+    </class-decl>
+    <type-decl name='void' id='type-id-40'/>
+    <pointer-type-def type-id='type-id-40' size-in-bits='64' id='type-id-39'/>
+    <qualified-type-def type-id='type-id-22' const='yes' id='type-id-41'/>
+    <pointer-type-def type-id='type-id-41' size-in-bits='64' id='type-id-8'/>
+    <class-decl name='rte_bpf_jit' size-in-bits='128' is-struct='yes' visibility='default' filepath='../lib/librte_bpf/rte_bpf.h' line='103' column='1' id='type-id-4'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='func' type-id='type-id-42' visibility='default' filepath='../lib/librte_bpf/rte_bpf.h' line='104' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='sz' type-id='type-id-5' visibility='default' filepath='../lib/librte_bpf/rte_bpf.h' line='105' column='1'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-43' size-in-bits='64' id='type-id-42'/>
+    <qualified-type-def type-id='type-id-2' const='yes' id='type-id-44'/>
+    <pointer-type-def type-id='type-id-44' size-in-bits='64' id='type-id-45'/>
+    <pointer-type-def type-id='type-id-4' size-in-bits='64' id='type-id-46'/>
+    <function-decl name='rte_bpf_get_jit' mangled-name='rte_bpf_get_jit' filepath='../lib/librte_bpf/bpf.c' line='30' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_bpf_get_jit@@EXPERIMENTAL'>
+      <parameter type-id='type-id-45' name='bpf' filepath='../lib/librte_bpf/bpf.c' line='30' column='1'/>
+      <parameter type-id='type-id-46' name='jit' filepath='../lib/librte_bpf/bpf.c' line='30' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <pointer-type-def type-id='type-id-2' size-in-bits='64' id='type-id-47'/>
+    <function-decl name='rte_bpf_destroy' mangled-name='rte_bpf_destroy' filepath='../lib/librte_bpf/bpf.c' line='20' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_bpf_destroy@@EXPERIMENTAL'>
+      <parameter type-id='type-id-47' name='bpf' filepath='../lib/librte_bpf/bpf.c' line='20' column='1'/>
+      <return type-id='type-id-40'/>
+    </function-decl>
+    <function-type size-in-bits='64' id='type-id-36'>
+      <parameter type-id='type-id-35'/>
+      <parameter type-id='type-id-35'/>
+      <parameter type-id='type-id-35'/>
+      <parameter type-id='type-id-35'/>
+      <parameter type-id='type-id-35'/>
+      <return type-id='type-id-35'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-43'>
+      <parameter type-id='type-id-39'/>
+      <return type-id='type-id-35'/>
+    </function-type>
+  </abi-instr>
+  <abi-instr version='1.0' address-size='64' path='../lib/librte_bpf/bpf_exec.c' comp-dir-path='/root/klaatz/dpdk/gcc' language='LANG_C99'>
+    <pointer-type-def type-id='type-id-39' size-in-bits='64' id='type-id-48'/>
+    <pointer-type-def type-id='type-id-35' size-in-bits='64' id='type-id-49'/>
+    <function-decl name='rte_bpf_exec_burst' mangled-name='rte_bpf_exec_burst' filepath='../lib/librte_bpf/bpf_exec.c' line='428' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_bpf_exec_burst@@EXPERIMENTAL'>
+      <parameter type-id='type-id-45' name='bpf' filepath='../lib/librte_bpf/bpf_exec.c' line='428' column='1'/>
+      <parameter type-id='type-id-48' name='ctx' filepath='../lib/librte_bpf/bpf_exec.c' line='428' column='1'/>
+      <parameter type-id='type-id-49' name='rc' filepath='../lib/librte_bpf/bpf_exec.c' line='428' column='1'/>
+      <parameter type-id='type-id-6' name='num' filepath='../lib/librte_bpf/bpf_exec.c' line='429' column='1'/>
+      <return type-id='type-id-6'/>
+    </function-decl>
+    <function-decl name='rte_bpf_exec' mangled-name='rte_bpf_exec' filepath='../lib/librte_bpf/bpf_exec.c' line='447' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_bpf_exec@@EXPERIMENTAL'>
+      <parameter type-id='type-id-45' name='bpf' filepath='../lib/librte_bpf/bpf_exec.c' line='447' column='1'/>
+      <parameter type-id='type-id-39' name='ctx' filepath='../lib/librte_bpf/bpf_exec.c' line='447' column='1'/>
+      <return type-id='type-id-35'/>
+    </function-decl>
+  </abi-instr>
+  <abi-instr version='1.0' address-size='64' path='../lib/librte_bpf/bpf_load.c' comp-dir-path='/root/klaatz/dpdk/gcc' language='LANG_C99'>
+    <qualified-type-def type-id='type-id-3' const='yes' id='type-id-50'/>
+    <pointer-type-def type-id='type-id-50' size-in-bits='64' id='type-id-51'/>
+    <function-decl name='rte_bpf_load' mangled-name='rte_bpf_load' filepath='../lib/librte_bpf/bpf_load.c' line='90' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_bpf_load@@EXPERIMENTAL'>
+      <parameter type-id='type-id-51' name='prm' filepath='../lib/librte_bpf/bpf_load.c' line='90' column='1'/>
+      <return type-id='type-id-47'/>
+    </function-decl>
+  </abi-instr>
+  <abi-instr version='1.0' address-size='64' path='../lib/librte_bpf/bpf_pkt.c' comp-dir-path='/root/klaatz/dpdk/gcc' language='LANG_C99'>
+    <type-decl name='unsigned short int' size-in-bits='16' id='type-id-52'/>
+    <typedef-decl name='__uint16_t' type-id='type-id-52' filepath='/usr/include/bits/types.h' line='40' column='1' id='type-id-53'/>
+    <typedef-decl name='uint16_t' type-id='type-id-53' filepath='/usr/include/bits/stdint-uintn.h' line='25' column='1' id='type-id-54'/>
+    <function-decl name='rte_bpf_eth_tx_elf_load' mangled-name='rte_bpf_eth_tx_elf_load' filepath='../lib/librte_bpf/bpf_pkt.c' line='592' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_bpf_eth_tx_elf_load@@EXPERIMENTAL'>
+      <parameter type-id='type-id-54' name='port' filepath='../lib/librte_bpf/bpf_pkt.c' line='592' column='1'/>
+      <parameter type-id='type-id-54' name='queue' filepath='../lib/librte_bpf/bpf_pkt.c' line='592' column='1'/>
+      <parameter type-id='type-id-51' name='prm' filepath='../lib/librte_bpf/bpf_pkt.c' line='593' column='1'/>
+      <parameter type-id='type-id-23' name='fname' filepath='../lib/librte_bpf/bpf_pkt.c' line='593' column='1'/>
+      <parameter type-id='type-id-23' name='sname' filepath='../lib/librte_bpf/bpf_pkt.c' line='593' column='1'/>
+      <parameter type-id='type-id-6' name='flags' filepath='../lib/librte_bpf/bpf_pkt.c' line='594' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='rte_bpf_eth_rx_elf_load' mangled-name='rte_bpf_eth_rx_elf_load' filepath='../lib/librte_bpf/bpf_pkt.c' line='576' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_bpf_eth_rx_elf_load@@EXPERIMENTAL'>
+      <parameter type-id='type-id-54' name='port' filepath='../lib/librte_bpf/bpf_pkt.c' line='592' column='1'/>
+      <parameter type-id='type-id-54' name='queue' filepath='../lib/librte_bpf/bpf_pkt.c' line='592' column='1'/>
+      <parameter type-id='type-id-51' name='prm' filepath='../lib/librte_bpf/bpf_pkt.c' line='593' column='1'/>
+      <parameter type-id='type-id-23' name='fname' filepath='../lib/librte_bpf/bpf_pkt.c' line='593' column='1'/>
+      <parameter type-id='type-id-23' name='sname' filepath='../lib/librte_bpf/bpf_pkt.c' line='593' column='1'/>
+      <parameter type-id='type-id-6' name='flags' filepath='../lib/librte_bpf/bpf_pkt.c' line='594' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='rte_bpf_eth_tx_unload' mangled-name='rte_bpf_eth_tx_unload' filepath='../lib/librte_bpf/bpf_pkt.c' line='495' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_bpf_eth_tx_unload@@EXPERIMENTAL'>
+      <parameter type-id='type-id-54' name='port' filepath='../lib/librte_bpf/bpf_pkt.c' line='495' column='1'/>
+      <parameter type-id='type-id-54' name='queue' filepath='../lib/librte_bpf/bpf_pkt.c' line='495' column='1'/>
+      <return type-id='type-id-40'/>
+    </function-decl>
+    <function-decl name='rte_bpf_eth_rx_unload' mangled-name='rte_bpf_eth_rx_unload' filepath='../lib/librte_bpf/bpf_pkt.c' line='484' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_bpf_eth_rx_unload@@EXPERIMENTAL'>
+      <parameter type-id='type-id-54' name='port' filepath='../lib/librte_bpf/bpf_pkt.c' line='495' column='1'/>
+      <parameter type-id='type-id-54' name='queue' filepath='../lib/librte_bpf/bpf_pkt.c' line='495' column='1'/>
+      <return type-id='type-id-40'/>
+    </function-decl>
+  </abi-instr>
+  <abi-instr version='1.0' address-size='64' path='../lib/librte_bpf/bpf_load_elf.c' comp-dir-path='/root/klaatz/dpdk/gcc' language='LANG_C99'>
+    <function-decl name='rte_bpf_elf_load' mangled-name='rte_bpf_elf_load' filepath='../lib/librte_bpf/bpf_load_elf.c' line='298' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_bpf_elf_load@@EXPERIMENTAL'>
+      <parameter type-id='type-id-51' name='prm' filepath='../lib/librte_bpf/bpf_load_elf.c' line='298' column='1'/>
+      <parameter type-id='type-id-23' name='fname' filepath='../lib/librte_bpf/bpf_load_elf.c' line='298' column='1'/>
+      <parameter type-id='type-id-23' name='sname' filepath='../lib/librte_bpf/bpf_load_elf.c' line='299' column='1'/>
+      <return type-id='type-id-47'/>
+    </function-decl>
+  </abi-instr>
+</abi-corpus>
diff --git a/lib/.abi/librte_cfgfile.dump b/lib/.abi/librte_cfgfile.dump
new file mode 100644
index 000000000..d3874b35d
--- /dev/null
+++ b/lib/.abi/librte_cfgfile.dump
@@ -0,0 +1,188 @@
+<abi-corpus path='gcc//lib/librte_cfgfile.so.20.0' architecture='elf-amd-x86_64' soname='librte_cfgfile.so.20.0'>
+  <elf-needed>
+    <dependency name='libm.so.6'/>
+    <dependency name='libdl.so.2'/>
+    <dependency name='libnuma.so.1'/>
+    <dependency name='librte_eal.so.20.0'/>
+    <dependency name='librte_kvargs.so.20.0'/>
+    <dependency name='libbsd.so.0'/>
+    <dependency name='libpthread.so.0'/>
+    <dependency name='libc.so.6'/>
+  </elf-needed>
+  <elf-function-symbols>
+    <elf-symbol name='rte_cfgfile_add_entry' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cfgfile_add_section' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cfgfile_close' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cfgfile_create' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cfgfile_get_entry' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cfgfile_has_entry' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cfgfile_has_section' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cfgfile_load' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cfgfile_load_with_params' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cfgfile_num_sections' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cfgfile_save' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cfgfile_section_entries' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cfgfile_section_entries_by_index' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cfgfile_section_num_entries' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cfgfile_sections' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cfgfile_set_entry' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+  </elf-function-symbols>
+  <abi-instr version='1.0' address-size='64' path='../lib/librte_cfgfile/rte_cfgfile.c' comp-dir-path='/root/klaatz/dpdk/gcc' language='LANG_C99'>
+    <type-decl name='int' size-in-bits='32' id='type-id-1'/>
+    <class-decl name='rte_cfgfile' size-in-bits='192' is-struct='yes' visibility='default' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='23' column='1' id='type-id-2'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='flags' type-id='type-id-1' visibility='default' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='24' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='num_sections' type-id='type-id-1' visibility='default' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='25' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='allocated_sections' type-id='type-id-1' visibility='default' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='26' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='sections' type-id='type-id-3' visibility='default' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='27' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='rte_cfgfile_section' size-in-bits='640' is-struct='yes' visibility='default' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='16' column='1' id='type-id-4'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='name' type-id='type-id-5' visibility='default' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='17' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='512'>
+        <var-decl name='num_entries' type-id='type-id-1' visibility='default' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='18' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='544'>
+        <var-decl name='allocated_entries' type-id='type-id-1' visibility='default' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='19' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='576'>
+        <var-decl name='entries' type-id='type-id-6' visibility='default' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='20' column='1'/>
+      </data-member>
+    </class-decl>
+    <type-decl name='char' size-in-bits='8' id='type-id-7'/>
+    <type-decl name='unsigned long int' size-in-bits='64' id='type-id-8'/>
+
+    <array-type-def dimensions='1' type-id='type-id-7' size-in-bits='512' id='type-id-5'>
+      <subrange length='64' type-id='type-id-8' id='type-id-9'/>
+
+    </array-type-def>
+    <class-decl name='rte_cfgfile_entry' size-in-bits='2560' is-struct='yes' visibility='default' filepath='../lib/librte_cfgfile/rte_cfgfile.h' line='35' column='1' id='type-id-10'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='name' type-id='type-id-5' visibility='default' filepath='../lib/librte_cfgfile/rte_cfgfile.h' line='36' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='512'>
+        <var-decl name='value' type-id='type-id-11' visibility='default' filepath='../lib/librte_cfgfile/rte_cfgfile.h' line='37' column='1'/>
+      </data-member>
+    </class-decl>
+
+    <array-type-def dimensions='1' type-id='type-id-7' size-in-bits='2048' id='type-id-11'>
+      <subrange length='256' type-id='type-id-8' id='type-id-12'/>
+
+    </array-type-def>
+    <pointer-type-def type-id='type-id-10' size-in-bits='64' id='type-id-6'/>
+    <pointer-type-def type-id='type-id-4' size-in-bits='64' id='type-id-3'/>
+    <pointer-type-def type-id='type-id-2' size-in-bits='64' id='type-id-13'/>
+    <qualified-type-def type-id='type-id-7' const='yes' id='type-id-14'/>
+    <pointer-type-def type-id='type-id-14' size-in-bits='64' id='type-id-15'/>
+    <function-decl name='rte_cfgfile_has_entry' mangled-name='rte_cfgfile_has_entry' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='560' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cfgfile_has_entry@@DPDK_20.0'>
+      <parameter type-id='type-id-13' name='cfg' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='560' column='1'/>
+      <parameter type-id='type-id-15' name='sectionname' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='560' column='1'/>
+      <parameter type-id='type-id-15' name='entryname' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='561' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='rte_cfgfile_get_entry' mangled-name='rte_cfgfile_get_entry' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='545' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cfgfile_get_entry@@DPDK_20.0'>
+      <parameter type-id='type-id-13' name='cfg' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='545' column='1'/>
+      <parameter type-id='type-id-15' name='sectionname' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='545' column='1'/>
+      <parameter type-id='type-id-15' name='entryname' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='546' column='1'/>
+      <return type-id='type-id-15'/>
+    </function-decl>
+    <pointer-type-def type-id='type-id-7' size-in-bits='64' id='type-id-16'/>
+    <function-decl name='rte_cfgfile_section_entries_by_index' mangled-name='rte_cfgfile_section_entries_by_index' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='528' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cfgfile_section_entries_by_index@@DPDK_20.0'>
+      <parameter type-id='type-id-13' name='cfg' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='528' column='1'/>
+      <parameter type-id='type-id-1' name='index' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='528' column='1'/>
+      <parameter type-id='type-id-16' name='sectionname' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='529' column='1'/>
+      <parameter type-id='type-id-6' name='entries' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='530' column='1'/>
+      <parameter type-id='type-id-1' name='max_entries' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='530' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='rte_cfgfile_section_entries' mangled-name='rte_cfgfile_section_entries' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='515' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cfgfile_section_entries@@DPDK_20.0'>
+      <parameter type-id='type-id-13' name='cfg' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='515' column='1'/>
+      <parameter type-id='type-id-15' name='sectionname' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='515' column='1'/>
+      <parameter type-id='type-id-6' name='entries' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='516' column='1'/>
+      <parameter type-id='type-id-1' name='max_entries' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='516' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='rte_cfgfile_section_num_entries' mangled-name='rte_cfgfile_section_num_entries' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='493' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cfgfile_section_num_entries@@DPDK_20.0'>
+      <parameter type-id='type-id-13' name='cfg' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='493' column='1'/>
+      <parameter type-id='type-id-15' name='sectionname' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='494' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='rte_cfgfile_has_section' mangled-name='rte_cfgfile_has_section' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='487' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cfgfile_has_section@@DPDK_20.0'>
+      <parameter type-id='type-id-13' name='cfg' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='487' column='1'/>
+      <parameter type-id='type-id-15' name='sectionname' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='487' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <pointer-type-def type-id='type-id-16' size-in-bits='64' id='type-id-17'/>
+    <function-decl name='rte_cfgfile_sections' mangled-name='rte_cfgfile_sections' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='475' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cfgfile_sections@@DPDK_20.0'>
+      <parameter type-id='type-id-13' name='cfg' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='475' column='1'/>
+      <parameter type-id='type-id-17' name='sections' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='475' column='1'/>
+      <parameter type-id='type-id-1' name='max_sections' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='476' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <typedef-decl name='size_t' type-id='type-id-8' filepath='/usr/lib/gcc/x86_64-redhat-linux/9/include/stddef.h' line='209' column='1' id='type-id-18'/>
+    <function-decl name='rte_cfgfile_num_sections' mangled-name='rte_cfgfile_num_sections' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='462' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cfgfile_num_sections@@DPDK_20.0'>
+      <parameter type-id='type-id-13' name='cfg' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='462' column='1'/>
+      <parameter type-id='type-id-15' name='sectionname' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='462' column='1'/>
+      <parameter type-id='type-id-18' name='length' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='463' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='rte_cfgfile_close' mangled-name='rte_cfgfile_close' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='438' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cfgfile_close@@DPDK_20.0'>
+      <parameter type-id='type-id-13' name='cfg' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='438' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='rte_cfgfile_save' mangled-name='rte_cfgfile_save' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='414' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cfgfile_save@@DPDK_20.0'>
+      <parameter type-id='type-id-13' name='cfg' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='414' column='1'/>
+      <parameter type-id='type-id-15' name='filename' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='414' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='rte_cfgfile_set_entry' mangled-name='rte_cfgfile_set_entry' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='386' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cfgfile_set_entry@@DPDK_20.0'>
+      <parameter type-id='type-id-13' name='cfg' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='386' column='1'/>
+      <parameter type-id='type-id-15' name='sectionname' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='386' column='1'/>
+      <parameter type-id='type-id-15' name='entryname' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='387' column='1'/>
+      <parameter type-id='type-id-15' name='entryvalue' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='387' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='rte_cfgfile_add_entry' mangled-name='rte_cfgfile_add_entry' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='362' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cfgfile_add_entry@@DPDK_20.0'>
+      <parameter type-id='type-id-13' name='cfg' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='362' column='1'/>
+      <parameter type-id='type-id-15' name='sectionname' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='363' column='1'/>
+      <parameter type-id='type-id-15' name='entryname' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='363' column='1'/>
+      <parameter type-id='type-id-15' name='entryvalue' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='364' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='rte_cfgfile_add_section' mangled-name='rte_cfgfile_add_section' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='322' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cfgfile_add_section@@DPDK_20.0'>
+      <parameter type-id='type-id-13' name='cfg' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='322' column='1'/>
+      <parameter type-id='type-id-15' name='sectionname' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='322' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='rte_cfgfile_create' mangled-name='rte_cfgfile_create' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='270' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cfgfile_create@@DPDK_20.0'>
+      <parameter type-id='type-id-1' name='flags' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='270' column='1'/>
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <class-decl name='rte_cfgfile_parameters' size-in-bits='8' is-struct='yes' visibility='default' filepath='../lib/librte_cfgfile/rte_cfgfile.h' line='41' column='1' id='type-id-19'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='comment_character' type-id='type-id-7' visibility='default' filepath='../lib/librte_cfgfile/rte_cfgfile.h' line='43' column='1'/>
+      </data-member>
+    </class-decl>
+    <qualified-type-def type-id='type-id-19' const='yes' id='type-id-20'/>
+    <pointer-type-def type-id='type-id-20' size-in-bits='64' id='type-id-21'/>
+    <function-decl name='rte_cfgfile_load_with_params' mangled-name='rte_cfgfile_load_with_params' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='167' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cfgfile_load_with_params@@DPDK_20.0'>
+      <parameter type-id='type-id-15' name='filename' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='167' column='1'/>
+      <parameter type-id='type-id-1' name='flags' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='167' column='1'/>
+      <parameter type-id='type-id-21' name='params' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='168' column='1'/>
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <function-decl name='rte_cfgfile_load' mangled-name='rte_cfgfile_load' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='160' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cfgfile_load@@DPDK_20.0'>
+      <parameter type-id='type-id-15' name='filename' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='160' column='1'/>
+      <parameter type-id='type-id-1' name='flags' filepath='../lib/librte_cfgfile/rte_cfgfile.c' line='160' column='1'/>
+      <return type-id='type-id-13'/>
+    </function-decl>
+  </abi-instr>
+</abi-corpus>
diff --git a/lib/.abi/librte_cmdline.dump b/lib/.abi/librte_cmdline.dump
new file mode 100644
index 000000000..103507c79
--- /dev/null
+++ b/lib/.abi/librte_cmdline.dump
@@ -0,0 +1,728 @@
+<abi-corpus path='gcc//lib/librte_cmdline.so.20.0' architecture='elf-amd-x86_64' soname='librte_cmdline.so.20.0'>
+  <elf-needed>
+    <dependency name='libm.so.6'/>
+    <dependency name='libdl.so.2'/>
+    <dependency name='libnuma.so.1'/>
+    <dependency name='librte_eal.so.20.0'/>
+    <dependency name='librte_kvargs.so.20.0'/>
+    <dependency name='librte_net.so.20.0'/>
+    <dependency name='librte_mbuf.so.20.0'/>
+    <dependency name='librte_mempool.so.20.0'/>
+    <dependency name='librte_ring.so.20.0'/>
+    <dependency name='libbsd.so.0'/>
+    <dependency name='libpthread.so.0'/>
+    <dependency name='libc.so.6'/>
+  </elf-needed>
+  <elf-function-symbols>
+    <elf-symbol name='cirbuf_add_buf_head' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cirbuf_add_buf_tail' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cirbuf_add_head' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cirbuf_add_head_safe' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cirbuf_add_tail' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cirbuf_add_tail_safe' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cirbuf_align_left' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cirbuf_align_right' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cirbuf_del_buf_head' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cirbuf_del_buf_tail' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cirbuf_del_head' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cirbuf_del_head_safe' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cirbuf_del_tail' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cirbuf_del_tail_safe' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cirbuf_get_buf_head' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cirbuf_get_buf_tail' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cirbuf_get_head' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cirbuf_get_tail' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cirbuf_init' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cmdline_complete' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cmdline_complete_get_elt_string' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cmdline_complete_get_nb_string' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cmdline_file_new' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cmdline_free' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cmdline_get_help_etheraddr' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cmdline_get_help_ipaddr' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cmdline_get_help_num' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cmdline_get_help_portlist' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cmdline_get_help_string' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cmdline_in' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cmdline_interact' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cmdline_isendoftoken' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cmdline_new' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cmdline_parse' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cmdline_parse_etheraddr' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cmdline_parse_ipaddr' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cmdline_parse_num' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cmdline_parse_portlist' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cmdline_parse_string' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cmdline_poll' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cmdline_printf' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cmdline_quit' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cmdline_set_prompt' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cmdline_stdin_exit' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cmdline_stdin_new' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cmdline_write_char' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rdline_add_history' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rdline_char_in' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rdline_clear_history' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rdline_get_buffer' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rdline_get_history_item' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rdline_init' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rdline_newline' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rdline_quit' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rdline_redisplay' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rdline_reset' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rdline_restart' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rdline_stop' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='vt100_init' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='vt100_parser' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+  </elf-function-symbols>
+  <elf-variable-symbols>
+    <elf-symbol name='cmdline_token_etheraddr_ops' size='32' version='DPDK_20.0' is-default-version='yes' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cmdline_token_ipaddr_ops' size='32' version='DPDK_20.0' is-default-version='yes' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cmdline_token_num_ops' size='32' version='DPDK_20.0' is-default-version='yes' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cmdline_token_portlist_ops' size='32' version='DPDK_20.0' is-default-version='yes' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='cmdline_token_string_ops' size='32' version='DPDK_20.0' is-default-version='yes' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+  </elf-variable-symbols>
+  <abi-instr version='1.0' address-size='64' path='../lib/librte_cmdline/cmdline.c' comp-dir-path='/root/klaatz/dpdk/gcc' language='LANG_C99'>
+    <type-decl name='void' id='type-id-1'/>
+    <class-decl name='cmdline' size-in-bits='80192' is-struct='yes' visibility='default' filepath='../lib/librte_cmdline/cmdline.h' line='24' column='1' id='type-id-2'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='s_in' type-id='type-id-3' visibility='default' filepath='../lib/librte_cmdline/cmdline.h' line='25' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='s_out' type-id='type-id-3' visibility='default' filepath='../lib/librte_cmdline/cmdline.h' line='26' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='ctx' type-id='type-id-4' visibility='default' filepath='../lib/librte_cmdline/cmdline.h' line='27' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='rdl' type-id='type-id-5' visibility='default' filepath='../lib/librte_cmdline/cmdline.h' line='28' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='79424'>
+        <var-decl name='prompt' type-id='type-id-6' visibility='default' filepath='../lib/librte_cmdline/cmdline.h' line='29' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='79680'>
+        <var-decl name='oldterm' type-id='type-id-7' visibility='default' filepath='../lib/librte_cmdline/cmdline.h' line='30' column='1'/>
+      </data-member>
+    </class-decl>
+    <type-decl name='int' size-in-bits='32' id='type-id-3'/>
+    <class-decl name='cmdline_inst' size-in-bits='192' is-struct='yes' visibility='default' filepath='../lib/librte_cmdline/cmdline_parse.h' line='131' column='1' id='type-id-8'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='f' type-id='type-id-9' visibility='default' filepath='../lib/librte_cmdline/cmdline_parse.h' line='133' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='data' type-id='type-id-10' visibility='default' filepath='../lib/librte_cmdline/cmdline_parse.h' line='134' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='help_str' type-id='type-id-11' visibility='default' filepath='../lib/librte_cmdline/cmdline_parse.h' line='135' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='tokens' type-id='type-id-12' visibility='default' filepath='../lib/librte_cmdline/cmdline_parse.h' line='136' column='1'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-1' size-in-bits='64' id='type-id-10'/>
+    <pointer-type-def type-id='type-id-2' size-in-bits='64' id='type-id-13'/>
+    <pointer-type-def type-id='type-id-14' size-in-bits='64' id='type-id-9'/>
+    <type-decl name='char' size-in-bits='8' id='type-id-15'/>
+    <qualified-type-def type-id='type-id-15' const='yes' id='type-id-16'/>
+    <pointer-type-def type-id='type-id-16' size-in-bits='64' id='type-id-11'/>
+    <class-decl name='cmdline_token_hdr' size-in-bits='128' is-struct='yes' visibility='default' filepath='../lib/librte_cmdline/cmdline_parse.h' line='36' column='1' id='type-id-17'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='ops' type-id='type-id-18' visibility='default' filepath='../lib/librte_cmdline/cmdline_parse.h' line='37' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='offset' type-id='type-id-19' visibility='default' filepath='../lib/librte_cmdline/cmdline_parse.h' line='38' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='cmdline_token_ops' size-in-bits='256' is-struct='yes' visibility='default' filepath='../lib/librte_cmdline/cmdline_parse.h' line='61' column='1' id='type-id-20'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='parse' type-id='type-id-21' visibility='default' filepath='../lib/librte_cmdline/cmdline_parse.h' line='63' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='complete_get_nb' type-id='type-id-22' visibility='default' filepath='../lib/librte_cmdline/cmdline_parse.h' line='66' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='complete_get_elt' type-id='type-id-23' visibility='default' filepath='../lib/librte_cmdline/cmdline_parse.h' line='68' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='get_help' type-id='type-id-24' visibility='default' filepath='../lib/librte_cmdline/cmdline_parse.h' line='71' column='1'/>
+      </data-member>
+    </class-decl>
+    <typedef-decl name='cmdline_parse_token_hdr_t' type-id='type-id-17' filepath='../lib/librte_cmdline/cmdline_parse.h' line='40' column='1' id='type-id-25'/>
+    <pointer-type-def type-id='type-id-25' size-in-bits='64' id='type-id-26'/>
+    <type-decl name='unsigned int' size-in-bits='32' id='type-id-19'/>
+    <pointer-type-def type-id='type-id-27' size-in-bits='64' id='type-id-21'/>
+    <pointer-type-def type-id='type-id-28' size-in-bits='64' id='type-id-22'/>
+    <pointer-type-def type-id='type-id-15' size-in-bits='64' id='type-id-29'/>
+    <pointer-type-def type-id='type-id-30' size-in-bits='64' id='type-id-23'/>
+    <pointer-type-def type-id='type-id-31' size-in-bits='64' id='type-id-24'/>
+    <pointer-type-def type-id='type-id-20' size-in-bits='64' id='type-id-18'/>
+    <type-decl name='unsigned long int' size-in-bits='64' id='type-id-32'/>
+
+    <array-type-def dimensions='1' type-id='type-id-26' size-in-bits='infinite' id='type-id-12'>
+      <subrange length='infinite' type-id='type-id-32' id='type-id-33'/>
+
+    </array-type-def>
+    <typedef-decl name='cmdline_parse_inst_t' type-id='type-id-8' filepath='../lib/librte_cmdline/cmdline_parse.h' line='138' column='1' id='type-id-34'/>
+    <pointer-type-def type-id='type-id-34' size-in-bits='64' id='type-id-35'/>
+    <typedef-decl name='cmdline_parse_ctx_t' type-id='type-id-35' filepath='../lib/librte_cmdline/cmdline_parse.h' line='145' column='1' id='type-id-36'/>
+    <pointer-type-def type-id='type-id-36' size-in-bits='64' id='type-id-4'/>
+    <class-decl name='rdline' size-in-bits='79296' is-struct='yes' visibility='default' filepath='../lib/librte_cmdline/cmdline_rdline.h' line='63' column='1' id='type-id-5'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='status' type-id='type-id-37' visibility='default' filepath='../lib/librte_cmdline/cmdline_rdline.h' line='64' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='left' type-id='type-id-38' visibility='default' filepath='../lib/librte_cmdline/cmdline_rdline.h' line='66' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='right' type-id='type-id-38' visibility='default' filepath='../lib/librte_cmdline/cmdline_rdline.h' line='67' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='448'>
+        <var-decl name='left_buf' type-id='type-id-39' visibility='default' filepath='../lib/librte_cmdline/cmdline_rdline.h' line='68' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='4560'>
+        <var-decl name='right_buf' type-id='type-id-40' visibility='default' filepath='../lib/librte_cmdline/cmdline_rdline.h' line='69' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='8656'>
+        <var-decl name='prompt' type-id='type-id-6' visibility='default' filepath='../lib/librte_cmdline/cmdline_rdline.h' line='71' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='8928'>
+        <var-decl name='prompt_size' type-id='type-id-19' visibility='default' filepath='../lib/librte_cmdline/cmdline_rdline.h' line='72' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='8960'>
+        <var-decl name='kill_buf' type-id='type-id-40' visibility='default' filepath='../lib/librte_cmdline/cmdline_rdline.h' line='74' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='13056'>
+        <var-decl name='kill_size' type-id='type-id-19' visibility='default' filepath='../lib/librte_cmdline/cmdline_rdline.h' line='75' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='13120'>
+        <var-decl name='history' type-id='type-id-38' visibility='default' filepath='../lib/librte_cmdline/cmdline_rdline.h' line='78' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='13312'>
+        <var-decl name='history_buf' type-id='type-id-41' visibility='default' filepath='../lib/librte_cmdline/cmdline_rdline.h' line='79' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='78848'>
+        <var-decl name='history_cur_line' type-id='type-id-3' visibility='default' filepath='../lib/librte_cmdline/cmdline_rdline.h' line='80' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='78912'>
+        <var-decl name='write_char' type-id='type-id-42' visibility='default' filepath='../lib/librte_cmdline/cmdline_rdline.h' line='83' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='78976'>
+        <var-decl name='validate' type-id='type-id-43' visibility='default' filepath='../lib/librte_cmdline/cmdline_rdline.h' line='84' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='79040'>
+        <var-decl name='complete' type-id='type-id-44' visibility='default' filepath='../lib/librte_cmdline/cmdline_rdline.h' line='85' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='79104'>
+        <var-decl name='vt100' type-id='type-id-45' visibility='default' filepath='../lib/librte_cmdline/cmdline_rdline.h' line='88' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='79232'>
+        <var-decl name='opaque' type-id='type-id-10' visibility='default' filepath='../lib/librte_cmdline/cmdline_rdline.h' line='91' column='1'/>
+      </data-member>
+    </class-decl>
+    <type-decl name='unnamed-enum-underlying-type' is-anonymous='yes' size-in-bits='32' alignment-in-bits='32' id='type-id-46'/>
+    <enum-decl name='rdline_status' filepath='../lib/librte_cmdline/cmdline_rdline.h' line='48' column='1' id='type-id-37'>
+      <underlying-type type-id='type-id-46'/>
+      <enumerator name='RDLINE_INIT' value='0'/>
+      <enumerator name='RDLINE_RUNNING' value='1'/>
+      <enumerator name='RDLINE_EXITED' value='2'/>
+    </enum-decl>
+    <class-decl name='cirbuf' size-in-bits='192' is-struct='yes' visibility='default' filepath='../lib/librte_cmdline/cmdline_cirbuf.h' line='19' column='1' id='type-id-38'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='maxlen' type-id='type-id-19' visibility='default' filepath='../lib/librte_cmdline/cmdline_cirbuf.h' line='20' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='start' type-id='type-id-19' visibility='default' filepath='../lib/librte_cmdline/cmdline_cirbuf.h' line='21' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='end' type-id='type-id-19' visibility='default' filepath='../lib/librte_cmdline/cmdline_cirbuf.h' line='22' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='96'>
+        <var-decl name='len' type-id='type-id-19' visibility='default' filepath='../lib/librte_cmdline/cmdline_cirbuf.h' line='23' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='buf' type-id='type-id-29' visibility='default' filepath='../lib/librte_cmdline/cmdline_cirbuf.h' line='24' column='1'/>
+      </data-member>
+    </class-decl>
+
+    <array-type-def dimensions='1' type-id='type-id-15' size-in-bits='4112' id='type-id-39'>
+      <subrange length='514' type-id='type-id-32' id='type-id-47'/>
+
+    </array-type-def>
+
+    <array-type-def dimensions='1' type-id='type-id-15' size-in-bits='4096' id='type-id-40'>
+      <subrange length='512' type-id='type-id-32' id='type-id-48'/>
+
+    </array-type-def>
+
+    <array-type-def dimensions='1' type-id='type-id-15' size-in-bits='256' id='type-id-6'>
+      <subrange length='32' type-id='type-id-32' id='type-id-49'/>
+
+    </array-type-def>
+
+    <array-type-def dimensions='1' type-id='type-id-15' size-in-bits='65536' id='type-id-41'>
+      <subrange length='8192' type-id='type-id-32' id='type-id-50'/>
+
+    </array-type-def>
+    <pointer-type-def type-id='type-id-5' size-in-bits='64' id='type-id-51'/>
+    <typedef-decl name='rdline_write_char_t' type-id='type-id-52' filepath='../lib/librte_cmdline/cmdline_rdline.h' line='56' column='1' id='type-id-53'/>
+    <pointer-type-def type-id='type-id-53' size-in-bits='64' id='type-id-42'/>
+    <typedef-decl name='rdline_validate_t' type-id='type-id-54' filepath='../lib/librte_cmdline/cmdline_rdline.h' line='57' column='1' id='type-id-55'/>
+    <pointer-type-def type-id='type-id-55' size-in-bits='64' id='type-id-43'/>
+    <pointer-type-def type-id='type-id-3' size-in-bits='64' id='type-id-56'/>
+    <typedef-decl name='rdline_complete_t' type-id='type-id-57' filepath='../lib/librte_cmdline/cmdline_rdline.h' line='59' column='1' id='type-id-58'/>
+    <pointer-type-def type-id='type-id-58' size-in-bits='64' id='type-id-44'/>
+    <class-decl name='cmdline_vt100' size-in-bits='128' is-struct='yes' visibility='default' filepath='../lib/librte_cmdline/cmdline_vt100.h' line='77' column='1' id='type-id-45'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='bufpos' type-id='type-id-59' visibility='default' filepath='../lib/librte_cmdline/cmdline_vt100.h' line='78' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='8'>
+        <var-decl name='buf' type-id='type-id-60' visibility='default' filepath='../lib/librte_cmdline/cmdline_vt100.h' line='79' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='96'>
+        <var-decl name='state' type-id='type-id-61' visibility='default' filepath='../lib/librte_cmdline/cmdline_vt100.h' line='80' column='1'/>
+      </data-member>
+    </class-decl>
+    <type-decl name='unsigned char' size-in-bits='8' id='type-id-62'/>
+    <typedef-decl name='__uint8_t' type-id='type-id-62' filepath='/usr/include/bits/types.h' line='38' column='1' id='type-id-63'/>
+    <typedef-decl name='uint8_t' type-id='type-id-63' filepath='/usr/include/bits/stdint-uintn.h' line='24' column='1' id='type-id-59'/>
+
+    <array-type-def dimensions='1' type-id='type-id-15' size-in-bits='64' id='type-id-60'>
+      <subrange length='8' type-id='type-id-32' id='type-id-64'/>
+
+    </array-type-def>
+    <enum-decl name='cmdline_vt100_parser_state' filepath='../lib/librte_cmdline/cmdline_vt100.h' line='70' column='1' id='type-id-61'>
+      <underlying-type type-id='type-id-46'/>
+      <enumerator name='CMDLINE_VT100_INIT' value='0'/>
+      <enumerator name='CMDLINE_VT100_ESCAPE' value='1'/>
+      <enumerator name='CMDLINE_VT100_ESCAPE_CSI' value='2'/>
+    </enum-decl>
+    <class-decl name='termios' size-in-bits='480' is-struct='yes' visibility='default' filepath='/usr/include/bits/termios-struct.h' line='24' column='1' id='type-id-7'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='c_iflag' type-id='type-id-65' visibility='default' filepath='/usr/include/bits/termios-struct.h' line='26' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='c_oflag' type-id='type-id-65' visibility='default' filepath='/usr/include/bits/termios-struct.h' line='27' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='c_cflag' type-id='type-id-65' visibility='default' filepath='/usr/include/bits/termios-struct.h' line='28' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='96'>
+        <var-decl name='c_lflag' type-id='type-id-65' visibility='default' filepath='/usr/include/bits/termios-struct.h' line='29' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='c_line' type-id='type-id-66' visibility='default' filepath='/usr/include/bits/termios-struct.h' line='30' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='136'>
+        <var-decl name='c_cc' type-id='type-id-67' visibility='default' filepath='/usr/include/bits/termios-struct.h' line='31' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='416'>
+        <var-decl name='c_ispeed' type-id='type-id-68' visibility='default' filepath='/usr/include/bits/termios-struct.h' line='32' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='448'>
+        <var-decl name='c_ospeed' type-id='type-id-68' visibility='default' filepath='/usr/include/bits/termios-struct.h' line='33' column='1'/>
+      </data-member>
+    </class-decl>
+    <typedef-decl name='tcflag_t' type-id='type-id-19' filepath='/usr/include/bits/termios.h' line='25' column='1' id='type-id-65'/>
+    <typedef-decl name='cc_t' type-id='type-id-62' filepath='/usr/include/bits/termios.h' line='23' column='1' id='type-id-66'/>
+
+    <array-type-def dimensions='1' type-id='type-id-66' size-in-bits='256' id='type-id-67'>
+      <subrange length='32' type-id='type-id-32' id='type-id-49'/>
+
+    </array-type-def>
+    <typedef-decl name='speed_t' type-id='type-id-19' filepath='/usr/include/bits/termios.h' line='24' column='1' id='type-id-68'/>
+    <function-decl name='cmdline_interact' mangled-name='cmdline_interact' filepath='../lib/librte_cmdline/cmdline.c' line='216' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cmdline_interact@@DPDK_20.0'>
+      <parameter type-id='type-id-13' name='cl' filepath='../lib/librte_cmdline/cmdline.c' line='216' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='cmdline_poll' mangled-name='cmdline_poll' filepath='../lib/librte_cmdline/cmdline.c' line='182' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cmdline_poll@@DPDK_20.0'>
+      <parameter type-id='type-id-13' name='cl' filepath='../lib/librte_cmdline/cmdline.c' line='182' column='1'/>
+      <return type-id='type-id-3'/>
+    </function-decl>
+    <function-decl name='cmdline_quit' mangled-name='cmdline_quit' filepath='../lib/librte_cmdline/cmdline.c' line='174' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cmdline_quit@@DPDK_20.0'>
+      <parameter type-id='type-id-13' name='cl' filepath='../lib/librte_cmdline/cmdline.c' line='174' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='cmdline_in' mangled-name='cmdline_in' filepath='../lib/librte_cmdline/cmdline.c' line='137' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cmdline_in@@DPDK_20.0'>
+      <parameter type-id='type-id-13' name='cl' filepath='../lib/librte_cmdline/cmdline.c' line='137' column='1'/>
+      <parameter type-id='type-id-11' name='buf' filepath='../lib/librte_cmdline/cmdline.c' line='137' column='1'/>
+      <parameter type-id='type-id-3' name='size' filepath='../lib/librte_cmdline/cmdline.c' line='137' column='1'/>
+      <return type-id='type-id-3'/>
+    </function-decl>
+    <qualified-type-def type-id='type-id-2' const='yes' id='type-id-69'/>
+    <pointer-type-def type-id='type-id-69' size-in-bits='64' id='type-id-70'/>
+    <function-decl name='cmdline_printf' mangled-name='cmdline_printf' filepath='../lib/librte_cmdline/cmdline.c' line='122' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cmdline_printf@@DPDK_20.0'>
+      <parameter type-id='type-id-70' name='cl' filepath='../lib/librte_cmdline/cmdline.c' line='122' column='1'/>
+      <parameter type-id='type-id-11' name='fmt' filepath='../lib/librte_cmdline/cmdline.c' line='122' column='1'/>
+      <parameter is-variadic='yes'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='cmdline_free' mangled-name='cmdline_free' filepath='../lib/librte_cmdline/cmdline.c' line='107' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cmdline_free@@DPDK_20.0'>
+      <parameter type-id='type-id-13' name='cl' filepath='../lib/librte_cmdline/cmdline.c' line='174' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='cmdline_new' mangled-name='cmdline_new' filepath='../lib/librte_cmdline/cmdline.c' line='76' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cmdline_new@@DPDK_20.0'>
+      <parameter type-id='type-id-4' name='ctx' filepath='../lib/librte_cmdline/cmdline.c' line='76' column='1'/>
+      <parameter type-id='type-id-11' name='prompt' filepath='../lib/librte_cmdline/cmdline.c' line='76' column='1'/>
+      <parameter type-id='type-id-3' name='s_in' filepath='../lib/librte_cmdline/cmdline.c' line='76' column='1'/>
+      <parameter type-id='type-id-3' name='s_out' filepath='../lib/librte_cmdline/cmdline.c' line='76' column='1'/>
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <function-decl name='cmdline_set_prompt' mangled-name='cmdline_set_prompt' filepath='../lib/librte_cmdline/cmdline.c' line='68' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cmdline_set_prompt@@DPDK_20.0'>
+      <parameter type-id='type-id-13' name='cl' filepath='../lib/librte_cmdline/cmdline.c' line='68' column='1'/>
+      <parameter type-id='type-id-11' name='prompt' filepath='../lib/librte_cmdline/cmdline.c' line='68' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='cmdline_write_char' mangled-name='cmdline_write_char' filepath='../lib/librte_cmdline/cmdline.c' line='50' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cmdline_write_char@@DPDK_20.0'>
+      <parameter type-id='type-id-51' name='rdl' filepath='../lib/librte_cmdline/cmdline.c' line='50' column='1'/>
+      <parameter type-id='type-id-15' name='c' filepath='../lib/librte_cmdline/cmdline.c' line='50' column='1'/>
+      <return type-id='type-id-3'/>
+    </function-decl>
+    <function-type size-in-bits='64' id='type-id-28'>
+      <parameter type-id='type-id-26'/>
+      <return type-id='type-id-3'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-31'>
+      <parameter type-id='type-id-26'/>
+      <parameter type-id='type-id-29'/>
+      <parameter type-id='type-id-19'/>
+      <return type-id='type-id-3'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-27'>
+      <parameter type-id='type-id-26'/>
+      <parameter type-id='type-id-11'/>
+      <parameter type-id='type-id-10'/>
+      <parameter type-id='type-id-19'/>
+      <return type-id='type-id-3'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-30'>
+      <parameter type-id='type-id-26'/>
+      <parameter type-id='type-id-3'/>
+      <parameter type-id='type-id-29'/>
+      <parameter type-id='type-id-19'/>
+      <return type-id='type-id-3'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-52'>
+      <parameter type-id='type-id-51'/>
+      <parameter type-id='type-id-15'/>
+      <return type-id='type-id-3'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-57'>
+      <parameter type-id='type-id-51'/>
+      <parameter type-id='type-id-11'/>
+      <parameter type-id='type-id-29'/>
+      <parameter type-id='type-id-19'/>
+      <parameter type-id='type-id-56'/>
+      <return type-id='type-id-3'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-54'>
+      <parameter type-id='type-id-51'/>
+      <parameter type-id='type-id-11'/>
+      <parameter type-id='type-id-19'/>
+      <return type-id='type-id-1'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-14'>
+      <parameter type-id='type-id-10'/>
+      <parameter type-id='type-id-13'/>
+      <parameter type-id='type-id-10'/>
+      <return type-id='type-id-1'/>
+    </function-type>
+  </abi-instr>
+  <abi-instr version='1.0' address-size='64' path='../lib/librte_cmdline/cmdline_cirbuf.c' comp-dir-path='/root/klaatz/dpdk/gcc' language='LANG_C99'>
+    <pointer-type-def type-id='type-id-38' size-in-bits='64' id='type-id-71'/>
+    <function-decl name='cirbuf_get_tail' mangled-name='cirbuf_get_tail' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='409' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cirbuf_get_tail@@DPDK_20.0'>
+      <parameter type-id='type-id-71' name='cbuf' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='409' column='1'/>
+      <return type-id='type-id-15'/>
+    </function-decl>
+    <function-decl name='cirbuf_get_head' mangled-name='cirbuf_get_head' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='401' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cirbuf_get_head@@DPDK_20.0'>
+      <parameter type-id='type-id-71' name='cbuf' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='409' column='1'/>
+      <return type-id='type-id-15'/>
+    </function-decl>
+    <function-decl name='cirbuf_get_buf_tail' mangled-name='cirbuf_get_buf_tail' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='362' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cirbuf_get_buf_tail@@DPDK_20.0'>
+      <parameter type-id='type-id-71' name='cbuf' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='362' column='1'/>
+      <parameter type-id='type-id-29' name='c' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='362' column='1'/>
+      <parameter type-id='type-id-19' name='size' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='362' column='1'/>
+      <return type-id='type-id-3'/>
+    </function-decl>
+    <function-decl name='cirbuf_get_buf_head' mangled-name='cirbuf_get_buf_head' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='324' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cirbuf_get_buf_head@@DPDK_20.0'>
+      <parameter type-id='type-id-71' name='cbuf' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='362' column='1'/>
+      <parameter type-id='type-id-29' name='c' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='362' column='1'/>
+      <parameter type-id='type-id-19' name='size' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='362' column='1'/>
+      <return type-id='type-id-3'/>
+    </function-decl>
+    <function-decl name='cirbuf_del_tail' mangled-name='cirbuf_del_tail' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='316' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cirbuf_del_tail@@DPDK_20.0'>
+      <parameter type-id='type-id-71' name='cbuf' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='316' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='cirbuf_del_tail_safe' mangled-name='cirbuf_del_tail_safe' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='306' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cirbuf_del_tail_safe@@DPDK_20.0'>
+      <parameter type-id='type-id-71' name='cbuf' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='306' column='1'/>
+      <return type-id='type-id-3'/>
+    </function-decl>
+    <function-decl name='cirbuf_del_head' mangled-name='cirbuf_del_head' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='288' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cirbuf_del_head@@DPDK_20.0'>
+      <parameter type-id='type-id-71' name='cbuf' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='316' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='cirbuf_del_head_safe' mangled-name='cirbuf_del_head_safe' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='278' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cirbuf_del_head_safe@@DPDK_20.0'>
+      <parameter type-id='type-id-71' name='cbuf' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='306' column='1'/>
+      <return type-id='type-id-3'/>
+    </function-decl>
+    <function-decl name='cirbuf_del_buf_tail' mangled-name='cirbuf_del_buf_tail' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='248' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cirbuf_del_buf_tail@@DPDK_20.0'>
+      <parameter type-id='type-id-71' name='cbuf' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='248' column='1'/>
+      <parameter type-id='type-id-19' name='size' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='248' column='1'/>
+      <return type-id='type-id-3'/>
+    </function-decl>
+    <function-decl name='cirbuf_del_buf_head' mangled-name='cirbuf_del_buf_head' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='228' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cirbuf_del_buf_head@@DPDK_20.0'>
+      <parameter type-id='type-id-71' name='cbuf' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='248' column='1'/>
+      <parameter type-id='type-id-19' name='size' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='248' column='1'/>
+      <return type-id='type-id-3'/>
+    </function-decl>
+    <function-decl name='cirbuf_align_right' mangled-name='cirbuf_align_right' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='206' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cirbuf_align_right@@DPDK_20.0'>
+      <parameter type-id='type-id-71' name='cbuf' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='306' column='1'/>
+      <return type-id='type-id-3'/>
+    </function-decl>
+    <function-decl name='cirbuf_align_left' mangled-name='cirbuf_align_left' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='185' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cirbuf_align_left@@DPDK_20.0'>
+      <parameter type-id='type-id-71' name='cbuf' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='306' column='1'/>
+      <return type-id='type-id-3'/>
+    </function-decl>
+    <function-decl name='cirbuf_add_tail' mangled-name='cirbuf_add_tail' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='143' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cirbuf_add_tail@@DPDK_20.0'>
+      <parameter type-id='type-id-71' name='cbuf' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='143' column='1'/>
+      <parameter type-id='type-id-15' name='c' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='143' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='cirbuf_add_tail_safe' mangled-name='cirbuf_add_tail_safe' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='133' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cirbuf_add_tail_safe@@DPDK_20.0'>
+      <parameter type-id='type-id-71' name='cbuf' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='133' column='1'/>
+      <parameter type-id='type-id-15' name='c' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='133' column='1'/>
+      <return type-id='type-id-3'/>
+    </function-decl>
+    <function-decl name='cirbuf_add_head' mangled-name='cirbuf_add_head' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='114' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cirbuf_add_head@@DPDK_20.0'>
+      <parameter type-id='type-id-71' name='cbuf' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='143' column='1'/>
+      <parameter type-id='type-id-15' name='c' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='143' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='cirbuf_add_head_safe' mangled-name='cirbuf_add_head_safe' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='104' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cirbuf_add_head_safe@@DPDK_20.0'>
+      <parameter type-id='type-id-71' name='cbuf' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='133' column='1'/>
+      <parameter type-id='type-id-15' name='c' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='133' column='1'/>
+      <return type-id='type-id-3'/>
+    </function-decl>
+    <function-decl name='cirbuf_add_buf_tail' mangled-name='cirbuf_add_buf_tail' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='61' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cirbuf_add_buf_tail@@DPDK_20.0'>
+      <parameter type-id='type-id-71' name='cbuf' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='61' column='1'/>
+      <parameter type-id='type-id-11' name='c' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='61' column='1'/>
+      <parameter type-id='type-id-19' name='n' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='61' column='1'/>
+      <return type-id='type-id-3'/>
+    </function-decl>
+    <function-decl name='cirbuf_add_buf_head' mangled-name='cirbuf_add_buf_head' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='30' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cirbuf_add_buf_head@@DPDK_20.0'>
+      <parameter type-id='type-id-71' name='cbuf' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='61' column='1'/>
+      <parameter type-id='type-id-11' name='c' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='61' column='1'/>
+      <parameter type-id='type-id-19' name='n' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='61' column='1'/>
+      <return type-id='type-id-3'/>
+    </function-decl>
+    <function-decl name='cirbuf_init' mangled-name='cirbuf_init' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='15' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cirbuf_init@@DPDK_20.0'>
+      <parameter type-id='type-id-71' name='cbuf' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='15' column='1'/>
+      <parameter type-id='type-id-29' name='buf' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='15' column='1'/>
+      <parameter type-id='type-id-19' name='start' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='15' column='1'/>
+      <parameter type-id='type-id-19' name='maxlen' filepath='../lib/librte_cmdline/cmdline_cirbuf.c' line='15' column='1'/>
+      <return type-id='type-id-3'/>
+    </function-decl>
+  </abi-instr>
+  <abi-instr version='1.0' address-size='64' path='../lib/librte_cmdline/cmdline_parse.c' comp-dir-path='/root/klaatz/dpdk/gcc' language='LANG_C99'>
+    <function-decl name='cmdline_complete' mangled-name='cmdline_complete' filepath='../lib/librte_cmdline/cmdline_parse.c' line='308' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cmdline_complete@@DPDK_20.0'>
+      <parameter type-id='type-id-13' name='cl' filepath='../lib/librte_cmdline/cmdline_parse.c' line='308' column='1'/>
+      <parameter type-id='type-id-11' name='buf' filepath='../lib/librte_cmdline/cmdline_parse.c' line='308' column='1'/>
+      <parameter type-id='type-id-56' name='state' filepath='../lib/librte_cmdline/cmdline_parse.c' line='308' column='1'/>
+      <parameter type-id='type-id-29' name='dst' filepath='../lib/librte_cmdline/cmdline_parse.c' line='309' column='1'/>
+      <parameter type-id='type-id-19' name='size' filepath='../lib/librte_cmdline/cmdline_parse.c' line='309' column='1'/>
+      <return type-id='type-id-3'/>
+    </function-decl>
+    <function-decl name='cmdline_parse' mangled-name='cmdline_parse' filepath='../lib/librte_cmdline/cmdline_parse.c' line='194' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cmdline_parse@@DPDK_20.0'>
+      <parameter type-id='type-id-13' name='cl' filepath='../lib/librte_cmdline/cmdline_parse.c' line='194' column='1'/>
+      <parameter type-id='type-id-11' name='buf' filepath='../lib/librte_cmdline/cmdline_parse.c' line='194' column='1'/>
+      <return type-id='type-id-3'/>
+    </function-decl>
+    <function-decl name='cmdline_isendoftoken' mangled-name='cmdline_isendoftoken' filepath='../lib/librte_cmdline/cmdline_parse.c' line='60' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cmdline_isendoftoken@@DPDK_20.0'>
+      <parameter type-id='type-id-15' name='c' filepath='../lib/librte_cmdline/cmdline_parse.c' line='60' column='1'/>
+      <return type-id='type-id-3'/>
+    </function-decl>
+  </abi-instr>
+  <abi-instr version='1.0' address-size='64' path='../lib/librte_cmdline/cmdline_parse_etheraddr.c' comp-dir-path='/root/klaatz/dpdk/gcc' language='LANG_C99'>
+    <var-decl name='cmdline_token_etheraddr_ops' type-id='type-id-20' mangled-name='cmdline_token_etheraddr_ops' visibility='default' filepath='../lib/librte_cmdline/cmdline_parse_etheraddr.h' line='21' column='1' elf-symbol-id='cmdline_token_etheraddr_ops@@DPDK_20.0'/>
+    <function-decl name='cmdline_get_help_etheraddr' mangled-name='cmdline_get_help_etheraddr' filepath='../lib/librte_cmdline/cmdline_parse_etheraddr.c' line='61' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cmdline_get_help_etheraddr@@DPDK_20.0'>
+      <parameter type-id='type-id-26' name='tk' filepath='../lib/librte_cmdline/cmdline_parse_etheraddr.c' line='61' column='1'/>
+      <parameter type-id='type-id-29' name='dstbuf' filepath='../lib/librte_cmdline/cmdline_parse_etheraddr.c' line='62' column='1'/>
+      <parameter type-id='type-id-19' name='size' filepath='../lib/librte_cmdline/cmdline_parse_etheraddr.c' line='62' column='1'/>
+      <return type-id='type-id-3'/>
+    </function-decl>
+    <function-decl name='cmdline_parse_etheraddr' mangled-name='cmdline_parse_etheraddr' filepath='../lib/librte_cmdline/cmdline_parse_etheraddr.c' line='30' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cmdline_parse_etheraddr@@DPDK_20.0'>
+      <parameter type-id='type-id-26' name='tk' filepath='../lib/librte_cmdline/cmdline_parse_etheraddr.c' line='30' column='1'/>
+      <parameter type-id='type-id-11' name='buf' filepath='../lib/librte_cmdline/cmdline_parse_etheraddr.c' line='31' column='1'/>
+      <parameter type-id='type-id-10' name='res' filepath='../lib/librte_cmdline/cmdline_parse_etheraddr.c' line='31' column='1'/>
+      <parameter type-id='type-id-19' name='ressize' filepath='../lib/librte_cmdline/cmdline_parse_etheraddr.c' line='31' column='1'/>
+      <return type-id='type-id-3'/>
+    </function-decl>
+  </abi-instr>
+  <abi-instr version='1.0' address-size='64' path='../lib/librte_cmdline/cmdline_parse_ipaddr.c' comp-dir-path='/root/klaatz/dpdk/gcc' language='LANG_C99'>
+    <var-decl name='cmdline_token_ipaddr_ops' type-id='type-id-20' mangled-name='cmdline_token_ipaddr_ops' visibility='default' filepath='../lib/librte_cmdline/cmdline_parse_ipaddr.h' line='41' column='1' elf-symbol-id='cmdline_token_ipaddr_ops@@DPDK_20.0'/>
+    <function-decl name='cmdline_get_help_ipaddr' mangled-name='cmdline_get_help_ipaddr' filepath='../lib/librte_cmdline/cmdline_parse_ipaddr.c' line='99' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cmdline_get_help_ipaddr@@DPDK_20.0'>
+      <parameter type-id='type-id-26' name='tk' filepath='../lib/librte_cmdline/cmdline_parse_etheraddr.c' line='61' column='1'/>
+      <parameter type-id='type-id-29' name='dstbuf' filepath='../lib/librte_cmdline/cmdline_parse_etheraddr.c' line='62' column='1'/>
+      <parameter type-id='type-id-19' name='size' filepath='../lib/librte_cmdline/cmdline_parse_etheraddr.c' line='62' column='1'/>
+      <return type-id='type-id-3'/>
+    </function-decl>
+    <function-decl name='cmdline_parse_ipaddr' mangled-name='cmdline_parse_ipaddr' filepath='../lib/librte_cmdline/cmdline_parse_ipaddr.c' line='34' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cmdline_parse_ipaddr@@DPDK_20.0'>
+      <parameter type-id='type-id-26' name='tk' filepath='../lib/librte_cmdline/cmdline_parse_ipaddr.c' line='34' column='1'/>
+      <parameter type-id='type-id-11' name='buf' filepath='../lib/librte_cmdline/cmdline_parse_ipaddr.c' line='34' column='1'/>
+      <parameter type-id='type-id-10' name='res' filepath='../lib/librte_cmdline/cmdline_parse_ipaddr.c' line='34' column='1'/>
+      <parameter type-id='type-id-19' name='ressize' filepath='../lib/librte_cmdline/cmdline_parse_ipaddr.c' line='35' column='1'/>
+      <return type-id='type-id-3'/>
+    </function-decl>
+  </abi-instr>
+  <abi-instr version='1.0' address-size='64' path='../lib/librte_cmdline/cmdline_parse_num.c' comp-dir-path='/root/klaatz/dpdk/gcc' language='LANG_C99'>
+    <var-decl name='cmdline_token_num_ops' type-id='type-id-20' mangled-name='cmdline_token_num_ops' visibility='default' filepath='../lib/librte_cmdline/cmdline_parse_num.h' line='37' column='1' elf-symbol-id='cmdline_token_num_ops@@DPDK_20.0'/>
+    <function-decl name='cmdline_get_help_num' mangled-name='cmdline_get_help_num' filepath='../lib/librte_cmdline/cmdline_parse_num.c' line='329' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cmdline_get_help_num@@DPDK_20.0'>
+      <parameter type-id='type-id-26' name='tk' filepath='../lib/librte_cmdline/cmdline_parse_num.c' line='329' column='1'/>
+      <parameter type-id='type-id-29' name='dstbuf' filepath='../lib/librte_cmdline/cmdline_parse_num.c' line='329' column='1'/>
+      <parameter type-id='type-id-19' name='size' filepath='../lib/librte_cmdline/cmdline_parse_num.c' line='329' column='1'/>
+      <return type-id='type-id-3'/>
+    </function-decl>
+    <function-decl name='cmdline_parse_num' mangled-name='cmdline_parse_num' filepath='../lib/librte_cmdline/cmdline_parse_num.c' line='100' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cmdline_parse_num@@DPDK_20.0'>
+      <parameter type-id='type-id-26' name='tk' filepath='../lib/librte_cmdline/cmdline_parse_num.c' line='100' column='1'/>
+      <parameter type-id='type-id-11' name='srcbuf' filepath='../lib/librte_cmdline/cmdline_parse_num.c' line='100' column='1'/>
+      <parameter type-id='type-id-10' name='res' filepath='../lib/librte_cmdline/cmdline_parse_num.c' line='100' column='1'/>
+      <parameter type-id='type-id-19' name='ressize' filepath='../lib/librte_cmdline/cmdline_parse_num.c' line='101' column='1'/>
+      <return type-id='type-id-3'/>
+    </function-decl>
+  </abi-instr>
+  <abi-instr version='1.0' address-size='64' path='../lib/librte_cmdline/cmdline_parse_portlist.c' comp-dir-path='/root/klaatz/dpdk/gcc' language='LANG_C99'>
+    <var-decl name='cmdline_token_portlist_ops' type-id='type-id-20' mangled-name='cmdline_token_portlist_ops' visibility='default' filepath='../lib/librte_cmdline/cmdline_parse_portlist.h' line='30' column='1' elf-symbol-id='cmdline_token_portlist_ops@@DPDK_20.0'/>
+    <function-decl name='cmdline_get_help_portlist' mangled-name='cmdline_get_help_portlist' filepath='../lib/librte_cmdline/cmdline_parse_portlist.c' line='111' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cmdline_get_help_portlist@@DPDK_20.0'>
+      <parameter type-id='type-id-26' name='tk' filepath='../lib/librte_cmdline/cmdline_parse_etheraddr.c' line='61' column='1'/>
+      <parameter type-id='type-id-29' name='dstbuf' filepath='../lib/librte_cmdline/cmdline_parse_etheraddr.c' line='62' column='1'/>
+      <parameter type-id='type-id-19' name='size' filepath='../lib/librte_cmdline/cmdline_parse_etheraddr.c' line='62' column='1'/>
+      <return type-id='type-id-3'/>
+    </function-decl>
+    <function-decl name='cmdline_parse_portlist' mangled-name='cmdline_parse_portlist' filepath='../lib/librte_cmdline/cmdline_parse_portlist.c' line='75' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cmdline_parse_portlist@@DPDK_20.0'>
+      <parameter type-id='type-id-26' name='tk' filepath='../lib/librte_cmdline/cmdline_parse_etheraddr.c' line='30' column='1'/>
+      <parameter type-id='type-id-11' name='buf' filepath='../lib/librte_cmdline/cmdline_parse_etheraddr.c' line='31' column='1'/>
+      <parameter type-id='type-id-10' name='res' filepath='../lib/librte_cmdline/cmdline_parse_etheraddr.c' line='31' column='1'/>
+      <parameter type-id='type-id-19' name='ressize' filepath='../lib/librte_cmdline/cmdline_parse_etheraddr.c' line='31' column='1'/>
+      <return type-id='type-id-3'/>
+    </function-decl>
+  </abi-instr>
+  <abi-instr version='1.0' address-size='64' path='../lib/librte_cmdline/cmdline_parse_string.c' comp-dir-path='/root/klaatz/dpdk/gcc' language='LANG_C99'>
+    <var-decl name='cmdline_token_string_ops' type-id='type-id-20' mangled-name='cmdline_token_string_ops' visibility='default' filepath='../lib/librte_cmdline/cmdline_parse_string.h' line='36' column='1' elf-symbol-id='cmdline_token_string_ops@@DPDK_20.0'/>
+    <function-decl name='cmdline_get_help_string' mangled-name='cmdline_get_help_string' filepath='../lib/librte_cmdline/cmdline_parse_string.c' line='194' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cmdline_get_help_string@@DPDK_20.0'>
+      <parameter type-id='type-id-26' name='tk' filepath='../lib/librte_cmdline/cmdline_parse_string.c' line='194' column='1'/>
+      <parameter type-id='type-id-29' name='dstbuf' filepath='../lib/librte_cmdline/cmdline_parse_string.c' line='194' column='1'/>
+      <parameter type-id='type-id-19' name='size' filepath='../lib/librte_cmdline/cmdline_parse_string.c' line='195' column='1'/>
+      <return type-id='type-id-3'/>
+    </function-decl>
+    <function-decl name='cmdline_complete_get_elt_string' mangled-name='cmdline_complete_get_elt_string' filepath='../lib/librte_cmdline/cmdline_parse_string.c' line='162' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cmdline_complete_get_elt_string@@DPDK_20.0'>
+      <parameter type-id='type-id-26' name='tk' filepath='../lib/librte_cmdline/cmdline_parse_string.c' line='162' column='1'/>
+      <parameter type-id='type-id-3' name='idx' filepath='../lib/librte_cmdline/cmdline_parse_string.c' line='162' column='1'/>
+      <parameter type-id='type-id-29' name='dstbuf' filepath='../lib/librte_cmdline/cmdline_parse_string.c' line='163' column='1'/>
+      <parameter type-id='type-id-19' name='size' filepath='../lib/librte_cmdline/cmdline_parse_string.c' line='163' column='1'/>
+      <return type-id='type-id-3'/>
+    </function-decl>
+    <function-decl name='cmdline_complete_get_nb_string' mangled-name='cmdline_complete_get_nb_string' filepath='../lib/librte_cmdline/cmdline_parse_string.c' line='139' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cmdline_complete_get_nb_string@@DPDK_20.0'>
+      <parameter type-id='type-id-26' name='tk' filepath='../lib/librte_cmdline/cmdline_parse_string.c' line='139' column='1'/>
+      <return type-id='type-id-3'/>
+    </function-decl>
+    <function-decl name='cmdline_parse_string' mangled-name='cmdline_parse_string' filepath='../lib/librte_cmdline/cmdline_parse_string.c' line='55' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cmdline_parse_string@@DPDK_20.0'>
+      <parameter type-id='type-id-26' name='tk' filepath='../lib/librte_cmdline/cmdline_parse_string.c' line='55' column='1'/>
+      <parameter type-id='type-id-11' name='buf' filepath='../lib/librte_cmdline/cmdline_parse_string.c' line='55' column='1'/>
+      <parameter type-id='type-id-10' name='res' filepath='../lib/librte_cmdline/cmdline_parse_string.c' line='55' column='1'/>
+      <parameter type-id='type-id-19' name='ressize' filepath='../lib/librte_cmdline/cmdline_parse_string.c' line='56' column='1'/>
+      <return type-id='type-id-3'/>
+    </function-decl>
+  </abi-instr>
+  <abi-instr version='1.0' address-size='64' path='../lib/librte_cmdline/cmdline_rdline.c' comp-dir-path='/root/klaatz/dpdk/gcc' language='LANG_C99'>
+    <function-decl name='rdline_clear_history' mangled-name='rdline_clear_history' filepath='../lib/librte_cmdline/cmdline_rdline.c' line='597' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rdline_clear_history@@DPDK_20.0'>
+      <parameter type-id='type-id-51' name='rdl' filepath='../lib/librte_cmdline/cmdline_rdline.c' line='597' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='rdline_add_history' mangled-name='rdline_add_history' filepath='../lib/librte_cmdline/cmdline_rdline.c' line='568' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rdline_add_history@@DPDK_20.0'>
+      <parameter type-id='type-id-51' name='rdl' filepath='../lib/librte_cmdline/cmdline_rdline.c' line='568' column='1'/>
+      <parameter type-id='type-id-11' name='buf' filepath='../lib/librte_cmdline/cmdline_rdline.c' line='568' column='1'/>
+      <return type-id='type-id-3'/>
+    </function-decl>
+    <function-decl name='rdline_get_history_item' mangled-name='rdline_get_history_item' filepath='../lib/librte_cmdline/cmdline_rdline.c' line='542' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rdline_get_history_item@@DPDK_20.0'>
+      <parameter type-id='type-id-51' name='rdl' filepath='../lib/librte_cmdline/cmdline_rdline.c' line='542' column='1'/>
+      <parameter type-id='type-id-19' name='idx' filepath='../lib/librte_cmdline/cmdline_rdline.c' line='542' column='1'/>
+      <return type-id='type-id-29'/>
+    </function-decl>
+    <function-decl name='rdline_char_in' mangled-name='rdline_char_in' filepath='../lib/librte_cmdline/cmdline_rdline.c' line='171' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rdline_char_in@@DPDK_20.0'>
+      <parameter type-id='type-id-51' name='rdl' filepath='../lib/librte_cmdline/cmdline_rdline.c' line='171' column='1'/>
+      <parameter type-id='type-id-15' name='c' filepath='../lib/librte_cmdline/cmdline_rdline.c' line='171' column='1'/>
+      <return type-id='type-id-3'/>
+    </function-decl>
+    <function-decl name='rdline_redisplay' mangled-name='rdline_redisplay' filepath='../lib/librte_cmdline/cmdline_rdline.c' line='153' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rdline_redisplay@@DPDK_20.0'>
+      <parameter type-id='type-id-51' name='rdl' filepath='../lib/librte_cmdline/cmdline_rdline.c' line='153' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='rdline_get_buffer' mangled-name='rdline_get_buffer' filepath='../lib/librte_cmdline/cmdline_rdline.c' line='117' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rdline_get_buffer@@DPDK_20.0'>
+      <parameter type-id='type-id-51' name='rdl' filepath='../lib/librte_cmdline/cmdline_rdline.c' line='117' column='1'/>
+      <return type-id='type-id-11'/>
+    </function-decl>
+    <function-decl name='rdline_reset' mangled-name='rdline_reset' filepath='../lib/librte_cmdline/cmdline_rdline.c' line='103' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rdline_reset@@DPDK_20.0'>
+      <parameter type-id='type-id-51' name='rdl' filepath='../lib/librte_cmdline/cmdline_rdline.c' line='597' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='rdline_restart' mangled-name='rdline_restart' filepath='../lib/librte_cmdline/cmdline_rdline.c' line='95' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rdline_restart@@DPDK_20.0'>
+      <parameter type-id='type-id-51' name='rdl' filepath='../lib/librte_cmdline/cmdline_rdline.c' line='597' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='rdline_quit' mangled-name='rdline_quit' filepath='../lib/librte_cmdline/cmdline_rdline.c' line='87' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rdline_quit@@DPDK_20.0'>
+      <parameter type-id='type-id-51' name='rdl' filepath='../lib/librte_cmdline/cmdline_rdline.c' line='597' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='rdline_stop' mangled-name='rdline_stop' filepath='../lib/librte_cmdline/cmdline_rdline.c' line='79' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rdline_stop@@DPDK_20.0'>
+      <parameter type-id='type-id-51' name='rdl' filepath='../lib/librte_cmdline/cmdline_rdline.c' line='597' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='rdline_newline' mangled-name='rdline_newline' filepath='../lib/librte_cmdline/cmdline_rdline.c' line='55' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rdline_newline@@DPDK_20.0'>
+      <parameter type-id='type-id-51' name='rdl' filepath='../lib/librte_cmdline/cmdline_rdline.c' line='55' column='1'/>
+      <parameter type-id='type-id-11' name='prompt' filepath='../lib/librte_cmdline/cmdline_rdline.c' line='55' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='rdline_init' mangled-name='rdline_init' filepath='../lib/librte_cmdline/cmdline_rdline.c' line='39' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rdline_init@@DPDK_20.0'>
+      <parameter type-id='type-id-51' name='rdl' filepath='../lib/librte_cmdline/cmdline_rdline.c' line='39' column='1'/>
+      <parameter type-id='type-id-42' name='write_char' filepath='../lib/librte_cmdline/cmdline_rdline.c' line='40' column='1'/>
+      <parameter type-id='type-id-43' name='validate' filepath='../lib/librte_cmdline/cmdline_rdline.c' line='41' column='1'/>
+      <parameter type-id='type-id-44' name='complete' filepath='../lib/librte_cmdline/cmdline_rdline.c' line='42' column='1'/>
+      <return type-id='type-id-3'/>
+    </function-decl>
+  </abi-instr>
+  <abi-instr version='1.0' address-size='64' path='../lib/librte_cmdline/cmdline_socket.c' comp-dir-path='/root/klaatz/dpdk/gcc' language='LANG_C99'>
+    <function-decl name='cmdline_stdin_exit' mangled-name='cmdline_stdin_exit' filepath='../lib/librte_cmdline/cmdline_socket.c' line='59' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cmdline_stdin_exit@@DPDK_20.0'>
+      <parameter type-id='type-id-13' name='cl' filepath='../lib/librte_cmdline/cmdline.c' line='174' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='cmdline_stdin_new' mangled-name='cmdline_stdin_new' filepath='../lib/librte_cmdline/cmdline_socket.c' line='39' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cmdline_stdin_new@@DPDK_20.0'>
+      <parameter type-id='type-id-4' name='ctx' filepath='../lib/librte_cmdline/cmdline_socket.c' line='39' column='1'/>
+      <parameter type-id='type-id-11' name='prompt' filepath='../lib/librte_cmdline/cmdline_socket.c' line='39' column='1'/>
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <function-decl name='cmdline_file_new' mangled-name='cmdline_file_new' filepath='../lib/librte_cmdline/cmdline_socket.c' line='22' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cmdline_file_new@@DPDK_20.0'>
+      <parameter type-id='type-id-4' name='ctx' filepath='../lib/librte_cmdline/cmdline_socket.c' line='22' column='1'/>
+      <parameter type-id='type-id-11' name='prompt' filepath='../lib/librte_cmdline/cmdline_socket.c' line='22' column='1'/>
+      <parameter type-id='type-id-11' name='path' filepath='../lib/librte_cmdline/cmdline_socket.c' line='22' column='1'/>
+      <return type-id='type-id-13'/>
+    </function-decl>
+  </abi-instr>
+  <abi-instr version='1.0' address-size='64' path='../lib/librte_cmdline/cmdline_vt100.c' comp-dir-path='/root/klaatz/dpdk/gcc' language='LANG_C99'>
+
+    <array-type-def dimensions='1' type-id='type-id-11' size-in-bits='infinite' id='type-id-72'>
+      <subrange length='infinite' id='type-id-33'/>
+
+    </array-type-def>
+    <var-decl name='cmdline_vt100_commands' type-id='type-id-72' visibility='default' filepath='../lib/librte_cmdline/cmdline_vt100.h' line='68' column='1'/>
+    <pointer-type-def type-id='type-id-45' size-in-bits='64' id='type-id-73'/>
+    <function-decl name='vt100_parser' mangled-name='vt100_parser' filepath='../lib/librte_cmdline/cmdline_vt100.c' line='77' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vt100_parser@@DPDK_20.0'>
+      <parameter type-id='type-id-73' name='vt' filepath='../lib/librte_cmdline/cmdline_vt100.c' line='77' column='1'/>
+      <parameter type-id='type-id-15' name='ch' filepath='../lib/librte_cmdline/cmdline_vt100.c' line='77' column='1'/>
+      <return type-id='type-id-3'/>
+    </function-decl>
+    <function-decl name='vt100_init' mangled-name='vt100_init' filepath='../lib/librte_cmdline/cmdline_vt100.c' line='48' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='vt100_init@@DPDK_20.0'>
+      <parameter type-id='type-id-73' name='vt' filepath='../lib/librte_cmdline/cmdline_vt100.c' line='48' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+  </abi-instr>
+</abi-corpus>
diff --git a/lib/.abi/librte_compressdev.dump b/lib/.abi/librte_compressdev.dump
new file mode 100644
index 000000000..3c098b78d
--- /dev/null
+++ b/lib/.abi/librte_compressdev.dump
@@ -0,0 +1,1249 @@
+<abi-corpus path='gcc//lib/librte_compressdev.so.0.200' architecture='elf-amd-x86_64' soname='librte_compressdev.so.0.200'>
+  <elf-needed>
+    <dependency name='libm.so.6'/>
+    <dependency name='libdl.so.2'/>
+    <dependency name='libnuma.so.1'/>
+    <dependency name='librte_eal.so.20.0'/>
+    <dependency name='librte_kvargs.so.20.0'/>
+    <dependency name='librte_mbuf.so.20.0'/>
+    <dependency name='librte_mempool.so.20.0'/>
+    <dependency name='librte_ring.so.20.0'/>
+    <dependency name='libbsd.so.0'/>
+    <dependency name='libpthread.so.0'/>
+    <dependency name='libc.so.6'/>
+    <dependency name='ld-linux-x86-64.so.2'/>
+  </elf-needed>
+  <elf-function-symbols>
+    <elf-symbol name='rte_comp_get_feature_name' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_comp_op_alloc' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_comp_op_bulk_alloc' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_comp_op_bulk_free' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_comp_op_free' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_comp_op_pool_create' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_compressdev_capability_get' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_compressdev_close' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_compressdev_configure' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_compressdev_count' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_compressdev_dequeue_burst' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_compressdev_devices_get' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_compressdev_enqueue_burst' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_compressdev_get_dev_id' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_compressdev_get_feature_name' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_compressdev_info_get' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_compressdev_name_get' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_compressdev_pmd_allocate' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_compressdev_pmd_create' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_compressdev_pmd_destroy' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_compressdev_pmd_get_named_dev' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_compressdev_pmd_parse_input_args' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_compressdev_pmd_release_device' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_compressdev_private_xform_create' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_compressdev_private_xform_free' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_compressdev_queue_pair_count' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_compressdev_queue_pair_setup' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_compressdev_socket_id' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_compressdev_start' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_compressdev_stats_get' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_compressdev_stats_reset' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_compressdev_stop' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_compressdev_stream_create' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_compressdev_stream_free' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+  </elf-function-symbols>
+  <abi-instr version='1.0' address-size='64' path='../lib/librte_compressdev/rte_compressdev.c' comp-dir-path='/root/klaatz/dpdk/gcc' language='LANG_C99'>
+    <type-decl name='int' size-in-bits='32' id='type-id-1'/>
+    <class-decl name='rte_compressdev' size-in-bits='512' is-struct='yes' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev_internal.h' line='67' column='1' id='type-id-2'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='dequeue_burst' type-id='type-id-3' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev_internal.h' line='68' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='enqueue_burst' type-id='type-id-4' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev_internal.h' line='70' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='data' type-id='type-id-5' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev_internal.h' line='73' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='dev_ops' type-id='type-id-6' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev_internal.h' line='75' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='feature_flags' type-id='type-id-7' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev_internal.h' line='77' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <var-decl name='device' type-id='type-id-8' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev_internal.h' line='79' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='7'>
+        <var-decl name='attached' type-id='type-id-9' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev_internal.h' line='83' column='1'/>
+      </data-member>
+    </class-decl>
+    <type-decl name='unsigned short int' size-in-bits='16' id='type-id-10'/>
+    <typedef-decl name='__uint16_t' type-id='type-id-10' filepath='/usr/include/bits/types.h' line='40' column='1' id='type-id-11'/>
+    <typedef-decl name='uint16_t' type-id='type-id-11' filepath='/usr/include/bits/stdint-uintn.h' line='25' column='1' id='type-id-12'/>
+    <type-decl name='void' id='type-id-13'/>
+    <pointer-type-def type-id='type-id-13' size-in-bits='64' id='type-id-14'/>
+    <class-decl name='rte_comp_op' size-in-bits='1024' is-struct='yes' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='287' column='1' id='type-id-15'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='op_type' type-id='type-id-16' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='288' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='' type-id='type-id-17' visibility='default'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='mempool' type-id='type-id-18' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='306' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='iova_addr' type-id='type-id-19' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='308' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='m_src' type-id='type-id-20' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='310' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <var-decl name='m_dst' type-id='type-id-20' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='318' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <var-decl name='src' type-id='type-id-21' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='349' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='448'>
+        <var-decl name='dst' type-id='type-id-22' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='360' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='512'>
+        <var-decl name='hash' type-id='type-id-23' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='373' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='640'>
+        <var-decl name='flush_flag' type-id='type-id-24' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='374' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='704'>
+        <var-decl name='input_chksum' type-id='type-id-7' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='378' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='768'>
+        <var-decl name='output_chksum' type-id='type-id-7' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='383' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='832'>
+        <var-decl name='consumed' type-id='type-id-25' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='387' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='864'>
+        <var-decl name='produced' type-id='type-id-25' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='391' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='896'>
+        <var-decl name='debug_status' type-id='type-id-7' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='395' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='960'>
+        <var-decl name='status' type-id='type-id-9' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='401' column='1'/>
+      </data-member>
+    </class-decl>
+    <type-decl name='unnamed-enum-underlying-type' is-anonymous='yes' size-in-bits='32' alignment-in-bits='32' id='type-id-26'/>
+    <enum-decl name='rte_comp_op_type' filepath='../lib/librte_compressdev/rte_comp.h' line='197' column='1' id='type-id-16'>
+      <underlying-type type-id='type-id-26'/>
+      <enumerator name='RTE_COMP_OP_STATELESS' value='0'/>
+      <enumerator name='RTE_COMP_OP_STATEFUL' value='1'/>
+    </enum-decl>
+    <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='289' column='1' id='type-id-17'>
+      <data-member access='private'>
+        <var-decl name='private_xform' type-id='type-id-14' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='290' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='stream' type-id='type-id-14' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='295' column='1'/>
+      </data-member>
+    </union-decl>
+    <class-decl name='rte_mempool' size-in-bits='1536' is-struct='yes' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='216' column='1' id='type-id-27'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='name' type-id='type-id-28' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='222' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='' type-id='type-id-29' visibility='default'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <var-decl name='pool_config' type-id='type-id-14' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='228' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <var-decl name='mz' type-id='type-id-30' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='229' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='448'>
+        <var-decl name='flags' type-id='type-id-31' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='230' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='480'>
+        <var-decl name='socket_id' type-id='type-id-1' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='231' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='512'>
+        <var-decl name='size' type-id='type-id-25' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='232' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='544'>
+        <var-decl name='cache_size' type-id='type-id-25' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='233' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='576'>
+        <var-decl name='elt_size' type-id='type-id-25' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='236' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='608'>
+        <var-decl name='header_size' type-id='type-id-25' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='237' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='640'>
+        <var-decl name='trailer_size' type-id='type-id-25' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='238' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='672'>
+        <var-decl name='private_data_size' type-id='type-id-31' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='240' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='704'>
+        <var-decl name='ops_index' type-id='type-id-32' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='248' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='768'>
+        <var-decl name='local_cache' type-id='type-id-33' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='250' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='832'>
+        <var-decl name='populated_size' type-id='type-id-25' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='252' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='896'>
+        <var-decl name='elt_list' type-id='type-id-34' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='253' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='1024'>
+        <var-decl name='nb_mem_chunks' type-id='type-id-25' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='254' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='1088'>
+        <var-decl name='mem_list' type-id='type-id-35' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='255' column='1'/>
+      </data-member>
+    </class-decl>
+    <type-decl name='char' size-in-bits='8' id='type-id-36'/>
+    <type-decl name='unsigned long int' size-in-bits='64' id='type-id-37'/>
+
+    <array-type-def dimensions='1' type-id='type-id-36' size-in-bits='256' id='type-id-28'>
+      <subrange length='32' type-id='type-id-37' id='type-id-38'/>
+
+    </array-type-def>
+    <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='224' column='1' id='type-id-29'>
+      <data-member access='private'>
+        <var-decl name='pool_data' type-id='type-id-14' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='225' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='pool_id' type-id='type-id-7' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='226' column='1'/>
+      </data-member>
+    </union-decl>
+    <typedef-decl name='__uint64_t' type-id='type-id-37' filepath='/usr/include/bits/types.h' line='45' column='1' id='type-id-39'/>
+    <typedef-decl name='uint64_t' type-id='type-id-39' filepath='/usr/include/bits/stdint-uintn.h' line='27' column='1' id='type-id-7'/>
+    <class-decl name='rte_memzone' size-in-bits='576' is-struct='yes' visibility='default' filepath='../lib/librte_eal/common/include/rte_memzone.h' line='49' column='1' id='type-id-40'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='name' type-id='type-id-28' visibility='default' filepath='../lib/librte_eal/common/include/rte_memzone.h' line='52' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='' type-id='type-id-41' visibility='default'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <var-decl name='len' type-id='type-id-42' visibility='default' filepath='../lib/librte_eal/common/include/rte_memzone.h' line='64' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='448'>
+        <var-decl name='hugepage_sz' type-id='type-id-7' visibility='default' filepath='../lib/librte_eal/common/include/rte_memzone.h' line='66' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='512'>
+        <var-decl name='socket_id' type-id='type-id-32' visibility='default' filepath='../lib/librte_eal/common/include/rte_memzone.h' line='68' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='544'>
+        <var-decl name='flags' type-id='type-id-25' visibility='default' filepath='../lib/librte_eal/common/include/rte_memzone.h' line='70' column='1'/>
+      </data-member>
+    </class-decl>
+    <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='../lib/librte_eal/common/include/rte_memzone.h' line='55' column='1' id='type-id-41'>
+      <data-member access='private'>
+        <var-decl name='phys_addr' type-id='type-id-43' visibility='default' filepath='../lib/librte_eal/common/include/rte_memzone.h' line='56' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='iova' type-id='type-id-19' visibility='default' filepath='../lib/librte_eal/common/include/rte_memzone.h' line='57' column='1'/>
+      </data-member>
+    </union-decl>
+    <typedef-decl name='phys_addr_t' type-id='type-id-7' filepath='../lib/librte_eal/common/include/rte_common.h' line='325' column='1' id='type-id-43'/>
+    <typedef-decl name='rte_iova_t' type-id='type-id-7' filepath='../lib/librte_eal/common/include/rte_common.h' line='335' column='1' id='type-id-19'/>
+    <typedef-decl name='size_t' type-id='type-id-37' filepath='/usr/lib/gcc/x86_64-redhat-linux/9/include/stddef.h' line='209' column='1' id='type-id-42'/>
+    <typedef-decl name='__int32_t' type-id='type-id-1' filepath='/usr/include/bits/types.h' line='41' column='1' id='type-id-44'/>
+    <typedef-decl name='int32_t' type-id='type-id-44' filepath='/usr/include/bits/stdint-intn.h' line='26' column='1' id='type-id-32'/>
+    <type-decl name='unsigned int' size-in-bits='32' id='type-id-31'/>
+    <typedef-decl name='__uint32_t' type-id='type-id-31' filepath='/usr/include/bits/types.h' line='42' column='1' id='type-id-45'/>
+    <typedef-decl name='uint32_t' type-id='type-id-45' filepath='/usr/include/bits/stdint-uintn.h' line='26' column='1' id='type-id-25'/>
+    <qualified-type-def type-id='type-id-40' const='yes' id='type-id-46'/>
+    <pointer-type-def type-id='type-id-46' size-in-bits='64' id='type-id-30'/>
+    <class-decl name='rte_mempool_cache' size-in-bits='98816' is-struct='yes' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='83' column='1' id='type-id-47'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='size' type-id='type-id-25' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='84' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='flushthresh' type-id='type-id-25' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='85' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='len' type-id='type-id-25' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='86' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='objs' type-id='type-id-48' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='91' column='1'/>
+      </data-member>
+    </class-decl>
+
+    <array-type-def dimensions='1' type-id='type-id-14' size-in-bits='98304' id='type-id-48'>
+      <subrange length='1536' type-id='type-id-37' id='type-id-49'/>
+
+    </array-type-def>
+    <pointer-type-def type-id='type-id-47' size-in-bits='64' id='type-id-33'/>
+    <class-decl name='rte_mempool_objhdr_list' size-in-bits='128' is-struct='yes' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='152' column='1' id='type-id-34'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='stqh_first' type-id='type-id-50' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='152' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='stqh_last' type-id='type-id-51' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='152' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='rte_mempool_objhdr' size-in-bits='192' is-struct='yes' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='136' column='1' id='type-id-52'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='next' type-id='type-id-53' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='137' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='mp' type-id='type-id-18' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='138' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='' type-id='type-id-54' visibility='default'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='__anonymous_struct__' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='137' column='1' id='type-id-53'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='stqe_next' type-id='type-id-50' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='137' column='1'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-52' size-in-bits='64' id='type-id-50'/>
+    <pointer-type-def type-id='type-id-27' size-in-bits='64' id='type-id-18'/>
+    <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='140' column='1' id='type-id-54'>
+      <data-member access='private'>
+        <var-decl name='iova' type-id='type-id-19' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='141' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='physaddr' type-id='type-id-43' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='142' column='1'/>
+      </data-member>
+    </union-decl>
+    <pointer-type-def type-id='type-id-50' size-in-bits='64' id='type-id-51'/>
+    <class-decl name='rte_mempool_memhdr_list' size-in-bits='128' is-struct='yes' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='171' column='1' id='type-id-35'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='stqh_first' type-id='type-id-55' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='171' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='stqh_last' type-id='type-id-56' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='171' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='rte_mempool_memhdr' size-in-bits='448' is-struct='yes' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='185' column='1' id='type-id-57'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='next' type-id='type-id-58' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='186' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='mp' type-id='type-id-18' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='187' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='addr' type-id='type-id-14' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='188' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='' type-id='type-id-59' visibility='default'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='len' type-id='type-id-42' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='194' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <var-decl name='free_cb' type-id='type-id-60' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='195' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <var-decl name='opaque' type-id='type-id-14' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='196' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='__anonymous_struct__' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='186' column='1' id='type-id-58'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='stqe_next' type-id='type-id-55' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='186' column='1'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-57' size-in-bits='64' id='type-id-55'/>
+    <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='190' column='1' id='type-id-59'>
+      <data-member access='private'>
+        <var-decl name='iova' type-id='type-id-19' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='191' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='phys_addr' type-id='type-id-43' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='192' column='1'/>
+      </data-member>
+    </union-decl>
+    <typedef-decl name='rte_mempool_memchunk_free_cb_t' type-id='type-id-61' filepath='../lib/librte_mempool/rte_mempool.h' line='176' column='1' id='type-id-62'/>
+    <pointer-type-def type-id='type-id-62' size-in-bits='64' id='type-id-60'/>
+    <pointer-type-def type-id='type-id-55' size-in-bits='64' id='type-id-56'/>
+    <class-decl name='rte_mbuf' size-in-bits='1024' is-struct='yes' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='480' column='1' id='type-id-63'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='cacheline0' type-id='type-id-64' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='481' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='buf_addr' type-id='type-id-14' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='483' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='' type-id='type-id-65' visibility='default'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='rearm_data' type-id='type-id-66' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='497' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='data_off' type-id='type-id-12' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='498' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='160'>
+        <var-decl name='nb_segs' type-id='type-id-12' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='515' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='176'>
+        <var-decl name='port' type-id='type-id-12' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='520' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='ol_flags' type-id='type-id-7' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='522' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='rx_descriptor_fields1' type-id='type-id-64' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='525' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='288'>
+        <var-decl name='pkt_len' type-id='type-id-25' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='561' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <var-decl name='data_len' type-id='type-id-12' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='562' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='336'>
+        <var-decl name='vlan_tci' type-id='type-id-12' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='564' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='416'>
+        <var-decl name='vlan_tci_outer' type-id='type-id-12' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='601' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='432'>
+        <var-decl name='buf_len' type-id='type-id-12' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='603' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='448'>
+        <var-decl name='timestamp' type-id='type-id-7' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='610' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='512'>
+        <var-decl name='cacheline1' type-id='type-id-64' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='613' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='576'>
+        <var-decl name='pool' type-id='type-id-18' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='621' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='640'>
+        <var-decl name='next' type-id='type-id-20' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='622' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='768'>
+        <var-decl name='priv_size' type-id='type-id-12' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='665' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='784'>
+        <var-decl name='timesync' type-id='type-id-12' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='668' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='800'>
+        <var-decl name='seqn' type-id='type-id-25' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='671' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='832'>
+        <var-decl name='shinfo' type-id='type-id-67' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='676' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='896'>
+        <var-decl name='dynfield1' type-id='type-id-68' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='678' column='1'/>
+      </data-member>
+    </class-decl>
+
+    <array-type-def dimensions='1' type-id='type-id-14' size-in-bits='infinite' id='type-id-69'>
+      <subrange length='infinite' type-id='type-id-37' id='type-id-70'/>
+
+    </array-type-def>
+    <typedef-decl name='MARKER' type-id='type-id-69' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='414' column='1' id='type-id-64'/>
+    <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='491' column='1' id='type-id-65'>
+      <data-member access='private'>
+        <var-decl name='buf_iova' type-id='type-id-19' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='492' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='buf_physaddr' type-id='type-id-19' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='493' column='1'/>
+      </data-member>
+    </union-decl>
+
+    <array-type-def dimensions='1' type-id='type-id-7' size-in-bits='infinite' id='type-id-71'>
+      <subrange length='infinite' type-id='type-id-37' id='type-id-70'/>
+
+    </array-type-def>
+    <typedef-decl name='MARKER64' type-id='type-id-71' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='420' column='1' id='type-id-66'/>
+    <pointer-type-def type-id='type-id-63' size-in-bits='64' id='type-id-20'/>
+    <class-decl name='rte_mbuf_ext_shared_info' size-in-bits='192' is-struct='yes' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='689' column='1' id='type-id-72'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='free_cb' type-id='type-id-73' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='690' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='fcb_opaque' type-id='type-id-14' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='691' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='refcnt_atomic' type-id='type-id-74' visibility='default' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='692' column='1'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-75' size-in-bits='64' id='type-id-76'/>
+    <typedef-decl name='rte_mbuf_extbuf_free_callback_t' type-id='type-id-76' filepath='../lib/librte_mbuf/rte_mbuf_core.h' line='684' column='1' id='type-id-73'/>
+    <class-decl name='__anonymous_struct__' size-in-bits='16' is-struct='yes' is-anonymous='yes' naming-typedef-id='type-id-74' visibility='default' filepath='../lib/librte_eal/common/include/generic/rte_atomic.h' line='223' column='1' id='type-id-77'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='cnt' type-id='type-id-78' visibility='default' filepath='../lib/librte_eal/common/include/generic/rte_atomic.h' line='224' column='1'/>
+      </data-member>
+    </class-decl>
+    <type-decl name='short int' size-in-bits='16' id='type-id-79'/>
+    <typedef-decl name='__int16_t' type-id='type-id-79' filepath='/usr/include/bits/types.h' line='39' column='1' id='type-id-80'/>
+    <typedef-decl name='int16_t' type-id='type-id-80' filepath='/usr/include/bits/stdint-intn.h' line='25' column='1' id='type-id-81'/>
+    <qualified-type-def type-id='type-id-81' volatile='yes' id='type-id-78'/>
+    <typedef-decl name='rte_atomic16_t' type-id='type-id-77' filepath='../lib/librte_eal/common/include/generic/rte_atomic.h' line='225' column='1' id='type-id-74'/>
+    <pointer-type-def type-id='type-id-72' size-in-bits='64' id='type-id-67'/>
+
+    <array-type-def dimensions='1' type-id='type-id-7' size-in-bits='128' id='type-id-68'>
+      <subrange length='2' type-id='type-id-37' id='type-id-82'/>
+
+    </array-type-def>
+    <class-decl name='__anonymous_struct__' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='334' column='1' id='type-id-21'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='offset' type-id='type-id-25' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='335' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='length' type-id='type-id-25' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='343' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='__anonymous_struct__' size-in-bits='32' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='350' column='1' id='type-id-22'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='offset' type-id='type-id-25' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='351' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='361' column='1' id='type-id-23'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='digest' type-id='type-id-83' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='362' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='iova_addr' type-id='type-id-19' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='371' column='1'/>
+      </data-member>
+    </class-decl>
+    <type-decl name='unsigned char' size-in-bits='8' id='type-id-84'/>
+    <typedef-decl name='__uint8_t' type-id='type-id-84' filepath='/usr/include/bits/types.h' line='38' column='1' id='type-id-85'/>
+    <typedef-decl name='uint8_t' type-id='type-id-85' filepath='/usr/include/bits/stdint-uintn.h' line='24' column='1' id='type-id-9'/>
+    <pointer-type-def type-id='type-id-9' size-in-bits='64' id='type-id-83'/>
+    <enum-decl name='rte_comp_flush_flag' filepath='../lib/librte_compressdev/rte_comp.h' line='166' column='1' id='type-id-24'>
+      <underlying-type type-id='type-id-26'/>
+      <enumerator name='RTE_COMP_FLUSH_NONE' value='0'/>
+      <enumerator name='RTE_COMP_FLUSH_SYNC' value='1'/>
+      <enumerator name='RTE_COMP_FLUSH_FULL' value='2'/>
+      <enumerator name='RTE_COMP_FLUSH_FINAL' value='3'/>
+    </enum-decl>
+    <pointer-type-def type-id='type-id-15' size-in-bits='64' id='type-id-86'/>
+    <pointer-type-def type-id='type-id-86' size-in-bits='64' id='type-id-87'/>
+    <pointer-type-def type-id='type-id-88' size-in-bits='64' id='type-id-89'/>
+    <typedef-decl name='compressdev_dequeue_pkt_burst_t' type-id='type-id-89' filepath='../lib/librte_compressdev/rte_compressdev_internal.h' line='41' column='1' id='type-id-3'/>
+    <typedef-decl name='compressdev_enqueue_pkt_burst_t' type-id='type-id-89' filepath='../lib/librte_compressdev/rte_compressdev_internal.h' line='63' column='1' id='type-id-4'/>
+    <class-decl name='rte_compressdev_data' size-in-bits='1024' is-struct='yes' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev_internal.h' line='94' column='1' id='type-id-90'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='dev_id' type-id='type-id-9' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev_internal.h' line='95' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='8'>
+        <var-decl name='socket_id' type-id='type-id-9' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev_internal.h' line='97' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='16'>
+        <var-decl name='name' type-id='type-id-91' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev_internal.h' line='99' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='7'>
+        <var-decl name='dev_started' type-id='type-id-9' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev_internal.h' line='103' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='576'>
+        <var-decl name='queue_pairs' type-id='type-id-92' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev_internal.h' line='106' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='640'>
+        <var-decl name='nb_queue_pairs' type-id='type-id-12' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev_internal.h' line='108' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='704'>
+        <var-decl name='dev_private' type-id='type-id-14' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev_internal.h' line='111' column='1'/>
+      </data-member>
+    </class-decl>
+
+    <array-type-def dimensions='1' type-id='type-id-36' size-in-bits='512' id='type-id-91'>
+      <subrange length='64' type-id='type-id-37' id='type-id-93'/>
+
+    </array-type-def>
+    <pointer-type-def type-id='type-id-14' size-in-bits='64' id='type-id-92'/>
+    <pointer-type-def type-id='type-id-90' size-in-bits='64' id='type-id-5'/>
+    <class-decl name='rte_compressdev_ops' size-in-bits='832' is-struct='yes' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev_pmd.h' line='259' column='1' id='type-id-94'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='dev_configure' type-id='type-id-95' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev_pmd.h' line='260' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='dev_start' type-id='type-id-96' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev_pmd.h' line='261' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='dev_stop' type-id='type-id-97' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev_pmd.h' line='262' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='dev_close' type-id='type-id-98' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev_pmd.h' line='263' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='dev_infos_get' type-id='type-id-99' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev_pmd.h' line='265' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <var-decl name='stats_get' type-id='type-id-100' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev_pmd.h' line='267' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <var-decl name='stats_reset' type-id='type-id-101' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev_pmd.h' line='269' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='448'>
+        <var-decl name='queue_pair_setup' type-id='type-id-102' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev_pmd.h' line='272' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='512'>
+        <var-decl name='queue_pair_release' type-id='type-id-103' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev_pmd.h' line='274' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='576'>
+        <var-decl name='stream_create' type-id='type-id-104' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev_pmd.h' line='277' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='640'>
+        <var-decl name='stream_free' type-id='type-id-105' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev_pmd.h' line='279' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='704'>
+        <var-decl name='private_xform_create' type-id='type-id-106' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev_pmd.h' line='282' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='768'>
+        <var-decl name='private_xform_free' type-id='type-id-107' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev_pmd.h' line='284' column='1'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-2' size-in-bits='64' id='type-id-108'/>
+    <class-decl name='rte_compressdev_config' size-in-bits='96' is-struct='yes' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev.h' line='194' column='1' id='type-id-109'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='socket_id' type-id='type-id-1' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev.h' line='195' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='nb_queue_pairs' type-id='type-id-12' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev.h' line='197' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='48'>
+        <var-decl name='max_nb_priv_xforms' type-id='type-id-12' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev.h' line='199' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='max_nb_streams' type-id='type-id-12' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev.h' line='201' column='1'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-109' size-in-bits='64' id='type-id-110'/>
+    <pointer-type-def type-id='type-id-111' size-in-bits='64' id='type-id-112'/>
+    <typedef-decl name='compressdev_configure_t' type-id='type-id-112' filepath='../lib/librte_compressdev/rte_compressdev_pmd.h' line='82' column='1' id='type-id-95'/>
+    <pointer-type-def type-id='type-id-113' size-in-bits='64' id='type-id-114'/>
+    <typedef-decl name='compressdev_start_t' type-id='type-id-114' filepath='../lib/librte_compressdev/rte_compressdev_pmd.h' line='93' column='1' id='type-id-96'/>
+    <pointer-type-def type-id='type-id-115' size-in-bits='64' id='type-id-116'/>
+    <typedef-decl name='compressdev_stop_t' type-id='type-id-116' filepath='../lib/librte_compressdev/rte_compressdev_pmd.h' line='101' column='1' id='type-id-97'/>
+    <typedef-decl name='compressdev_close_t' type-id='type-id-114' filepath='../lib/librte_compressdev/rte_compressdev_pmd.h' line='112' column='1' id='type-id-98'/>
+    <class-decl name='rte_compressdev_info' size-in-bits='256' is-struct='yes' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev.h' line='98' column='1' id='type-id-117'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='driver_name' type-id='type-id-118' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev.h' line='99' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='feature_flags' type-id='type-id-7' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev.h' line='100' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='capabilities' type-id='type-id-119' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev.h' line='101' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='max_nb_queue_pairs' type-id='type-id-12' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev.h' line='103' column='1'/>
+      </data-member>
+    </class-decl>
+    <qualified-type-def type-id='type-id-36' const='yes' id='type-id-120'/>
+    <pointer-type-def type-id='type-id-120' size-in-bits='64' id='type-id-118'/>
+    <class-decl name='rte_compressdev_capabilities' size-in-bits='192' is-struct='yes' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev.h' line='40' column='1' id='type-id-121'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='algo' type-id='type-id-122' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev.h' line='41' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='comp_feature_flags' type-id='type-id-7' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev.h' line='43' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='window_size' type-id='type-id-123' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev.h' line='45' column='1'/>
+      </data-member>
+    </class-decl>
+    <enum-decl name='rte_comp_algorithm' filepath='../lib/librte_compressdev/rte_comp.h' line='96' column='1' id='type-id-122'>
+      <underlying-type type-id='type-id-26'/>
+      <enumerator name='RTE_COMP_ALGO_UNSPECIFIED' value='0'/>
+      <enumerator name='RTE_COMP_ALGO_NULL' value='1'/>
+      <enumerator name='RTE_COMP_ALGO_DEFLATE' value='2'/>
+      <enumerator name='RTE_COMP_ALGO_LZS' value='3'/>
+      <enumerator name='RTE_COMP_ALGO_LIST_END' value='4'/>
+    </enum-decl>
+    <class-decl name='rte_param_log2_range' size-in-bits='24' is-struct='yes' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev.h' line='28' column='1' id='type-id-123'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='min' type-id='type-id-9' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev.h' line='29' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='8'>
+        <var-decl name='max' type-id='type-id-9' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev.h' line='30' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='16'>
+        <var-decl name='increment' type-id='type-id-9' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev.h' line='31' column='1'/>
+      </data-member>
+    </class-decl>
+    <qualified-type-def type-id='type-id-121' const='yes' id='type-id-124'/>
+    <pointer-type-def type-id='type-id-124' size-in-bits='64' id='type-id-119'/>
+    <pointer-type-def type-id='type-id-117' size-in-bits='64' id='type-id-125'/>
+    <pointer-type-def type-id='type-id-126' size-in-bits='64' id='type-id-127'/>
+    <typedef-decl name='compressdev_info_get_t' type-id='type-id-127' filepath='../lib/librte_compressdev/rte_compressdev_pmd.h' line='142' column='1' id='type-id-99'/>
+    <class-decl name='rte_compressdev_stats' size-in-bits='256' is-struct='yes' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev.h' line='110' column='1' id='type-id-128'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='enqueued_count' type-id='type-id-7' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev.h' line='111' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='dequeued_count' type-id='type-id-7' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev.h' line='113' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='enqueue_err_count' type-id='type-id-7' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev.h' line='116' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='dequeue_err_count' type-id='type-id-7' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev.h' line='118' column='1'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-128' size-in-bits='64' id='type-id-129'/>
+    <pointer-type-def type-id='type-id-130' size-in-bits='64' id='type-id-131'/>
+    <typedef-decl name='compressdev_stats_get_t' type-id='type-id-131' filepath='../lib/librte_compressdev/rte_compressdev_pmd.h' line='123' column='1' id='type-id-100'/>
+    <typedef-decl name='compressdev_stats_reset_t' type-id='type-id-116' filepath='../lib/librte_compressdev/rte_compressdev_pmd.h' line='133' column='1' id='type-id-101'/>
+    <pointer-type-def type-id='type-id-132' size-in-bits='64' id='type-id-133'/>
+    <typedef-decl name='compressdev_queue_pair_setup_t' type-id='type-id-133' filepath='../lib/librte_compressdev/rte_compressdev_pmd.h' line='159' column='1' id='type-id-102'/>
+    <pointer-type-def type-id='type-id-134' size-in-bits='64' id='type-id-135'/>
+    <typedef-decl name='compressdev_queue_pair_release_t' type-id='type-id-135' filepath='../lib/librte_compressdev/rte_compressdev_pmd.h' line='173' column='1' id='type-id-103'/>
+    <class-decl name='rte_comp_xform' size-in-bits='224' is-struct='yes' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='267' column='1' id='type-id-136'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='type' type-id='type-id-137' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='268' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='' type-id='type-id-138' visibility='default'/>
+      </data-member>
+    </class-decl>
+    <enum-decl name='rte_comp_xform_type' filepath='../lib/librte_compressdev/rte_comp.h' line='189' column='1' id='type-id-137'>
+      <underlying-type type-id='type-id-26'/>
+      <enumerator name='RTE_COMP_COMPRESS' value='0'/>
+      <enumerator name='RTE_COMP_DECOMPRESS' value='1'/>
+    </enum-decl>
+    <union-decl name='__anonymous_union__' size-in-bits='192' is-anonymous='yes' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='270' column='1' id='type-id-138'>
+      <data-member access='private'>
+        <var-decl name='compress' type-id='type-id-139' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='271' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='decompress' type-id='type-id-140' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='273' column='1'/>
+      </data-member>
+    </union-decl>
+    <class-decl name='rte_comp_compress_xform' size-in-bits='192' is-struct='yes' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='219' column='1' id='type-id-139'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='algo' type-id='type-id-122' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='220' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='' type-id='type-id-141' visibility='default'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='level' type-id='type-id-1' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='226' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='96'>
+        <var-decl name='window_size' type-id='type-id-9' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='228' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='chksum' type-id='type-id-142' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='233' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='160'>
+        <var-decl name='hash_algo' type-id='type-id-143' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='235' column='1'/>
+      </data-member>
+    </class-decl>
+    <union-decl name='__anonymous_union__' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='222' column='1' id='type-id-141'>
+      <data-member access='private'>
+        <var-decl name='deflate' type-id='type-id-144' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='223' column='1'/>
+      </data-member>
+    </union-decl>
+    <class-decl name='rte_comp_deflate_params' size-in-bits='32' is-struct='yes' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='213' column='1' id='type-id-144'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='huffman' type-id='type-id-145' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='214' column='1'/>
+      </data-member>
+    </class-decl>
+    <enum-decl name='rte_comp_huffman' filepath='../lib/librte_compressdev/rte_comp.h' line='156' column='1' id='type-id-145'>
+      <underlying-type type-id='type-id-26'/>
+      <enumerator name='RTE_COMP_HUFFMAN_DEFAULT' value='0'/>
+      <enumerator name='RTE_COMP_HUFFMAN_FIXED' value='1'/>
+      <enumerator name='RTE_COMP_HUFFMAN_DYNAMIC' value='2'/>
+    </enum-decl>
+    <enum-decl name='rte_comp_checksum_type' filepath='../lib/librte_compressdev/rte_comp.h' line='141' column='1' id='type-id-142'>
+      <underlying-type type-id='type-id-26'/>
+      <enumerator name='RTE_COMP_CHECKSUM_NONE' value='0'/>
+      <enumerator name='RTE_COMP_CHECKSUM_CRC32' value='1'/>
+      <enumerator name='RTE_COMP_CHECKSUM_ADLER32' value='2'/>
+      <enumerator name='RTE_COMP_CHECKSUM_CRC32_ADLER32' value='3'/>
+    </enum-decl>
+    <enum-decl name='rte_comp_hash_algorithm' filepath='../lib/librte_compressdev/rte_comp.h' line='116' column='1' id='type-id-143'>
+      <underlying-type type-id='type-id-26'/>
+      <enumerator name='RTE_COMP_HASH_ALGO_NONE' value='0'/>
+      <enumerator name='RTE_COMP_HASH_ALGO_SHA1' value='1'/>
+      <enumerator name='RTE_COMP_HASH_ALGO_SHA2_256' value='2'/>
+      <enumerator name='RTE_COMP_HASH_ALGO_LIST_END' value='3'/>
+    </enum-decl>
+    <class-decl name='rte_comp_decompress_xform' size-in-bits='128' is-struct='yes' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='244' column='1' id='type-id-140'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='algo' type-id='type-id-122' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='245' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='chksum' type-id='type-id-142' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='247' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='window_size' type-id='type-id-9' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='249' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='96'>
+        <var-decl name='hash_algo' type-id='type-id-143' visibility='default' filepath='../lib/librte_compressdev/rte_comp.h' line='254' column='1'/>
+      </data-member>
+    </class-decl>
+    <qualified-type-def type-id='type-id-136' const='yes' id='type-id-146'/>
+    <pointer-type-def type-id='type-id-146' size-in-bits='64' id='type-id-147'/>
+    <pointer-type-def type-id='type-id-148' size-in-bits='64' id='type-id-149'/>
+    <typedef-decl name='compressdev_stream_create_t' type-id='type-id-149' filepath='../lib/librte_compressdev/rte_compressdev_pmd.h' line='202' column='1' id='type-id-104'/>
+    <pointer-type-def type-id='type-id-150' size-in-bits='64' id='type-id-151'/>
+    <typedef-decl name='compressdev_stream_free_t' type-id='type-id-151' filepath='../lib/librte_compressdev/rte_compressdev_pmd.h' line='219' column='1' id='type-id-105'/>
+    <typedef-decl name='compressdev_private_xform_create_t' type-id='type-id-149' filepath='../lib/librte_compressdev/rte_compressdev_pmd.h' line='239' column='1' id='type-id-106'/>
+    <typedef-decl name='compressdev_private_xform_free_t' type-id='type-id-151' filepath='../lib/librte_compressdev/rte_compressdev_pmd.h' line='255' column='1' id='type-id-107'/>
+    <pointer-type-def type-id='type-id-94' size-in-bits='64' id='type-id-6'/>
+    <class-decl name='rte_device' size-in-bits='448' is-struct='yes' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='104' column='1' id='type-id-152'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='next' type-id='type-id-153' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='105' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='name' type-id='type-id-118' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='106' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='driver' type-id='type-id-154' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='107' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='bus' type-id='type-id-155' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='108' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <var-decl name='numa_node' type-id='type-id-1' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='109' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <var-decl name='devargs' type-id='type-id-156' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='110' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='105' column='1' id='type-id-153'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='tqe_next' type-id='type-id-8' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='105' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='tqe_prev' type-id='type-id-157' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='105' column='1'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-152' size-in-bits='64' id='type-id-8'/>
+    <pointer-type-def type-id='type-id-8' size-in-bits='64' id='type-id-157'/>
+    <class-decl name='rte_driver' size-in-bits='256' is-struct='yes' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='89' column='1' id='type-id-158'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='next' type-id='type-id-159' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='90' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='name' type-id='type-id-118' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='91' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='alias' type-id='type-id-118' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='92' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='90' column='1' id='type-id-159'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='tqe_next' type-id='type-id-160' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='90' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='tqe_prev' type-id='type-id-161' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='90' column='1'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-158' size-in-bits='64' id='type-id-160'/>
+    <pointer-type-def type-id='type-id-160' size-in-bits='64' id='type-id-161'/>
+    <qualified-type-def type-id='type-id-158' const='yes' id='type-id-162'/>
+    <pointer-type-def type-id='type-id-162' size-in-bits='64' id='type-id-154'/>
+    <class-decl name='rte_bus' size-in-bits='1024' is-struct='yes' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='246' column='1' id='type-id-163'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='next' type-id='type-id-164' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='247' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='name' type-id='type-id-118' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='248' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='scan' type-id='type-id-165' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='249' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='probe' type-id='type-id-166' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='250' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <var-decl name='find_device' type-id='type-id-167' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='251' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <var-decl name='plug' type-id='type-id-168' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='252' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='448'>
+        <var-decl name='unplug' type-id='type-id-169' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='253' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='512'>
+        <var-decl name='parse' type-id='type-id-170' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='254' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='576'>
+        <var-decl name='dma_map' type-id='type-id-171' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='255' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='640'>
+        <var-decl name='dma_unmap' type-id='type-id-172' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='256' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='704'>
+        <var-decl name='conf' type-id='type-id-173' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='257' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='768'>
+        <var-decl name='get_iommu_class' type-id='type-id-174' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='258' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='832'>
+        <var-decl name='dev_iterate' type-id='type-id-175' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='259' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='896'>
+        <var-decl name='hot_unplug_handler' type-id='type-id-176' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='260' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='960'>
+        <var-decl name='sigbus_handler' type-id='type-id-177' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='262' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='247' column='1' id='type-id-164'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='tqe_next' type-id='type-id-178' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='247' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='tqe_prev' type-id='type-id-179' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='247' column='1'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-163' size-in-bits='64' id='type-id-178'/>
+    <pointer-type-def type-id='type-id-178' size-in-bits='64' id='type-id-179'/>
+    <pointer-type-def type-id='type-id-180' size-in-bits='64' id='type-id-181'/>
+    <typedef-decl name='rte_bus_scan_t' type-id='type-id-181' filepath='../lib/librte_eal/common/include/rte_bus.h' line='56' column='1' id='type-id-165'/>
+    <typedef-decl name='rte_bus_probe_t' type-id='type-id-181' filepath='../lib/librte_eal/common/include/rte_bus.h' line='68' column='1' id='type-id-166'/>
+    <qualified-type-def type-id='type-id-152' const='yes' id='type-id-182'/>
+    <pointer-type-def type-id='type-id-182' size-in-bits='64' id='type-id-183'/>
+    <pointer-type-def type-id='type-id-184' size-in-bits='64' id='type-id-185'/>
+    <typedef-decl name='rte_dev_cmp_t' type-id='type-id-185' filepath='../lib/librte_eal/common/include/rte_dev.h' line='202' column='1' id='type-id-186'/>
+    <pointer-type-def type-id='type-id-187' size-in-bits='64' id='type-id-188'/>
+    <typedef-decl name='rte_bus_find_device_t' type-id='type-id-188' filepath='../lib/librte_eal/common/include/rte_bus.h' line='93' column='1' id='type-id-167'/>
+    <pointer-type-def type-id='type-id-189' size-in-bits='64' id='type-id-190'/>
+    <typedef-decl name='rte_bus_plug_t' type-id='type-id-190' filepath='../lib/librte_eal/common/include/rte_bus.h' line='107' column='1' id='type-id-168'/>
+    <typedef-decl name='rte_bus_unplug_t' type-id='type-id-190' filepath='../lib/librte_eal/common/include/rte_bus.h' line='120' column='1' id='type-id-169'/>
+    <pointer-type-def type-id='type-id-191' size-in-bits='64' id='type-id-192'/>
+    <typedef-decl name='rte_bus_parse_t' type-id='type-id-192' filepath='../lib/librte_eal/common/include/rte_bus.h' line='140' column='1' id='type-id-170'/>
+    <pointer-type-def type-id='type-id-193' size-in-bits='64' id='type-id-194'/>
+    <typedef-decl name='rte_dev_dma_map_t' type-id='type-id-194' filepath='../lib/librte_eal/common/include/rte_bus.h' line='160' column='1' id='type-id-171'/>
+    <typedef-decl name='rte_dev_dma_unmap_t' type-id='type-id-194' filepath='../lib/librte_eal/common/include/rte_bus.h' line='181' column='1' id='type-id-172'/>
+    <class-decl name='rte_bus_conf' size-in-bits='32' is-struct='yes' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='225' column='1' id='type-id-173'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='scan_mode' type-id='type-id-195' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='226' column='1'/>
+      </data-member>
+    </class-decl>
+    <enum-decl name='rte_bus_scan_mode' filepath='../lib/librte_eal/common/include/rte_bus.h' line='216' column='1' id='type-id-195'>
+      <underlying-type type-id='type-id-26'/>
+      <enumerator name='RTE_BUS_SCAN_UNDEFINED' value='0'/>
+      <enumerator name='RTE_BUS_SCAN_WHITELIST' value='1'/>
+      <enumerator name='RTE_BUS_SCAN_BLACKLIST' value='2'/>
+    </enum-decl>
+    <enum-decl name='rte_iova_mode' filepath='../lib/librte_eal/common/include/rte_bus.h' line='39' column='1' id='type-id-196'>
+      <underlying-type type-id='type-id-26'/>
+      <enumerator name='RTE_IOVA_DC' value='0'/>
+      <enumerator name='RTE_IOVA_PA' value='1'/>
+      <enumerator name='RTE_IOVA_VA' value='2'/>
+    </enum-decl>
+    <pointer-type-def type-id='type-id-197' size-in-bits='64' id='type-id-198'/>
+    <typedef-decl name='rte_bus_get_iommu_class_t' type-id='type-id-198' filepath='../lib/librte_eal/common/include/rte_bus.h' line='240' column='1' id='type-id-174'/>
+    <class-decl name='rte_dev_iterator' size-in-bits='448' is-struct='yes' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='250' column='1' id='type-id-199'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='dev_str' type-id='type-id-118' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='251' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='bus_str' type-id='type-id-118' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='252' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='cls_str' type-id='type-id-118' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='253' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='bus' type-id='type-id-178' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='254' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='cls' type-id='type-id-200' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='255' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <var-decl name='device' type-id='type-id-8' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='256' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <var-decl name='class_device' type-id='type-id-14' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='257' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='rte_class' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-201'/>
+    <pointer-type-def type-id='type-id-201' size-in-bits='64' id='type-id-200'/>
+    <qualified-type-def type-id='type-id-199' const='yes' id='type-id-202'/>
+    <pointer-type-def type-id='type-id-202' size-in-bits='64' id='type-id-203'/>
+    <pointer-type-def type-id='type-id-204' size-in-bits='64' id='type-id-205'/>
+    <typedef-decl name='rte_dev_iterate_t' type-id='type-id-205' filepath='../lib/librte_eal/common/include/rte_dev.h' line='288' column='1' id='type-id-175'/>
+    <typedef-decl name='rte_bus_hot_unplug_handler_t' type-id='type-id-190' filepath='../lib/librte_eal/common/include/rte_bus.h' line='196' column='1' id='type-id-176'/>
+    <pointer-type-def type-id='type-id-206' size-in-bits='64' id='type-id-207'/>
+    <typedef-decl name='rte_bus_sigbus_handler_t' type-id='type-id-207' filepath='../lib/librte_eal/common/include/rte_bus.h' line='211' column='1' id='type-id-177'/>
+    <qualified-type-def type-id='type-id-163' const='yes' id='type-id-208'/>
+    <pointer-type-def type-id='type-id-208' size-in-bits='64' id='type-id-155'/>
+    <class-decl name='rte_devargs' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-209'/>
+    <pointer-type-def type-id='type-id-209' size-in-bits='64' id='type-id-156'/>
+    <function-decl name='rte_compressdev_pmd_release_device' mangled-name='rte_compressdev_pmd_release_device' filepath='../lib/librte_compressdev/rte_compressdev.c' line='272' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_compressdev_pmd_release_device@@EXPERIMENTAL'>
+      <parameter type-id='type-id-108' name='compressdev' filepath='../lib/librte_compressdev/rte_compressdev.c' line='272' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='rte_compressdev_pmd_allocate' mangled-name='rte_compressdev_pmd_allocate' filepath='../lib/librte_compressdev/rte_compressdev.c' line='226' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_compressdev_pmd_allocate@@EXPERIMENTAL'>
+      <parameter type-id='type-id-118' name='name' filepath='../lib/librte_compressdev/rte_compressdev.c' line='226' column='1'/>
+      <parameter type-id='type-id-1' name='socket_id' filepath='../lib/librte_compressdev/rte_compressdev.c' line='226' column='1'/>
+      <return type-id='type-id-108'/>
+    </function-decl>
+    <function-decl name='rte_compressdev_pmd_get_named_dev' mangled-name='rte_compressdev_pmd_get_named_dev' filepath='../lib/librte_compressdev/rte_compressdev.c' line='84' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_compressdev_pmd_get_named_dev@@EXPERIMENTAL'>
+      <parameter type-id='type-id-118' name='name' filepath='../lib/librte_compressdev/rte_compressdev.c' line='84' column='1'/>
+      <return type-id='type-id-108'/>
+    </function-decl>
+    <function-decl name='rte_compressdev_private_xform_free' mangled-name='rte_compressdev_private_xform_free' filepath='../lib/librte_compressdev/rte_compressdev.c' line='684' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_compressdev_private_xform_free@@EXPERIMENTAL'>
+      <parameter type-id='type-id-9' name='dev_id' filepath='../lib/librte_compressdev/rte_compressdev.c' line='684' column='1'/>
+      <parameter type-id='type-id-14' name='priv_xform' filepath='../lib/librte_compressdev/rte_compressdev.c' line='684' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='rte_compressdev_private_xform_create' mangled-name='rte_compressdev_private_xform_create' filepath='../lib/librte_compressdev/rte_compressdev.c' line='659' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_compressdev_private_xform_create@@EXPERIMENTAL'>
+      <parameter type-id='type-id-9' name='dev_id' filepath='../lib/librte_compressdev/rte_compressdev.c' line='659' column='1'/>
+      <parameter type-id='type-id-147' name='xform' filepath='../lib/librte_compressdev/rte_compressdev.c' line='660' column='1'/>
+      <parameter type-id='type-id-92' name='priv_xform' filepath='../lib/librte_compressdev/rte_compressdev.c' line='661' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='rte_compressdev_stream_free' mangled-name='rte_compressdev_stream_free' filepath='../lib/librte_compressdev/rte_compressdev.c' line='733' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_compressdev_stream_free@@EXPERIMENTAL'>
+      <parameter type-id='type-id-9' name='dev_id' filepath='../lib/librte_compressdev/rte_compressdev.c' line='684' column='1'/>
+      <parameter type-id='type-id-14' name='priv_xform' filepath='../lib/librte_compressdev/rte_compressdev.c' line='684' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='rte_compressdev_stream_create' mangled-name='rte_compressdev_stream_create' filepath='../lib/librte_compressdev/rte_compressdev.c' line='707' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_compressdev_stream_create@@EXPERIMENTAL'>
+      <parameter type-id='type-id-9' name='dev_id' filepath='../lib/librte_compressdev/rte_compressdev.c' line='659' column='1'/>
+      <parameter type-id='type-id-147' name='xform' filepath='../lib/librte_compressdev/rte_compressdev.c' line='660' column='1'/>
+      <parameter type-id='type-id-92' name='priv_xform' filepath='../lib/librte_compressdev/rte_compressdev.c' line='661' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='rte_compressdev_enqueue_burst' mangled-name='rte_compressdev_enqueue_burst' filepath='../lib/librte_compressdev/rte_compressdev.c' line='589' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_compressdev_enqueue_burst@@EXPERIMENTAL'>
+      <parameter type-id='type-id-9' name='dev_id' filepath='../lib/librte_compressdev/rte_compressdev.c' line='589' column='1'/>
+      <parameter type-id='type-id-12' name='qp_id' filepath='../lib/librte_compressdev/rte_compressdev.c' line='589' column='1'/>
+      <parameter type-id='type-id-87' name='ops' filepath='../lib/librte_compressdev/rte_compressdev.c' line='590' column='1'/>
+      <parameter type-id='type-id-12' name='nb_ops' filepath='../lib/librte_compressdev/rte_compressdev.c' line='590' column='1'/>
+      <return type-id='type-id-12'/>
+    </function-decl>
+    <function-decl name='rte_compressdev_dequeue_burst' mangled-name='rte_compressdev_dequeue_burst' filepath='../lib/librte_compressdev/rte_compressdev.c' line='577' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_compressdev_dequeue_burst@@EXPERIMENTAL'>
+      <parameter type-id='type-id-9' name='dev_id' filepath='../lib/librte_compressdev/rte_compressdev.c' line='589' column='1'/>
+      <parameter type-id='type-id-12' name='qp_id' filepath='../lib/librte_compressdev/rte_compressdev.c' line='589' column='1'/>
+      <parameter type-id='type-id-87' name='ops' filepath='../lib/librte_compressdev/rte_compressdev.c' line='590' column='1'/>
+      <parameter type-id='type-id-12' name='nb_ops' filepath='../lib/librte_compressdev/rte_compressdev.c' line='590' column='1'/>
+      <return type-id='type-id-12'/>
+    </function-decl>
+    <function-decl name='rte_compressdev_info_get' mangled-name='rte_compressdev_info_get' filepath='../lib/librte_compressdev/rte_compressdev.c' line='639' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_compressdev_info_get@@EXPERIMENTAL'>
+      <parameter type-id='type-id-9' name='dev_id' filepath='../lib/librte_compressdev/rte_compressdev.c' line='639' column='1'/>
+      <parameter type-id='type-id-125' name='dev_info' filepath='../lib/librte_compressdev/rte_compressdev.c' line='639' column='1'/>
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <function-decl name='rte_compressdev_stats_reset' mangled-name='rte_compressdev_stats_reset' filepath='../lib/librte_compressdev/rte_compressdev.c' line='622' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_compressdev_stats_reset@@EXPERIMENTAL'>
+      <parameter type-id='type-id-9' name='dev_id' filepath='../lib/librte_compressdev/rte_compressdev.c' line='622' column='1'/>
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <function-decl name='rte_compressdev_stats_get' mangled-name='rte_compressdev_stats_get' filepath='../lib/librte_compressdev/rte_compressdev.c' line='599' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_compressdev_stats_get@@EXPERIMENTAL'>
+      <parameter type-id='type-id-9' name='dev_id' filepath='../lib/librte_compressdev/rte_compressdev.c' line='599' column='1'/>
+      <parameter type-id='type-id-129' name='stats' filepath='../lib/librte_compressdev/rte_compressdev.c' line='599' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='rte_compressdev_queue_pair_count' mangled-name='rte_compressdev_queue_pair_count' filepath='../lib/librte_compressdev/rte_compressdev.c' line='292' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_compressdev_queue_pair_count@@EXPERIMENTAL'>
+      <parameter type-id='type-id-9' name='dev_id' filepath='../lib/librte_compressdev/rte_compressdev.c' line='292' column='1'/>
+      <return type-id='type-id-12'/>
+    </function-decl>
+    <function-decl name='rte_compressdev_queue_pair_setup' mangled-name='rte_compressdev_queue_pair_setup' filepath='../lib/librte_compressdev/rte_compressdev.c' line='542' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_compressdev_queue_pair_setup@@EXPERIMENTAL'>
+      <parameter type-id='type-id-9' name='dev_id' filepath='../lib/librte_compressdev/rte_compressdev.c' line='542' column='1'/>
+      <parameter type-id='type-id-12' name='queue_pair_id' filepath='../lib/librte_compressdev/rte_compressdev.c' line='542' column='1'/>
+      <parameter type-id='type-id-25' name='max_inflight_ops' filepath='../lib/librte_compressdev/rte_compressdev.c' line='543' column='1'/>
+      <parameter type-id='type-id-1' name='socket_id' filepath='../lib/librte_compressdev/rte_compressdev.c' line='543' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='rte_compressdev_close' mangled-name='rte_compressdev_close' filepath='../lib/librte_compressdev/rte_compressdev.c' line='507' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_compressdev_close@@EXPERIMENTAL'>
+      <parameter type-id='type-id-9' name='dev_id' filepath='../lib/librte_compressdev/rte_compressdev.c' line='507' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='rte_compressdev_stop' mangled-name='rte_compressdev_stop' filepath='../lib/librte_compressdev/rte_compressdev.c' line='483' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_compressdev_stop@@EXPERIMENTAL'>
+      <parameter type-id='type-id-9' name='dev_id' filepath='../lib/librte_compressdev/rte_compressdev.c' line='622' column='1'/>
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <function-decl name='rte_compressdev_start' mangled-name='rte_compressdev_start' filepath='../lib/librte_compressdev/rte_compressdev.c' line='451' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_compressdev_start@@EXPERIMENTAL'>
+      <parameter type-id='type-id-9' name='dev_id' filepath='../lib/librte_compressdev/rte_compressdev.c' line='507' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='rte_compressdev_configure' mangled-name='rte_compressdev_configure' filepath='../lib/librte_compressdev/rte_compressdev.c' line='417' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_compressdev_configure@@EXPERIMENTAL'>
+      <parameter type-id='type-id-9' name='dev_id' filepath='../lib/librte_compressdev/rte_compressdev.c' line='417' column='1'/>
+      <parameter type-id='type-id-110' name='config' filepath='../lib/librte_compressdev/rte_compressdev.c' line='417' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='rte_compressdev_socket_id' mangled-name='rte_compressdev_socket_id' filepath='../lib/librte_compressdev/rte_compressdev.c' line='169' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_compressdev_socket_id@@EXPERIMENTAL'>
+      <parameter type-id='type-id-9' name='dev_id' filepath='../lib/librte_compressdev/rte_compressdev.c' line='169' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='rte_compressdev_devices_get' mangled-name='rte_compressdev_devices_get' filepath='../lib/librte_compressdev/rte_compressdev.c' line='144' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_compressdev_devices_get@@EXPERIMENTAL'>
+      <parameter type-id='type-id-118' name='driver_name' filepath='../lib/librte_compressdev/rte_compressdev.c' line='144' column='1'/>
+      <parameter type-id='type-id-83' name='devices' filepath='../lib/librte_compressdev/rte_compressdev.c' line='144' column='1'/>
+      <parameter type-id='type-id-9' name='nb_devices' filepath='../lib/librte_compressdev/rte_compressdev.c' line='145' column='1'/>
+      <return type-id='type-id-9'/>
+    </function-decl>
+    <function-decl name='rte_compressdev_count' mangled-name='rte_compressdev_count' filepath='../lib/librte_compressdev/rte_compressdev.c' line='138' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_compressdev_count@@EXPERIMENTAL'>
+      <return type-id='type-id-9'/>
+    </function-decl>
+    <function-decl name='rte_compressdev_name_get' mangled-name='rte_compressdev_name_get' filepath='../lib/librte_compressdev/rte_compressdev.c' line='756' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_compressdev_name_get@@EXPERIMENTAL'>
+      <parameter type-id='type-id-9' name='dev_id' filepath='../lib/librte_compressdev/rte_compressdev.c' line='756' column='1'/>
+      <return type-id='type-id-118'/>
+    </function-decl>
+    <function-decl name='rte_compressdev_get_dev_id' mangled-name='rte_compressdev_get_dev_id' filepath='../lib/librte_compressdev/rte_compressdev.c' line='120' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_compressdev_get_dev_id@@EXPERIMENTAL'>
+      <parameter type-id='type-id-118' name='name' filepath='../lib/librte_compressdev/rte_compressdev.c' line='120' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='rte_compressdev_get_feature_name' mangled-name='rte_compressdev_get_feature_name' filepath='../lib/librte_compressdev/rte_compressdev.c' line='55' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_compressdev_get_feature_name@@EXPERIMENTAL'>
+      <parameter type-id='type-id-7' name='flag' filepath='../lib/librte_compressdev/rte_compressdev.c' line='55' column='1'/>
+      <return type-id='type-id-118'/>
+    </function-decl>
+    <function-decl name='rte_compressdev_capability_get' mangled-name='rte_compressdev_capability_get' filepath='../lib/librte_compressdev/rte_compressdev.c' line='32' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_compressdev_capability_get@@EXPERIMENTAL'>
+      <parameter type-id='type-id-9' name='dev_id' filepath='../lib/librte_compressdev/rte_compressdev.c' line='32' column='1'/>
+      <parameter type-id='type-id-122' name='algo' filepath='../lib/librte_compressdev/rte_compressdev.c' line='33' column='1'/>
+      <return type-id='type-id-119'/>
+    </function-decl>
+    <function-type size-in-bits='64' id='type-id-197'>
+      <return type-id='type-id-196'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-180'>
+      <return type-id='type-id-1'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-191'>
+      <parameter type-id='type-id-118'/>
+      <parameter type-id='type-id-14'/>
+      <return type-id='type-id-1'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-184'>
+      <parameter type-id='type-id-183'/>
+      <parameter type-id='type-id-14'/>
+      <return type-id='type-id-1'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-113'>
+      <parameter type-id='type-id-108'/>
+      <return type-id='type-id-1'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-148'>
+      <parameter type-id='type-id-108'/>
+      <parameter type-id='type-id-147'/>
+      <parameter type-id='type-id-92'/>
+      <return type-id='type-id-1'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-111'>
+      <parameter type-id='type-id-108'/>
+      <parameter type-id='type-id-110'/>
+      <return type-id='type-id-1'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-134'>
+      <parameter type-id='type-id-108'/>
+      <parameter type-id='type-id-12'/>
+      <return type-id='type-id-1'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-132'>
+      <parameter type-id='type-id-108'/>
+      <parameter type-id='type-id-12'/>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-1'/>
+      <return type-id='type-id-1'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-150'>
+      <parameter type-id='type-id-108'/>
+      <parameter type-id='type-id-14'/>
+      <return type-id='type-id-1'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-189'>
+      <parameter type-id='type-id-8'/>
+      <return type-id='type-id-1'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-193'>
+      <parameter type-id='type-id-8'/>
+      <parameter type-id='type-id-14'/>
+      <parameter type-id='type-id-7'/>
+      <parameter type-id='type-id-42'/>
+      <return type-id='type-id-1'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-206'>
+      <parameter type-id='type-id-14'/>
+      <return type-id='type-id-1'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-187'>
+      <parameter type-id='type-id-183'/>
+      <parameter type-id='type-id-186'/>
+      <parameter type-id='type-id-14'/>
+      <return type-id='type-id-8'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-88'>
+      <parameter type-id='type-id-14'/>
+      <parameter type-id='type-id-87'/>
+      <parameter type-id='type-id-12'/>
+      <return type-id='type-id-12'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-115'>
+      <parameter type-id='type-id-108'/>
+      <return type-id='type-id-13'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-126'>
+      <parameter type-id='type-id-108'/>
+      <parameter type-id='type-id-125'/>
+      <return type-id='type-id-13'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-130'>
+      <parameter type-id='type-id-108'/>
+      <parameter type-id='type-id-129'/>
+      <return type-id='type-id-13'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-61'>
+      <parameter type-id='type-id-55'/>
+      <parameter type-id='type-id-14'/>
+      <return type-id='type-id-13'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-75'>
+      <parameter type-id='type-id-14'/>
+      <parameter type-id='type-id-14'/>
+      <return type-id='type-id-13'/>
+    </function-type>
+    <function-type size-in-bits='64' id='type-id-204'>
+      <parameter type-id='type-id-14'/>
+      <parameter type-id='type-id-118'/>
+      <parameter type-id='type-id-203'/>
+      <return type-id='type-id-14'/>
+    </function-type>
+  </abi-instr>
+  <abi-instr version='1.0' address-size='64' path='../lib/librte_compressdev/rte_compressdev_pmd.c' comp-dir-path='/root/klaatz/dpdk/gcc' language='LANG_C99'>
+    <var-decl name='compressdev_logtype' type-id='type-id-1' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev_internal.h' line='19' column='1'/>
+    <function-decl name='rte_compressdev_pmd_destroy' mangled-name='rte_compressdev_pmd_destroy' filepath='../lib/librte_compressdev/rte_compressdev_pmd.c' line='137' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_compressdev_pmd_destroy@@EXPERIMENTAL'>
+      <parameter type-id='type-id-108' name='compressdev' filepath='../lib/librte_compressdev/rte_compressdev_pmd.c' line='137' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <class-decl name='rte_compressdev_pmd_init_params' size-in-bits='544' is-struct='yes' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev_pmd.h' line='40' column='1' id='type-id-210'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='name' type-id='type-id-91' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev_pmd.h' line='41' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='512'>
+        <var-decl name='socket_id' type-id='type-id-1' visibility='default' filepath='../lib/librte_compressdev/rte_compressdev_pmd.h' line='42' column='1'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-210' size-in-bits='64' id='type-id-211'/>
+    <function-decl name='rte_compressdev_pmd_create' mangled-name='rte_compressdev_pmd_create' filepath='../lib/librte_compressdev/rte_compressdev_pmd.c' line='88' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_compressdev_pmd_create@@EXPERIMENTAL'>
+      <parameter type-id='type-id-118' name='name' filepath='../lib/librte_compressdev/rte_compressdev_pmd.c' line='88' column='1'/>
+      <parameter type-id='type-id-8' name='device' filepath='../lib/librte_compressdev/rte_compressdev_pmd.c' line='89' column='1'/>
+      <parameter type-id='type-id-42' name='private_data_size' filepath='../lib/librte_compressdev/rte_compressdev_pmd.c' line='90' column='1'/>
+      <parameter type-id='type-id-211' name='params' filepath='../lib/librte_compressdev/rte_compressdev_pmd.c' line='91' column='1'/>
+      <return type-id='type-id-108'/>
+    </function-decl>
+    <function-decl name='rte_compressdev_pmd_parse_input_args' mangled-name='rte_compressdev_pmd_parse_input_args' filepath='../lib/librte_compressdev/rte_compressdev_pmd.c' line='52' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_compressdev_pmd_parse_input_args@@EXPERIMENTAL'>
+      <parameter type-id='type-id-211' name='params' filepath='../lib/librte_compressdev/rte_compressdev_pmd.c' line='53' column='1'/>
+      <parameter type-id='type-id-118' name='args' filepath='../lib/librte_compressdev/rte_compressdev_pmd.c' line='54' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+  </abi-instr>
+  <abi-instr version='1.0' address-size='64' path='../lib/librte_compressdev/rte_comp.c' comp-dir-path='/root/klaatz/dpdk/gcc' language='LANG_C99'>
+    <function-decl name='rte_comp_get_feature_name' mangled-name='rte_comp_get_feature_name' filepath='../lib/librte_compressdev/rte_comp.c' line='10' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_comp_get_feature_name@@EXPERIMENTAL'>
+      <parameter type-id='type-id-7' name='flag' filepath='../lib/librte_compressdev/rte_compressdev.c' line='55' column='1'/>
+      <return type-id='type-id-118'/>
+    </function-decl>
+    <function-decl name='rte_comp_op_bulk_free' mangled-name='rte_comp_op_bulk_free' filepath='../lib/librte_compressdev/rte_comp.c' line='218' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_comp_op_bulk_free@@EXPERIMENTAL'>
+      <parameter type-id='type-id-87' name='ops' filepath='../lib/librte_compressdev/rte_comp.c' line='218' column='1'/>
+      <parameter type-id='type-id-12' name='nb_ops' filepath='../lib/librte_compressdev/rte_comp.c' line='218' column='1'/>
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <function-decl name='rte_comp_op_free' mangled-name='rte_comp_op_free' filepath='../lib/librte_compressdev/rte_comp.c' line='211' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_comp_op_free@@EXPERIMENTAL'>
+      <parameter type-id='type-id-86' name='op' filepath='../lib/librte_compressdev/rte_comp.c' line='211' column='1'/>
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <function-decl name='rte_comp_op_bulk_alloc' mangled-name='rte_comp_op_bulk_alloc' filepath='../lib/librte_compressdev/rte_comp.c' line='186' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_comp_op_bulk_alloc@@EXPERIMENTAL'>
+      <parameter type-id='type-id-18' name='mempool' filepath='../lib/librte_compressdev/rte_comp.c' line='186' column='1'/>
+      <parameter type-id='type-id-87' name='ops' filepath='../lib/librte_compressdev/rte_comp.c' line='187' column='1'/>
+      <parameter type-id='type-id-12' name='nb_ops' filepath='../lib/librte_compressdev/rte_comp.c' line='187' column='1'/>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='rte_comp_op_alloc' mangled-name='rte_comp_op_alloc' filepath='../lib/librte_compressdev/rte_comp.c' line='171' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_comp_op_alloc@@EXPERIMENTAL'>
+      <parameter type-id='type-id-18' name='mempool' filepath='../lib/librte_compressdev/rte_comp.c' line='171' column='1'/>
+      <return type-id='type-id-86'/>
+    </function-decl>
+    <function-decl name='rte_comp_op_pool_create' mangled-name='rte_comp_op_pool_create' filepath='../lib/librte_compressdev/rte_comp.c' line='116' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_comp_op_pool_create@@EXPERIMENTAL'>
+      <parameter type-id='type-id-118' name='name' filepath='../lib/librte_compressdev/rte_comp.c' line='116' column='1'/>
+      <parameter type-id='type-id-31' name='nb_elts' filepath='../lib/librte_compressdev/rte_comp.c' line='117' column='1'/>
+      <parameter type-id='type-id-31' name='cache_size' filepath='../lib/librte_compressdev/rte_comp.c' line='117' column='1'/>
+      <parameter type-id='type-id-12' name='user_size' filepath='../lib/librte_compressdev/rte_comp.c' line='118' column='1'/>
+      <parameter type-id='type-id-1' name='socket_id' filepath='../lib/librte_compressdev/rte_comp.c' line='118' column='1'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+  </abi-instr>
+</abi-corpus>
diff --git a/lib/.abi/librte_cryptodev.dump b/lib/.abi/librte_cryptodev.dump
new file mode 100644
index 000000000..d7b331a85
--- /dev/null
+++ b/lib/.abi/librte_cryptodev.dump
@@ -0,0 +1,1806 @@
+<abi-corpus path='gcc//lib/librte_cryptodev.so.20.0' architecture='elf-amd-x86_64' soname='librte_cryptodev.so.20.0'>
+  <elf-needed>
+    <dependency name='libm.so.6'/>
+    <dependency name='libdl.so.2'/>
+    <dependency name='libnuma.so.1'/>
+    <dependency name='librte_eal.so.20.0'/>
+    <dependency name='librte_kvargs.so.20.0'/>
+    <dependency name='librte_mbuf.so.20.0'/>
+    <dependency name='librte_mempool.so.20.0'/>
+    <dependency name='librte_ring.so.20.0'/>
+    <dependency name='libbsd.so.0'/>
+    <dependency name='libpthread.so.0'/>
+    <dependency name='libc.so.6'/>
+    <dependency name='ld-linux-x86-64.so.2'/>
+  </elf-needed>
+  <elf-function-symbols>
+    <elf-symbol name='rte_crypto_op_pool_create' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_allocate_driver' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_asym_capability_get' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_asym_get_header_session_size' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_asym_get_private_session_size' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_asym_get_xform_enum' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_asym_session_clear' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_asym_session_create' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_asym_session_free' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_asym_session_init' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_asym_xform_capability_check_modlen' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_asym_xform_capability_check_optype' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_callback_register' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_callback_unregister' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_close' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_configure' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_count' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_device_count_by_driver' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_devices_get' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_driver_id_get' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_driver_name_get' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_get_aead_algo_enum' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_get_auth_algo_enum' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_get_cipher_algo_enum' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_get_dev_id' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_get_feature_name' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_get_sec_ctx' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_info_get' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_name_get' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_pmd_allocate' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_pmd_callback_process' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_pmd_create' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_pmd_create_dev_name' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_pmd_destroy' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_pmd_get_dev' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_pmd_get_named_dev' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_pmd_is_valid_dev' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_pmd_parse_input_args' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_pmd_release_device' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_queue_pair_count' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_queue_pair_setup' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_socket_id' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_start' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_stats_get' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_stats_reset' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_stop' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_sym_capability_check_aead' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_sym_capability_check_auth' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_sym_capability_check_cipher' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_sym_capability_get' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_sym_get_existing_header_session_size' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_sym_get_header_session_size' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_sym_get_private_session_size' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_sym_session_clear' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_sym_session_create' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_sym_session_free' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_sym_session_get_user_data' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_sym_session_init' version='DPDK_20.0' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_sym_session_pool_create' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodev_sym_session_set_user_data' version='EXPERIMENTAL' is-default-version='yes' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+  </elf-function-symbols>
+  <elf-variable-symbols>
+    <elf-symbol name='rte_crypto_aead_algorithm_strings' size='24' version='DPDK_20.0' is-default-version='yes' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_crypto_aead_operation_strings' size='16' version='DPDK_20.0' is-default-version='yes' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_crypto_asym_op_strings' size='56' version='EXPERIMENTAL' is-default-version='yes' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_crypto_asym_xform_strings' size='56' version='EXPERIMENTAL' is-default-version='yes' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_crypto_auth_algorithm_strings' size='168' version='DPDK_20.0' is-default-version='yes' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_crypto_auth_operation_strings' size='16' version='DPDK_20.0' is-default-version='yes' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_crypto_cipher_algorithm_strings' size='136' version='DPDK_20.0' is-default-version='yes' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_crypto_cipher_operation_strings' size='16' version='DPDK_20.0' is-default-version='yes' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='rte_cryptodevs' size='8' version='DPDK_20.0' is-default-version='yes' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+  </elf-variable-symbols>
+  <abi-instr version='1.0' address-size='64' path='../lib/librte_cryptodev/rte_cryptodev.c' comp-dir-path='/root/klaatz/dpdk/gcc' language='LANG_C99'>
+    <class-decl name='rte_cryptodev' size-in-bits='1024' is-struct='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='817' column='1' id='type-id-1'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='dequeue_burst' type-id='type-id-2' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='818' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='enqueue_burst' type-id='type-id-3' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='820' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='data' type-id='type-id-4' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='823' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='dev_ops' type-id='type-id-5' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='825' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='feature_flags' type-id='type-id-6' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='827' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <var-decl name='device' type-id='type-id-7' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='829' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <var-decl name='driver_id' type-id='type-id-8' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='832' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='448'>
+        <var-decl name='link_intr_cbs' type-id='type-id-9' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='835' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='576'>
+        <var-decl name='security_ctx' type-id='type-id-10' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='838' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='7'>
+        <var-decl name='attached' type-id='type-id-8' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='842' column='1'/>
+      </data-member>
+    </class-decl>
+    <type-decl name='unsigned short int' size-in-bits='16' id='type-id-11'/>
+    <typedef-decl name='__uint16_t' type-id='type-id-11' filepath='/usr/include/bits/types.h' line='40' column='1' id='type-id-12'/>
+    <typedef-decl name='uint16_t' type-id='type-id-12' filepath='/usr/include/bits/stdint-uintn.h' line='25' column='1' id='type-id-13'/>
+    <type-decl name='void' id='type-id-14'/>
+    <pointer-type-def type-id='type-id-14' size-in-bits='64' id='type-id-10'/>
+    <class-decl name='rte_crypto_op' size-in-bits='192' is-struct='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto.h' line='78' column='1' id='type-id-15'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='' type-id='type-id-16' visibility='default'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='mempool' type-id='type-id-17' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto.h' line='110' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='phys_addr' type-id='type-id-18' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto.h' line='113' column='1'/>
+      </data-member>
+    </class-decl>
+    <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto.h' line='80' column='1' id='type-id-16'>
+      <data-member access='private'>
+        <var-decl name='raw' type-id='type-id-6' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto.h' line='81' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='' type-id='type-id-19' visibility='default'/>
+      </data-member>
+    </union-decl>
+    <type-decl name='unsigned long int' size-in-bits='64' id='type-id-20'/>
+    <typedef-decl name='__uint64_t' type-id='type-id-20' filepath='/usr/include/bits/types.h' line='45' column='1' id='type-id-21'/>
+    <typedef-decl name='uint64_t' type-id='type-id-21' filepath='/usr/include/bits/stdint-uintn.h' line='27' column='1' id='type-id-6'/>
+    <class-decl name='__anonymous_struct__' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto.h' line='83' column='1' id='type-id-19'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='type' type-id='type-id-8' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto.h' line='84' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='8'>
+        <var-decl name='status' type-id='type-id-8' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto.h' line='86' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='16'>
+        <var-decl name='sess_type' type-id='type-id-8' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto.h' line='94' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='24'>
+        <var-decl name='reserved' type-id='type-id-22' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto.h' line='96' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='48'>
+        <var-decl name='private_data_offset' type-id='type-id-13' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto.h' line='100' column='1'/>
+      </data-member>
+    </class-decl>
+    <type-decl name='unsigned char' size-in-bits='8' id='type-id-23'/>
+    <typedef-decl name='__uint8_t' type-id='type-id-23' filepath='/usr/include/bits/types.h' line='38' column='1' id='type-id-24'/>
+    <typedef-decl name='uint8_t' type-id='type-id-24' filepath='/usr/include/bits/stdint-uintn.h' line='24' column='1' id='type-id-8'/>
+
+    <array-type-def dimensions='1' type-id='type-id-8' size-in-bits='24' id='type-id-22'>
+      <subrange length='3' type-id='type-id-20' id='type-id-25'/>
+
+    </array-type-def>
+    <class-decl name='rte_mempool' size-in-bits='1536' is-struct='yes' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='216' column='1' id='type-id-26'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='name' type-id='type-id-27' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='222' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='' type-id='type-id-28' visibility='default'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <var-decl name='pool_config' type-id='type-id-10' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='228' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <var-decl name='mz' type-id='type-id-29' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='229' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='448'>
+        <var-decl name='flags' type-id='type-id-30' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='230' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='480'>
+        <var-decl name='socket_id' type-id='type-id-31' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='231' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='512'>
+        <var-decl name='size' type-id='type-id-32' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='232' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='544'>
+        <var-decl name='cache_size' type-id='type-id-32' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='233' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='576'>
+        <var-decl name='elt_size' type-id='type-id-32' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='236' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='608'>
+        <var-decl name='header_size' type-id='type-id-32' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='237' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='640'>
+        <var-decl name='trailer_size' type-id='type-id-32' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='238' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='672'>
+        <var-decl name='private_data_size' type-id='type-id-30' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='240' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='704'>
+        <var-decl name='ops_index' type-id='type-id-33' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='248' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='768'>
+        <var-decl name='local_cache' type-id='type-id-34' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='250' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='832'>
+        <var-decl name='populated_size' type-id='type-id-32' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='252' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='896'>
+        <var-decl name='elt_list' type-id='type-id-35' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='253' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='1024'>
+        <var-decl name='nb_mem_chunks' type-id='type-id-32' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='254' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='1088'>
+        <var-decl name='mem_list' type-id='type-id-36' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='255' column='1'/>
+      </data-member>
+    </class-decl>
+    <type-decl name='char' size-in-bits='8' id='type-id-37'/>
+
+    <array-type-def dimensions='1' type-id='type-id-37' size-in-bits='256' id='type-id-27'>
+      <subrange length='32' type-id='type-id-20' id='type-id-38'/>
+
+    </array-type-def>
+    <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='224' column='1' id='type-id-28'>
+      <data-member access='private'>
+        <var-decl name='pool_data' type-id='type-id-10' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='225' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='pool_id' type-id='type-id-6' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='226' column='1'/>
+      </data-member>
+    </union-decl>
+    <class-decl name='rte_memzone' size-in-bits='576' is-struct='yes' visibility='default' filepath='../lib/librte_eal/common/include/rte_memzone.h' line='49' column='1' id='type-id-39'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='name' type-id='type-id-27' visibility='default' filepath='../lib/librte_eal/common/include/rte_memzone.h' line='52' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='' type-id='type-id-40' visibility='default'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <var-decl name='len' type-id='type-id-41' visibility='default' filepath='../lib/librte_eal/common/include/rte_memzone.h' line='64' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='448'>
+        <var-decl name='hugepage_sz' type-id='type-id-6' visibility='default' filepath='../lib/librte_eal/common/include/rte_memzone.h' line='66' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='512'>
+        <var-decl name='socket_id' type-id='type-id-33' visibility='default' filepath='../lib/librte_eal/common/include/rte_memzone.h' line='68' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='544'>
+        <var-decl name='flags' type-id='type-id-32' visibility='default' filepath='../lib/librte_eal/common/include/rte_memzone.h' line='70' column='1'/>
+      </data-member>
+    </class-decl>
+    <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='../lib/librte_eal/common/include/rte_memzone.h' line='55' column='1' id='type-id-40'>
+      <data-member access='private'>
+        <var-decl name='phys_addr' type-id='type-id-42' visibility='default' filepath='../lib/librte_eal/common/include/rte_memzone.h' line='56' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='iova' type-id='type-id-18' visibility='default' filepath='../lib/librte_eal/common/include/rte_memzone.h' line='57' column='1'/>
+      </data-member>
+    </union-decl>
+    <typedef-decl name='phys_addr_t' type-id='type-id-6' filepath='../lib/librte_eal/common/include/rte_common.h' line='325' column='1' id='type-id-42'/>
+    <typedef-decl name='rte_iova_t' type-id='type-id-6' filepath='../lib/librte_eal/common/include/rte_common.h' line='335' column='1' id='type-id-18'/>
+    <typedef-decl name='size_t' type-id='type-id-20' filepath='/usr/lib/gcc/x86_64-redhat-linux/9/include/stddef.h' line='209' column='1' id='type-id-41'/>
+    <type-decl name='int' size-in-bits='32' id='type-id-31'/>
+    <typedef-decl name='__int32_t' type-id='type-id-31' filepath='/usr/include/bits/types.h' line='41' column='1' id='type-id-43'/>
+    <typedef-decl name='int32_t' type-id='type-id-43' filepath='/usr/include/bits/stdint-intn.h' line='26' column='1' id='type-id-33'/>
+    <type-decl name='unsigned int' size-in-bits='32' id='type-id-30'/>
+    <typedef-decl name='__uint32_t' type-id='type-id-30' filepath='/usr/include/bits/types.h' line='42' column='1' id='type-id-44'/>
+    <typedef-decl name='uint32_t' type-id='type-id-44' filepath='/usr/include/bits/stdint-uintn.h' line='26' column='1' id='type-id-32'/>
+    <qualified-type-def type-id='type-id-39' const='yes' id='type-id-45'/>
+    <pointer-type-def type-id='type-id-45' size-in-bits='64' id='type-id-29'/>
+    <class-decl name='rte_mempool_cache' size-in-bits='98816' is-struct='yes' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='83' column='1' id='type-id-46'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='size' type-id='type-id-32' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='84' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='flushthresh' type-id='type-id-32' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='85' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='len' type-id='type-id-32' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='86' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='objs' type-id='type-id-47' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='91' column='1'/>
+      </data-member>
+    </class-decl>
+
+    <array-type-def dimensions='1' type-id='type-id-10' size-in-bits='98304' id='type-id-47'>
+      <subrange length='1536' type-id='type-id-20' id='type-id-48'/>
+
+    </array-type-def>
+    <pointer-type-def type-id='type-id-46' size-in-bits='64' id='type-id-34'/>
+    <class-decl name='rte_mempool_objhdr_list' size-in-bits='128' is-struct='yes' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='152' column='1' id='type-id-35'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='stqh_first' type-id='type-id-49' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='152' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='stqh_last' type-id='type-id-50' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='152' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='rte_mempool_objhdr' size-in-bits='192' is-struct='yes' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='136' column='1' id='type-id-51'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='next' type-id='type-id-52' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='137' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='mp' type-id='type-id-17' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='138' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='' type-id='type-id-53' visibility='default'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='__anonymous_struct__' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='137' column='1' id='type-id-52'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='stqe_next' type-id='type-id-49' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='137' column='1'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-51' size-in-bits='64' id='type-id-49'/>
+    <pointer-type-def type-id='type-id-26' size-in-bits='64' id='type-id-17'/>
+    <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='140' column='1' id='type-id-53'>
+      <data-member access='private'>
+        <var-decl name='iova' type-id='type-id-18' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='141' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='physaddr' type-id='type-id-42' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='142' column='1'/>
+      </data-member>
+    </union-decl>
+    <pointer-type-def type-id='type-id-49' size-in-bits='64' id='type-id-50'/>
+    <class-decl name='rte_mempool_memhdr_list' size-in-bits='128' is-struct='yes' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='171' column='1' id='type-id-36'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='stqh_first' type-id='type-id-54' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='171' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='stqh_last' type-id='type-id-55' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='171' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='rte_mempool_memhdr' size-in-bits='448' is-struct='yes' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='185' column='1' id='type-id-56'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='next' type-id='type-id-57' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='186' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='mp' type-id='type-id-17' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='187' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='addr' type-id='type-id-10' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='188' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='' type-id='type-id-58' visibility='default'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='len' type-id='type-id-41' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='194' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <var-decl name='free_cb' type-id='type-id-59' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='195' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <var-decl name='opaque' type-id='type-id-10' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='196' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='__anonymous_struct__' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='186' column='1' id='type-id-57'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='stqe_next' type-id='type-id-54' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='186' column='1'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-56' size-in-bits='64' id='type-id-54'/>
+    <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='190' column='1' id='type-id-58'>
+      <data-member access='private'>
+        <var-decl name='iova' type-id='type-id-18' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='191' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='phys_addr' type-id='type-id-42' visibility='default' filepath='../lib/librte_mempool/rte_mempool.h' line='192' column='1'/>
+      </data-member>
+    </union-decl>
+    <typedef-decl name='rte_mempool_memchunk_free_cb_t' type-id='type-id-60' filepath='../lib/librte_mempool/rte_mempool.h' line='176' column='1' id='type-id-61'/>
+    <pointer-type-def type-id='type-id-61' size-in-bits='64' id='type-id-59'/>
+    <pointer-type-def type-id='type-id-54' size-in-bits='64' id='type-id-55'/>
+    <pointer-type-def type-id='type-id-15' size-in-bits='64' id='type-id-62'/>
+    <pointer-type-def type-id='type-id-62' size-in-bits='64' id='type-id-63'/>
+    <pointer-type-def type-id='type-id-64' size-in-bits='64' id='type-id-65'/>
+    <typedef-decl name='dequeue_pkt_burst_t' type-id='type-id-65' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='800' column='1' id='type-id-2'/>
+    <typedef-decl name='enqueue_pkt_burst_t' type-id='type-id-65' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='804' column='1' id='type-id-3'/>
+    <class-decl name='rte_cryptodev_data' size-in-bits='1024' is-struct='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='856' column='1' id='type-id-66'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='dev_id' type-id='type-id-8' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='857' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='8'>
+        <var-decl name='socket_id' type-id='type-id-8' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='859' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='16'>
+        <var-decl name='name' type-id='type-id-67' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='861' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='7'>
+        <var-decl name='dev_started' type-id='type-id-8' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='865' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='576'>
+        <var-decl name='session_pool' type-id='type-id-17' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='868' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='640'>
+        <var-decl name='queue_pairs' type-id='type-id-68' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='870' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='704'>
+        <var-decl name='nb_queue_pairs' type-id='type-id-13' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='872' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='768'>
+        <var-decl name='dev_private' type-id='type-id-10' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='875' column='1'/>
+      </data-member>
+    </class-decl>
+
+    <array-type-def dimensions='1' type-id='type-id-37' size-in-bits='512' id='type-id-67'>
+      <subrange length='64' type-id='type-id-20' id='type-id-69'/>
+
+    </array-type-def>
+    <pointer-type-def type-id='type-id-10' size-in-bits='64' id='type-id-68'/>
+    <pointer-type-def type-id='type-id-66' size-in-bits='64' id='type-id-4'/>
+    <class-decl name='rte_cryptodev_ops' size-in-bits='1024' is-struct='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev_pmd.h' line='313' column='1' id='type-id-70'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='dev_configure' type-id='type-id-71' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev_pmd.h' line='314' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='dev_start' type-id='type-id-72' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev_pmd.h' line='315' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='dev_stop' type-id='type-id-73' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev_pmd.h' line='316' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='dev_close' type-id='type-id-74' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev_pmd.h' line='317' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='dev_infos_get' type-id='type-id-75' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev_pmd.h' line='319' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <var-decl name='stats_get' type-id='type-id-76' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev_pmd.h' line='321' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <var-decl name='stats_reset' type-id='type-id-77' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev_pmd.h' line='323' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='448'>
+        <var-decl name='queue_pair_setup' type-id='type-id-78' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev_pmd.h' line='326' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='512'>
+        <var-decl name='queue_pair_release' type-id='type-id-79' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev_pmd.h' line='328' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='576'>
+        <var-decl name='queue_pair_count' type-id='type-id-80' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev_pmd.h' line='330' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='640'>
+        <var-decl name='sym_session_get_size' type-id='type-id-81' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev_pmd.h' line='333' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='704'>
+        <var-decl name='asym_session_get_size' type-id='type-id-82' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev_pmd.h' line='335' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='768'>
+        <var-decl name='sym_session_configure' type-id='type-id-83' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev_pmd.h' line='337' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='832'>
+        <var-decl name='asym_session_configure' type-id='type-id-84' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev_pmd.h' line='339' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='896'>
+        <var-decl name='sym_session_clear' type-id='type-id-85' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev_pmd.h' line='341' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='960'>
+        <var-decl name='asym_session_clear' type-id='type-id-86' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev_pmd.h' line='343' column='1'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-1' size-in-bits='64' id='type-id-87'/>
+    <class-decl name='rte_cryptodev_config' size-in-bits='128' is-struct='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='619' column='1' id='type-id-88'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='socket_id' type-id='type-id-31' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='620' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='nb_queue_pairs' type-id='type-id-13' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='621' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='ff_disable' type-id='type-id-6' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='623' column='1'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-88' size-in-bits='64' id='type-id-89'/>
+    <pointer-type-def type-id='type-id-90' size-in-bits='64' id='type-id-91'/>
+    <typedef-decl name='cryptodev_configure_t' type-id='type-id-91' filepath='../lib/librte_cryptodev/rte_cryptodev_pmd.h' line='127' column='1' id='type-id-71'/>
+    <pointer-type-def type-id='type-id-92' size-in-bits='64' id='type-id-93'/>
+    <typedef-decl name='cryptodev_start_t' type-id='type-id-93' filepath='../lib/librte_cryptodev/rte_cryptodev_pmd.h' line='137' column='1' id='type-id-72'/>
+    <pointer-type-def type-id='type-id-94' size-in-bits='64' id='type-id-95'/>
+    <typedef-decl name='cryptodev_stop_t' type-id='type-id-95' filepath='../lib/librte_cryptodev/rte_cryptodev_pmd.h' line='144' column='1' id='type-id-73'/>
+    <typedef-decl name='cryptodev_close_t' type-id='type-id-93' filepath='../lib/librte_cryptodev/rte_cryptodev_pmd.h' line='154' column='1' id='type-id-74'/>
+    <class-decl name='rte_cryptodev_info' size-in-bits='448' is-struct='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='468' column='1' id='type-id-96'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='driver_name' type-id='type-id-97' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='469' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='driver_id' type-id='type-id-8' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='470' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='device' type-id='type-id-7' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='471' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='feature_flags' type-id='type-id-6' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='473' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='capabilities' type-id='type-id-98' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='476' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <var-decl name='max_nb_queue_pairs' type-id='type-id-30' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='479' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='352'>
+        <var-decl name='min_mbuf_headroom_req' type-id='type-id-13' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='482' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='368'>
+        <var-decl name='min_mbuf_tailroom_req' type-id='type-id-13' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='485' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <var-decl name='sym' type-id='type-id-99' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='494' column='1'/>
+      </data-member>
+    </class-decl>
+    <qualified-type-def type-id='type-id-37' const='yes' id='type-id-100'/>
+    <pointer-type-def type-id='type-id-100' size-in-bits='64' id='type-id-97'/>
+    <class-decl name='rte_device' size-in-bits='448' is-struct='yes' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='104' column='1' id='type-id-101'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='next' type-id='type-id-102' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='105' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='name' type-id='type-id-97' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='106' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='driver' type-id='type-id-103' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='107' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='bus' type-id='type-id-104' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='108' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <var-decl name='numa_node' type-id='type-id-31' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='109' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <var-decl name='devargs' type-id='type-id-105' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='110' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='105' column='1' id='type-id-102'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='tqe_next' type-id='type-id-7' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='105' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='tqe_prev' type-id='type-id-106' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='105' column='1'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-101' size-in-bits='64' id='type-id-7'/>
+    <pointer-type-def type-id='type-id-7' size-in-bits='64' id='type-id-106'/>
+    <class-decl name='rte_driver' size-in-bits='256' is-struct='yes' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='89' column='1' id='type-id-107'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='next' type-id='type-id-108' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='90' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='name' type-id='type-id-97' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='91' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='alias' type-id='type-id-97' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='92' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='90' column='1' id='type-id-108'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='tqe_next' type-id='type-id-109' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='90' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='tqe_prev' type-id='type-id-110' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='90' column='1'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-107' size-in-bits='64' id='type-id-109'/>
+    <pointer-type-def type-id='type-id-109' size-in-bits='64' id='type-id-110'/>
+    <qualified-type-def type-id='type-id-107' const='yes' id='type-id-111'/>
+    <pointer-type-def type-id='type-id-111' size-in-bits='64' id='type-id-103'/>
+    <class-decl name='rte_bus' size-in-bits='1024' is-struct='yes' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='246' column='1' id='type-id-112'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='next' type-id='type-id-113' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='247' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='name' type-id='type-id-97' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='248' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='scan' type-id='type-id-114' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='249' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='probe' type-id='type-id-115' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='250' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <var-decl name='find_device' type-id='type-id-116' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='251' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <var-decl name='plug' type-id='type-id-117' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='252' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='448'>
+        <var-decl name='unplug' type-id='type-id-118' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='253' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='512'>
+        <var-decl name='parse' type-id='type-id-119' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='254' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='576'>
+        <var-decl name='dma_map' type-id='type-id-120' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='255' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='640'>
+        <var-decl name='dma_unmap' type-id='type-id-121' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='256' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='704'>
+        <var-decl name='conf' type-id='type-id-122' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='257' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='768'>
+        <var-decl name='get_iommu_class' type-id='type-id-123' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='258' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='832'>
+        <var-decl name='dev_iterate' type-id='type-id-124' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='259' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='896'>
+        <var-decl name='hot_unplug_handler' type-id='type-id-125' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='260' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='960'>
+        <var-decl name='sigbus_handler' type-id='type-id-126' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='262' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='247' column='1' id='type-id-113'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='tqe_next' type-id='type-id-127' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='247' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='tqe_prev' type-id='type-id-128' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='247' column='1'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-112' size-in-bits='64' id='type-id-127'/>
+    <pointer-type-def type-id='type-id-127' size-in-bits='64' id='type-id-128'/>
+    <pointer-type-def type-id='type-id-129' size-in-bits='64' id='type-id-130'/>
+    <typedef-decl name='rte_bus_scan_t' type-id='type-id-130' filepath='../lib/librte_eal/common/include/rte_bus.h' line='56' column='1' id='type-id-114'/>
+    <typedef-decl name='rte_bus_probe_t' type-id='type-id-130' filepath='../lib/librte_eal/common/include/rte_bus.h' line='68' column='1' id='type-id-115'/>
+    <qualified-type-def type-id='type-id-101' const='yes' id='type-id-131'/>
+    <pointer-type-def type-id='type-id-131' size-in-bits='64' id='type-id-132'/>
+    <pointer-type-def type-id='type-id-133' size-in-bits='64' id='type-id-134'/>
+    <typedef-decl name='rte_dev_cmp_t' type-id='type-id-134' filepath='../lib/librte_eal/common/include/rte_dev.h' line='202' column='1' id='type-id-135'/>
+    <pointer-type-def type-id='type-id-136' size-in-bits='64' id='type-id-137'/>
+    <typedef-decl name='rte_bus_find_device_t' type-id='type-id-137' filepath='../lib/librte_eal/common/include/rte_bus.h' line='93' column='1' id='type-id-116'/>
+    <pointer-type-def type-id='type-id-138' size-in-bits='64' id='type-id-139'/>
+    <typedef-decl name='rte_bus_plug_t' type-id='type-id-139' filepath='../lib/librte_eal/common/include/rte_bus.h' line='107' column='1' id='type-id-117'/>
+    <typedef-decl name='rte_bus_unplug_t' type-id='type-id-139' filepath='../lib/librte_eal/common/include/rte_bus.h' line='120' column='1' id='type-id-118'/>
+    <pointer-type-def type-id='type-id-140' size-in-bits='64' id='type-id-141'/>
+    <typedef-decl name='rte_bus_parse_t' type-id='type-id-141' filepath='../lib/librte_eal/common/include/rte_bus.h' line='140' column='1' id='type-id-119'/>
+    <pointer-type-def type-id='type-id-142' size-in-bits='64' id='type-id-143'/>
+    <typedef-decl name='rte_dev_dma_map_t' type-id='type-id-143' filepath='../lib/librte_eal/common/include/rte_bus.h' line='160' column='1' id='type-id-120'/>
+    <typedef-decl name='rte_dev_dma_unmap_t' type-id='type-id-143' filepath='../lib/librte_eal/common/include/rte_bus.h' line='181' column='1' id='type-id-121'/>
+    <class-decl name='rte_bus_conf' size-in-bits='32' is-struct='yes' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='225' column='1' id='type-id-122'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='scan_mode' type-id='type-id-144' visibility='default' filepath='../lib/librte_eal/common/include/rte_bus.h' line='226' column='1'/>
+      </data-member>
+    </class-decl>
+    <type-decl name='unnamed-enum-underlying-type' is-anonymous='yes' size-in-bits='32' alignment-in-bits='32' id='type-id-145'/>
+    <enum-decl name='rte_bus_scan_mode' filepath='../lib/librte_eal/common/include/rte_bus.h' line='216' column='1' id='type-id-144'>
+      <underlying-type type-id='type-id-145'/>
+      <enumerator name='RTE_BUS_SCAN_UNDEFINED' value='0'/>
+      <enumerator name='RTE_BUS_SCAN_WHITELIST' value='1'/>
+      <enumerator name='RTE_BUS_SCAN_BLACKLIST' value='2'/>
+    </enum-decl>
+    <enum-decl name='rte_iova_mode' filepath='../lib/librte_eal/common/include/rte_bus.h' line='39' column='1' id='type-id-146'>
+      <underlying-type type-id='type-id-145'/>
+      <enumerator name='RTE_IOVA_DC' value='0'/>
+      <enumerator name='RTE_IOVA_PA' value='1'/>
+      <enumerator name='RTE_IOVA_VA' value='2'/>
+    </enum-decl>
+    <pointer-type-def type-id='type-id-147' size-in-bits='64' id='type-id-148'/>
+    <typedef-decl name='rte_bus_get_iommu_class_t' type-id='type-id-148' filepath='../lib/librte_eal/common/include/rte_bus.h' line='240' column='1' id='type-id-123'/>
+    <class-decl name='rte_dev_iterator' size-in-bits='448' is-struct='yes' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='250' column='1' id='type-id-149'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='dev_str' type-id='type-id-97' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='251' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='bus_str' type-id='type-id-97' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='252' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='cls_str' type-id='type-id-97' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='253' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='bus' type-id='type-id-127' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='254' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='cls' type-id='type-id-150' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='255' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <var-decl name='device' type-id='type-id-7' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='256' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <var-decl name='class_device' type-id='type-id-10' visibility='default' filepath='../lib/librte_eal/common/include/rte_dev.h' line='257' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='rte_class' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-151'/>
+    <pointer-type-def type-id='type-id-151' size-in-bits='64' id='type-id-150'/>
+    <qualified-type-def type-id='type-id-149' const='yes' id='type-id-152'/>
+    <pointer-type-def type-id='type-id-152' size-in-bits='64' id='type-id-153'/>
+    <pointer-type-def type-id='type-id-154' size-in-bits='64' id='type-id-155'/>
+    <typedef-decl name='rte_dev_iterate_t' type-id='type-id-155' filepath='../lib/librte_eal/common/include/rte_dev.h' line='288' column='1' id='type-id-124'/>
+    <typedef-decl name='rte_bus_hot_unplug_handler_t' type-id='type-id-139' filepath='../lib/librte_eal/common/include/rte_bus.h' line='196' column='1' id='type-id-125'/>
+    <pointer-type-def type-id='type-id-156' size-in-bits='64' id='type-id-157'/>
+    <typedef-decl name='rte_bus_sigbus_handler_t' type-id='type-id-157' filepath='../lib/librte_eal/common/include/rte_bus.h' line='211' column='1' id='type-id-126'/>
+    <qualified-type-def type-id='type-id-112' const='yes' id='type-id-158'/>
+    <pointer-type-def type-id='type-id-158' size-in-bits='64' id='type-id-104'/>
+    <class-decl name='rte_devargs' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-159'/>
+    <pointer-type-def type-id='type-id-159' size-in-bits='64' id='type-id-105'/>
+    <class-decl name='rte_cryptodev_capabilities' size-in-bits='320' is-struct='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='176' column='1' id='type-id-160'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='op' type-id='type-id-161' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='177' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='' type-id='type-id-162' visibility='default'/>
+      </data-member>
+    </class-decl>
+    <enum-decl name='rte_crypto_op_type' filepath='../lib/librte_cryptodev/rte_crypto.h' line='29' column='1' id='type-id-161'>
+      <underlying-type type-id='type-id-145'/>
+      <enumerator name='RTE_CRYPTO_OP_TYPE_UNDEFINED' value='0'/>
+      <enumerator name='RTE_CRYPTO_OP_TYPE_SYMMETRIC' value='1'/>
+      <enumerator name='RTE_CRYPTO_OP_TYPE_ASYMMETRIC' value='2'/>
+    </enum-decl>
+    <union-decl name='__anonymous_union__' size-in-bits='288' is-anonymous='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='181' column='1' id='type-id-162'>
+      <data-member access='private'>
+        <var-decl name='sym' type-id='type-id-163' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='182' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='asym' type-id='type-id-164' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='184' column='1'/>
+      </data-member>
+    </union-decl>
+    <class-decl name='rte_cryptodev_symmetric_capability' size-in-bits='288' is-struct='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='98' column='1' id='type-id-163'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='xform_type' type-id='type-id-165' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='99' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='' type-id='type-id-166' visibility='default'/>
+      </data-member>
+    </class-decl>
+    <enum-decl name='rte_crypto_sym_xform_type' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='424' column='1' id='type-id-165'>
+      <underlying-type type-id='type-id-145'/>
+      <enumerator name='RTE_CRYPTO_SYM_XFORM_NOT_SPECIFIED' value='0'/>
+      <enumerator name='RTE_CRYPTO_SYM_XFORM_AUTH' value='1'/>
+      <enumerator name='RTE_CRYPTO_SYM_XFORM_CIPHER' value='2'/>
+      <enumerator name='RTE_CRYPTO_SYM_XFORM_AEAD' value='3'/>
+    </enum-decl>
+    <union-decl name='__anonymous_union__' size-in-bits='256' is-anonymous='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='102' column='1' id='type-id-166'>
+      <data-member access='private'>
+        <var-decl name='auth' type-id='type-id-167' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='116' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='cipher' type-id='type-id-168' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='127' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='aead' type-id='type-id-169' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='142' column='1'/>
+      </data-member>
+    </union-decl>
+    <class-decl name='__anonymous_struct__' size-in-bits='256' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='103' column='1' id='type-id-167'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='algo' type-id='type-id-170' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='104' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='block_size' type-id='type-id-13' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='106' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='48'>
+        <var-decl name='key_size' type-id='type-id-171' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='108' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='96'>
+        <var-decl name='digest_size' type-id='type-id-171' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='110' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='144'>
+        <var-decl name='aad_size' type-id='type-id-171' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='112' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='iv_size' type-id='type-id-171' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='114' column='1'/>
+      </data-member>
+    </class-decl>
+    <enum-decl name='rte_crypto_auth_algorithm' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='189' column='1' id='type-id-170'>
+      <underlying-type type-id='type-id-145'/>
+      <enumerator name='RTE_CRYPTO_AUTH_NULL' value='1'/>
+      <enumerator name='RTE_CRYPTO_AUTH_AES_CBC_MAC' value='2'/>
+      <enumerator name='RTE_CRYPTO_AUTH_AES_CMAC' value='3'/>
+      <enumerator name='RTE_CRYPTO_AUTH_AES_GMAC' value='4'/>
+      <enumerator name='RTE_CRYPTO_AUTH_AES_XCBC_MAC' value='5'/>
+      <enumerator name='RTE_CRYPTO_AUTH_KASUMI_F9' value='6'/>
+      <enumerator name='RTE_CRYPTO_AUTH_MD5' value='7'/>
+      <enumerator name='RTE_CRYPTO_AUTH_MD5_HMAC' value='8'/>
+      <enumerator name='RTE_CRYPTO_AUTH_SHA1' value='9'/>
+      <enumerator name='RTE_CRYPTO_AUTH_SHA1_HMAC' value='10'/>
+      <enumerator name='RTE_CRYPTO_AUTH_SHA224' value='11'/>
+      <enumerator name='RTE_CRYPTO_AUTH_SHA224_HMAC' value='12'/>
+      <enumerator name='RTE_CRYPTO_AUTH_SHA256' value='13'/>
+      <enumerator name='RTE_CRYPTO_AUTH_SHA256_HMAC' value='14'/>
+      <enumerator name='RTE_CRYPTO_AUTH_SHA384' value='15'/>
+      <enumerator name='RTE_CRYPTO_AUTH_SHA384_HMAC' value='16'/>
+      <enumerator name='RTE_CRYPTO_AUTH_SHA512' value='17'/>
+      <enumerator name='RTE_CRYPTO_AUTH_SHA512_HMAC' value='18'/>
+      <enumerator name='RTE_CRYPTO_AUTH_SNOW3G_UIA2' value='19'/>
+      <enumerator name='RTE_CRYPTO_AUTH_ZUC_EIA3' value='20'/>
+      <enumerator name='RTE_CRYPTO_AUTH_SHA3_224' value='21'/>
+      <enumerator name='RTE_CRYPTO_AUTH_SHA3_224_HMAC' value='22'/>
+      <enumerator name='RTE_CRYPTO_AUTH_SHA3_256' value='23'/>
+      <enumerator name='RTE_CRYPTO_AUTH_SHA3_256_HMAC' value='24'/>
+      <enumerator name='RTE_CRYPTO_AUTH_SHA3_384' value='25'/>
+      <enumerator name='RTE_CRYPTO_AUTH_SHA3_384_HMAC' value='26'/>
+      <enumerator name='RTE_CRYPTO_AUTH_SHA3_512' value='27'/>
+      <enumerator name='RTE_CRYPTO_AUTH_SHA3_512_HMAC' value='28'/>
+      <enumerator name='RTE_CRYPTO_AUTH_LIST_END' value='29'/>
+    </enum-decl>
+    <class-decl name='rte_crypto_param_range' size-in-bits='48' is-struct='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='84' column='1' id='type-id-171'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='min' type-id='type-id-13' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='85' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='16'>
+        <var-decl name='max' type-id='type-id-13' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='86' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='increment' type-id='type-id-13' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='87' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='__anonymous_struct__' size-in-bits='160' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='118' column='1' id='type-id-168'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='algo' type-id='type-id-172' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='119' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='block_size' type-id='type-id-13' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='121' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='48'>
+        <var-decl name='key_size' type-id='type-id-171' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='123' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='96'>
+        <var-decl name='iv_size' type-id='type-id-171' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='125' column='1'/>
+      </data-member>
+    </class-decl>
+    <enum-decl name='rte_crypto_cipher_algorithm' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='30' column='1' id='type-id-172'>
+      <underlying-type type-id='type-id-145'/>
+      <enumerator name='RTE_CRYPTO_CIPHER_NULL' value='1'/>
+      <enumerator name='RTE_CRYPTO_CIPHER_3DES_CBC' value='2'/>
+      <enumerator name='RTE_CRYPTO_CIPHER_3DES_CTR' value='3'/>
+      <enumerator name='RTE_CRYPTO_CIPHER_3DES_ECB' value='4'/>
+      <enumerator name='RTE_CRYPTO_CIPHER_AES_CBC' value='5'/>
+      <enumerator name='RTE_CRYPTO_CIPHER_AES_CTR' value='6'/>
+      <enumerator name='RTE_CRYPTO_CIPHER_AES_ECB' value='7'/>
+      <enumerator name='RTE_CRYPTO_CIPHER_AES_F8' value='8'/>
+      <enumerator name='RTE_CRYPTO_CIPHER_AES_XTS' value='9'/>
+      <enumerator name='RTE_CRYPTO_CIPHER_ARC4' value='10'/>
+      <enumerator name='RTE_CRYPTO_CIPHER_KASUMI_F8' value='11'/>
+      <enumerator name='RTE_CRYPTO_CIPHER_SNOW3G_UEA2' value='12'/>
+      <enumerator name='RTE_CRYPTO_CIPHER_ZUC_EEA3' value='13'/>
+      <enumerator name='RTE_CRYPTO_CIPHER_DES_CBC' value='14'/>
+      <enumerator name='RTE_CRYPTO_CIPHER_AES_DOCSISBPI' value='15'/>
+      <enumerator name='RTE_CRYPTO_CIPHER_DES_DOCSISBPI' value='16'/>
+      <enumerator name='RTE_CRYPTO_CIPHER_LIST_END' value='17'/>
+    </enum-decl>
+    <class-decl name='__anonymous_struct__' size-in-bits='256' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='129' column='1' id='type-id-169'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='algo' type-id='type-id-173' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='130' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='block_size' type-id='type-id-13' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='132' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='48'>
+        <var-decl name='key_size' type-id='type-id-171' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='134' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='96'>
+        <var-decl name='digest_size' type-id='type-id-171' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='136' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='144'>
+        <var-decl name='aad_size' type-id='type-id-171' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='138' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='iv_size' type-id='type-id-171' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='140' column='1'/>
+      </data-member>
+    </class-decl>
+    <enum-decl name='rte_crypto_aead_algorithm' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='346' column='1' id='type-id-173'>
+      <underlying-type type-id='type-id-145'/>
+      <enumerator name='RTE_CRYPTO_AEAD_AES_CCM' value='1'/>
+      <enumerator name='RTE_CRYPTO_AEAD_AES_GCM' value='2'/>
+      <enumerator name='RTE_CRYPTO_AEAD_LIST_END' value='3'/>
+    </enum-decl>
+    <class-decl name='rte_cryptodev_asymmetric_capability' size-in-bits='128' is-struct='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='170' column='1' id='type-id-164'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='xform_capa' type-id='type-id-174' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='171' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='rte_cryptodev_asymmetric_xform_capability' size-in-bits='128' is-struct='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='150' column='1' id='type-id-174'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='xform_type' type-id='type-id-175' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='151' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='op_types' type-id='type-id-32' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='154' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='' type-id='type-id-176' visibility='default'/>
+      </data-member>
+    </class-decl>
+    <enum-decl name='rte_crypto_asym_xform_type' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='53' column='1' id='type-id-175'>
+      <underlying-type type-id='type-id-145'/>
+      <enumerator name='RTE_CRYPTO_ASYM_XFORM_UNSPECIFIED' value='0'/>
+      <enumerator name='RTE_CRYPTO_ASYM_XFORM_NONE' value='1'/>
+      <enumerator name='RTE_CRYPTO_ASYM_XFORM_RSA' value='2'/>
+      <enumerator name='RTE_CRYPTO_ASYM_XFORM_DH' value='3'/>
+      <enumerator name='RTE_CRYPTO_ASYM_XFORM_DSA' value='4'/>
+      <enumerator name='RTE_CRYPTO_ASYM_XFORM_MODINV' value='5'/>
+      <enumerator name='RTE_CRYPTO_ASYM_XFORM_MODEX' value='6'/>
+      <enumerator name='RTE_CRYPTO_ASYM_XFORM_TYPE_LIST_END' value='7'/>
+    </enum-decl>
+    <union-decl name='__anonymous_union__' size-in-bits='48' is-anonymous='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='158' column='1' id='type-id-176'>
+      <data-member access='private'>
+        <var-decl name='modlen' type-id='type-id-171' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='159' column='1'/>
+      </data-member>
+    </union-decl>
+    <qualified-type-def type-id='type-id-160' const='yes' id='type-id-177'/>
+    <pointer-type-def type-id='type-id-177' size-in-bits='64' id='type-id-98'/>
+    <class-decl name='__anonymous_struct__' size-in-bits='32' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='488' column='1' id='type-id-99'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='max_nb_sessions' type-id='type-id-30' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='489' column='1'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-96' size-in-bits='64' id='type-id-178'/>
+    <pointer-type-def type-id='type-id-179' size-in-bits='64' id='type-id-180'/>
+    <typedef-decl name='cryptodev_info_get_t' type-id='type-id-180' filepath='../lib/librte_cryptodev/rte_cryptodev_pmd.h' line='180' column='1' id='type-id-75'/>
+    <class-decl name='rte_cryptodev_stats' size-in-bits='256' is-struct='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='530' column='1' id='type-id-181'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='enqueued_count' type-id='type-id-6' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='531' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='dequeued_count' type-id='type-id-6' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='533' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='enqueue_err_count' type-id='type-id-6' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='536' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='dequeue_err_count' type-id='type-id-6' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='538' column='1'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-181' size-in-bits='64' id='type-id-182'/>
+    <pointer-type-def type-id='type-id-183' size-in-bits='64' id='type-id-184'/>
+    <typedef-decl name='cryptodev_stats_get_t' type-id='type-id-184' filepath='../lib/librte_cryptodev/rte_cryptodev_pmd.h' line='163' column='1' id='type-id-76'/>
+    <typedef-decl name='cryptodev_stats_reset_t' type-id='type-id-95' filepath='../lib/librte_cryptodev/rte_cryptodev_pmd.h' line='172' column='1' id='type-id-77'/>
+    <class-decl name='rte_cryptodev_qp_conf' size-in-bits='192' is-struct='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='508' column='1' id='type-id-185'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='nb_descriptors' type-id='type-id-32' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='509' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='mp_session' type-id='type-id-17' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='510' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='mp_session_private' type-id='type-id-17' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='512' column='1'/>
+      </data-member>
+    </class-decl>
+    <qualified-type-def type-id='type-id-185' const='yes' id='type-id-186'/>
+    <pointer-type-def type-id='type-id-186' size-in-bits='64' id='type-id-187'/>
+    <pointer-type-def type-id='type-id-188' size-in-bits='64' id='type-id-189'/>
+    <typedef-decl name='cryptodev_queue_pair_setup_t' type-id='type-id-189' filepath='../lib/librte_cryptodev/rte_cryptodev_pmd.h' line='193' column='1' id='type-id-78'/>
+    <pointer-type-def type-id='type-id-190' size-in-bits='64' id='type-id-191'/>
+    <typedef-decl name='cryptodev_queue_pair_release_t' type-id='type-id-191' filepath='../lib/librte_cryptodev/rte_cryptodev_pmd.h' line='207' column='1' id='type-id-79'/>
+    <pointer-type-def type-id='type-id-192' size-in-bits='64' id='type-id-193'/>
+    <typedef-decl name='cryptodev_queue_pair_count_t' type-id='type-id-193' filepath='../lib/librte_cryptodev/rte_cryptodev_pmd.h' line='217' column='1' id='type-id-80'/>
+    <pointer-type-def type-id='type-id-194' size-in-bits='64' id='type-id-195'/>
+    <typedef-decl name='cryptodev_sym_get_session_private_size_t' type-id='type-id-195' filepath='../lib/librte_cryptodev/rte_cryptodev_pmd.h' line='245' column='1' id='type-id-81'/>
+    <typedef-decl name='cryptodev_asym_get_session_private_size_t' type-id='type-id-195' filepath='../lib/librte_cryptodev/rte_cryptodev_pmd.h' line='256' column='1' id='type-id-82'/>
+    <class-decl name='rte_crypto_sym_xform' size-in-bits='384' is-struct='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='440' column='1' id='type-id-196'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='next' type-id='type-id-197' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='441' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='type' type-id='type-id-165' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='443' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='' type-id='type-id-198' visibility='default'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-196' size-in-bits='64' id='type-id-197'/>
+    <union-decl name='__anonymous_union__' size-in-bits='256' is-anonymous='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='446' column='1' id='type-id-198'>
+      <data-member access='private'>
+        <var-decl name='auth' type-id='type-id-199' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='447' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='cipher' type-id='type-id-200' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='449' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='aead' type-id='type-id-201' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='451' column='1'/>
+      </data-member>
+    </union-decl>
+    <class-decl name='rte_crypto_auth_xform' size-in-bits='256' is-struct='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='278' column='1' id='type-id-199'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='op' type-id='type-id-202' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='279' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='algo' type-id='type-id-170' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='281' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='key' type-id='type-id-203' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='287' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='iv' type-id='type-id-204' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='330' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='224'>
+        <var-decl name='digest_length' type-id='type-id-13' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='332' column='1'/>
+      </data-member>
+    </class-decl>
+    <enum-decl name='rte_crypto_auth_operation' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='262' column='1' id='type-id-202'>
+      <underlying-type type-id='type-id-145'/>
+      <enumerator name='RTE_CRYPTO_AUTH_OP_VERIFY' value='0'/>
+      <enumerator name='RTE_CRYPTO_AUTH_OP_GENERATE' value='1'/>
+    </enum-decl>
+    <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='284' column='1' id='type-id-203'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='data' type-id='type-id-205' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='285' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='length' type-id='type-id-13' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='286' column='1'/>
+      </data-member>
+    </class-decl>
+    <qualified-type-def type-id='type-id-8' const='yes' id='type-id-206'/>
+    <pointer-type-def type-id='type-id-206' size-in-bits='64' id='type-id-205'/>
+    <class-decl name='__anonymous_struct__' size-in-bits='32' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='295' column='1' id='type-id-204'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='offset' type-id='type-id-13' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='296' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='16'>
+        <var-decl name='length' type-id='type-id-13' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='312' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='rte_crypto_cipher_xform' size-in-bits='256' is-struct='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='107' column='1' id='type-id-200'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='op' type-id='type-id-207' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='108' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='algo' type-id='type-id-172' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='113' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='key' type-id='type-id-203' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='119' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='iv' type-id='type-id-204' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='185' column='1'/>
+      </data-member>
+    </class-decl>
+    <enum-decl name='rte_crypto_cipher_operation' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='90' column='1' id='type-id-207'>
+      <underlying-type type-id='type-id-145'/>
+      <enumerator name='RTE_CRYPTO_CIPHER_OP_ENCRYPT' value='0'/>
+      <enumerator name='RTE_CRYPTO_CIPHER_OP_DECRYPT' value='1'/>
+    </enum-decl>
+    <class-decl name='rte_crypto_aead_xform' size-in-bits='256' is-struct='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='370' column='1' id='type-id-201'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='op' type-id='type-id-208' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='371' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='algo' type-id='type-id-173' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='373' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='key' type-id='type-id-203' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='379' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='iv' type-id='type-id-204' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='411' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='224'>
+        <var-decl name='digest_length' type-id='type-id-13' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='413' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='240'>
+        <var-decl name='aad_length' type-id='type-id-13' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='415' column='1'/>
+      </data-member>
+    </class-decl>
+    <enum-decl name='rte_crypto_aead_operation' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='359' column='1' id='type-id-208'>
+      <underlying-type type-id='type-id-145'/>
+      <enumerator name='RTE_CRYPTO_AEAD_OP_ENCRYPT' value='0'/>
+      <enumerator name='RTE_CRYPTO_AEAD_OP_DECRYPT' value='1'/>
+    </enum-decl>
+    <class-decl name='rte_cryptodev_sym_session' size-in-bits='128' is-struct='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='974' column='1' id='type-id-209'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='opaque_data' type-id='type-id-6' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='975' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='nb_drivers' type-id='type-id-13' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='977' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='80'>
+        <var-decl name='user_data_sz' type-id='type-id-13' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='979' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='sess_data' type-id='type-id-210' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='984' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='981' column='1' id='type-id-211'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='data' type-id='type-id-10' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='982' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='refcnt' type-id='type-id-13' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='983' column='1'/>
+      </data-member>
+    </class-decl>
+
+    <array-type-def dimensions='1' type-id='type-id-211' size-in-bits='infinite' id='type-id-210'>
+      <subrange length='infinite' type-id='type-id-20' id='type-id-212'/>
+
+    </array-type-def>
+    <pointer-type-def type-id='type-id-209' size-in-bits='64' id='type-id-213'/>
+    <pointer-type-def type-id='type-id-214' size-in-bits='64' id='type-id-215'/>
+    <typedef-decl name='cryptodev_sym_configure_session_t' type-id='type-id-215' filepath='../lib/librte_cryptodev/rte_cryptodev_pmd.h' line='273' column='1' id='type-id-83'/>
+    <class-decl name='rte_crypto_asym_xform' size-in-bits='1536' is-struct='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='353' column='1' id='type-id-216'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='next' type-id='type-id-217' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='354' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='xform_type' type-id='type-id-175' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='356' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='' type-id='type-id-218' visibility='default'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-216' size-in-bits='64' id='type-id-217'/>
+    <union-decl name='__anonymous_union__' size-in-bits='1408' is-anonymous='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='360' column='1' id='type-id-218'>
+      <data-member access='private'>
+        <var-decl name='rsa' type-id='type-id-219' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='361' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='modex' type-id='type-id-220' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='364' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='modinv' type-id='type-id-221' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='367' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='dh' type-id='type-id-222' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='370' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='dsa' type-id='type-id-223' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='373' column='1'/>
+      </data-member>
+    </union-decl>
+    <class-decl name='rte_crypto_rsa_xform' size-in-bits='1408' is-struct='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='192' column='1' id='type-id-219'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='n' type-id='type-id-224' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='193' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='e' type-id='type-id-224' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='199' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <var-decl name='key_type' type-id='type-id-225' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='205' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='448'>
+        <var-decl name='' type-id='type-id-226' visibility='default'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='rte_crypto_param_t' size-in-bits='192' is-struct='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='30' column='1' id='type-id-227'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='data' type-id='type-id-228' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='31' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='iova' type-id='type-id-18' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='33' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='length' type-id='type-id-41' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='35' column='1'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-8' size-in-bits='64' id='type-id-228'/>
+    <typedef-decl name='rte_crypto_param' type-id='type-id-227' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='37' column='1' id='type-id-224'/>
+    <enum-decl name='rte_crypto_rsa_priv_key_type' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='133' column='1' id='type-id-225'>
+      <underlying-type type-id='type-id-145'/>
+      <enumerator name='RTE_RSA_KEY_TYPE_EXP' value='0'/>
+      <enumerator name='RTE_RSA_KET_TYPE_QT' value='1'/>
+    </enum-decl>
+    <union-decl name='__anonymous_union__' size-in-bits='960' is-anonymous='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='208' column='1' id='type-id-226'>
+      <data-member access='private'>
+        <var-decl name='d' type-id='type-id-224' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='209' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='qt' type-id='type-id-229' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='216' column='1'/>
+      </data-member>
+    </union-decl>
+    <class-decl name='rte_crypto_rsa_priv_key_qt' size-in-bits='960' is-struct='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='146' column='1' id='type-id-229'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='p' type-id='type-id-224' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='147' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='q' type-id='type-id-224' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='154' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <var-decl name='dP' type-id='type-id-224' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='161' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='576'>
+        <var-decl name='dQ' type-id='type-id-224' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='169' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='768'>
+        <var-decl name='qInv' type-id='type-id-224' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='177' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='rte_crypto_modex_xform' size-in-bits='384' is-struct='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='227' column='1' id='type-id-220'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='modulus' type-id='type-id-224' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='228' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='exponent' type-id='type-id-224' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='237' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='rte_crypto_modinv_xform' size-in-bits='192' is-struct='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='250' column='1' id='type-id-221'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='modulus' type-id='type-id-224' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='251' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='rte_crypto_dh_xform' size-in-bits='448' is-struct='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='271' column='1' id='type-id-222'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='type' type-id='type-id-230' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='272' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='p' type-id='type-id-224' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='275' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='g' type-id='type-id-224' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='281' column='1'/>
+      </data-member>
+    </class-decl>
+    <enum-decl name='rte_crypto_asym_op_type' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='91' column='1' id='type-id-230'>
+      <underlying-type type-id='type-id-145'/>
+      <enumerator name='RTE_CRYPTO_ASYM_OP_ENCRYPT' value='0'/>
+      <enumerator name='RTE_CRYPTO_ASYM_OP_DECRYPT' value='1'/>
+      <enumerator name='RTE_CRYPTO_ASYM_OP_SIGN' value='2'/>
+      <enumerator name='RTE_CRYPTO_ASYM_OP_VERIFY' value='3'/>
+      <enumerator name='RTE_CRYPTO_ASYM_OP_PRIVATE_KEY_GENERATE' value='4'/>
+      <enumerator name='RTE_CRYPTO_ASYM_OP_PUBLIC_KEY_GENERATE' value='5'/>
+      <enumerator name='RTE_CRYPTO_ASYM_OP_SHARED_SECRET_COMPUTE' value='6'/>
+      <enumerator name='RTE_CRYPTO_ASYM_OP_LIST_END' value='7'/>
+    </enum-decl>
+    <class-decl name='rte_crypto_dsa_xform' size-in-bits='768' is-struct='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='295' column='1' id='type-id-223'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='p' type-id='type-id-224' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='296' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='q' type-id='type-id-224' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='301' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <var-decl name='g' type-id='type-id-224' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='307' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='576'>
+        <var-decl name='x' type-id='type-id-224' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='311' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='rte_cryptodev_asym_session' is-struct='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='989' column='1' id='type-id-231'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='sess_private_data' type-id='type-id-232' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='990' column='1'/>
+      </data-member>
+    </class-decl>
+
+    <array-type-def dimensions='1' type-id='type-id-10' size-in-bits='infinite' id='type-id-232'>
+      <subrange length='infinite' type-id='type-id-20' id='type-id-212'/>
+
+    </array-type-def>
+    <pointer-type-def type-id='type-id-231' size-in-bits='64' id='type-id-233'/>
+    <pointer-type-def type-id='type-id-234' size-in-bits='64' id='type-id-235'/>
+    <typedef-decl name='cryptodev_asym_configure_session_t' type-id='type-id-235' filepath='../lib/librte_cryptodev/rte_cryptodev_pmd.h' line='291' column='1' id='type-id-84'/>
+    <pointer-type-def type-id='type-id-236' size-in-bits='64' id='type-id-237'/>
+    <typedef-decl name='cryptodev_sym_free_session_t' type-id='type-id-237' filepath='../lib/librte_cryptodev/rte_cryptodev_pmd.h' line='301' column='1' id='type-id-85'/>
+    <pointer-type-def type-id='type-id-238' size-in-bits='64' id='type-id-239'/>
+    <typedef-decl name='cryptodev_asym_free_session_t' type-id='type-id-239' filepath='../lib/librte_cryptodev/rte_cryptodev_pmd.h' line='309' column='1' id='type-id-86'/>
+    <pointer-type-def type-id='type-id-70' size-in-bits='64' id='type-id-5'/>
+    <class-decl name='rte_cryptodev_cb_list' size-in-bits='128' is-struct='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='814' column='1' id='type-id-9'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='tqh_first' type-id='type-id-240' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='814' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='tqh_last' type-id='type-id-241' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='814' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='rte_cryptodev_callback' size-in-bits='320' is-struct='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='66' column='1' id='type-id-242'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='next' type-id='type-id-243' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='67' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='cb_fn' type-id='type-id-244' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='68' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='cb_arg' type-id='type-id-10' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='69' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='event' type-id='type-id-245' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='70' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='288'>
+        <var-decl name='active' type-id='type-id-32' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='71' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='67' column='1' id='type-id-243'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='tqe_next' type-id='type-id-240' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='67' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='tqe_prev' type-id='type-id-241' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='67' column='1'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-242' size-in-bits='64' id='type-id-240'/>
+    <pointer-type-def type-id='type-id-240' size-in-bits='64' id='type-id-241'/>
+    <enum-decl name='rte_cryptodev_event_type' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='501' column='1' id='type-id-245'>
+      <underlying-type type-id='type-id-145'/>
+      <enumerator name='RTE_CRYPTODEV_EVENT_UNKNOWN' value='0'/>
+      <enumerator name='RTE_CRYPTODEV_EVENT_ERROR' value='1'/>
+      <enumerator name='RTE_CRYPTODEV_EVENT_MAX' value='2'/>
+    </enum-decl>
+    <pointer-type-def type-id='type-id-246' size-in-bits='64' id='type-id-247'/>
+    <typedef-decl name='rte_cryptodev_cb_fn' type-id='type-id-247' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='525' column='1' id='type-id-244'/>
+    <var-decl name='rte_cryptodevs' type-id='type-id-87' mangled-name='rte_cryptodevs' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='879' column='1' elf-symbol-id='rte_cryptodevs@@DPDK_20.0'/>
+
+    <array-type-def dimensions='1' type-id='type-id-97' size-in-bits='infinite' id='type-id-248'>
+      <subrange length='infinite' id='type-id-212'/>
+
+    </array-type-def>
+    <var-decl name='rte_crypto_cipher_algorithm_strings' type-id='type-id-248' mangled-name='rte_crypto_cipher_algorithm_strings' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='87' column='1' elf-symbol-id='rte_crypto_cipher_algorithm_strings@@DPDK_20.0'/>
+    <var-decl name='rte_crypto_cipher_operation_strings' type-id='type-id-248' mangled-name='rte_crypto_cipher_operation_strings' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='99' column='1' elf-symbol-id='rte_crypto_cipher_operation_strings@@DPDK_20.0'/>
+    <var-decl name='rte_crypto_auth_algorithm_strings' type-id='type-id-248' mangled-name='rte_crypto_auth_algorithm_strings' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='259' column='1' elf-symbol-id='rte_crypto_auth_algorithm_strings@@DPDK_20.0'/>
+    <var-decl name='rte_crypto_aead_algorithm_strings' type-id='type-id-248' mangled-name='rte_crypto_aead_algorithm_strings' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='356' column='1' elf-symbol-id='rte_crypto_aead_algorithm_strings@@DPDK_20.0'/>
+    <var-decl name='rte_crypto_aead_operation_strings' type-id='type-id-248' mangled-name='rte_crypto_aead_operation_strings' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='368' column='1' elf-symbol-id='rte_crypto_aead_operation_strings@@DPDK_20.0'/>
+    <var-decl name='rte_crypto_asym_xform_strings' type-id='type-id-248' mangled-name='rte_crypto_asym_xform_strings' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='41' column='1' elf-symbol-id='rte_crypto_asym_xform_strings@@EXPERIMENTAL'/>
+    <var-decl name='rte_crypto_asym_op_strings' type-id='type-id-248' mangled-name='rte_crypto_asym_op_strings' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_asym.h' line='45' column='1' elf-symbol-id='rte_crypto_asym_op_strings@@EXPERIMENTAL'/>
+    <var-decl name='rte_crypto_auth_operation_strings' type-id='type-id-248' mangled-name='rte_crypto_auth_operation_strings' visibility='default' filepath='../lib/librte_cryptodev/rte_crypto_sym.h' line='269' column='1' elf-symbol-id='rte_crypto_auth_operation_strings@@DPDK_20.0'/>
+    <class-decl name='cryptodev_driver' size-in-bits='256' is-struct='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev_pmd.h' line='67' column='1' id='type-id-249'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='next' type-id='type-id-250' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev_pmd.h' line='68' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='driver' type-id='type-id-103' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev_pmd.h' line='69' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='id' type-id='type-id-8' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev_pmd.h' line='70' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev_pmd.h' line='68' column='1' id='type-id-250'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='tqe_next' type-id='type-id-251' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev_pmd.h' line='68' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='tqe_prev' type-id='type-id-252' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev_pmd.h' line='68' column='1'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-249' size-in-bits='64' id='type-id-251'/>
+    <pointer-type-def type-id='type-id-251' size-in-bits='64' id='type-id-252'/>
+    <function-decl name='rte_cryptodev_allocate_driver' mangled-name='rte_cryptodev_allocate_driver' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1777' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_allocate_driver@@DPDK_20.0'>
+      <parameter type-id='type-id-251' name='crypto_drv' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1777' column='1'/>
+      <parameter type-id='type-id-103' name='drv' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1778' column='1'/>
+      <return type-id='type-id-8'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_driver_name_get' mangled-name='rte_cryptodev_driver_name_get' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1766' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_driver_name_get@@DPDK_20.0'>
+      <parameter type-id='type-id-8' name='driver_id' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1766' column='1'/>
+      <return type-id='type-id-97'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_name_get' mangled-name='rte_cryptodev_name_get' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1755' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_name_get@@DPDK_20.0'>
+      <parameter type-id='type-id-8' name='driver_id' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1766' column='1'/>
+      <return type-id='type-id-97'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_driver_id_get' mangled-name='rte_cryptodev_driver_id_get' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1736' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_driver_id_get@@DPDK_20.0'>
+      <parameter type-id='type-id-97' name='name' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1736' column='1'/>
+      <return type-id='type-id-31'/>
+    </function-decl>
+    <pointer-type-def type-id='type-id-37' size-in-bits='64' id='type-id-253'/>
+    <function-decl name='rte_cryptodev_pmd_create_dev_name' mangled-name='rte_cryptodev_pmd_create_dev_name' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1707' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_pmd_create_dev_name@@DPDK_20.0'>
+      <parameter type-id='type-id-253' name='name' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1707' column='1'/>
+      <parameter type-id='type-id-97' name='dev_name_prefix' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1707' column='1'/>
+      <return type-id='type-id-31'/>
+    </function-decl>
+    <function-decl name='rte_crypto_op_pool_create' mangled-name='rte_crypto_op_pool_create' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1639' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_crypto_op_pool_create@@DPDK_20.0'>
+      <parameter type-id='type-id-97' name='name' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1639' column='1'/>
+      <parameter type-id='type-id-161' name='type' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1639' column='1'/>
+      <parameter type-id='type-id-30' name='nb_elts' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1640' column='1'/>
+      <parameter type-id='type-id-30' name='cache_size' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1640' column='1'/>
+      <parameter type-id='type-id-13' name='priv_size' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1640' column='1'/>
+      <parameter type-id='type-id-31' name='socket_id' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1641' column='1'/>
+      <return type-id='type-id-17'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_sym_get_private_session_size' mangled-name='rte_cryptodev_sym_get_private_session_size' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1552' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_sym_get_private_session_size@@DPDK_20.0'>
+      <parameter type-id='type-id-8' name='dev_id' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1552' column='1'/>
+      <return type-id='type-id-30'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_sym_get_header_session_size' mangled-name='rte_cryptodev_sym_get_header_session_size' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1514' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_sym_get_header_session_size@@DPDK_20.0'>
+      <return type-id='type-id-30'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_sym_session_free' mangled-name='rte_cryptodev_sym_session_free' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1468' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_sym_session_free@@DPDK_20.0'>
+      <parameter type-id='type-id-213' name='sess' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1468' column='1'/>
+      <return type-id='type-id-31'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_sym_session_clear' mangled-name='rte_cryptodev_sym_session_clear' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1425' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_sym_session_clear@@DPDK_20.0'>
+      <parameter type-id='type-id-8' name='dev_id' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1425' column='1'/>
+      <parameter type-id='type-id-213' name='sess' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1426' column='1'/>
+      <return type-id='type-id-31'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_sym_session_create' mangled-name='rte_cryptodev_sym_session_create' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1369' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_sym_session_create@@DPDK_20.0'>
+      <parameter type-id='type-id-17' name='mp' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1369' column='1'/>
+      <return type-id='type-id-213'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_sym_session_init' mangled-name='rte_cryptodev_sym_session_init' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1246' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_sym_session_init@@DPDK_20.0'>
+      <parameter type-id='type-id-8' name='dev_id' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1246' column='1'/>
+      <parameter type-id='type-id-213' name='sess' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1247' column='1'/>
+      <parameter type-id='type-id-197' name='xforms' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1248' column='1'/>
+      <parameter type-id='type-id-17' name='mp' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1249' column='1'/>
+      <return type-id='type-id-31'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_pmd_callback_process' mangled-name='rte_cryptodev_pmd_callback_process' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1223' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_pmd_callback_process@@DPDK_20.0'>
+      <parameter type-id='type-id-87' name='dev' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1223' column='1'/>
+      <parameter type-id='type-id-245' name='event' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1224' column='1'/>
+      <return type-id='type-id-14'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_callback_unregister' mangled-name='rte_cryptodev_callback_unregister' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1177' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_callback_unregister@@DPDK_20.0'>
+      <parameter type-id='type-id-8' name='dev_id' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1177' column='1'/>
+      <parameter type-id='type-id-245' name='event' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1178' column='1'/>
+      <parameter type-id='type-id-244' name='cb_fn' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1179' column='1'/>
+      <parameter type-id='type-id-10' name='cb_arg' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1179' column='1'/>
+      <return type-id='type-id-31'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_callback_register' mangled-name='rte_cryptodev_callback_register' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1134' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_callback_register@@DPDK_20.0'>
+      <parameter type-id='type-id-8' name='dev_id' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1134' column='1'/>
+      <parameter type-id='type-id-245' name='event' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1135' column='1'/>
+      <parameter type-id='type-id-244' name='cb_fn' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1136' column='1'/>
+      <parameter type-id='type-id-10' name='cb_arg' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1136' column='1'/>
+      <return type-id='type-id-31'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_info_get' mangled-name='rte_cryptodev_info_get' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1112' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_info_get@@DPDK_20.0'>
+      <parameter type-id='type-id-8' name='dev_id' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1112' column='1'/>
+      <parameter type-id='type-id-178' name='dev_info' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1112' column='1'/>
+      <return type-id='type-id-14'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_stats_reset' mangled-name='rte_cryptodev_stats_reset' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1095' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_stats_reset@@DPDK_20.0'>
+      <parameter type-id='type-id-8' name='dev_id' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1095' column='1'/>
+      <return type-id='type-id-14'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_stats_get' mangled-name='rte_cryptodev_stats_get' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1072' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_stats_get@@DPDK_20.0'>
+      <parameter type-id='type-id-8' name='dev_id' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1072' column='1'/>
+      <parameter type-id='type-id-182' name='stats' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1072' column='1'/>
+      <return type-id='type-id-31'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_queue_pair_setup' mangled-name='rte_cryptodev_queue_pair_setup' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1005' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_queue_pair_setup@@DPDK_20.0'>
+      <parameter type-id='type-id-8' name='dev_id' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1005' column='1'/>
+      <parameter type-id='type-id-13' name='queue_pair_id' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1005' column='1'/>
+      <parameter type-id='type-id-187' name='qp_conf' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1006' column='1'/>
+      <parameter type-id='type-id-31' name='socket_id' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1006' column='1'/>
+      <return type-id='type-id-31'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_close' mangled-name='rte_cryptodev_close' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='965' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_close@@DPDK_20.0'>
+      <parameter type-id='type-id-8' name='dev_id' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='965' column='1'/>
+      <return type-id='type-id-31'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_stop' mangled-name='rte_cryptodev_stop' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='941' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_stop@@DPDK_20.0'>
+      <parameter type-id='type-id-8' name='dev_id' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1095' column='1'/>
+      <return type-id='type-id-14'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_start' mangled-name='rte_cryptodev_start' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='909' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_start@@DPDK_20.0'>
+      <parameter type-id='type-id-8' name='dev_id' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='965' column='1'/>
+      <return type-id='type-id-31'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_configure' mangled-name='rte_cryptodev_configure' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='875' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_configure@@DPDK_20.0'>
+      <parameter type-id='type-id-8' name='dev_id' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='875' column='1'/>
+      <parameter type-id='type-id-89' name='config' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='875' column='1'/>
+      <return type-id='type-id-31'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_queue_pair_count' mangled-name='rte_cryptodev_queue_pair_count' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='788' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_queue_pair_count@@DPDK_20.0'>
+      <parameter type-id='type-id-8' name='dev_id' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='788' column='1'/>
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_pmd_release_device' mangled-name='rte_cryptodev_pmd_release_device' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='761' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_pmd_release_device@@DPDK_20.0'>
+      <parameter type-id='type-id-87' name='cryptodev' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='761' column='1'/>
+      <return type-id='type-id-31'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_pmd_allocate' mangled-name='rte_cryptodev_pmd_allocate' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='709' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_pmd_allocate@@DPDK_20.0'>
+      <parameter type-id='type-id-97' name='name' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='709' column='1'/>
+      <parameter type-id='type-id-31' name='socket_id' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='709' column='1'/>
+      <return type-id='type-id-87'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_socket_id' mangled-name='rte_cryptodev_socket_id' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='628' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_socket_id@@DPDK_20.0'>
+      <parameter type-id='type-id-8' name='dev_id' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='628' column='1'/>
+      <return type-id='type-id-31'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_get_sec_ctx' mangled-name='rte_cryptodev_get_sec_ctx' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='618' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_get_sec_ctx@@DPDK_20.0'>
+      <parameter type-id='type-id-8' name='dev_id' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='618' column='1'/>
+      <return type-id='type-id-10'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_devices_get' mangled-name='rte_cryptodev_devices_get' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='592' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_devices_get@@DPDK_20.0'>
+      <parameter type-id='type-id-97' name='driver_name' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='592' column='1'/>
+      <parameter type-id='type-id-228' name='devices' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='592' column='1'/>
+      <parameter type-id='type-id-8' name='nb_devices' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='593' column='1'/>
+      <return type-id='type-id-8'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_device_count_by_driver' mangled-name='rte_cryptodev_device_count_by_driver' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='578' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_device_count_by_driver@@DPDK_20.0'>
+      <parameter type-id='type-id-8' name='driver_id' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='578' column='1'/>
+      <return type-id='type-id-8'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_count' mangled-name='rte_cryptodev_count' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='572' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_count@@DPDK_20.0'>
+      <return type-id='type-id-8'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_get_dev_id' mangled-name='rte_cryptodev_get_dev_id' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='551' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_get_dev_id@@DPDK_20.0'>
+      <parameter type-id='type-id-97' name='name' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='551' column='1'/>
+      <return type-id='type-id-31'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_pmd_is_valid_dev' mangled-name='rte_cryptodev_pmd_is_valid_dev' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='535' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_pmd_is_valid_dev@@DPDK_20.0'>
+      <parameter type-id='type-id-8' name='dev_id' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='535' column='1'/>
+      <return type-id='type-id-30'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_pmd_get_named_dev' mangled-name='rte_cryptodev_pmd_get_named_dev' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='506' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_pmd_get_named_dev@@DPDK_20.0'>
+      <parameter type-id='type-id-97' name='name' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='506' column='1'/>
+      <return type-id='type-id-87'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_pmd_get_dev' mangled-name='rte_cryptodev_pmd_get_dev' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='500' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_pmd_get_dev@@DPDK_20.0'>
+      <parameter type-id='type-id-8' name='dev_id' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='500' column='1'/>
+      <return type-id='type-id-87'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_get_feature_name' mangled-name='rte_cryptodev_get_feature_name' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='451' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_get_feature_name@@DPDK_20.0'>
+      <parameter type-id='type-id-6' name='flag' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='451' column='1'/>
+      <return type-id='type-id-97'/>
+    </function-decl>
+    <qualified-type-def type-id='type-id-163' const='yes' id='type-id-254'/>
+    <pointer-type-def type-id='type-id-254' size-in-bits='64' id='type-id-255'/>
+    <function-decl name='rte_cryptodev_sym_capability_check_aead' mangled-name='rte_cryptodev_sym_capability_check_aead' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='394' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_sym_capability_check_aead@@DPDK_20.0'>
+      <parameter type-id='type-id-255' name='capability' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='395' column='1'/>
+      <parameter type-id='type-id-13' name='key_size' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='396' column='1'/>
+      <parameter type-id='type-id-13' name='digest_size' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='396' column='1'/>
+      <parameter type-id='type-id-13' name='aad_size' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='396' column='1'/>
+      <parameter type-id='type-id-13' name='iv_size' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='397' column='1'/>
+      <return type-id='type-id-31'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_sym_capability_check_auth' mangled-name='rte_cryptodev_sym_capability_check_auth' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='377' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_sym_capability_check_auth@@DPDK_20.0'>
+      <parameter type-id='type-id-255' name='capability' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='378' column='1'/>
+      <parameter type-id='type-id-13' name='key_size' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='379' column='1'/>
+      <parameter type-id='type-id-13' name='digest_size' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='379' column='1'/>
+      <parameter type-id='type-id-13' name='iv_size' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='379' column='1'/>
+      <return type-id='type-id-31'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_sym_capability_check_cipher' mangled-name='rte_cryptodev_sym_capability_check_cipher' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='363' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_sym_capability_check_cipher@@DPDK_20.0'>
+      <parameter type-id='type-id-255' name='capability' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='364' column='1'/>
+      <parameter type-id='type-id-13' name='key_size' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='365' column='1'/>
+      <parameter type-id='type-id-13' name='iv_size' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='365' column='1'/>
+      <return type-id='type-id-31'/>
+    </function-decl>
+    <class-decl name='rte_cryptodev_sym_capability_idx' size-in-bits='64' is-struct='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='190' column='1' id='type-id-256'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='type' type-id='type-id-165' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='191' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='algo' type-id='type-id-257' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='196' column='1'/>
+      </data-member>
+    </class-decl>
+    <union-decl name='__anonymous_union__' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='192' column='1' id='type-id-257'>
+      <data-member access='private'>
+        <var-decl name='cipher' type-id='type-id-172' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='193' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='auth' type-id='type-id-170' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='194' column='1'/>
+      </data-member>
+      <data-member access='private'>
+        <var-decl name='aead' type-id='type-id-173' visibility='default' filepath='../lib/librte_cryptodev/rte_cryptodev.h' line='195' column='1'/>
+      </data-member>
+    </union-decl>
+    <qualified-type-def type-id='type-id-256' const='yes' id='type-id-258'/>
+    <pointer-type-def type-id='type-id-258' size-in-bits='64' id='type-id-259'/>
+    <function-decl name='rte_cryptodev_sym_capability_get' mangled-name='rte_cryptodev_sym_capability_get' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='281' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_sym_capability_get@@DPDK_20.0'>
+      <parameter type-id='type-id-8' name='dev_id' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='281' column='1'/>
+      <parameter type-id='type-id-259' name='idx' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='282' column='1'/>
+      <return type-id='type-id-255'/>
+    </function-decl>
+    <pointer-type-def type-id='type-id-173' size-in-bits='64' id='type-id-260'/>
+    <function-decl name='rte_cryptodev_get_aead_algo_enum' mangled-name='rte_cryptodev_get_aead_algo_enum' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='236' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_get_aead_algo_enum@@DPDK_20.0'>
+      <parameter type-id='type-id-260' name='algo_enum' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='236' column='1'/>
+      <parameter type-id='type-id-97' name='algo_string' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='237' column='1'/>
+      <return type-id='type-id-31'/>
+    </function-decl>
+    <pointer-type-def type-id='type-id-170' size-in-bits='64' id='type-id-261'/>
+    <function-decl name='rte_cryptodev_get_auth_algo_enum' mangled-name='rte_cryptodev_get_auth_algo_enum' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='219' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_get_auth_algo_enum@@DPDK_20.0'>
+      <parameter type-id='type-id-261' name='algo_enum' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='219' column='1'/>
+      <parameter type-id='type-id-97' name='algo_string' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='220' column='1'/>
+      <return type-id='type-id-31'/>
+    </function-decl>
+    <pointer-type-def type-id='type-id-172' size-in-bits='64' id='type-id-262'/>
+    <function-decl name='rte_cryptodev_get_cipher_algo_enum' mangled-name='rte_cryptodev_get_cipher_algo_enum' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='202' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_get_cipher_algo_enum@@DPDK_20.0'>
+      <parameter type-id='type-id-262' name='algo_enum' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='202' column='1'/>
+      <parameter type-id='type-id-97' name='algo_string' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='203' column='1'/>
+      <return type-id='type-id-31'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_sym_session_get_user_data' mangled-name='rte_cryptodev_sym_session_get_user_data' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1610' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_sym_session_get_user_data@@EXPERIMENTAL'>
+      <parameter type-id='type-id-213' name='sess' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1611' column='1'/>
+      <return type-id='type-id-10'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_sym_session_set_user_data' mangled-name='rte_cryptodev_sym_session_set_user_data' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1594' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_sym_session_set_user_data@@EXPERIMENTAL'>
+      <parameter type-id='type-id-213' name='sess' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1595' column='1'/>
+      <parameter type-id='type-id-10' name='data' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1596' column='1'/>
+      <parameter type-id='type-id-13' name='size' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1597' column='1'/>
+      <return type-id='type-id-31'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_asym_get_private_session_size' mangled-name='rte_cryptodev_asym_get_private_session_size' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1571' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_asym_get_private_session_size@@EXPERIMENTAL'>
+      <parameter type-id='type-id-8' name='dev_id' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1571' column='1'/>
+      <return type-id='type-id-30'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_asym_get_header_session_size' mangled-name='rte_cryptodev_asym_get_header_session_size' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1541' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_asym_get_header_session_size@@EXPERIMENTAL'>
+      <return type-id='type-id-30'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_sym_get_existing_header_session_size' mangled-name='rte_cryptodev_sym_get_existing_header_session_size' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1530' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_sym_get_existing_header_session_size@@EXPERIMENTAL'>
+      <parameter type-id='type-id-213' name='sess' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1531' column='1'/>
+      <return type-id='type-id-30'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_asym_session_clear' mangled-name='rte_cryptodev_asym_session_clear' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1450' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_asym_session_clear@@EXPERIMENTAL'>
+      <parameter type-id='type-id-8' name='dev_id' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1450' column='1'/>
+      <parameter type-id='type-id-233' name='sess' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1451' column='1'/>
+      <return type-id='type-id-31'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_asym_session_init' mangled-name='rte_cryptodev_asym_session_init' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1287' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_asym_session_init@@EXPERIMENTAL'>
+      <parameter type-id='type-id-8' name='dev_id' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1287' column='1'/>
+      <parameter type-id='type-id-233' name='sess' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1288' column='1'/>
+      <parameter type-id='type-id-217' name='xforms' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1289' column='1'/>
+      <parameter type-id='type-id-17' name='mp' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1290' column='1'/>
+      <return type-id='type-id-31'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_asym_session_free' mangled-name='rte_cryptodev_asym_session_free' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1490' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_asym_session_free@@EXPERIMENTAL'>
+      <parameter type-id='type-id-233' name='sess' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1490' column='1'/>
+      <return type-id='type-id-31'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_asym_session_create' mangled-name='rte_cryptodev_asym_session_create' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1406' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='rte_cryptodev_asym_session_create@@EXPERIMENTAL'>
+      <parameter type-id='type-id-17' name='mp' filepath='../lib/librte_cryptodev/rte_cryptodev.c' line='1406' column='1'/>
+      <return type-id='type-id-233'/>
+    </function-decl>
+    <function-decl name='rte_cryptodev_sym_session_pool_create' mangled-name='rt