Raspbian Package Auto-Building

Build log for austin (0.7.0-1) on armhf

austin0.7.0-1armhf → 2019-11-27 09:43:18

sbuild (Debian sbuild) 0.71.0 (24 Aug 2016) on bm-wb-04

+==============================================================================+
| austin 0.7.0-1 (armhf)                       Wed, 27 Nov 2019 09:31:40 +0000 |
+==============================================================================+

Package: austin
Version: 0.7.0-1
Source Version: 0.7.0-1
Distribution: bullseye-staging
Machine Architecture: armhf
Host Architecture: armhf
Build Architecture: armhf

I: NOTICE: Log filtering will replace 'var/lib/schroot/mount/bullseye-staging-armhf-sbuild-50823a2b-1c09-4a6f-b7f5-cc2250d02e77' with '<<CHROOT>>'

+------------------------------------------------------------------------------+
| Update chroot                                                                |
+------------------------------------------------------------------------------+

Get:1 http://172.17.0.1/private bullseye-staging InRelease [11.3 kB]
Get:2 http://172.17.0.1/private bullseye-staging/main Sources [11.5 MB]
Get:3 http://172.17.0.1/private bullseye-staging/main armhf Packages [12.9 MB]
Fetched 24.4 MB in 27s (917 kB/s)
Reading package lists...
W: No sandbox user '_apt' on the system, can not drop privileges

+------------------------------------------------------------------------------+
| Fetch source files                                                           |
+------------------------------------------------------------------------------+


Check APT
---------

Checking available source versions...

Download source files with APT
------------------------------

Reading package lists...
NOTICE: 'austin' packaging is maintained in the 'Git' version control system at:
https://github.com/P403n1x87/austin
Please use:
git clone https://github.com/P403n1x87/austin
to retrieve the latest (possibly unreleased) updates to the package.
Need to get 5833 kB of source archives.
Get:1 http://172.17.0.1/private bullseye-staging/main austin 0.7.0-1 (dsc) [1892 B]
Get:2 http://172.17.0.1/private bullseye-staging/main austin 0.7.0-1 (tar) [5829 kB]
Get:3 http://172.17.0.1/private bullseye-staging/main austin 0.7.0-1 (diff) [2744 B]
Fetched 5833 kB in 1s (8584 kB/s)
Download complete and in download only mode
I: NOTICE: Log filtering will replace 'build/austin-OjWnwf/austin-0.7.0' with '<<PKGBUILDDIR>>'
I: NOTICE: Log filtering will replace 'build/austin-OjWnwf' with '<<BUILDDIR>>'

+------------------------------------------------------------------------------+
| Install build-essential                                                      |
+------------------------------------------------------------------------------+


Setup apt archive
-----------------

Merged Build-Depends: build-essential, fakeroot
Filtered Build-Depends: build-essential, fakeroot
dpkg-deb: building package 'sbuild-build-depends-core-dummy' in '/<<BUILDDIR>>/resolver-VQ7VC9/apt_archive/sbuild-build-depends-core-dummy.deb'.
dpkg-scanpackages: warning: Packages in archive but missing from override file:
dpkg-scanpackages: warning:   sbuild-build-depends-core-dummy
dpkg-scanpackages: info: Wrote 1 entries to output Packages file.
gpg: keybox '/<<BUILDDIR>>/resolver-VQ7VC9/gpg/pubring.kbx' created
gpg: /<<BUILDDIR>>/resolver-VQ7VC9/gpg/trustdb.gpg: trustdb created
gpg: key 35506D9A48F77B2E: public key "Sbuild Signer (Sbuild Build Dependency Archive Key) <buildd-tools-devel@lists.alioth.debian.org>" imported
gpg: Total number processed: 1
gpg:               imported: 1
gpg: key 35506D9A48F77B2E: "Sbuild Signer (Sbuild Build Dependency Archive Key) <buildd-tools-devel@lists.alioth.debian.org>" not changed
gpg: key 35506D9A48F77B2E: secret key imported
gpg: Total number processed: 1
gpg:              unchanged: 1
gpg:       secret keys read: 1
gpg:   secret keys imported: 1
gpg: using "Sbuild Signer" as default secret key for signing
Ign:1 copy:/<<BUILDDIR>>/resolver-VQ7VC9/apt_archive ./ InRelease
Get:2 copy:/<<BUILDDIR>>/resolver-VQ7VC9/apt_archive ./ Release [957 B]
Get:3 copy:/<<BUILDDIR>>/resolver-VQ7VC9/apt_archive ./ Release.gpg [370 B]
Get:4 copy:/<<BUILDDIR>>/resolver-VQ7VC9/apt_archive ./ Sources [349 B]
Get:5 copy:/<<BUILDDIR>>/resolver-VQ7VC9/apt_archive ./ Packages [433 B]
Fetched 2109 B in 1s (2773 B/s)
Reading package lists...
W: No sandbox user '_apt' on the system, can not drop privileges
Reading package lists...

Install core build dependencies (apt-based resolver)
----------------------------------------------------

Installing build dependencies
Reading package lists...
Building dependency tree...
Reading state information...
The following packages were automatically installed and are no longer required:
  libpam-cap netbase
Use 'apt autoremove' to remove them.
The following NEW packages will be installed:
  sbuild-build-depends-core-dummy
0 upgraded, 1 newly installed, 0 to remove and 31 not upgraded.
Need to get 848 B of archives.
After this operation, 0 B of additional disk space will be used.
Get:1 copy:/<<BUILDDIR>>/resolver-VQ7VC9/apt_archive ./ sbuild-build-depends-core-dummy 0.invalid.0 [848 B]
debconf: delaying package configuration, since apt-utils is not installed
Fetched 848 B in 0s (0 B/s)
Selecting previously unselected package sbuild-build-depends-core-dummy.
(Reading database ... 12227 files and directories currently installed.)
Preparing to unpack .../sbuild-build-depends-core-dummy_0.invalid.0_armhf.deb ...
Unpacking sbuild-build-depends-core-dummy (0.invalid.0) ...
Setting up sbuild-build-depends-core-dummy (0.invalid.0) ...
W: No sandbox user '_apt' on the system, can not drop privileges

+------------------------------------------------------------------------------+
| Check architectures                                                          |
+------------------------------------------------------------------------------+

Arch check ok (armhf included in any)

+------------------------------------------------------------------------------+
| Install package build dependencies                                           |
+------------------------------------------------------------------------------+


Setup apt archive
-----------------

Merged Build-Depends: debhelper (>= 11~), bats, valgrind, python3 (>= 3.3)
Filtered Build-Depends: debhelper (>= 11~), bats, valgrind, python3 (>= 3.3)
dpkg-deb: building package 'sbuild-build-depends-austin-dummy' in '/<<BUILDDIR>>/resolver-VQ7VC9/apt_archive/sbuild-build-depends-austin-dummy.deb'.
dpkg-scanpackages: warning: Packages in archive but missing from override file:
dpkg-scanpackages: warning:   sbuild-build-depends-austin-dummy sbuild-build-depends-core-dummy
dpkg-scanpackages: info: Wrote 2 entries to output Packages file.
gpg: using "Sbuild Signer" as default secret key for signing
Ign:1 copy:/<<BUILDDIR>>/resolver-VQ7VC9/apt_archive ./ InRelease
Get:2 copy:/<<BUILDDIR>>/resolver-VQ7VC9/apt_archive ./ Release [963 B]
Get:3 copy:/<<BUILDDIR>>/resolver-VQ7VC9/apt_archive ./ Release.gpg [370 B]
Get:4 copy:/<<BUILDDIR>>/resolver-VQ7VC9/apt_archive ./ Sources [513 B]
Get:5 copy:/<<BUILDDIR>>/resolver-VQ7VC9/apt_archive ./ Packages [592 B]
Fetched 2438 B in 1s (2887 B/s)
Reading package lists...
W: No sandbox user '_apt' on the system, can not drop privileges
Reading package lists...

Install austin build dependencies (apt-based resolver)
------------------------------------------------------

Installing build dependencies
Reading package lists...
Building dependency tree...
Reading state information...
The following packages were automatically installed and are no longer required:
  libpam-cap netbase
Use 'apt autoremove' to remove them.
The following additional packages will be installed:
  autoconf automake autopoint autotools-dev bats bsdmainutils debhelper
  dh-autoreconf dh-strip-nondeterminism dwz file gettext gettext-base
  groff-base intltool-debian libarchive-zip-perl libbsd0 libc-dev-bin libc6
  libc6-dbg libc6-dev libcroco3 libdebhelper-perl libelf1 libexpat1
  libfile-stripnondeterminism-perl libglib2.0-0 libicu63 libmagic-mgc
  libmagic1 libmpdec2 libpipeline1 libpython3-stdlib libpython3.7-minimal
  libpython3.7-stdlib libsigsegv2 libssl1.1 libsub-override-perl libtinfo5
  libtool libuchardet0 libxml2 m4 man-db mime-support po-debconf python3
  python3-minimal python3.7 python3.7-minimal sensible-utils valgrind
Suggested packages:
  autoconf-archive gnu-standards autoconf-doc wamerican | wordlist whois
  vacation dh-make gettext-doc libasprintf-dev libgettextpo-dev groff
  glibc-doc libc-l10n locales manpages-dev libtool-doc gfortran
  | fortran95-compiler gcj-jdk m4-doc apparmor less www-browser
  libmail-box-perl python3-doc python3-tk python3-venv python3.7-venv
  python3.7-doc binfmt-support valgrind-mpi kcachegrind alleyoop valkyrie
Recommended packages:
  curl | wget | lynx manpages manpages-dev libarchive-cpio-perl
  libglib2.0-data shared-mime-info xdg-user-dirs libltdl-dev
  libmail-sendmail-perl valgrind-dbg gdb
The following NEW packages will be installed:
  autoconf automake autopoint autotools-dev bats bsdmainutils debhelper
  dh-autoreconf dh-strip-nondeterminism dwz file gettext gettext-base
  groff-base intltool-debian libarchive-zip-perl libbsd0 libc6-dbg libcroco3
  libdebhelper-perl libelf1 libexpat1 libfile-stripnondeterminism-perl
  libglib2.0-0 libicu63 libmagic-mgc libmagic1 libmpdec2 libpipeline1
  libpython3-stdlib libpython3.7-minimal libpython3.7-stdlib libsigsegv2
  libssl1.1 libsub-override-perl libtinfo5 libtool libuchardet0 libxml2 m4
  man-db mime-support po-debconf python3 python3-minimal python3.7
  python3.7-minimal sbuild-build-depends-austin-dummy sensible-utils valgrind
The following packages will be upgraded:
  libc-dev-bin libc6 libc6-dev
3 upgraded, 50 newly installed, 0 to remove and 28 not upgraded.
Need to get 44.7 MB of archives.
After this operation, 146 MB of additional disk space will be used.
Get:1 copy:/<<BUILDDIR>>/resolver-VQ7VC9/apt_archive ./ sbuild-build-depends-austin-dummy 0.invalid.0 [880 B]
Get:2 http://172.17.0.1/private bullseye-staging/main armhf libc6-dev armhf 2.29-3+rpi1 [2083 kB]
Get:3 http://172.17.0.1/private bullseye-staging/main armhf libc-dev-bin armhf 2.29-3+rpi1 [268 kB]
Get:4 http://172.17.0.1/private bullseye-staging/main armhf libc6 armhf 2.29-3+rpi1 [2308 kB]
Get:5 http://172.17.0.1/private bullseye-staging/main armhf libbsd0 armhf 0.10.0-1 [112 kB]
Get:6 http://172.17.0.1/private bullseye-staging/main armhf libtinfo5 armhf 6.1+20191019-1 [316 kB]
Get:7 http://172.17.0.1/private bullseye-staging/main armhf bsdmainutils armhf 11.1.2 [182 kB]
Get:8 http://172.17.0.1/private bullseye-staging/main armhf libuchardet0 armhf 0.0.6-3 [62.2 kB]
Get:9 http://172.17.0.1/private bullseye-staging/main armhf groff-base armhf 1.22.4-3 [782 kB]
Get:10 http://172.17.0.1/private bullseye-staging/main armhf libpipeline1 armhf 1.5.1-2 [26.6 kB]
Get:11 http://172.17.0.1/private bullseye-staging/main armhf man-db armhf 2.9.0-1 [1261 kB]
Get:12 http://172.17.0.1/private bullseye-staging/main armhf libssl1.1 armhf 1.1.1d-2 [1268 kB]
Get:13 http://172.17.0.1/private bullseye-staging/main armhf libpython3.7-minimal armhf 3.7.5-2 [584 kB]
Get:14 http://172.17.0.1/private bullseye-staging/main armhf libexpat1 armhf 2.2.9-1 [71.5 kB]
Get:15 http://172.17.0.1/private bullseye-staging/main armhf python3.7-minimal armhf 3.7.5-2 [1527 kB]
Get:16 http://172.17.0.1/private bullseye-staging/main armhf python3-minimal armhf 3.7.5-1 [36.6 kB]
Get:17 http://172.17.0.1/private bullseye-staging/main armhf mime-support all 3.64 [37.8 kB]
Get:18 http://172.17.0.1/private bullseye-staging/main armhf libmpdec2 armhf 2.4.2-2 [67.2 kB]
Get:19 http://172.17.0.1/private bullseye-staging/main armhf libpython3.7-stdlib armhf 3.7.5-2 [1668 kB]
Get:20 http://172.17.0.1/private bullseye-staging/main armhf python3.7 armhf 3.7.5-2 [347 kB]
Get:21 http://172.17.0.1/private bullseye-staging/main armhf libpython3-stdlib armhf 3.7.5-1 [20.1 kB]
Get:22 http://172.17.0.1/private bullseye-staging/main armhf python3 armhf 3.7.5-1 [61.5 kB]
Get:23 http://172.17.0.1/private bullseye-staging/main armhf sensible-utils all 0.0.12 [15.8 kB]
Get:24 http://172.17.0.1/private bullseye-staging/main armhf libmagic-mgc armhf 1:5.37-6 [253 kB]
Get:25 http://172.17.0.1/private bullseye-staging/main armhf libmagic1 armhf 1:5.37-6 [111 kB]
Get:26 http://172.17.0.1/private bullseye-staging/main armhf file armhf 1:5.37-6 [66.2 kB]
Get:27 http://172.17.0.1/private bullseye-staging/main armhf gettext-base armhf 0.19.8.1-10 [117 kB]
Get:28 http://172.17.0.1/private bullseye-staging/main armhf libsigsegv2 armhf 2.12-2 [32.3 kB]
Get:29 http://172.17.0.1/private bullseye-staging/main armhf m4 armhf 1.4.18-4 [185 kB]
Get:30 http://172.17.0.1/private bullseye-staging/main armhf autoconf all 2.69-11 [341 kB]
Get:31 http://172.17.0.1/private bullseye-staging/main armhf autotools-dev all 20180224.1 [77.0 kB]
Get:32 http://172.17.0.1/private bullseye-staging/main armhf automake all 1:1.16.1-4 [771 kB]
Get:33 http://172.17.0.1/private bullseye-staging/main armhf autopoint all 0.19.8.1-10 [435 kB]
Get:34 http://172.17.0.1/private bullseye-staging/main armhf bats all 0.4.0-1.1 [14.3 kB]
Get:35 http://172.17.0.1/private bullseye-staging/main armhf libtool all 2.4.6-11 [547 kB]
Get:36 http://172.17.0.1/private bullseye-staging/main armhf dh-autoreconf all 19 [16.9 kB]
Get:37 http://172.17.0.1/private bullseye-staging/main armhf libdebhelper-perl all 12.7.1 [173 kB]
Get:38 http://172.17.0.1/private bullseye-staging/main armhf libarchive-zip-perl all 1.67-1 [104 kB]
Get:39 http://172.17.0.1/private bullseye-staging/main armhf libsub-override-perl all 0.09-2 [10.2 kB]
Get:40 http://172.17.0.1/private bullseye-staging/main armhf libfile-stripnondeterminism-perl all 1.6.3-1 [23.6 kB]
Get:41 http://172.17.0.1/private bullseye-staging/main armhf dh-strip-nondeterminism all 1.6.3-1 [14.6 kB]
Get:42 http://172.17.0.1/private bullseye-staging/main armhf libelf1 armhf 0.176-1.1 [158 kB]
Get:43 http://172.17.0.1/private bullseye-staging/main armhf dwz armhf 0.13-2 [136 kB]
Get:44 http://172.17.0.1/private bullseye-staging/main armhf libglib2.0-0 armhf 2.62.2-3 [1137 kB]
Get:45 http://172.17.0.1/private bullseye-staging/main armhf libicu63 armhf 63.2-2 [7974 kB]
Get:46 http://172.17.0.1/private bullseye-staging/main armhf libxml2 armhf 2.9.4+dfsg1-8 [593 kB]
Get:47 http://172.17.0.1/private bullseye-staging/main armhf libcroco3 armhf 0.6.13-1 [133 kB]
Get:48 http://172.17.0.1/private bullseye-staging/main armhf gettext armhf 0.19.8.1-10 [1219 kB]
Get:49 http://172.17.0.1/private bullseye-staging/main armhf intltool-debian all 0.35.0+20060710.5 [26.8 kB]
Get:50 http://172.17.0.1/private bullseye-staging/main armhf po-debconf all 1.0.21 [248 kB]
Get:51 http://172.17.0.1/private bullseye-staging/main armhf debhelper all 12.7.1 [997 kB]
Get:52 http://172.17.0.1/private bullseye-staging/main armhf libc6-dbg armhf 2.29-3+rpi1 [10.2 MB]
Get:53 http://172.17.0.1/private bullseye-staging/main armhf valgrind armhf 1:3.7.0-6+rpi6 [5438 kB]
debconf: delaying package configuration, since apt-utils is not installed
Fetched 44.7 MB in 4s (10.2 MB/s)
(Reading database ... 12227 files and directories currently installed.)
Preparing to unpack .../libc6-dev_2.29-3+rpi1_armhf.deb ...
Unpacking libc6-dev:armhf (2.29-3+rpi1) over (2.29-2+rpi1) ...
Preparing to unpack .../libc-dev-bin_2.29-3+rpi1_armhf.deb ...
Unpacking libc-dev-bin (2.29-3+rpi1) over (2.29-2+rpi1) ...
Preparing to unpack .../libc6_2.29-3+rpi1_armhf.deb ...
Unpacking libc6:armhf (2.29-3+rpi1) over (2.29-2+rpi1) ...
Setting up libc6:armhf (2.29-3+rpi1) ...
Selecting previously unselected package libbsd0:armhf.
(Reading database ... 12227 files and directories currently installed.)
Preparing to unpack .../00-libbsd0_0.10.0-1_armhf.deb ...
Unpacking libbsd0:armhf (0.10.0-1) ...
Selecting previously unselected package libtinfo5:armhf.
Preparing to unpack .../01-libtinfo5_6.1+20191019-1_armhf.deb ...
Unpacking libtinfo5:armhf (6.1+20191019-1) ...
Selecting previously unselected package bsdmainutils.
Preparing to unpack .../02-bsdmainutils_11.1.2_armhf.deb ...
Unpacking bsdmainutils (11.1.2) ...
Selecting previously unselected package libuchardet0:armhf.
Preparing to unpack .../03-libuchardet0_0.0.6-3_armhf.deb ...
Unpacking libuchardet0:armhf (0.0.6-3) ...
Selecting previously unselected package groff-base.
Preparing to unpack .../04-groff-base_1.22.4-3_armhf.deb ...
Unpacking groff-base (1.22.4-3) ...
Selecting previously unselected package libpipeline1:armhf.
Preparing to unpack .../05-libpipeline1_1.5.1-2_armhf.deb ...
Unpacking libpipeline1:armhf (1.5.1-2) ...
Selecting previously unselected package man-db.
Preparing to unpack .../06-man-db_2.9.0-1_armhf.deb ...
Unpacking man-db (2.9.0-1) ...
Selecting previously unselected package libssl1.1:armhf.
Preparing to unpack .../07-libssl1.1_1.1.1d-2_armhf.deb ...
Unpacking libssl1.1:armhf (1.1.1d-2) ...
Selecting previously unselected package libpython3.7-minimal:armhf.
Preparing to unpack .../08-libpython3.7-minimal_3.7.5-2_armhf.deb ...
Unpacking libpython3.7-minimal:armhf (3.7.5-2) ...
Selecting previously unselected package libexpat1:armhf.
Preparing to unpack .../09-libexpat1_2.2.9-1_armhf.deb ...
Unpacking libexpat1:armhf (2.2.9-1) ...
Selecting previously unselected package python3.7-minimal.
Preparing to unpack .../10-python3.7-minimal_3.7.5-2_armhf.deb ...
Unpacking python3.7-minimal (3.7.5-2) ...
Setting up libssl1.1:armhf (1.1.1d-2) ...
Setting up libpython3.7-minimal:armhf (3.7.5-2) ...
Setting up libexpat1:armhf (2.2.9-1) ...
Setting up python3.7-minimal (3.7.5-2) ...
Selecting previously unselected package python3-minimal.
(Reading database ... 13146 files and directories currently installed.)
Preparing to unpack .../0-python3-minimal_3.7.5-1_armhf.deb ...
Unpacking python3-minimal (3.7.5-1) ...
Selecting previously unselected package mime-support.
Preparing to unpack .../1-mime-support_3.64_all.deb ...
Unpacking mime-support (3.64) ...
Selecting previously unselected package libmpdec2:armhf.
Preparing to unpack .../2-libmpdec2_2.4.2-2_armhf.deb ...
Unpacking libmpdec2:armhf (2.4.2-2) ...
Selecting previously unselected package libpython3.7-stdlib:armhf.
Preparing to unpack .../3-libpython3.7-stdlib_3.7.5-2_armhf.deb ...
Unpacking libpython3.7-stdlib:armhf (3.7.5-2) ...
Selecting previously unselected package python3.7.
Preparing to unpack .../4-python3.7_3.7.5-2_armhf.deb ...
Unpacking python3.7 (3.7.5-2) ...
Selecting previously unselected package libpython3-stdlib:armhf.
Preparing to unpack .../5-libpython3-stdlib_3.7.5-1_armhf.deb ...
Unpacking libpython3-stdlib:armhf (3.7.5-1) ...
Setting up python3-minimal (3.7.5-1) ...
Selecting previously unselected package python3.
(Reading database ... 13584 files and directories currently installed.)
Preparing to unpack .../00-python3_3.7.5-1_armhf.deb ...
Unpacking python3 (3.7.5-1) ...
Selecting previously unselected package sensible-utils.
Preparing to unpack .../01-sensible-utils_0.0.12_all.deb ...
Unpacking sensible-utils (0.0.12) ...
Selecting previously unselected package libmagic-mgc.
Preparing to unpack .../02-libmagic-mgc_1%3a5.37-6_armhf.deb ...
Unpacking libmagic-mgc (1:5.37-6) ...
Selecting previously unselected package libmagic1:armhf.
Preparing to unpack .../03-libmagic1_1%3a5.37-6_armhf.deb ...
Unpacking libmagic1:armhf (1:5.37-6) ...
Selecting previously unselected package file.
Preparing to unpack .../04-file_1%3a5.37-6_armhf.deb ...
Unpacking file (1:5.37-6) ...
Selecting previously unselected package gettext-base.
Preparing to unpack .../05-gettext-base_0.19.8.1-10_armhf.deb ...
Unpacking gettext-base (0.19.8.1-10) ...
Selecting previously unselected package libsigsegv2:armhf.
Preparing to unpack .../06-libsigsegv2_2.12-2_armhf.deb ...
Unpacking libsigsegv2:armhf (2.12-2) ...
Selecting previously unselected package m4.
Preparing to unpack .../07-m4_1.4.18-4_armhf.deb ...
Unpacking m4 (1.4.18-4) ...
Selecting previously unselected package autoconf.
Preparing to unpack .../08-autoconf_2.69-11_all.deb ...
Unpacking autoconf (2.69-11) ...
Selecting previously unselected package autotools-dev.
Preparing to unpack .../09-autotools-dev_20180224.1_all.deb ...
Unpacking autotools-dev (20180224.1) ...
Selecting previously unselected package automake.
Preparing to unpack .../10-automake_1%3a1.16.1-4_all.deb ...
Unpacking automake (1:1.16.1-4) ...
Selecting previously unselected package autopoint.
Preparing to unpack .../11-autopoint_0.19.8.1-10_all.deb ...
Unpacking autopoint (0.19.8.1-10) ...
Selecting previously unselected package bats.
Preparing to unpack .../12-bats_0.4.0-1.1_all.deb ...
Unpacking bats (0.4.0-1.1) ...
Selecting previously unselected package libtool.
Preparing to unpack .../13-libtool_2.4.6-11_all.deb ...
Unpacking libtool (2.4.6-11) ...
Selecting previously unselected package dh-autoreconf.
Preparing to unpack .../14-dh-autoreconf_19_all.deb ...
Unpacking dh-autoreconf (19) ...
Selecting previously unselected package libdebhelper-perl.
Preparing to unpack .../15-libdebhelper-perl_12.7.1_all.deb ...
Unpacking libdebhelper-perl (12.7.1) ...
Selecting previously unselected package libarchive-zip-perl.
Preparing to unpack .../16-libarchive-zip-perl_1.67-1_all.deb ...
Unpacking libarchive-zip-perl (1.67-1) ...
Selecting previously unselected package libsub-override-perl.
Preparing to unpack .../17-libsub-override-perl_0.09-2_all.deb ...
Unpacking libsub-override-perl (0.09-2) ...
Selecting previously unselected package libfile-stripnondeterminism-perl.
Preparing to unpack .../18-libfile-stripnondeterminism-perl_1.6.3-1_all.deb ...
Unpacking libfile-stripnondeterminism-perl (1.6.3-1) ...
Selecting previously unselected package dh-strip-nondeterminism.
Preparing to unpack .../19-dh-strip-nondeterminism_1.6.3-1_all.deb ...
Unpacking dh-strip-nondeterminism (1.6.3-1) ...
Selecting previously unselected package libelf1:armhf.
Preparing to unpack .../20-libelf1_0.176-1.1_armhf.deb ...
Unpacking libelf1:armhf (0.176-1.1) ...
Selecting previously unselected package dwz.
Preparing to unpack .../21-dwz_0.13-2_armhf.deb ...
Unpacking dwz (0.13-2) ...
Selecting previously unselected package libglib2.0-0:armhf.
Preparing to unpack .../22-libglib2.0-0_2.62.2-3_armhf.deb ...
Unpacking libglib2.0-0:armhf (2.62.2-3) ...
Selecting previously unselected package libicu63:armhf.
Preparing to unpack .../23-libicu63_63.2-2_armhf.deb ...
Unpacking libicu63:armhf (63.2-2) ...
Selecting previously unselected package libxml2:armhf.
Preparing to unpack .../24-libxml2_2.9.4+dfsg1-8_armhf.deb ...
Unpacking libxml2:armhf (2.9.4+dfsg1-8) ...
Selecting previously unselected package libcroco3:armhf.
Preparing to unpack .../25-libcroco3_0.6.13-1_armhf.deb ...
Unpacking libcroco3:armhf (0.6.13-1) ...
Selecting previously unselected package gettext.
Preparing to unpack .../26-gettext_0.19.8.1-10_armhf.deb ...
Unpacking gettext (0.19.8.1-10) ...
Selecting previously unselected package intltool-debian.
Preparing to unpack .../27-intltool-debian_0.35.0+20060710.5_all.deb ...
Unpacking intltool-debian (0.35.0+20060710.5) ...
Selecting previously unselected package po-debconf.
Preparing to unpack .../28-po-debconf_1.0.21_all.deb ...
Unpacking po-debconf (1.0.21) ...
Selecting previously unselected package debhelper.
Preparing to unpack .../29-debhelper_12.7.1_all.deb ...
Unpacking debhelper (12.7.1) ...
Selecting previously unselected package libc6-dbg:armhf.
Preparing to unpack .../30-libc6-dbg_2.29-3+rpi1_armhf.deb ...
Unpacking libc6-dbg:armhf (2.29-3+rpi1) ...
Selecting previously unselected package valgrind.
Preparing to unpack .../31-valgrind_1%3a3.7.0-6+rpi6_armhf.deb ...
Unpacking valgrind (1:3.7.0-6+rpi6) ...
Selecting previously unselected package sbuild-build-depends-austin-dummy.
Preparing to unpack .../32-sbuild-build-depends-austin-dummy_0.invalid.0_armhf.deb ...
Unpacking sbuild-build-depends-austin-dummy (0.invalid.0) ...
Setting up libpipeline1:armhf (1.5.1-2) ...
Setting up mime-support (3.64) ...
Setting up libmagic-mgc (1:5.37-6) ...
Setting up libarchive-zip-perl (1.67-1) ...
Setting up libglib2.0-0:armhf (2.62.2-3) ...
No schema files found: doing nothing.
Setting up libdebhelper-perl (12.7.1) ...
Setting up libmagic1:armhf (1:5.37-6) ...
Setting up gettext-base (0.19.8.1-10) ...
Setting up file (1:5.37-6) ...
Setting up libicu63:armhf (63.2-2) ...
Setting up libc6-dbg:armhf (2.29-3+rpi1) ...
Setting up autotools-dev (20180224.1) ...
Setting up libsigsegv2:armhf (2.12-2) ...
Setting up autopoint (0.19.8.1-10) ...
Setting up sensible-utils (0.0.12) ...
Setting up libuchardet0:armhf (0.0.6-3) ...
Setting up libsub-override-perl (0.09-2) ...
Setting up bats (0.4.0-1.1) ...
Setting up libmpdec2:armhf (2.4.2-2) ...
Setting up libc-dev-bin (2.29-3+rpi1) ...
Setting up valgrind (1:3.7.0-6+rpi6) ...
Setting up libbsd0:armhf (0.10.0-1) ...
Setting up libtinfo5:armhf (6.1+20191019-1) ...
Setting up libelf1:armhf (0.176-1.1) ...
Setting up libxml2:armhf (2.9.4+dfsg1-8) ...
Setting up libfile-stripnondeterminism-perl (1.6.3-1) ...
Setting up libpython3.7-stdlib:armhf (3.7.5-2) ...
Setting up m4 (1.4.18-4) ...
Setting up bsdmainutils (11.1.2) ...
update-alternatives: using /usr/bin/bsd-write to provide /usr/bin/write (write) in auto mode
update-alternatives: using /usr/bin/bsd-from to provide /usr/bin/from (from) in auto mode
Setting up libcroco3:armhf (0.6.13-1) ...
Setting up autoconf (2.69-11) ...
Setting up dh-strip-nondeterminism (1.6.3-1) ...
Setting up dwz (0.13-2) ...
Setting up groff-base (1.22.4-3) ...
Setting up libc6-dev:armhf (2.29-3+rpi1) ...
Setting up libpython3-stdlib:armhf (3.7.5-1) ...
Setting up automake (1:1.16.1-4) ...
update-alternatives: using /usr/bin/automake-1.16 to provide /usr/bin/automake (automake) in auto mode
Setting up python3.7 (3.7.5-2) ...
Setting up gettext (0.19.8.1-10) ...
Setting up libtool (2.4.6-11) ...
Setting up python3 (3.7.5-1) ...
Setting up man-db (2.9.0-1) ...
Not building database; man-db/auto-update is not 'true'.
Setting up intltool-debian (0.35.0+20060710.5) ...
Setting up po-debconf (1.0.21) ...
Setting up debhelper (12.7.1) ...
Setting up dh-autoreconf (19) ...
Setting up sbuild-build-depends-austin-dummy (0.invalid.0) ...
Processing triggers for libc-bin (2.29-2+rpi1) ...
W: No sandbox user '_apt' on the system, can not drop privileges

+------------------------------------------------------------------------------+
| Build environment                                                            |
+------------------------------------------------------------------------------+

Kernel: Linux 4.9.0-0.bpo.4-armmp armhf (armv7l)
Toolchain package versions: binutils_2.33.1-2+rpi1 dpkg-dev_1.19.7 g++-9_9.2.1-17+rpi1 gcc-9_9.2.1-17+rpi1 libc6-dev_2.29-3+rpi1 libstdc++-9-dev_9.2.1-17+rpi1 libstdc++6_9.2.1-17+rpi1 linux-libc-dev_5.2.17-1+rpi1+b2
Package versions: adduser_3.118 apt_1.8.4 autoconf_2.69-11 automake_1:1.16.1-4 autopoint_0.19.8.1-10 autotools-dev_20180224.1 base-files_11+rpi1 base-passwd_3.5.46 bash_5.0-5 bats_0.4.0-1.1 binutils_2.33.1-2+rpi1 binutils-arm-linux-gnueabihf_2.33.1-2+rpi1 binutils-common_2.33.1-2+rpi1 bsdmainutils_11.1.2 bsdutils_1:2.34-0.1 build-essential_12.8 bzip2_1.0.8-2 coreutils_8.30-3 cpp_4:9.2.1-3+rpi1 cpp-9_9.2.1-17+rpi1 dash_0.5.10.2-6 debconf_1.5.73 debhelper_12.7.1 debianutils_4.9 dh-autoreconf_19 dh-strip-nondeterminism_1.6.3-1 diffutils_1:3.7-3 dirmngr_2.2.17-3+b1 dpkg_1.19.7 dpkg-dev_1.19.7 dwz_0.13-2 e2fsprogs_1.45.4-1 fakeroot_1.24-1 fdisk_2.34-0.1 file_1:5.37-6 findutils_4.7.0-1 g++_4:9.2.1-3+rpi1 g++-9_9.2.1-17+rpi1 gcc_4:9.2.1-3+rpi1 gcc-4.9-base_4.9.4-2+rpi1+b19 gcc-5-base_5.5.0-8 gcc-6-base_6.5.0-1+rpi1+b3 gcc-9_9.2.1-17+rpi1 gcc-9-base_9.2.1-17+rpi1 gettext_0.19.8.1-10 gettext-base_0.19.8.1-10 gnupg_2.2.17-3 gnupg-l10n_2.2.17-3 gnupg-utils_2.2.17-3+b1 gpg_2.2.17-3+b1 gpg-agent_2.2.17-3+b1 gpg-wks-client_2.2.17-3+b1 gpg-wks-server_2.2.17-3+b1 gpgconf_2.2.17-3+b1 gpgsm_2.2.17-3+b1 gpgv_2.2.17-3+b1 grep_3.3-1 groff-base_1.22.4-3 gzip_1.9-3 hostname_3.23 init-system-helpers_1.57 intltool-debian_0.35.0+20060710.5 iputils-ping_3:20190709-2 libacl1_2.2.53-5 libapt-pkg5.0_1.8.4 libarchive-zip-perl_1.67-1 libasan5_9.2.1-17+rpi1 libassuan0_2.5.3-7 libatomic1_9.2.1-17+rpi1 libattr1_1:2.4.48-5 libaudit-common_1:2.8.5-2 libaudit1_1:2.8.5-2 libbinutils_2.33.1-2+rpi1 libblkid1_2.34-0.1 libbsd0_0.10.0-1 libbz2-1.0_1.0.8-2 libc-bin_2.29-2+rpi1 libc-dev-bin_2.29-3+rpi1 libc6_2.29-3+rpi1 libc6-dbg_2.29-3+rpi1 libc6-dev_2.29-3+rpi1 libcap-ng0_0.7.9-2.1 libcap2_1:2.27-1 libcap2-bin_1:2.27-1 libcc1-0_9.2.1-17+rpi1 libcom-err2_1.45.4-1 libcroco3_0.6.13-1 libdb5.3_5.3.28+dfsg1-0.6 libdebconfclient0_0.250 libdebhelper-perl_12.7.1 libdpkg-perl_1.19.7 libelf1_0.176-1.1 libexpat1_2.2.9-1 libext2fs2_1.45.4-1 libfakeroot_1.24-1 libfdisk1_2.34-0.1 libffi6_3.2.1-9 libfile-stripnondeterminism-perl_1.6.3-1 libgcc-9-dev_9.2.1-17+rpi1 libgcc1_1:9.2.1-17+rpi1 libgcrypt20_1.8.5-3 libgdbm-compat4_1.18.1-5 libgdbm6_1.18.1-5 libglib2.0-0_2.62.2-3 libgmp10_2:6.1.2+dfsg-4 libgnutls30_3.6.10-4 libgomp1_9.2.1-17+rpi1 libgpg-error0_1.36-7 libhogweed5_3.5.1+really3.5.1-2 libicu63_63.2-2 libidn2-0_2.2.0-2 libisl19_0.20-2 libisl21_0.21-2 libksba8_1.3.5-2 libldap-2.4-2_2.4.48+dfsg-1+b2 libldap-common_2.4.48+dfsg-1 liblz4-1_1.9.2-1 liblzma5_5.2.4-1 libmagic-mgc_1:5.37-6 libmagic1_1:5.37-6 libmount1_2.34-0.1 libmpc3_1.1.0-1 libmpdec2_2.4.2-2 libmpfr6_4.0.2-1 libncursesw6_6.1+20191019-1 libnettle7_3.5.1+really3.5.1-2 libnpth0_1.6-1 libp11-kit0_0.23.18.1-2 libpam-cap_1:2.27-1 libpam-modules_1.3.1-5 libpam-modules-bin_1.3.1-5 libpam-runtime_1.3.1-5 libpam0g_1.3.1-5 libpcre2-8-0_10.32-5 libpcre3_2:8.39-12 libperl5.30_5.30.0-9 libpipeline1_1.5.1-2 libpython3-stdlib_3.7.5-1 libpython3.7-minimal_3.7.5-2 libpython3.7-stdlib_3.7.5-2 libreadline7_7.0-5 libreadline8_8.0-3 libsasl2-2_2.1.27+dfsg-1+b1 libsasl2-modules-db_2.1.27+dfsg-1+b1 libseccomp2_2.4.1-2+rpi1 libselinux1_2.9-2 libsemanage-common_2.9-3 libsemanage1_2.9-3 libsepol1_2.9-2 libsigsegv2_2.12-2 libsmartcols1_2.34-0.1 libsqlite3-0_3.30.1-1 libss2_1.45.4-1 libssl1.1_1.1.1d-2 libstdc++-9-dev_9.2.1-17+rpi1 libstdc++6_9.2.1-17+rpi1 libsub-override-perl_0.09-2 libsystemd0_242-7+rpi1 libtasn1-6_4.14-3 libtinfo5_6.1+20191019-1 libtinfo6_6.1+20191019-1 libtool_2.4.6-11 libubsan1_9.2.1-17+rpi1 libuchardet0_0.0.6-3 libudev1_242-7+rpi1 libunistring2_0.9.10-2 libuuid1_2.34-0.1 libxml2_2.9.4+dfsg1-8 libzstd1_1.4.3+dfsg-1+rpi1 linux-libc-dev_5.2.17-1+rpi1+b2 login_1:4.7-2 logsave_1.45.4-1 lsb-base_11.1.0+rpi1 m4_1.4.18-4 make_4.2.1-1.2 man-db_2.9.0-1 mawk_1.3.3-17 mime-support_3.64 mount_2.34-0.1 ncurses-base_6.1+20191019-1 ncurses-bin_6.1+20191019-1 netbase_5.6 passwd_1:4.7-2 patch_2.7.6-6 perl_5.30.0-9 perl-base_5.30.0-9 perl-modules-5.30_5.30.0-9 pinentry-curses_1.1.0-3 po-debconf_1.0.21 python3_3.7.5-1 python3-minimal_3.7.5-1 python3.7_3.7.5-2 python3.7-minimal_3.7.5-2 raspbian-archive-keyring_20120528.2 readline-common_8.0-3 sbuild-build-depends-austin-dummy_0.invalid.0 sbuild-build-depends-core-dummy_0.invalid.0 sed_4.7-1 sensible-utils_0.0.12 sysvinit-utils_2.96-1 tar_1.30+dfsg-6 tzdata_2019c-3 util-linux_2.34-0.1 valgrind_1:3.7.0-6+rpi6 xz-utils_5.2.4-1 zlib1g_1:1.2.11.dfsg-1

+------------------------------------------------------------------------------+
| Build                                                                        |
+------------------------------------------------------------------------------+


Unpack source
-------------

gpgv: unknown type of key resource 'trustedkeys.kbx'
gpgv: keyblock resource '/sbuild-nonexistent/.gnupg/trustedkeys.kbx': General error
gpgv: Signature made Mon Jul 29 04:06:21 2019 UTC
gpgv:                using RSA key 9236557B170C87F8821C0AC3C1E0D92E986F7C7E
gpgv: Can't check signature: No public key
dpkg-source: warning: failed to verify signature on ./austin_0.7.0-1.dsc
dpkg-source: info: extracting austin in /<<PKGBUILDDIR>>
dpkg-source: info: unpacking austin_0.7.0.orig.tar.gz
dpkg-source: info: unpacking austin_0.7.0-1.debian.tar.xz

Check disc space
----------------

Sufficient free space for build

User Environment
----------------

APT_CONFIG=/var/lib/sbuild/apt.conf
DEB_BUILD_OPTIONS=parallel=4
HOME=/sbuild-nonexistent
LC_ALL=POSIX
LOGNAME=buildd
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
SCHROOT_ALIAS_NAME=bullseye-staging-armhf-sbuild
SCHROOT_CHROOT_NAME=bullseye-staging-armhf-sbuild
SCHROOT_COMMAND=env
SCHROOT_GID=109
SCHROOT_GROUP=buildd
SCHROOT_SESSION_ID=bullseye-staging-armhf-sbuild-50823a2b-1c09-4a6f-b7f5-cc2250d02e77
SCHROOT_UID=104
SCHROOT_USER=buildd
SHELL=/bin/sh
TERM=linux
USER=buildd

dpkg-buildpackage
-----------------

dpkg-buildpackage: info: source package austin
dpkg-buildpackage: info: source version 0.7.0-1
dpkg-buildpackage: info: source distribution unstable
 dpkg-source --before-build .
dpkg-buildpackage: info: host architecture armhf
 fakeroot debian/rules clean
dh clean --buildsystem=autoconf
   dh_auto_clean -O--buildsystem=autoconf
   dh_autoreconf_clean -O--buildsystem=autoconf
   dh_clean -O--buildsystem=autoconf
 debian/rules build-arch
dh build-arch --buildsystem=autoconf
   dh_update_autotools_config -a -O--buildsystem=autoconf
   dh_autoreconf -a -O--buildsystem=autoconf
configure.ac:11: installing './compile'
configure.ac:8: installing './install-sh'
configure.ac:8: installing './missing'
parallel-tests: installing './test-driver'
src/Makefile.am: installing './depcomp'
   dh_auto_configure -a -O--buildsystem=autoconf
	./configure --build=arm-linux-gnueabihf --prefix=/usr --includedir=\${prefix}/include --mandir=\${prefix}/share/man --infodir=\${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --disable-silent-rules --libdir=\${prefix}/lib/arm-linux-gnueabihf --libexecdir=\${prefix}/lib/arm-linux-gnueabihf --runstatedir=/run --disable-maintainer-mode --disable-dependency-tracking
configure: WARNING: unrecognized options: --disable-maintainer-mode
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether make supports the include directive... yes (GNU style)
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking dependency style of gcc... none
checking for gcc option to accept ISO C99... none needed
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking stddef.h usability... yes
checking stddef.h presence... yes
checking for stddef.h... yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking syslog.h usability... yes
checking syslog.h presence... yes
checking for syslog.h... yes
checking for unistd.h... (cached) yes
checking stdio.h usability... yes
checking stdio.h presence... yes
checking for stdio.h... yes
checking for pid_t... yes
checking for ssize_t... yes
checking vfork.h usability... no
checking vfork.h presence... no
checking for vfork.h... no
checking for fork... yes
checking for vfork... yes
checking for working fork... yes
checking for working vfork... (cached) yes
checking for stdlib.h... (cached) yes
checking for GNU libc compatible malloc... yes
checking for stdlib.h... (cached) yes
checking for GNU libc compatible realloc... yes
checking for strstr... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: creating config.h
config.status: executing depfiles commands
configure: WARNING: unrecognized options: --disable-maintainer-mode
   dh_auto_build -a -O--buildsystem=autoconf
	make -j4
make[1]: Entering directory '/<<PKGBUILDDIR>>'
make  all-recursive
make[2]: Entering directory '/<<PKGBUILDDIR>>'
Making all in src
make[3]: Entering directory '/<<PKGBUILDDIR>>/src'
gcc -DHAVE_CONFIG_H -I. -I..   -Wdate-time -D_FORTIFY_SOURCE=2 -I../src -Wall -O3 -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -c -o argparse.o argparse.c
gcc -DHAVE_CONFIG_H -I. -I..   -Wdate-time -D_FORTIFY_SOURCE=2 -I../src -Wall -O3 -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -c -o austin.o austin.c
gcc -DHAVE_CONFIG_H -I. -I..   -Wdate-time -D_FORTIFY_SOURCE=2 -I../src -Wall -O3 -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -c -o dict.o dict.c
gcc -DHAVE_CONFIG_H -I. -I..   -Wdate-time -D_FORTIFY_SOURCE=2 -I../src -Wall -O3 -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -c -o error.o error.c
gcc -DHAVE_CONFIG_H -I. -I..   -Wdate-time -D_FORTIFY_SOURCE=2 -I../src -Wall -O3 -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -c -o logging.o logging.c
gcc -DHAVE_CONFIG_H -I. -I..   -Wdate-time -D_FORTIFY_SOURCE=2 -I../src -Wall -O3 -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -c -o mem.o mem.c
austin.c: In function '_print_collapsed_stack':
austin.c:83:40: warning: format '%ld' expects argument of type 'long int', but argument 4 has type 'int' [-Wformat=]
   83 |     fprintf(pargs.output_file, " %lu %ld %ld\n",
      |                                      ~~^
      |                                        |
      |                                        long int
      |                                      %d
   84 |       delta, mem_delta >= 0 ? mem_delta : 0, mem_delta < 0 ? mem_delta : 0
      |              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                         |
      |                                         int
austin.c:83:44: warning: format '%ld' expects argument of type 'long int', but argument 5 has type 'int' [-Wformat=]
   83 |     fprintf(pargs.output_file, " %lu %ld %ld\n",
      |                                          ~~^
      |                                            |
      |                                            long int
      |                                          %d
   84 |       delta, mem_delta >= 0 ? mem_delta : 0, mem_delta < 0 ? mem_delta : 0
      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                                                        |
      |                                                                        int
austin.c:89:38: warning: format '%ld' expects argument of type 'long int', but argument 3 has type 'ssize_t' {aka 'int'} [-Wformat=]
   89 |       fprintf(pargs.output_file, " %ld\n", mem_delta);
      |                                    ~~^     ~~~~~~~~~
      |                                      |     |
      |                                      |     ssize_t {aka int}
      |                                      long int
      |                                    %d
gcc -DHAVE_CONFIG_H -I. -I..   -Wdate-time -D_FORTIFY_SOURCE=2 -I../src -Wall -O3 -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -c -o version.o version.c
gcc -DHAVE_CONFIG_H -I. -I..   -Wdate-time -D_FORTIFY_SOURCE=2 -I../src -Wall -O3 -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -c -o stats.o stats.c
austin.c: In function 'main':
austin.c:124:47: warning: 'current_thread' may be used uninitialized in this function [-Wmaybe-uninitialized]
  124 |         if (py_proc->py_runtime_raddr != NULL && current_thread == (void *) -1) {
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
austin.c:103:13: note: 'current_thread' was declared here
  103 |   void    * current_thread;
      |             ^~~~~~~~~~~~~~
gcc -DHAVE_CONFIG_H -I. -I..   -Wdate-time -D_FORTIFY_SOURCE=2 -I../src -Wall -O3 -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -c -o py_code.o py_code.c
gcc -DHAVE_CONFIG_H -I. -I..   -Wdate-time -D_FORTIFY_SOURCE=2 -I../src -Wall -O3 -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -c -o py_frame.o py_frame.c
gcc -DHAVE_CONFIG_H -I. -I..   -Wdate-time -D_FORTIFY_SOURCE=2 -I../src -Wall -O3 -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -c -o py_proc.o py_proc.c
gcc -DHAVE_CONFIG_H -I. -I..   -Wdate-time -D_FORTIFY_SOURCE=2 -I../src -Wall -O3 -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -c -o py_thread.o py_thread.c
In file included from py_proc.c:76:
linux/py_proc.h: In function '_py_proc__parse_maps_file':
linux/py_proc.h:56:54: warning: format '%lx' expects argument of type 'long unsigned int *', but argument 3 has type 'ssize_t *' {aka 'int *'} [-Wformat=]
   56 | #define get_bounds(line, a, b)         (sscanf(line, "%lx-%lx", &a, &b))
      |                                                      ^~~~~~~~~  ~~~~~~~~
      |                                                                 |
      |                                                                 ssize_t * {aka int *}
   57 | 
      |                                                       
   58 | 
      |                                                       
   59 | struct _proc_extra_info {
      | ~~~~~~~~~~~~~~~~~~~~~~~~~                             
   60 |   unsigned int page_size;
      |   ~~~~~~~~~~~~~~~~~~~~~~~                             
   61 |   char         statm_file[24];
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~                        
   62 | };
      | ~~                                                    
   63 | 
      |                                                       
   64 | 
      |                                                       
   65 | union {
      | ~~~~~~~                                               
   66 |   Elf32_Ehdr v32;
      |   ~~~~~~~~~~~~~~~                                     
   67 |   Elf64_Ehdr v64;
      |   ~~~~~~~~~~~~~~~                                     
   68 | } ehdr_v;
      | ~~~~~~~~~                                             
   69 | 
      |                                                       
   70 | 
      |                                                       
   71 | // ----------------------------------------------------------------------------
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   72 | static Elf64_Addr
      | ~~~~~~~~~~~~~~~~~                                     
   73 | _get_base_64(Elf64_Ehdr * ehdr, void * elf_map)
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       
   74 | {
      | ~                                                     
   75 |   for (int i = 0; i < ehdr->e_phnum; ++i) {
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~           
   76 |     Elf64_Phdr * phdr = (Elf64_Phdr *) (elf_map + ehdr->e_phoff + i * ehdr->e_phentsize);
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   77 |     if (phdr->p_type == PT_LOAD)
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~                      
   78 |       return phdr->p_vaddr - phdr->p_vaddr % phdr->p_align;
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   79 |   }
      |   ~                                                   
   80 |   return UINT64_MAX;
      |   ~~~~~~~~~~~~~~~~~~                                  
   81 | }
      | ~                                                     
   82 | 
      |                                                       
   83 | static int
      | ~~~~~~~~~~                                            
   84 | _py_proc__analyze_elf64(py_proc_t * self) {
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~           
   85 |   register int symbols = 0;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~                           
   86 | 
      |                                                       
   87 |   char * object_file = self->lib_path != NULL ? self->lib_path : self->bin_path;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   88 | 
      |                                                       
   89 |   Elf64_Ehdr ehdr = ehdr_v.v64;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                       
   90 | 
      |                                                       
   91 |   // Section header must be read from binary as it is not loaded into memory
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   92 |   Elf64_Xword   sht_size      = ehdr.e_shnum * ehdr.e_shentsize;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   93 |   Elf64_Off     elf_map_size  = ehdr.e_shoff + sht_size;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   94 |   int           fd            = open(object_file, O_RDONLY);
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   95 |   void        * elf_map       = mmap(NULL, elf_map_size, PROT_READ, MAP_SHARED, fd, 0);
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   96 |   int           map_flag      = 0;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                    
   97 |   Elf64_Shdr  * p_shdr;
      |   ~~~~~~~~~~~~~~~~~~~~~                               
   98 | 
      |                                                       
   99 |   Elf64_Shdr  * p_shstrtab   = elf_map + ELF_SH_OFF(ehdr, ehdr.e_shstrndx);
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  100 |   char        * sh_name_base = elf_map + p_shstrtab->sh_offset;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  101 |   Elf64_Shdr  * p_dynsym     = NULL;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                  
  102 |   Elf64_Addr    base         = _get_base_64(&ehdr, elf_map);
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  103 | 
      |                                                       
  104 |   if (base != UINT64_MAX) {
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~                           
  105 |     log_d("Base @ %p", base);
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~                         
  106 | 
      |                                                       
  107 |     for (Elf64_Off sh_off = ehdr.e_shoff; \
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~           
  108 |       map_flag != DYNSYM_MAP && sh_off < elf_map_size; \
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  109 |       sh_off += ehdr.e_shentsize \
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~                    
  110 |     ) {
      |     ~~~                                               
  111 |       p_shdr = (Elf64_Shdr *) (elf_map + sh_off);
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     
  112 | 
      |                                                       
  113 |       if (
      |       ~~~~                                            
  114 |         !(map_flag & DYNSYM_MAP) &&
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~                   
  115 |         p_shdr->sh_type == SHT_DYNSYM && \
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            
  116 |         strcmp(sh_name_base + p_shdr->sh_name, ".dynsym") == 0
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  117 |       ) {
      |       ~~~                                             
  118 |         p_dynsym = p_shdr;
      |         ~~~~~~~~~~~~~~~~~~                            
  119 |         map_flag |= DYNSYM_MAP;
      |         ~~~~~~~~~~~~~~~~~~~~~~~                       
  120 |       }
      |       ~                                               
  121 |       // NOTE: This might be required if the Python version is must be retrieved
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  122 |       //       from the RO data section
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~               
  123 |       // else if (
      |       ~~~~~~~~~~~~                                    
  124 |       //   p_shdr->sh_type == SHT_PROGBITS &&
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~         
  125 |       //   strcmp(sh_name_base + p_shdr->sh_name, ".rodata") == 0
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  126 |       // ) {
      |       ~~~~~~                                          
  127 |       //   self->map.rodata.base = (void *) p_shdr->sh_offset;
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  128 |       //   self->map.rodata.size = p_shdr->sh_size;
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  129 |       //   map_flag |= RODATA_MAP;
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~                    
  130 |       // }
      |       ~~~~                                            
  131 |     }
      |     ~                                                 
  132 | 
      |                                                       
  133 |     if (p_dynsym != NULL) {
      |     ~~~~~~~~~~~~~~~~~~~~~~~                           
  134 |       if (p_dynsym->sh_offset != 0) {
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                 
  135 |         Elf64_Shdr * p_strtabsh = (Elf64_Shdr *) (elf_map + ELF_SH_OFF(ehdr, p_dynsym->sh_link));
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  136 | 
      |                                                       
  137 |         // Search for dynamic symbols
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                 
  138 |         for (Elf64_Off tab_off = p_dynsym->sh_offset; \
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  139 |           tab_off < p_dynsym->sh_offset + p_dynsym->sh_size; \
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  140 |           tab_off += p_dynsym->sh_entsize
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~             
  141 |         ) {
      |         ~~~                                           
  142 |           Elf64_Sym * sym      = (Elf64_Sym *) (elf_map + tab_off);
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  143 |           char      * sym_name = (char *) (elf_map + p_strtabsh->sh_offset + sym->st_name);
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  144 |           void      * value    = self->map.elf.base + (sym->st_value - base);
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  145 |           if ((symbols += _py_proc__check_sym(self, sym_name, value)) >= SYMBOLS)
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  146 |             break;
      |             ~~~~~~                                    
  147 |         }
      |         ~                                             
  148 |       }
      |       ~                                               
  149 |     }
      |     ~                                                 
  150 |   }
      |   ~                                                   
  151 | 
      |                                                       
  152 |   munmap(elf_map, elf_map_size);
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                      
  153 |   close(fd);
      |   ~~~~~~~~~~                                          
  154 | 
      |                                                       
  155 |   return !symbols;
      |   ~~~~~~~~~~~~~~~~                                    
  156 | }
      | ~                                                     
  157 | 
      |                                                       
  158 | 
      |                                                       
  159 | // ----------------------------------------------------------------------------
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  160 | static Elf32_Addr
      | ~~~~~~~~~~~~~~~~~                                     
  161 | _get_base_32(Elf32_Ehdr * ehdr, void * elf_map)
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       
  162 | {
      | ~                                                     
  163 |   for (int i = 0; i < ehdr->e_phnum; ++i) {
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~           
  164 |     Elf32_Phdr * phdr = (Elf32_Phdr *) (elf_map + ehdr->e_phoff + i * ehdr->e_phentsize);
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  165 |     if (phdr->p_type == PT_LOAD)
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~                      
  166 |       return phdr->p_vaddr - phdr->p_vaddr % phdr->p_align;
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  167 |   }
      |   ~                                                   
  168 |   return UINT32_MAX;
      |   ~~~~~~~~~~~~~~~~~~                                  
  169 | }
      | ~                                                     
  170 | 
      |                                                       
  171 | static int
      | ~~~~~~~~~~                                            
  172 | _py_proc__analyze_elf32(py_proc_t * self) {
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~           
  173 |   register int symbols = 0;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~                           
  174 | 
      |                                                       
  175 |   char * object_file = self->lib_path != NULL ? self->lib_path : self->bin_path;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  176 | 
      |                                                       
  177 |   Elf32_Ehdr ehdr = ehdr_v.v32;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                       
  178 | 
      |                                                       
  179 |   // Section header must be read from binary as it is not loaded into memory
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  180 |   Elf32_Xword   sht_size      = ehdr.e_shnum * ehdr.e_shentsize;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  181 |   Elf32_Off     elf_map_size  = ehdr.e_shoff + sht_size;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  182 |   int           fd            = open(object_file, O_RDONLY);
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  183 |   void        * elf_map       = mmap(NULL, elf_map_size, PROT_READ, MAP_SHARED, fd, 0);
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  184 |   int           map_flag      = 0;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                    
  185 |   Elf32_Shdr  * p_shdr;
      |   ~~~~~~~~~~~~~~~~~~~~~                               
  186 | 
      |                                                       
  187 |   Elf32_Shdr  * p_shstrtab   = elf_map + ELF_SH_OFF(ehdr, ehdr.e_shstrndx);
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  188 |   char        * sh_name_base = elf_map + p_shstrtab->sh_offset;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  189 |   Elf32_Shdr  * p_dynsym     = NULL;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                  
  190 |   Elf32_Addr    base         = _get_base_32(&ehdr, elf_map);
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  191 | 
      |                                                       
  192 |   if (base != UINT32_MAX) {
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~                           
  193 |     log_d("Base @ %p", base);
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~                         
  194 | 
      |                                                       
  195 |     for (Elf32_Off sh_off = ehdr.e_shoff; \
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~           
  196 |       map_flag != DYNSYM_MAP && sh_off < elf_map_size; \
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  197 |       sh_off += ehdr.e_shentsize \
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~                    
  198 |     ) {
      |     ~~~                                               
  199 |       p_shdr = (Elf32_Shdr *) (elf_map + sh_off);
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     
  200 | 
      |                                                       
  201 |       if (
      |       ~~~~                                            
  202 |         !(map_flag & DYNSYM_MAP) &&
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~                   
  203 |         p_shdr->sh_type == SHT_DYNSYM && \
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            
  204 |         strcmp(sh_name_base + p_shdr->sh_name, ".dynsym") == 0
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  205 |       ) {
      |       ~~~                                             
  206 |         p_dynsym = p_shdr;
      |         ~~~~~~~~~~~~~~~~~~                            
  207 |         map_flag |= DYNSYM_MAP;
      |         ~~~~~~~~~~~~~~~~~~~~~~~                       
  208 |       }
      |       ~                                               
  209 |       // NOTE: This might be required if the Python version is must be retrieved
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  210 |       //       from the RO data section
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~               
  211 |       // else if (
      |       ~~~~~~~~~~~~                                    
  212 |       //   p_shdr->sh_type == SHT_PROGBITS &&
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~         
  213 |       //   strcmp(sh_name_base + p_shdr->sh_name, ".rodata") == 0
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  214 |       // ) {
      |       ~~~~~~                                          
  215 |       //   self->map.rodata.base = (void *) p_shdr->sh_offset;
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  216 |       //   self->map.rodata.size = p_shdr->sh_size;
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  217 |       //   map_flag |= RODATA_MAP;
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~                    
  218 |       // }
      |       ~~~~                                            
  219 |     }
      |     ~                                                 
  220 | 
      |                                                       
  221 |     if (p_dynsym != NULL) {
      |     ~~~~~~~~~~~~~~~~~~~~~~~                           
  222 |       if (p_dynsym->sh_offset != 0) {
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                 
  223 |         Elf32_Shdr * p_strtabsh = (Elf32_Shdr *) (elf_map + ELF_SH_OFF(ehdr, p_dynsym->sh_link));
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  224 | 
      |                                                       
  225 |         // Search for dynamic symbols
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                 
  226 |         for (Elf32_Off tab_off = p_dynsym->sh_offset; \
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  227 |           tab_off < p_dynsym->sh_offset + p_dynsym->sh_size; \
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  228 |           tab_off += p_dynsym->sh_entsize
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~             
  229 |         ) {
      |         ~~~                                           
  230 |           Elf32_Sym * sym      = (Elf32_Sym *) (elf_map + tab_off);
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  231 |           char      * sym_name = (char *) (elf_map + p_strtabsh->sh_offset + sym->st_name);
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  232 |           void      * value    = self->map.elf.base + (sym->st_value - base);
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  233 |           if ((symbols += _py_proc__check_sym(self, sym_name, value)) >= SYMBOLS)
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  234 |             break;
      |             ~~~~~~                                    
  235 |         }
      |         ~                                             
  236 |       }
      |       ~                                               
  237 |     }
      |     ~                                                 
  238 |   }
      |   ~                                                   
  239 | 
      |                                                       
  240 |   munmap(elf_map, elf_map_size);
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                      
  241 |   close(fd);
      |   ~~~~~~~~~~                                          
  242 | 
      |                                                       
  243 |   return !symbols;
      |   ~~~~~~~~~~~~~~~~                                    
  244 | }
      | ~                                                     
  245 | 
      |                                                       
  246 | 
      |                                                       
  247 | // ----------------------------------------------------------------------------
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  248 | static int
      | ~~~~~~~~~~                                            
  249 | _py_proc__analyze_elf(py_proc_t * self) {
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~             
  250 |   Elf64_Ehdr ehdr = ehdr_v.v64;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                       
  251 | 
      |                                                       
  252 |   if (
      |   ~~~~                                                
  253 |     _py_proc__get_elf_type(self, 0, ehdr_v) ||
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        
  254 |     ehdr.e_shoff == 0 ||
      |     ~~~~~~~~~~~~~~~~~~~~                              
  255 |     ehdr.e_shnum < 2 ||
      |     ~~~~~~~~~~~~~~~~~~~                               
  256 |     memcmp(ehdr.e_ident, ELFMAG, SELFMAG)
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~             
  257 |   ) return 1;
      |   ~~~~~~~~~~~                                         
  258 | 
      |                                                       
  259 |   // Dispatch
      |   ~~~~~~~~~~~                                         
  260 |   switch (ehdr.e_ident[EI_CLASS]) {
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                   
  261 |   case ELFCLASS32:
      |   ~~~~~~~~~~~~~~~~                                    
  262 |     return _py_proc__analyze_elf32(self);
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~             
  263 | 
      |                                                       
  264 |   case ELFCLASS64:
      |   ~~~~~~~~~~~~~~~~                                    
  265 |     return _py_proc__analyze_elf64(self);
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~             
  266 | 
      |                                                       
  267 |   default:
      |   ~~~~~~~~                                            
  268 |     return 1;
      |     ~~~~~~~~~                                         
  269 |   }
      |   ~                                                   
  270 | }
      | ~                                                     
  271 | 
      |                                                       
  272 | 
      |                                                       
  273 | // ----------------------------------------------------------------------------
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  274 | static int
      | ~~~~~~~~~~                                            
  275 | _py_proc__parse_maps_file(py_proc_t * self) {
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~         
  276 |   char      file_name[32];
      |   ~~~~~~~~~~~~~~~~~~~~~~~~                            
  277 |   FILE    * fp        = NULL;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~                         
  278 |   char    * line      = NULL;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~                         
  279 |   size_t    len       = 0;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~                            
  280 |   int       maps_flag = 0;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~                            
  281 | 
      |                                                       
  282 |   sprintf(file_name, "/proc/%d/maps", self->pid);
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     
  283 |   fp = fopen(file_name, "r");
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~                         
  284 |   if (fp == NULL) {
      |   ~~~~~~~~~~~~~~~~~                                   
  285 |     switch (errno) {
      |     ~~~~~~~~~~~~~~~~                                  
  286 |     case EACCES:  // Needs elevated privileges
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        
  287 |       error = EPROCPERM;
      |       ~~~~~~~~~~~~~~~~~~                              
  288 |       break;
      |       ~~~~~~                                          
  289 |     case ENOENT:  // Invalid pid
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~                      
  290 |       error = EPROCNPID;
      |       ~~~~~~~~~~~~~~~~~~                              
  291 |       break;
      |       ~~~~~~                                          
  292 |     default:
      |     ~~~~~~~~                                          
  293 |       error = EPROCVM;
      |       ~~~~~~~~~~~~~~~~                                
  294 |     }
      |     ~                                                 
  295 |   }
      |   ~                                                   
  296 | 
      |                                                       
  297 |   else {
      |   ~~~~~~                                              
  298 |     ssize_t a, b;  // VM map bounds
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                   
  299 |     int path_len;
      |     ~~~~~~~~~~~~~                                     
  300 |     char * needle;
      |     ~~~~~~~~~~~~~~                                    
  301 |     register int line_count = 0;  // Used to determine if we need to look for the python or libpython binary.
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  302 | 
      |                                                       
  303 |     self->min_raddr = (void *) -1;
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                    
  304 |     self->max_raddr = NULL;
      |     ~~~~~~~~~~~~~~~~~~~~~~~                           
  305 | 
      |                                                       
  306 |     while (getline(&line, &len, fp) != -1) {
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~          
  307 |       ++line_count;
      |       ~~~~~~~~~~~~~                                   
  308 |       // Parse heap bounds
      |       ~~~~~~~~~~~~~~~~~~~~                            
  309 |       get_bounds(line, a, b);
      |       ~~~~~~~~~~~~~~~~~~                              
linux/py_proc.h:309:7: note: in expansion of macro 'get_bounds'
  309 |       get_bounds(line, a, b);
      |       ^~~~~~~~~~
linux/py_proc.h:56:57: note: format string is defined here
   56 | #define get_bounds(line, a, b)         (sscanf(line, "%lx-%lx", &a, &b))
      |                                                       ~~^
      |                                                         |
      |                                                         long unsigned int *
      |                                                       %x
linux/py_proc.h:56:54: warning: format '%lx' expects argument of type 'long unsigned int *', but argument 4 has type 'ssize_t *' {aka 'int *'} [-Wformat=]
   56 | #define get_bounds(line, a, b)         (sscanf(line, "%lx-%lx", &a, &b))
      |                                                      ^~~~~~~~~      ~~~~
      |                                                                     |
      |                                                                     ssize_t * {aka int *}
   57 | 
      |                                                       
   58 | 
      |                                                       
   59 | struct _proc_extra_info {
      | ~~~~~~~~~~~~~~~~~~~~~~~~~                             
   60 |   unsigned int page_size;
      |   ~~~~~~~~~~~~~~~~~~~~~~~                             
   61 |   char         statm_file[24];
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~                        
   62 | };
      | ~~                                                    
   63 | 
      |                                                       
   64 | 
      |                                                       
   65 | union {
      | ~~~~~~~                                               
   66 |   Elf32_Ehdr v32;
      |   ~~~~~~~~~~~~~~~                                     
   67 |   Elf64_Ehdr v64;
      |   ~~~~~~~~~~~~~~~                                     
   68 | } ehdr_v;
      | ~~~~~~~~~                                             
   69 | 
      |                                                       
   70 | 
      |                                                       
   71 | // ----------------------------------------------------------------------------
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   72 | static Elf64_Addr
      | ~~~~~~~~~~~~~~~~~                                     
   73 | _get_base_64(Elf64_Ehdr * ehdr, void * elf_map)
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       
   74 | {
      | ~                                                     
   75 |   for (int i = 0; i < ehdr->e_phnum; ++i) {
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~           
   76 |     Elf64_Phdr * phdr = (Elf64_Phdr *) (elf_map + ehdr->e_phoff + i * ehdr->e_phentsize);
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   77 |     if (phdr->p_type == PT_LOAD)
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~                      
   78 |       return phdr->p_vaddr - phdr->p_vaddr % phdr->p_align;
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   79 |   }
      |   ~                                                   
   80 |   return UINT64_MAX;
      |   ~~~~~~~~~~~~~~~~~~                                  
   81 | }
      | ~                                                     
   82 | 
      |                                                       
   83 | static int
      | ~~~~~~~~~~                                            
   84 | _py_proc__analyze_elf64(py_proc_t * self) {
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~           
   85 |   register int symbols = 0;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~                           
   86 | 
      |                                                       
   87 |   char * object_file = self->lib_path != NULL ? self->lib_path : self->bin_path;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   88 | 
      |                                                       
   89 |   Elf64_Ehdr ehdr = ehdr_v.v64;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                       
   90 | 
      |                                                       
   91 |   // Section header must be read from binary as it is not loaded into memory
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   92 |   Elf64_Xword   sht_size      = ehdr.e_shnum * ehdr.e_shentsize;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   93 |   Elf64_Off     elf_map_size  = ehdr.e_shoff + sht_size;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   94 |   int           fd            = open(object_file, O_RDONLY);
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   95 |   void        * elf_map       = mmap(NULL, elf_map_size, PROT_READ, MAP_SHARED, fd, 0);
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   96 |   int           map_flag      = 0;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                    
   97 |   Elf64_Shdr  * p_shdr;
      |   ~~~~~~~~~~~~~~~~~~~~~                               
   98 | 
      |                                                       
   99 |   Elf64_Shdr  * p_shstrtab   = elf_map + ELF_SH_OFF(ehdr, ehdr.e_shstrndx);
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  100 |   char        * sh_name_base = elf_map + p_shstrtab->sh_offset;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  101 |   Elf64_Shdr  * p_dynsym     = NULL;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                  
  102 |   Elf64_Addr    base         = _get_base_64(&ehdr, elf_map);
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  103 | 
      |                                                       
  104 |   if (base != UINT64_MAX) {
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~                           
  105 |     log_d("Base @ %p", base);
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~                         
  106 | 
      |                                                       
  107 |     for (Elf64_Off sh_off = ehdr.e_shoff; \
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~           
  108 |       map_flag != DYNSYM_MAP && sh_off < elf_map_size; \
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  109 |       sh_off += ehdr.e_shentsize \
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~                    
  110 |     ) {
      |     ~~~                                               
  111 |       p_shdr = (Elf64_Shdr *) (elf_map + sh_off);
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     
  112 | 
      |                                                       
  113 |       if (
      |       ~~~~                                            
  114 |         !(map_flag & DYNSYM_MAP) &&
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~                   
  115 |         p_shdr->sh_type == SHT_DYNSYM && \
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            
  116 |         strcmp(sh_name_base + p_shdr->sh_name, ".dynsym") == 0
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  117 |       ) {
      |       ~~~                                             
  118 |         p_dynsym = p_shdr;
      |         ~~~~~~~~~~~~~~~~~~                            
  119 |         map_flag |= DYNSYM_MAP;
      |         ~~~~~~~~~~~~~~~~~~~~~~~                       
  120 |       }
      |       ~                                               
  121 |       // NOTE: This might be required if the Python version is must be retrieved
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  122 |       //       from the RO data section
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~               
  123 |       // else if (
      |       ~~~~~~~~~~~~                                    
  124 |       //   p_shdr->sh_type == SHT_PROGBITS &&
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~         
  125 |       //   strcmp(sh_name_base + p_shdr->sh_name, ".rodata") == 0
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  126 |       // ) {
      |       ~~~~~~                                          
  127 |       //   self->map.rodata.base = (void *) p_shdr->sh_offset;
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  128 |       //   self->map.rodata.size = p_shdr->sh_size;
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  129 |       //   map_flag |= RODATA_MAP;
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~                    
  130 |       // }
      |       ~~~~                                            
  131 |     }
      |     ~                                                 
  132 | 
      |                                                       
  133 |     if (p_dynsym != NULL) {
      |     ~~~~~~~~~~~~~~~~~~~~~~~                           
  134 |       if (p_dynsym->sh_offset != 0) {
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                 
  135 |         Elf64_Shdr * p_strtabsh = (Elf64_Shdr *) (elf_map + ELF_SH_OFF(ehdr, p_dynsym->sh_link));
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  136 | 
      |                                                       
  137 |         // Search for dynamic symbols
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                 
  138 |         for (Elf64_Off tab_off = p_dynsym->sh_offset; \
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  139 |           tab_off < p_dynsym->sh_offset + p_dynsym->sh_size; \
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  140 |           tab_off += p_dynsym->sh_entsize
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~             
  141 |         ) {
      |         ~~~                                           
  142 |           Elf64_Sym * sym      = (Elf64_Sym *) (elf_map + tab_off);
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  143 |           char      * sym_name = (char *) (elf_map + p_strtabsh->sh_offset + sym->st_name);
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  144 |           void      * value    = self->map.elf.base + (sym->st_value - base);
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  145 |           if ((symbols += _py_proc__check_sym(self, sym_name, value)) >= SYMBOLS)
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  146 |             break;
      |             ~~~~~~                                    
  147 |         }
      |         ~                                             
  148 |       }
      |       ~                                               
  149 |     }
      |     ~                                                 
  150 |   }
      |   ~                                                   
  151 | 
      |                                                       
  152 |   munmap(elf_map, elf_map_size);
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                      
  153 |   close(fd);
      |   ~~~~~~~~~~                                          
  154 | 
      |                                                       
  155 |   return !symbols;
      |   ~~~~~~~~~~~~~~~~                                    
  156 | }
      | ~                                                     
  157 | 
      |                                                       
  158 | 
      |                                                       
  159 | // ----------------------------------------------------------------------------
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  160 | static Elf32_Addr
      | ~~~~~~~~~~~~~~~~~                                     
  161 | _get_base_32(Elf32_Ehdr * ehdr, void * elf_map)
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       
  162 | {
      | ~                                                     
  163 |   for (int i = 0; i < ehdr->e_phnum; ++i) {
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~           
  164 |     Elf32_Phdr * phdr = (Elf32_Phdr *) (elf_map + ehdr->e_phoff + i * ehdr->e_phentsize);
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  165 |     if (phdr->p_type == PT_LOAD)
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~                      
  166 |       return phdr->p_vaddr - phdr->p_vaddr % phdr->p_align;
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  167 |   }
      |   ~                                                   
  168 |   return UINT32_MAX;
      |   ~~~~~~~~~~~~~~~~~~                                  
  169 | }
      | ~                                                     
  170 | 
      |                                                       
  171 | static int
      | ~~~~~~~~~~                                            
  172 | _py_proc__analyze_elf32(py_proc_t * self) {
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~           
  173 |   register int symbols = 0;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~                           
  174 | 
      |                                                       
  175 |   char * object_file = self->lib_path != NULL ? self->lib_path : self->bin_path;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  176 | 
      |                                                       
  177 |   Elf32_Ehdr ehdr = ehdr_v.v32;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                       
  178 | 
      |                                                       
  179 |   // Section header must be read from binary as it is not loaded into memory
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  180 |   Elf32_Xword   sht_size      = ehdr.e_shnum * ehdr.e_shentsize;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  181 |   Elf32_Off     elf_map_size  = ehdr.e_shoff + sht_size;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  182 |   int           fd            = open(object_file, O_RDONLY);
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  183 |   void        * elf_map       = mmap(NULL, elf_map_size, PROT_READ, MAP_SHARED, fd, 0);
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  184 |   int           map_flag      = 0;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                    
  185 |   Elf32_Shdr  * p_shdr;
      |   ~~~~~~~~~~~~~~~~~~~~~                               
  186 | 
      |                                                       
  187 |   Elf32_Shdr  * p_shstrtab   = elf_map + ELF_SH_OFF(ehdr, ehdr.e_shstrndx);
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  188 |   char        * sh_name_base = elf_map + p_shstrtab->sh_offset;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  189 |   Elf32_Shdr  * p_dynsym     = NULL;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                  
  190 |   Elf32_Addr    base         = _get_base_32(&ehdr, elf_map);
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  191 | 
      |                                                       
  192 |   if (base != UINT32_MAX) {
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~                           
  193 |     log_d("Base @ %p", base);
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~                         
  194 | 
      |                                                       
  195 |     for (Elf32_Off sh_off = ehdr.e_shoff; \
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~           
  196 |       map_flag != DYNSYM_MAP && sh_off < elf_map_size; \
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  197 |       sh_off += ehdr.e_shentsize \
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~                    
  198 |     ) {
      |     ~~~                                               
  199 |       p_shdr = (Elf32_Shdr *) (elf_map + sh_off);
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     
  200 | 
      |                                                       
  201 |       if (
      |       ~~~~                                            
  202 |         !(map_flag & DYNSYM_MAP) &&
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~                   
  203 |         p_shdr->sh_type == SHT_DYNSYM && \
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            
  204 |         strcmp(sh_name_base + p_shdr->sh_name, ".dynsym") == 0
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  205 |       ) {
      |       ~~~                                             
  206 |         p_dynsym = p_shdr;
      |         ~~~~~~~~~~~~~~~~~~                            
  207 |         map_flag |= DYNSYM_MAP;
      |         ~~~~~~~~~~~~~~~~~~~~~~~                       
  208 |       }
      |       ~                                               
  209 |       // NOTE: This might be required if the Python version is must be retrieved
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  210 |       //       from the RO data section
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~               
  211 |       // else if (
      |       ~~~~~~~~~~~~                                    
  212 |       //   p_shdr->sh_type == SHT_PROGBITS &&
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~         
  213 |       //   strcmp(sh_name_base + p_shdr->sh_name, ".rodata") == 0
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  214 |       // ) {
      |       ~~~~~~                                          
  215 |       //   self->map.rodata.base = (void *) p_shdr->sh_offset;
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  216 |       //   self->map.rodata.size = p_shdr->sh_size;
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  217 |       //   map_flag |= RODATA_MAP;
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~                    
  218 |       // }
      |       ~~~~                                            
  219 |     }
      |     ~                                                 
  220 | 
      |                                                       
  221 |     if (p_dynsym != NULL) {
      |     ~~~~~~~~~~~~~~~~~~~~~~~                           
  222 |       if (p_dynsym->sh_offset != 0) {
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                 
  223 |         Elf32_Shdr * p_strtabsh = (Elf32_Shdr *) (elf_map + ELF_SH_OFF(ehdr, p_dynsym->sh_link));
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  224 | 
      |                                                       
  225 |         // Search for dynamic symbols
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                 
  226 |         for (Elf32_Off tab_off = p_dynsym->sh_offset; \
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  227 |           tab_off < p_dynsym->sh_offset + p_dynsym->sh_size; \
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  228 |           tab_off += p_dynsym->sh_entsize
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~             
  229 |         ) {
      |         ~~~                                           
  230 |           Elf32_Sym * sym      = (Elf32_Sym *) (elf_map + tab_off);
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  231 |           char      * sym_name = (char *) (elf_map + p_strtabsh->sh_offset + sym->st_name);
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  232 |           void      * value    = self->map.elf.base + (sym->st_value - base);
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  233 |           if ((symbols += _py_proc__check_sym(self, sym_name, value)) >= SYMBOLS)
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  234 |             break;
      |             ~~~~~~                                    
  235 |         }
      |         ~                                             
  236 |       }
      |       ~                                               
  237 |     }
      |     ~                                                 
  238 |   }
      |   ~                                                   
  239 | 
      |                                                       
  240 |   munmap(elf_map, elf_map_size);
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                      
  241 |   close(fd);
      |   ~~~~~~~~~~                                          
  242 | 
      |                                                       
  243 |   return !symbols;
      |   ~~~~~~~~~~~~~~~~                                    
  244 | }
      | ~                                                     
  245 | 
      |                                                       
  246 | 
      |                                                       
  247 | // ----------------------------------------------------------------------------
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  248 | static int
      | ~~~~~~~~~~                                            
  249 | _py_proc__analyze_elf(py_proc_t * self) {
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~             
  250 |   Elf64_Ehdr ehdr = ehdr_v.v64;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                       
  251 | 
      |                                                       
  252 |   if (
      |   ~~~~                                                
  253 |     _py_proc__get_elf_type(self, 0, ehdr_v) ||
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        
  254 |     ehdr.e_shoff == 0 ||
      |     ~~~~~~~~~~~~~~~~~~~~                              
  255 |     ehdr.e_shnum < 2 ||
      |     ~~~~~~~~~~~~~~~~~~~                               
  256 |     memcmp(ehdr.e_ident, ELFMAG, SELFMAG)
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~             
  257 |   ) return 1;
      |   ~~~~~~~~~~~                                         
  258 | 
      |                                                       
  259 |   // Dispatch
      |   ~~~~~~~~~~~                                         
  260 |   switch (ehdr.e_ident[EI_CLASS]) {
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                   
  261 |   case ELFCLASS32:
      |   ~~~~~~~~~~~~~~~~                                    
  262 |     return _py_proc__analyze_elf32(self);
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~             
  263 | 
      |                                                       
  264 |   case ELFCLASS64:
      |   ~~~~~~~~~~~~~~~~                                    
  265 |     return _py_proc__analyze_elf64(self);
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~             
  266 | 
      |                                                       
  267 |   default:
      |   ~~~~~~~~                                            
  268 |     return 1;
      |     ~~~~~~~~~                                         
  269 |   }
      |   ~                                                   
  270 | }
      | ~                                                     
  271 | 
      |                                                       
  272 | 
      |                                                       
  273 | // ----------------------------------------------------------------------------
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  274 | static int
      | ~~~~~~~~~~                                            
  275 | _py_proc__parse_maps_file(py_proc_t * self) {
      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~         
  276 |   char      file_name[32];
      |   ~~~~~~~~~~~~~~~~~~~~~~~~                            
  277 |   FILE    * fp        = NULL;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~                         
  278 |   char    * line      = NULL;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~                         
  279 |   size_t    len       = 0;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~                            
  280 |   int       maps_flag = 0;
      |   ~~~~~~~~~~~~~~~~~~~~~~~~                            
  281 | 
      |                                                       
  282 |   sprintf(file_name, "/proc/%d/maps", self->pid);
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     
  283 |   fp = fopen(file_name, "r");
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~                         
  284 |   if (fp == NULL) {
      |   ~~~~~~~~~~~~~~~~~                                   
  285 |     switch (errno) {
      |     ~~~~~~~~~~~~~~~~                                  
  286 |     case EACCES:  // Needs elevated privileges
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        
  287 |       error = EPROCPERM;
      |       ~~~~~~~~~~~~~~~~~~                              
  288 |       break;
      |       ~~~~~~                                          
  289 |     case ENOENT:  // Invalid pid
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~                      
  290 |       error = EPROCNPID;
      |       ~~~~~~~~~~~~~~~~~~                              
  291 |       break;
      |       ~~~~~~                                          
  292 |     default:
      |     ~~~~~~~~                                          
  293 |       error = EPROCVM;
      |       ~~~~~~~~~~~~~~~~                                
  294 |     }
      |     ~                                                 
  295 |   }
      |   ~                                                   
  296 | 
      |                                                       
  297 |   else {
      |   ~~~~~~                                              
  298 |     ssize_t a, b;  // VM map bounds
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                   
  299 |     int path_len;
      |     ~~~~~~~~~~~~~                                     
  300 |     char * needle;
      |     ~~~~~~~~~~~~~~                                    
  301 |     register int line_count = 0;  // Used to determine if we need to look for the python or libpython binary.
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  302 | 
      |                                                       
  303 |     self->min_raddr = (void *) -1;
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                    
  304 |     self->max_raddr = NULL;
      |     ~~~~~~~~~~~~~~~~~~~~~~~                           
  305 | 
      |                                                       
  306 |     while (getline(&line, &len, fp) != -1) {
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~          
  307 |       ++line_count;
      |       ~~~~~~~~~~~~~                                   
  308 |       // Parse heap bounds
      |       ~~~~~~~~~~~~~~~~~~~~                            
  309 |       get_bounds(line, a, b);
      |       ~~~~~~~~~~~~~~~~~~~~~                           
linux/py_proc.h:309:7: note: in expansion of macro 'get_bounds'
  309 |       get_bounds(line, a, b);
      |       ^~~~~~~~~~
linux/py_proc.h:56:61: note: format string is defined here
   56 | #define get_bounds(line, a, b)         (sscanf(line, "%lx-%lx", &a, &b))
      |                                                           ~~^
      |                                                             |
      |                                                             long unsigned int *
      |                                                           %x
linux/py_proc.h: In function '_py_proc__get_resident_memory':
linux/py_proc.h:395:24: warning: format '%ld' expects argument of type 'long int *', but argument 3 has type 'ssize_t *' {aka 'int *'} [-Wformat=]
  395 |   if (fscanf(statm, "%ld %ld", &size, &resident) != 2)
      |                      ~~^       ~~~~~
      |                        |       |
      |                        |       ssize_t * {aka int *}
      |                        long int *
      |                      %d
linux/py_proc.h:395:28: warning: format '%ld' expects argument of type 'long int *', but argument 4 has type 'ssize_t *' {aka 'int *'} [-Wformat=]
  395 |   if (fscanf(statm, "%ld %ld", &size, &resident) != 2)
      |                          ~~^          ~~~~~~~~~
      |                            |          |
      |                            long int * ssize_t * {aka int *}
      |                          %d
py_proc.c: In function 'py_proc__start':
py_proc.c:691:7: warning: ignoring return value of 'freopen', declared with attribute warn_unused_result [-Wunused-result]
  691 |       freopen(NULL_DEVICE, "w", stdout);
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
gcc -I../src -Wall -O3 -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security  -Wl,-z,relro -o austin argparse.o austin.o dict.o error.o logging.o mem.o version.o stats.o py_code.o py_frame.o py_proc.o py_thread.o  
make[3]: Leaving directory '/<<PKGBUILDDIR>>/src'
make[3]: Entering directory '/<<PKGBUILDDIR>>'
make[3]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
   dh_auto_test -a -O--buildsystem=autoconf
	make -j4 check VERBOSE=1
make[1]: Entering directory '/<<PKGBUILDDIR>>'
Making check in src
make[2]: Entering directory '/<<PKGBUILDDIR>>/src'
make[2]: Nothing to be done for 'check'.
make[2]: Leaving directory '/<<PKGBUILDDIR>>/src'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
make  check-TESTS
make[3]: Entering directory '/<<PKGBUILDDIR>>'
make[4]: Entering directory '/<<PKGBUILDDIR>>'
FAIL: test/test.bats
====================================
   austin 0.7.0: ./test-suite.log
====================================

# TOTAL: 1
# PASS:  0
# SKIP:  0
# XFAIL: 0
# FAIL:  1
# XPASS: 0
# ERROR: 0

.. contents:: :depth: 2

FAIL: test/test
===============

1..3
ok 1 Test Austin: fork
ok 2 # skip (requires root) Test Austin: attach
not ok 3 Test Austin: valgrind
# (from function `test_case' in file test/test.bats, line 6,
#  in test file test/test.bats, line 21)
#   `test_case valgrind' failed
# 1..10
# ok 1 # skip (Python 2.3 not found.) Test Austin with Python 2.3
# ok 2 # skip (Python 2.4 not found.) Test Austin with Python 2.4
# ok 3 # skip (Python 2.5 not found.) Test Austin with Python 2.5
# ok 4 # skip (Python 2.6 not found.) Test Austin with Python 2.6
# ok 5 # skip (Python 2.7 not found.) Test Austin with Python 2.7
# ok 6 # skip (Python 3.3 not found.) Test Austin with Python 3.3
# ok 7 # skip (Python 3.4 not found.) Test Austin with Python 3.4
# ok 8 # skip (Python 3.5 not found.) Test Austin with Python 3.5
# ok 9 # skip (Python 3.6 not found.) Test Austin with Python 3.6
# not ok 10 Test Austin with Python 3.7
# # (from function `invoke_austin' in file test/test_valgrind.bats, line 33,
# #  in test file test/test_valgrind.bats, line 78)
# #   `invoke_austin "3.7"' failed
# # Python 3.7.5
# # > Run 1 of 3
# #   :: Valgrind test
# #        Exit code: 1
# #        Valgrind report: <
# # valgrind: Bad option: --show-leak-kinds=all
# # valgrind: Use --help for more information or consult the user manual.
# # > Run 2 of 3
# #   :: Valgrind test
# #        Exit code: 1
# #        Valgrind report: <
# # valgrind: Bad option: --show-leak-kinds=all
# # valgrind: Use --help for more information or consult the user manual.
# # > Run 3 of 3
# #   :: Valgrind test
# #        Exit code: 1
# #        Valgrind report: <
# # valgrind: Bad option: --show-leak-kinds=all
# # valgrind: Use --help for more information or consult the user manual.
FAIL test/test.bats (exit status: 1)

============================================================================
Testsuite summary for austin 0.7.0
============================================================================
# TOTAL: 1
# PASS:  0
# SKIP:  0
# XFAIL: 0
# FAIL:  1
# XPASS: 0
# ERROR: 0
============================================================================
See ./test-suite.log
Please report to https://github.com/p403n1x87/austin/issues
============================================================================
make[4]: *** [Makefile:674: test-suite.log] Error 1
make[4]: Leaving directory '/<<PKGBUILDDIR>>'
make[3]: *** [Makefile:782: check-TESTS] Error 2
make[3]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: *** [Makefile:1006: check-am] Error 2
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[1]: *** [Makefile:559: check-recursive] Error 1
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
dh_auto_test: make -j4 check VERBOSE=1 returned exit code 2
make: *** [debian/rules:4: build-arch] Error 255
dpkg-buildpackage: error: debian/rules build-arch subprocess returned exit status 2
--------------------------------------------------------------------------------
Build finished at 2019-11-27T09:43:14Z

Finished
--------


+------------------------------------------------------------------------------+
| Cleanup                                                                      |
+------------------------------------------------------------------------------+

Purging /<<BUILDDIR>>
Not cleaning session: cloned chroot in use
E: Build failure (dpkg-buildpackage died)

+------------------------------------------------------------------------------+
| Summary                                                                      |
+------------------------------------------------------------------------------+

Build Architecture: armhf
Build-Space: 0
Build-Time: 92
Distribution: bullseye-staging
Fail-Stage: build
Host Architecture: armhf
Install-Time: 551
Job: austin_0.7.0-1
Machine Architecture: armhf
Package: austin
Package-Time: 694
Source-Version: 0.7.0-1
Space: 0
Status: failed
Version: 0.7.0-1
--------------------------------------------------------------------------------
Finished at 2019-11-27T09:43:14Z
Build needed 00:00:00, 0k disc space