I: pbuilder: network access will be disabled during build
I: Current time: Mon May 20 01:40:26 -12 2024
I: pbuilder-time-stamp: 1716212426
I: Building the build Environment
I: extracting base tarball [/var/cache/pbuilder/bookworm-reproducible-base.tgz]
I: copying local configuration
W: --override-config is not set; not updating apt.conf Read the manpage for details.
I: mounting /proc filesystem
I: mounting /sys filesystem
I: creating /{dev,run}/shm
I: mounting /dev/pts filesystem
I: redirecting /dev/ptmx to /dev/pts/ptmx
I: policy-rc.d already exists
I: using eatmydata during job
I: Copying source file
I: copying [seabios_1.16.2-1.dsc]
I: copying [./seabios_1.16.2.orig.tar.gz]
I: copying [./seabios_1.16.2-1.debian.tar.xz]
I: Extracting source
gpgv: Signature made Tue Apr 11 01:12:59 2023 -12
gpgv:                using RSA key 7B73BAD68BE7A2C289314B22701B4F6B1A693E59
gpgv:                issuer "mjt@tls.msk.ru"
gpgv: Can't check signature: No public key
dpkg-source: warning: cannot verify inline signature for ./seabios_1.16.2-1.dsc: no acceptable signature found
dpkg-source: info: extracting seabios in seabios-1.16.2
dpkg-source: info: unpacking seabios_1.16.2.orig.tar.gz
dpkg-source: info: unpacking seabios_1.16.2-1.debian.tar.xz
dpkg-source: info: using patch list from debian/patches/series
dpkg-source: info: applying nogitversion.patch
I: Not using root during the build.
I: Installing the build-deps
I: user script /srv/workspace/pbuilder/123351/tmp/hooks/D02_print_environment starting
I: set
  BUILDDIR='/build'
  BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other'
  BUILDUSERNAME='pbuilder1'
  BUILD_ARCH='i386'
  DEBIAN_FRONTEND='noninteractive'
  DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=16'
  DISTRIBUTION='bookworm'
  HOME='/root'
  HOST_ARCH='i386'
  IFS=' 	
  '
  INVOCATION_ID='b874a7423ca3417297870f20b9428b23'
  LANG='C'
  LANGUAGE='en_US:en'
  LC_ALL='C'
  LD_LIBRARY_PATH='/usr/lib/libeatmydata'
  LD_PRELOAD='libeatmydata.so'
  MAIL='/var/mail/root'
  OPTIND='1'
  PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games'
  PBCURRENTCOMMANDLINEOPERATION='build'
  PBUILDER_OPERATION='build'
  PBUILDER_PKGDATADIR='/usr/share/pbuilder'
  PBUILDER_PKGLIBDIR='/usr/lib/pbuilder'
  PBUILDER_SYSCONFDIR='/etc'
  PPID='123351'
  PS1='# '
  PS2='> '
  PS4='+ '
  PWD='/'
  SHELL='/bin/bash'
  SHLVL='2'
  SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.XllJvBlA/pbuilderrc_4zYn --distribution bookworm --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/bookworm-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.XllJvBlA/b1 --logfile b1/build.log seabios_1.16.2-1.dsc'
  SUDO_GID='112'
  SUDO_UID='107'
  SUDO_USER='jenkins'
  TERM='unknown'
  TZ='/usr/share/zoneinfo/Etc/GMT+12'
  USER='root'
  _='/usr/bin/systemd-run'
  http_proxy='http://85.184.249.68:3128'
I: uname -a
  Linux ionos16-i386 5.10.0-21-amd64 #1 SMP Debian 5.10.162-1 (2023-01-21) x86_64 GNU/Linux
I: ls -l /bin
  total 6036
  -rwxr-xr-x 1 root root 1408088 Feb 12  2023 bash
  -rwxr-xr-x 3 root root   38404 Sep 18  2022 bunzip2
  -rwxr-xr-x 3 root root   38404 Sep 18  2022 bzcat
  lrwxrwxrwx 1 root root       6 Sep 18  2022 bzcmp -> bzdiff
  -rwxr-xr-x 1 root root    2225 Sep 18  2022 bzdiff
  lrwxrwxrwx 1 root root       6 Sep 18  2022 bzegrep -> bzgrep
  -rwxr-xr-x 1 root root    4893 Nov 27  2021 bzexe
  lrwxrwxrwx 1 root root       6 Sep 18  2022 bzfgrep -> bzgrep
  -rwxr-xr-x 1 root root    3775 Sep 18  2022 bzgrep
  -rwxr-xr-x 3 root root   38404 Sep 18  2022 bzip2
  -rwxr-xr-x 1 root root   17892 Sep 18  2022 bzip2recover
  lrwxrwxrwx 1 root root       6 Sep 18  2022 bzless -> bzmore
  -rwxr-xr-x 1 root root    1297 Sep 18  2022 bzmore
  -rwxr-xr-x 1 root root   42920 Sep 20  2022 cat
  -rwxr-xr-x 1 root root   79816 Sep 20  2022 chgrp
  -rwxr-xr-x 1 root root   67496 Sep 20  2022 chmod
  -rwxr-xr-x 1 root root   79816 Sep 20  2022 chown
  -rwxr-xr-x 1 root root  162024 Sep 20  2022 cp
  -rwxr-xr-x 1 root root  136916 Jan  5  2023 dash
  -rwxr-xr-x 1 root root  137160 Sep 20  2022 date
  -rwxr-xr-x 1 root root  100364 Sep 20  2022 dd
  -rwxr-xr-x 1 root root  108940 Sep 20  2022 df
  -rwxr-xr-x 1 root root  162152 Sep 20  2022 dir
  -rwxr-xr-x 1 root root   87760 Mar 22  2023 dmesg
  lrwxrwxrwx 1 root root       8 Dec 19  2022 dnsdomainname -> hostname
  lrwxrwxrwx 1 root root       8 Dec 19  2022 domainname -> hostname
  -rwxr-xr-x 1 root root   38760 Sep 20  2022 echo
  -rwxr-xr-x 1 root root      41 Jan 24  2023 egrep
  -rwxr-xr-x 1 root root   34664 Sep 20  2022 false
  -rwxr-xr-x 1 root root      41 Jan 24  2023 fgrep
  -rwxr-xr-x 1 root root   84272 Mar 22  2023 findmnt
  -rwsr-xr-x 1 root root   30240 Mar 22  2023 fusermount
  -rwxr-xr-x 1 root root  218680 Jan 24  2023 grep
  -rwxr-xr-x 2 root root    2346 Apr  9  2022 gunzip
  -rwxr-xr-x 1 root root    6447 Apr  9  2022 gzexe
  -rwxr-xr-x 1 root root  100952 Apr  9  2022 gzip
  -rwxr-xr-x 1 root root   21916 Dec 19  2022 hostname
  -rwxr-xr-x 1 root root   75756 Sep 20  2022 ln
  -rwxr-xr-x 1 root root   55600 Mar 22  2023 login
  -rwxr-xr-x 1 root root  162152 Sep 20  2022 ls
  -rwxr-xr-x 1 root root  214568 Mar 22  2023 lsblk
  -rwxr-xr-x 1 root root   96328 Sep 20  2022 mkdir
  -rwxr-xr-x 1 root root   84008 Sep 20  2022 mknod
  -rwxr-xr-x 1 root root   38792 Sep 20  2022 mktemp
  -rwxr-xr-x 1 root root   63016 Mar 22  2023 more
  -rwsr-xr-x 1 root root   58912 Mar 22  2023 mount
  -rwxr-xr-x 1 root root   13856 Mar 22  2023 mountpoint
  -rwxr-xr-x 1 root root  157932 Sep 20  2022 mv
  lrwxrwxrwx 1 root root       8 Dec 19  2022 nisdomainname -> hostname
  lrwxrwxrwx 1 root root      14 Apr  2  2023 pidof -> /sbin/killall5
  -rwxr-xr-x 1 root root   38792 Sep 20  2022 pwd
  lrwxrwxrwx 1 root root       4 Feb 12  2023 rbash -> bash
  -rwxr-xr-x 1 root root   51080 Sep 20  2022 readlink
  -rwxr-xr-x 1 root root   75720 Sep 20  2022 rm
  -rwxr-xr-x 1 root root   51080 Sep 20  2022 rmdir
  -rwxr-xr-x 1 root root   22308 Nov  2  2022 run-parts
  -rwxr-xr-x 1 root root  133224 Jan  5  2023 sed
  lrwxrwxrwx 1 root root       4 Jan  5  2023 sh -> dash
  -rwxr-xr-x 1 root root   38760 Sep 20  2022 sleep
  -rwxr-xr-x 1 root root   87976 Sep 20  2022 stty
  -rwsr-xr-x 1 root root   83492 Mar 22  2023 su
  -rwxr-xr-x 1 root root   38792 Sep 20  2022 sync
  -rwxr-xr-x 1 root root  598456 Apr  6  2023 tar
  -rwxr-xr-x 1 root root   13860 Nov  2  2022 tempfile
  -rwxr-xr-x 1 root root  120776 Sep 20  2022 touch
  -rwxr-xr-x 1 root root   34664 Sep 20  2022 true
  -rwxr-xr-x 1 root root   17892 Mar 22  2023 ulockmgr_server
  -rwsr-xr-x 1 root root   30236 Mar 22  2023 umount
  -rwxr-xr-x 1 root root   38760 Sep 20  2022 uname
  -rwxr-xr-x 2 root root    2346 Apr  9  2022 uncompress
  -rwxr-xr-x 1 root root  162152 Sep 20  2022 vdir
  -rwxr-xr-x 1 root root   71216 Mar 22  2023 wdctl
  lrwxrwxrwx 1 root root       8 Dec 19  2022 ypdomainname -> hostname
  -rwxr-xr-x 1 root root    1984 Apr  9  2022 zcat
  -rwxr-xr-x 1 root root    1678 Apr  9  2022 zcmp
  -rwxr-xr-x 1 root root    6460 Apr  9  2022 zdiff
  -rwxr-xr-x 1 root root      29 Apr  9  2022 zegrep
  -rwxr-xr-x 1 root root      29 Apr  9  2022 zfgrep
  -rwxr-xr-x 1 root root    2081 Apr  9  2022 zforce
  -rwxr-xr-x 1 root root    8103 Apr  9  2022 zgrep
  -rwxr-xr-x 1 root root    2206 Apr  9  2022 zless
  -rwxr-xr-x 1 root root    1842 Apr  9  2022 zmore
  -rwxr-xr-x 1 root root    4577 Apr  9  2022 znew
I: user script /srv/workspace/pbuilder/123351/tmp/hooks/D02_print_environment finished
 -> Attempting to satisfy build-dependencies
 -> Creating pbuilder-satisfydepends-dummy package
Package: pbuilder-satisfydepends-dummy
Version: 0.invalid.0
Architecture: i386
Maintainer: Debian Pbuilder Team <pbuilder-maint@lists.alioth.debian.org>
Description: Dummy package to satisfy dependencies with aptitude - created by pbuilder
 This package was created automatically by pbuilder to satisfy the
 build-dependencies of the package being currently built.
Depends: debhelper-compat (= 13), python3:any, acpica-tools | iasl
dpkg-deb: building package 'pbuilder-satisfydepends-dummy' in '/tmp/satisfydepends-aptitude/pbuilder-satisfydepends-dummy.deb'.
Selecting previously unselected package pbuilder-satisfydepends-dummy.
(Reading database ... 19604 files and directories currently installed.)
Preparing to unpack .../pbuilder-satisfydepends-dummy.deb ...
Unpacking pbuilder-satisfydepends-dummy (0.invalid.0) ...
dpkg: pbuilder-satisfydepends-dummy: dependency problems, but configuring anyway as you requested:
 pbuilder-satisfydepends-dummy depends on debhelper-compat (= 13); however:
  Package debhelper-compat is not installed.
 pbuilder-satisfydepends-dummy depends on python3:any.
 pbuilder-satisfydepends-dummy depends on acpica-tools | iasl; however:
  Package acpica-tools is not installed.
  Package iasl is not installed.

Setting up pbuilder-satisfydepends-dummy (0.invalid.0) ...
Reading package lists...
Building dependency tree...
Reading state information...
Initializing package states...
Writing extended state information...
Building tag database...
pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0)
pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0)
The following NEW packages will be installed:
  acpica-tools{a} autoconf{a} automake{a} autopoint{a} autotools-dev{a} bsdextrautils{a} debhelper{a} dh-autoreconf{a} dh-strip-nondeterminism{a} dwz{a} file{a} gettext{a} gettext-base{a} groff-base{a} intltool-debian{a} libarchive-zip-perl{a} libdebhelper-perl{a} libelf1{a} libexpat1{a} libfile-stripnondeterminism-perl{a} libicu72{a} libmagic-mgc{a} libmagic1{a} libpipeline1{a} libpython3-stdlib{a} libpython3.11-minimal{a} libpython3.11-stdlib{a} libreadline8{a} libsub-override-perl{a} libtool{a} libuchardet0{a} libxml2{a} m4{a} man-db{a} media-types{a} po-debconf{a} python3{a} python3-minimal{a} python3.11{a} python3.11-minimal{a} readline-common{a} sensible-utils{a} 
The following packages are RECOMMENDED but will NOT be installed:
  ca-certificates curl libarchive-cpio-perl libltdl-dev libmail-sendmail-perl lynx wget 
0 packages upgraded, 42 newly installed, 0 to remove and 0 not upgraded.
Need to get 25.6 MB of archives. After unpacking 97.7 MB will be used.
Writing extended state information...
Get: 1 http://deb.debian.org/debian bookworm/main i386 libpython3.11-minimal i386 3.11.2-6 [813 kB]
Get: 2 http://deb.debian.org/debian bookworm/main i386 libexpat1 i386 2.5.0-1 [103 kB]
Get: 3 http://deb.debian.org/debian bookworm/main i386 python3.11-minimal i386 3.11.2-6 [2130 kB]
Get: 4 http://deb.debian.org/debian bookworm/main i386 python3-minimal i386 3.11.2-1+b1 [26.3 kB]
Get: 5 http://deb.debian.org/debian bookworm/main i386 media-types all 10.0.0 [26.1 kB]
Get: 6 http://deb.debian.org/debian bookworm/main i386 readline-common all 8.2-1.3 [69.0 kB]
Get: 7 http://deb.debian.org/debian bookworm/main i386 libreadline8 i386 8.2-1.3 [171 kB]
Get: 8 http://deb.debian.org/debian bookworm/main i386 libpython3.11-stdlib i386 3.11.2-6 [1799 kB]
Get: 9 http://deb.debian.org/debian bookworm/main i386 python3.11 i386 3.11.2-6 [572 kB]
Get: 10 http://deb.debian.org/debian bookworm/main i386 libpython3-stdlib i386 3.11.2-1+b1 [9308 B]
Get: 11 http://deb.debian.org/debian bookworm/main i386 python3 i386 3.11.2-1+b1 [26.3 kB]
Get: 12 http://deb.debian.org/debian bookworm/main i386 sensible-utils all 0.0.17+nmu1 [19.0 kB]
Get: 13 http://deb.debian.org/debian bookworm/main i386 libmagic-mgc i386 1:5.44-3 [305 kB]
Get: 14 http://deb.debian.org/debian bookworm/main i386 libmagic1 i386 1:5.44-3 [114 kB]
Get: 15 http://deb.debian.org/debian bookworm/main i386 file i386 1:5.44-3 [42.5 kB]
Get: 16 http://deb.debian.org/debian bookworm/main i386 gettext-base i386 0.21-12 [162 kB]
Get: 17 http://deb.debian.org/debian bookworm/main i386 libuchardet0 i386 0.0.7-1 [67.9 kB]
Get: 18 http://deb.debian.org/debian bookworm/main i386 groff-base i386 1.22.4-10 [932 kB]
Get: 19 http://deb.debian.org/debian bookworm/main i386 bsdextrautils i386 2.38.1-5+b1 [90.3 kB]
Get: 20 http://deb.debian.org/debian bookworm/main i386 libpipeline1 i386 1.5.7-1 [40.0 kB]
Get: 21 http://deb.debian.org/debian bookworm/main i386 man-db i386 2.11.2-2 [1397 kB]
Get: 22 http://deb.debian.org/debian bookworm/main i386 acpica-tools i386 20200925-8 [848 kB]
Get: 23 http://deb.debian.org/debian bookworm/main i386 m4 i386 1.4.19-3 [294 kB]
Get: 24 http://deb.debian.org/debian bookworm/main i386 autoconf all 2.71-3 [332 kB]
Get: 25 http://deb.debian.org/debian bookworm/main i386 autotools-dev all 20220109.1 [51.6 kB]
Get: 26 http://deb.debian.org/debian bookworm/main i386 automake all 1:1.16.5-1.3 [823 kB]
Get: 27 http://deb.debian.org/debian bookworm/main i386 autopoint all 0.21-12 [495 kB]
Get: 28 http://deb.debian.org/debian bookworm/main i386 libdebhelper-perl all 13.11.4 [81.2 kB]
Get: 29 http://deb.debian.org/debian bookworm/main i386 libtool all 2.4.7-5 [517 kB]
Get: 30 http://deb.debian.org/debian bookworm/main i386 dh-autoreconf all 20 [17.1 kB]
Get: 31 http://deb.debian.org/debian bookworm/main i386 libarchive-zip-perl all 1.68-1 [104 kB]
Get: 32 http://deb.debian.org/debian bookworm/main i386 libsub-override-perl all 0.09-4 [9304 B]
Get: 33 http://deb.debian.org/debian bookworm/main i386 libfile-stripnondeterminism-perl all 1.13.1-1 [19.4 kB]
Get: 34 http://deb.debian.org/debian bookworm/main i386 dh-strip-nondeterminism all 1.13.1-1 [8620 B]
Get: 35 http://deb.debian.org/debian bookworm/main i386 libelf1 i386 0.188-2.1 [179 kB]
Get: 36 http://deb.debian.org/debian bookworm/main i386 dwz i386 0.15-1 [118 kB]
Get: 37 http://deb.debian.org/debian bookworm/main i386 libicu72 i386 72.1-3 [9541 kB]
Get: 38 http://deb.debian.org/debian bookworm/main i386 libxml2 i386 2.9.14+dfsg-1.1+b3 [720 kB]
Get: 39 http://deb.debian.org/debian bookworm/main i386 gettext i386 0.21-12 [1311 kB]
Get: 40 http://deb.debian.org/debian bookworm/main i386 intltool-debian all 0.35.0+20060710.6 [22.9 kB]
Get: 41 http://deb.debian.org/debian bookworm/main i386 po-debconf all 1.0.21+nmu1 [248 kB]
Get: 42 http://deb.debian.org/debian bookworm/main i386 debhelper all 13.11.4 [942 kB]
Fetched 25.6 MB in 0s (90.0 MB/s)
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package libpython3.11-minimal:i386.
(Reading database ... 
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 19604 files and directories currently installed.)
Preparing to unpack .../libpython3.11-minimal_3.11.2-6_i386.deb ...
Unpacking libpython3.11-minimal:i386 (3.11.2-6) ...
Selecting previously unselected package libexpat1:i386.
Preparing to unpack .../libexpat1_2.5.0-1_i386.deb ...
Unpacking libexpat1:i386 (2.5.0-1) ...
Selecting previously unselected package python3.11-minimal.
Preparing to unpack .../python3.11-minimal_3.11.2-6_i386.deb ...
Unpacking python3.11-minimal (3.11.2-6) ...
Setting up libpython3.11-minimal:i386 (3.11.2-6) ...
Setting up libexpat1:i386 (2.5.0-1) ...
Setting up python3.11-minimal (3.11.2-6) ...
Selecting previously unselected package python3-minimal.
(Reading database ... 
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 19920 files and directories currently installed.)
Preparing to unpack .../0-python3-minimal_3.11.2-1+b1_i386.deb ...
Unpacking python3-minimal (3.11.2-1+b1) ...
Selecting previously unselected package media-types.
Preparing to unpack .../1-media-types_10.0.0_all.deb ...
Unpacking media-types (10.0.0) ...
Selecting previously unselected package readline-common.
Preparing to unpack .../2-readline-common_8.2-1.3_all.deb ...
Unpacking readline-common (8.2-1.3) ...
Selecting previously unselected package libreadline8:i386.
Preparing to unpack .../3-libreadline8_8.2-1.3_i386.deb ...
Unpacking libreadline8:i386 (8.2-1.3) ...
Selecting previously unselected package libpython3.11-stdlib:i386.
Preparing to unpack .../4-libpython3.11-stdlib_3.11.2-6_i386.deb ...
Unpacking libpython3.11-stdlib:i386 (3.11.2-6) ...
Selecting previously unselected package python3.11.
Preparing to unpack .../5-python3.11_3.11.2-6_i386.deb ...
Unpacking python3.11 (3.11.2-6) ...
Selecting previously unselected package libpython3-stdlib:i386.
Preparing to unpack .../6-libpython3-stdlib_3.11.2-1+b1_i386.deb ...
Unpacking libpython3-stdlib:i386 (3.11.2-1+b1) ...
Setting up python3-minimal (3.11.2-1+b1) ...
Selecting previously unselected package python3.
(Reading database ... 
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 20354 files and directories currently installed.)
Preparing to unpack .../00-python3_3.11.2-1+b1_i386.deb ...
Unpacking python3 (3.11.2-1+b1) ...
Selecting previously unselected package sensible-utils.
Preparing to unpack .../01-sensible-utils_0.0.17+nmu1_all.deb ...
Unpacking sensible-utils (0.0.17+nmu1) ...
Selecting previously unselected package libmagic-mgc.
Preparing to unpack .../02-libmagic-mgc_1%3a5.44-3_i386.deb ...
Unpacking libmagic-mgc (1:5.44-3) ...
Selecting previously unselected package libmagic1:i386.
Preparing to unpack .../03-libmagic1_1%3a5.44-3_i386.deb ...
Unpacking libmagic1:i386 (1:5.44-3) ...
Selecting previously unselected package file.
Preparing to unpack .../04-file_1%3a5.44-3_i386.deb ...
Unpacking file (1:5.44-3) ...
Selecting previously unselected package gettext-base.
Preparing to unpack .../05-gettext-base_0.21-12_i386.deb ...
Unpacking gettext-base (0.21-12) ...
Selecting previously unselected package libuchardet0:i386.
Preparing to unpack .../06-libuchardet0_0.0.7-1_i386.deb ...
Unpacking libuchardet0:i386 (0.0.7-1) ...
Selecting previously unselected package groff-base.
Preparing to unpack .../07-groff-base_1.22.4-10_i386.deb ...
Unpacking groff-base (1.22.4-10) ...
Selecting previously unselected package bsdextrautils.
Preparing to unpack .../08-bsdextrautils_2.38.1-5+b1_i386.deb ...
Unpacking bsdextrautils (2.38.1-5+b1) ...
Selecting previously unselected package libpipeline1:i386.
Preparing to unpack .../09-libpipeline1_1.5.7-1_i386.deb ...
Unpacking libpipeline1:i386 (1.5.7-1) ...
Selecting previously unselected package man-db.
Preparing to unpack .../10-man-db_2.11.2-2_i386.deb ...
Unpacking man-db (2.11.2-2) ...
Selecting previously unselected package acpica-tools.
Preparing to unpack .../11-acpica-tools_20200925-8_i386.deb ...
Unpacking acpica-tools (20200925-8) ...
Selecting previously unselected package m4.
Preparing to unpack .../12-m4_1.4.19-3_i386.deb ...
Unpacking m4 (1.4.19-3) ...
Selecting previously unselected package autoconf.
Preparing to unpack .../13-autoconf_2.71-3_all.deb ...
Unpacking autoconf (2.71-3) ...
Selecting previously unselected package autotools-dev.
Preparing to unpack .../14-autotools-dev_20220109.1_all.deb ...
Unpacking autotools-dev (20220109.1) ...
Selecting previously unselected package automake.
Preparing to unpack .../15-automake_1%3a1.16.5-1.3_all.deb ...
Unpacking automake (1:1.16.5-1.3) ...
Selecting previously unselected package autopoint.
Preparing to unpack .../16-autopoint_0.21-12_all.deb ...
Unpacking autopoint (0.21-12) ...
Selecting previously unselected package libdebhelper-perl.
Preparing to unpack .../17-libdebhelper-perl_13.11.4_all.deb ...
Unpacking libdebhelper-perl (13.11.4) ...
Selecting previously unselected package libtool.
Preparing to unpack .../18-libtool_2.4.7-5_all.deb ...
Unpacking libtool (2.4.7-5) ...
Selecting previously unselected package dh-autoreconf.
Preparing to unpack .../19-dh-autoreconf_20_all.deb ...
Unpacking dh-autoreconf (20) ...
Selecting previously unselected package libarchive-zip-perl.
Preparing to unpack .../20-libarchive-zip-perl_1.68-1_all.deb ...
Unpacking libarchive-zip-perl (1.68-1) ...
Selecting previously unselected package libsub-override-perl.
Preparing to unpack .../21-libsub-override-perl_0.09-4_all.deb ...
Unpacking libsub-override-perl (0.09-4) ...
Selecting previously unselected package libfile-stripnondeterminism-perl.
Preparing to unpack .../22-libfile-stripnondeterminism-perl_1.13.1-1_all.deb ...
Unpacking libfile-stripnondeterminism-perl (1.13.1-1) ...
Selecting previously unselected package dh-strip-nondeterminism.
Preparing to unpack .../23-dh-strip-nondeterminism_1.13.1-1_all.deb ...
Unpacking dh-strip-nondeterminism (1.13.1-1) ...
Selecting previously unselected package libelf1:i386.
Preparing to unpack .../24-libelf1_0.188-2.1_i386.deb ...
Unpacking libelf1:i386 (0.188-2.1) ...
Selecting previously unselected package dwz.
Preparing to unpack .../25-dwz_0.15-1_i386.deb ...
Unpacking dwz (0.15-1) ...
Selecting previously unselected package libicu72:i386.
Preparing to unpack .../26-libicu72_72.1-3_i386.deb ...
Unpacking libicu72:i386 (72.1-3) ...
Selecting previously unselected package libxml2:i386.
Preparing to unpack .../27-libxml2_2.9.14+dfsg-1.1+b3_i386.deb ...
Unpacking libxml2:i386 (2.9.14+dfsg-1.1+b3) ...
Selecting previously unselected package gettext.
Preparing to unpack .../28-gettext_0.21-12_i386.deb ...
Unpacking gettext (0.21-12) ...
Selecting previously unselected package intltool-debian.
Preparing to unpack .../29-intltool-debian_0.35.0+20060710.6_all.deb ...
Unpacking intltool-debian (0.35.0+20060710.6) ...
Selecting previously unselected package po-debconf.
Preparing to unpack .../30-po-debconf_1.0.21+nmu1_all.deb ...
Unpacking po-debconf (1.0.21+nmu1) ...
Selecting previously unselected package debhelper.
Preparing to unpack .../31-debhelper_13.11.4_all.deb ...
Unpacking debhelper (13.11.4) ...
Setting up media-types (10.0.0) ...
Setting up libpipeline1:i386 (1.5.7-1) ...
Setting up libicu72:i386 (72.1-3) ...
Setting up bsdextrautils (2.38.1-5+b1) ...
Setting up libmagic-mgc (1:5.44-3) ...
Setting up acpica-tools (20200925-8) ...
Setting up libarchive-zip-perl (1.68-1) ...
Setting up libdebhelper-perl (13.11.4) ...
Setting up libmagic1:i386 (1:5.44-3) ...
Setting up gettext-base (0.21-12) ...
Setting up m4 (1.4.19-3) ...
Setting up file (1:5.44-3) ...
Setting up autotools-dev (20220109.1) ...
Setting up autopoint (0.21-12) ...
Setting up autoconf (2.71-3) ...
Setting up sensible-utils (0.0.17+nmu1) ...
Setting up libuchardet0:i386 (0.0.7-1) ...
Setting up libsub-override-perl (0.09-4) ...
Setting up libelf1:i386 (0.188-2.1) ...
Setting up readline-common (8.2-1.3) ...
Setting up libxml2:i386 (2.9.14+dfsg-1.1+b3) ...
Setting up automake (1:1.16.5-1.3) ...
update-alternatives: using /usr/bin/automake-1.16 to provide /usr/bin/automake (automake) in auto mode
Setting up libfile-stripnondeterminism-perl (1.13.1-1) ...
Setting up gettext (0.21-12) ...
Setting up libtool (2.4.7-5) ...
Setting up libreadline8:i386 (8.2-1.3) ...
Setting up intltool-debian (0.35.0+20060710.6) ...
Setting up dh-autoreconf (20) ...
Setting up dh-strip-nondeterminism (1.13.1-1) ...
Setting up dwz (0.15-1) ...
Setting up groff-base (1.22.4-10) ...
Setting up po-debconf (1.0.21+nmu1) ...
Setting up libpython3.11-stdlib:i386 (3.11.2-6) ...
Setting up man-db (2.11.2-2) ...
Not building database; man-db/auto-update is not 'true'.
Setting up libpython3-stdlib:i386 (3.11.2-1+b1) ...
Setting up python3.11 (3.11.2-6) ...
Setting up debhelper (13.11.4) ...
Setting up python3 (3.11.2-1+b1) ...
Processing triggers for libc-bin (2.36-9) ...
Reading package lists...
Building dependency tree...
Reading state information...
Reading extended state information...
Initializing package states...
Writing extended state information...
Building tag database...
 -> Finished parsing the build-deps
I: Building the package
I: Running cd /build/seabios-1.16.2/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S  > ../seabios_1.16.2-1_source.changes
dpkg-buildpackage: info: source package seabios
dpkg-buildpackage: info: source version 1.16.2-1
dpkg-buildpackage: info: source distribution unstable
dpkg-buildpackage: info: source changed by Michael Tokarev <mjt@tls.msk.ru>
 dpkg-source --before-build .
dpkg-buildpackage: info: host architecture i386
 debian/rules clean
dh_clean build/ src/fw/*.hex
 debian/rules binary
mkdir -p build
rm -f src/fw/*.hex
/usr/bin/make PYTHON="python3 -B" OUT=build/ KCONFIG_CONFIG=/build/seabios-1.16.2/build/.fakeconfig iasl
make[1]: Entering directory '/build/seabios-1.16.2'
scripts/kconfig/conf --olddefconfig /build/seabios-1.16.2/src/Kconfig
#
# configuration written to /build/seabios-1.16.2/build/.fakeconfig
#
  Compiling IASL src/fw/acpi-dsdt.hex
build/src/fw/acpi-dsdt.dsl.i     31:         Device(PCI0) {
Warning  3073 -                        Multiple types ^  (Device object requires either a _HID or _ADR, but not both)

build/src/fw/acpi-dsdt.dsl.i    361:             Name(PRR0, ResourceTemplate() {
Remark   2173 -                                         ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.IQCR)

build/src/fw/acpi-dsdt.dsl.i    405:     Method(CPEJ, 2, NotSerialized) {
Remark   2146 -     Method Argument is never used ^  (Arg0)

build/src/fw/acpi-dsdt.dsl.i    405:     Method(CPEJ, 2, NotSerialized) {
Remark   2146 -     Method Argument is never used ^  (Arg1)

ASL Input:     build/src/fw/acpi-dsdt.dsl.i -   19153 bytes    315 keywords    475 source lines
AML Output:    build/src/fw/acpi-dsdt.aml -    4585 bytes    156 opcodes     159 named objects
Listing File:  build/src/fw/acpi-dsdt.lst -   67556 bytes
Hex Dump:      build/src/fw/acpi-dsdt.hex -   43474 bytes

Compilation successful. 0 Errors, 1 Warnings, 3 Remarks, 246 Optimizations
  Compiling IASL src/fw/ssdt-proc.hex
build/src/fw/ssdt-proc.dsl.i     15:     Processor(CPAA, 0xAA, 0x0000b010, 0x06) {
Warning  3168 -                                      ^ Legacy Processor() keyword detected. Use Device() keyword instead.

ASL Input:     build/src/fw/ssdt-proc.dsl.i -     762 bytes      8 keywords     36 source lines
AML Output:    build/src/fw/ssdt-proc.aml -     162 bytes      2 opcodes       6 named objects
Listing File:  build/src/fw/ssdt-proc.lst -    3383 bytes
Hex Dump:      build/src/fw/ssdt-proc.hex -    1997 bytes

Compilation successful. 0 Errors, 1 Warnings, 0 Remarks, 0 Optimizations
  Compiling IASL src/fw/ssdt-pcihp.hex
ASL Input:     build/src/fw/ssdt-pcihp.dsl.i -     755 bytes      5 keywords     37 source lines
AML Output:    build/src/fw/ssdt-pcihp.aml -     121 bytes      0 opcodes       5 named objects
Listing File:  build/src/fw/ssdt-pcihp.lst -    2737 bytes
Hex Dump:      build/src/fw/ssdt-pcihp.hex -    1626 bytes

Compilation successful. 0 Errors, 0 Warnings, 0 Remarks, 0 Optimizations
  Compiling IASL src/fw/ssdt-misc.hex
ASL Input:     build/src/fw/ssdt-misc.dsl.i -    2565 bytes     35 keywords    102 source lines
AML Output:    build/src/fw/ssdt-misc.aml -     388 bytes     11 opcodes      24 named objects
Listing File:  build/src/fw/ssdt-misc.lst -    7632 bytes
Hex Dump:      build/src/fw/ssdt-misc.hex -    4098 bytes

Compilation successful. 0 Errors, 0 Warnings, 0 Remarks, 2 Optimizations
make[1]: Leaving directory '/build/seabios-1.16.2'
echo "EXTRAVERSION=-debian-$(dpkg-parsechangelog -SVersion)" > build/env

=== Building bios.bin ===

set -e; if [ ! -e build/bios/.config.old ]; then rm -rf build/bios; mkdir -p build/bios; for x in QEMU=y ROM_SIZE=128 PVSCSI=n ATA_DMA=n BOOTSPLASH=n XEN=n USB_OHCI=n USB_XHCI=n USB_UAS=n SDCARD=n TCGBIOS=n MPT_SCSI=n ESP_SCSI=n MEGASAS=n NVME=n USE_SMM=n VGAHOOKS=n HOST_BIOS_GEOMETRY=n ACPI_PARSE=n; do echo CONFIG_$x; done > build/bios/.config; /usr/bin/make PYTHON="python3 -B" KCONFIG_CONFIG=/build/seabios-1.16.2/build/bios/.config OUT=build/bios/ oldnoconfig; fi
make[1]: Entering directory '/build/seabios-1.16.2'
scripts/kconfig/conf --olddefconfig /build/seabios-1.16.2/src/Kconfig
#
# configuration written to /build/seabios-1.16.2/build/bios/.config
#
make[1]: Leaving directory '/build/seabios-1.16.2'
/usr/bin/make PYTHON="python3 -B" $(cat build/env) KCONFIG_CONFIG=/build/seabios-1.16.2/build/bios/.config OUT=build/bios/ build/bios/bios.bin
make[1]: Entering directory '/build/seabios-1.16.2'
  Build Kconfig config file
  Compile checking build/bios/src/misc.o
In file included from src/biosvar.h:10,
                 from src/misc.c:8:
src/misc.c: In function 'handle_12':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/misc.c:36:16: note: in expansion of macro 'GET_BDA'
   36 |     regs->ax = GET_BDA(mem_size_kb);
      |                ^~~~~~~
src/misc.c: In function 'handle_11':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/misc.c:44:16: note: in expansion of macro 'GET_BDA'
   44 |     regs->ax = GET_BDA(equipment_list_flags);
      |                ^~~~~~~
In function 'set_equipment_flags',
    inlined from 'mathcp_setup' at src/misc.c:66:5:
src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
  Compile checking build/bios/src/stacks.o
  Compile checking build/bios/src/output.o
In file included from src/output.c:9:
src/output.c: In function 'screenc':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
src/output.c:77:25: note: in expansion of macro 'GET_IVT'
   77 |     if (!MODESEGMENT && GET_IVT(0x10).segoff == FUNC16(entry_10).segoff)
      |                         ^~~~~~~
  Compile checking build/bios/src/string.o
  Compile checking build/bios/src/block.o
src/block.c: In function 'map_hd_drive':
src/block.c:261:19: warning: array subscript 0 is outside array bounds of 'struct bios_data_area_s[0]' [-Warray-bounds]
  261 |     int hdid = bda->hdcount;
      |                   ^~
In file included from src/biosvar.h:10,
                 from src/block.c:8:
In function 'get_ebda_seg',
    inlined from 'get_ebda_ptr' at src/biosvar.h:66:12,
    inlined from 'fill_fdpt' at src/block.c:213:28,
    inlined from 'map_hd_drive' at src/block.c:269:5:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/biosvar.h:60:12: note: in expansion of macro 'GET_BDA'
   60 |     return GET_BDA(ebda_seg);
      |            ^~~~~~~
In function 'get_ebda_seg',
    inlined from 'fill_fdpt' at src/block.c:239:9,
    inlined from 'map_hd_drive' at src/block.c:269:5:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/biosvar.h:60:12: note: in expansion of macro 'GET_BDA'
   60 |     return GET_BDA(ebda_seg);
      |            ^~~~~~~
In function 'fill_fdpt',
    inlined from 'map_hd_drive' at src/block.c:269:5:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/block.c:239:9: note: in expansion of macro 'SET_IVT'
  239 |         SET_IVT(0x46, SEGOFF(get_ebda_seg(), offsetof(
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/block.c:239:9: note: in expansion of macro 'SET_IVT'
  239 |         SET_IVT(0x46, SEGOFF(get_ebda_seg(), offsetof(
      |         ^~~~~~~
In function 'get_ebda_seg',
    inlined from 'fill_fdpt' at src/block.c:236:9,
    inlined from 'map_hd_drive' at src/block.c:269:5:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/biosvar.h:60:12: note: in expansion of macro 'GET_BDA'
   60 |     return GET_BDA(ebda_seg);
      |            ^~~~~~~
In function 'fill_fdpt',
    inlined from 'map_hd_drive' at src/block.c:269:5:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/block.c:236:9: note: in expansion of macro 'SET_IVT'
  236 |         SET_IVT(0x41, SEGOFF(get_ebda_seg(), offsetof(
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/block.c:236:9: note: in expansion of macro 'SET_IVT'
  236 |         SET_IVT(0x41, SEGOFF(get_ebda_seg(), offsetof(
      |         ^~~~~~~
In function 'set_equipment_flags',
    inlined from 'map_floppy_drive' at src/block.c:296:9:
src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
src/block.c: In function 'map_floppy_drive':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/block.c:297:9: note: in expansion of macro 'SET_BDA'
  297 |         SET_BDA(floppy_harddisk_info, 0x77);
      |         ^~~~~~~
In function 'set_equipment_flags',
    inlined from 'map_floppy_drive' at src/block.c:292:9:
src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
src/block.c: In function 'map_floppy_drive':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/block.c:293:9: note: in expansion of macro 'SET_BDA'
  293 |         SET_BDA(floppy_harddisk_info, 0x07);
      |         ^~~~~~~
  Compile checking build/bios/src/cdrom.o
In file included from src/biosvar.h:10,
                 from src/cdrom.c:8:
src/cdrom.c: In function 'cdrom_boot':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
src/cdrom.c:264:9: note: in expansion of macro 'SET_BDA'
  264 |         SET_BDA(hdcount, GET_BDA(hdcount) + 1);
      |         ^~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/cdrom.c:264:26: note: in expansion of macro 'GET_BDA'
  264 |         SET_BDA(hdcount, GET_BDA(hdcount) + 1);
      |                          ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/cdrom.c:264:9: note: in expansion of macro 'SET_BDA'
  264 |         SET_BDA(hdcount, GET_BDA(hdcount) + 1);
      |         ^~~~~~~
In function 'set_equipment_flags',
    inlined from 'cdrom_boot' at src/cdrom.c:242:9:
src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
  Compile checking build/bios/src/disk.o
In file included from src/biosvar.h:10,
                 from src/disk.c:8:
src/disk.c: In function '__disk_ret_unimplemented':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/disk.c:45:9: note: in expansion of macro 'SET_BDA'
   45 |         SET_BDA(disk_last_status, code);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/disk.c:43:9: note: in expansion of macro 'SET_BDA'
   43 |         SET_BDA(floppy_last_status, code);
      |         ^~~~~~~
src/disk.c: In function '__disk_ret':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/disk.c:31:9: note: in expansion of macro 'SET_BDA'
   31 |         SET_BDA(disk_last_status, code);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/disk.c:29:9: note: in expansion of macro 'SET_BDA'
   29 |         SET_BDA(floppy_last_status, code);
      |         ^~~~~~~
src/disk.c: In function 'disk_1308':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/disk.c:297:17: note: in expansion of macro 'GET_BDA'
  297 |         count = GET_BDA(hdcount);
      |                 ^~~~~~~
src/disk.c: In function 'disk_13':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/disk.c:626:5: note: in expansion of macro 'SET_BDA'
  626 |     SET_BDA(disk_interrupt_flag, 0);
      |     ^~~~~~~
In function 'disk_1301',
    inlined from 'disk_13' at src/disk.c:630:16:
src/disk.c:218:11: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  218 |         v = GET_BDA(disk_last_status);
src/disk.c:216:11: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  216 |         v = GET_BDA(floppy_last_status);
src/disk.c: In function 'handle_76':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/disk.c:777:5: note: in expansion of macro 'SET_BDA'
  777 |     SET_BDA(disk_interrupt_flag, 0xff);
      |     ^~~~~~~
  Compile checking build/bios/src/mouse.o
In file included from src/mouse.c:8:
In function 'set_equipment_flags',
    inlined from 'mouse_init' at src/mouse.c:23:5:
src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
In file included from src/biosvar.h:10:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'get_ebda_seg',
    inlined from 'mouse_15c207' at src/mouse.c:231:20,
    inlined from 'handle_15c2' at src/mouse.c:272:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/biosvar.h:60:12: note: in expansion of macro 'GET_BDA'
   60 |     return GET_BDA(ebda_seg);
      |            ^~~~~~~
In function 'get_ebda_seg',
    inlined from 'mouse_15c205' at src/mouse.c:162:20,
    inlined from 'handle_15c2' at src/mouse.c:270:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/biosvar.h:60:12: note: in expansion of macro 'GET_BDA'
   60 |     return GET_BDA(ebda_seg);
      |            ^~~~~~~
In function 'get_ebda_seg',
    inlined from 'mouse_15c20001' at src/mouse.c:56:20,
    inlined from 'mouse_15c200' at src/mouse.c:82:16,
    inlined from 'handle_15c2' at src/mouse.c:265:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/biosvar.h:60:12: note: in expansion of macro 'GET_BDA'
   60 |     return GET_BDA(ebda_seg);
      |            ^~~~~~~
In function 'get_ebda_seg',
    inlined from 'process_mouse' at src/mouse.c:322:20:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/biosvar.h:60:12: note: in expansion of macro 'GET_BDA'
   60 |     return GET_BDA(ebda_seg);
      |            ^~~~~~~
  Compile checking build/bios/src/kbd.o
In file included from src/biosvar.h:10,
                 from src/kbd.c:8:
src/kbd.c: In function 'kbd_set_flag':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:397:18: note: in expansion of macro 'GET_BDA'
  397 |     u16 flags0 = GET_BDA(kbd_flag0);
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:398:17: note: in expansion of macro 'GET_BDA'
  398 |     u8 flags1 = GET_BDA(kbd_flag1);
      |                 ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:407:5: note: in expansion of macro 'SET_BDA'
  407 |     SET_BDA(kbd_flag0, flags0);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:408:5: note: in expansion of macro 'SET_BDA'
  408 |     SET_BDA(kbd_flag1, flags1);
      |     ^~~~~~~
src/kbd.c: In function 'set_leds':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:230:23: note: in expansion of macro 'GET_BDA'
  230 |     u8 shift_flags = (GET_BDA(kbd_flag0) >> 4) & 0x07;
      |                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:231:18: note: in expansion of macro 'GET_BDA'
  231 |     u8 kbd_led = GET_BDA(kbd_led);
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:241:5: note: in expansion of macro 'SET_BDA'
  241 |     SET_BDA(kbd_led, kbd_led);
      |     ^~~~~~~
src/kbd.c: In function 'dequeue_key':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:61:23: note: in expansion of macro 'GET_BDA'
   61 |         buffer_head = GET_BDA(kbd_buf_head);
      |                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:62:23: note: in expansion of macro 'GET_BDA'
   62 |         buffer_tail = GET_BDA(kbd_buf_tail);
      |                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:98:24: note: in expansion of macro 'GET_BDA'
   98 |     u16 buffer_start = GET_BDA(kbd_buf_start_offset);
      |                        ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:99:24: note: in expansion of macro 'GET_BDA'
   99 |     u16 buffer_end   = GET_BDA(kbd_buf_end_offset);
      |                        ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:104:5: note: in expansion of macro 'SET_BDA'
  104 |     SET_BDA(kbd_buf_head, buffer_head);
      |     ^~~~~~~
src/kbd.c: In function 'kbd_init':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:23:5: note: in expansion of macro 'SET_BDA'
   23 |     SET_BDA(kbd_flag1, KF1_101KBD);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:24:5: note: in expansion of macro 'SET_BDA'
   24 |     SET_BDA(kbd_buf_head, x);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:25:5: note: in expansion of macro 'SET_BDA'
   25 |     SET_BDA(kbd_buf_tail, x);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:26:5: note: in expansion of macro 'SET_BDA'
   26 |     SET_BDA(kbd_buf_start_offset, x);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:28:5: note: in expansion of macro 'SET_BDA'
   28 |     SET_BDA(kbd_buf_end_offset
      |     ^~~~~~~
src/kbd.c: In function 'enqueue_key':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:35:24: note: in expansion of macro 'GET_BDA'
   35 |     u16 buffer_start = GET_BDA(kbd_buf_start_offset);
      |                        ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:36:24: note: in expansion of macro 'GET_BDA'
   36 |     u16 buffer_end   = GET_BDA(kbd_buf_end_offset);
      |                        ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:38:23: note: in expansion of macro 'GET_BDA'
   38 |     u16 buffer_head = GET_BDA(kbd_buf_head);
      |                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:39:23: note: in expansion of macro 'GET_BDA'
   39 |     u16 buffer_tail = GET_BDA(kbd_buf_tail);
      |                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:50:5: note: in expansion of macro 'SET_BDA'
   50 |     SET_BDA(kbd_buf_tail, buffer_tail);
      |     ^~~~~~~
In function 'handle_1612',
    inlined from 'handle_16' at src/kbd.c:264:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:193:18: note: in expansion of macro 'GET_BDA'
  193 |     regs->ax = ((GET_BDA(kbd_flag0) & ~((KF1_RCTRL|KF1_RALT) << 8))
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:194:21: note: in expansion of macro 'GET_BDA'
  194 |                 | ((GET_BDA(kbd_flag1) & (KF1_RCTRL|KF1_RALT)) << 8));
      |                     ^~~~~~~
In function 'handle_1602',
    inlined from 'handle_16' at src/kbd.c:258:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:134:16: note: in expansion of macro 'GET_BDA'
  134 |     regs->al = GET_BDA(kbd_flag0);
      |                ^~~~~~~
In function '__process_key',
    inlined from 'process_key' at src/kbd.c:598:5:
src/kbd.c:459:8: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  459 |     u8 flags1 = GET_BDA(kbd_flag1);
      |        ^~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:473:9: note: in expansion of macro 'SET_BDA'
  473 |         SET_BDA(kbd_flag1, flags1 & ~(KF1_LAST_E0|KF1_LAST_E1));
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:529:14: note: in expansion of macro 'GET_BDA'
  529 |         if ((GET_BDA(kbd_flag0) & (KF0_CTRLACTIVE|KF0_ALTACTIVE))
      |              ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:532:13: note: in expansion of macro 'SET_BDA'
  532 |             SET_BDA(soft_reset_flag, 0x1234);
      |             ^~~~~~~
In function 'kbd_ctrl_break',
    inlined from '__process_key' at src/kbd.c:513:13,
    inlined from 'process_key' at src/kbd.c:598:5:
src/kbd.c:417:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  417 |     u16 buffer_start = GET_BDA(kbd_buf_start_offset);
      |         ^~~~~~~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:418:5: note: in expansion of macro 'SET_BDA'
  418 |     SET_BDA(kbd_buf_head, buffer_start);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:419:5: note: in expansion of macro 'SET_BDA'
  419 |     SET_BDA(kbd_buf_tail, buffer_start+2);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:422:5: note: in expansion of macro 'SET_BDA'
  422 |     SET_BDA(break_flag, 0x80);
      |     ^~~~~~~
In function '__process_key',
    inlined from 'process_key' at src/kbd.c:598:5:
src/kbd.c:552:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  552 |     u16 flags0 = GET_BDA(kbd_flag0);
      |         ^~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:463:9: note: in expansion of macro 'SET_BDA'
  463 |         SET_BDA(kbd_flag1, flags1 | eflag);
      |         ^~~~~~~
  Compile checking build/bios/src/system.o
In file included from src/biosvar.h:10,
                 from src/system.c:8:
In function 'get_ebda_seg',
    inlined from 'handle_15c1' at src/system.c:255:16,
    inlined from 'handle_15' at src/system.c:352:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/biosvar.h:60:12: note: in expansion of macro 'GET_BDA'
   60 |     return GET_BDA(ebda_seg);
      |            ^~~~~~~
  Compile checking build/bios/src/serial.o
In file included from src/serial.c:8:
In function 'set_equipment_flags',
    inlined from 'serial_setup' at src/serial.c:56:5:
src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
In file included from src/biosvar.h:10:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'detect_parport',
    inlined from 'lpt_setup' at src/serial.c:212:14:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/serial.c:199:5: note: in expansion of macro 'SET_BDA'
  199 |     SET_BDA(port_lpt[count], port);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/serial.c:200:5: note: in expansion of macro 'SET_BDA'
  200 |     SET_BDA(lpt_timeout[count], timeout);
      |     ^~~~~~~
In function 'set_equipment_flags',
    inlined from 'lpt_setup' at src/serial.c:217:5:
src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
  Compile checking build/bios/src/sercon.o
In file included from src/biosvar.h:10,
                 from src/sercon.c:7:
In function 'cursor_pos_set',
    inlined from 'sercon_cursor_pos_set' at src/sercon.c:190:9:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/sercon.c:42:5: note: in expansion of macro 'SET_BDA'
   42 |     SET_BDA(cursor_pos[0], pos);
      |     ^~~~~~~
In function 'cursor_pos_row',
    inlined from 'sercon_lazy_lf' at src/sercon.c:270:11:
src/sercon.c:35:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   35 |     u16 pos = GET_BDA(cursor_pos[0]);
      |         ^~~
In function 'video_rows',
    inlined from 'sercon_lazy_lf' at src/sercon.c:271:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/sercon.c:19:12: note: in expansion of macro 'GET_BDA'
   19 |     return GET_BDA(video_rows)+1;
      |            ^~~~~~~
In function 'cursor_pos_row',
    inlined from 'sercon_lazy_cursor_sync' at src/sercon.c:198:14,
    inlined from 'sercon_lazy_flush' at src/sercon.c:236:5:
src/sercon.c:35:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   35 |     u16 pos = GET_BDA(cursor_pos[0]);
      |         ^~~
In function 'cursor_pos_row',
    inlined from 'sercon_lazy_putchar' at src/sercon.c:296:9:
src/sercon.c:35:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   35 |     u16 pos = GET_BDA(cursor_pos[0]);
      |         ^~~
In function 'cursor_pos_col',
    inlined from 'sercon_lazy_move_cursor' at src/sercon.c:285:11,
    inlined from 'sercon_lazy_putchar' at src/sercon.c:303:9:
src/sercon.c:29:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   29 |     u16 pos = GET_BDA(cursor_pos[0]);
      |         ^~~
In function 'video_cols',
    inlined from 'sercon_lazy_move_cursor' at src/sercon.c:286:16,
    inlined from 'sercon_lazy_putchar' at src/sercon.c:303:9:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/sercon.c:24:12: note: in expansion of macro 'GET_BDA'
   24 |     return GET_BDA(video_cols);
      |            ^~~~~~~
In function 'sercon_100f',
    inlined from 'handle_sercon' at src/sercon.c:505:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/sercon.c:456:16: note: in expansion of macro 'GET_BDA'
  456 |     regs->al = GET_BDA(video_mode);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/sercon.c:457:16: note: in expansion of macro 'GET_BDA'
  457 |     regs->ah = GET_BDA(video_cols);
      |                ^~~~~~~
In function 'cursor_pos_row',
    inlined from 'sercon_lazy_cr' at src/sercon.c:263:27,
    inlined from 'sercon_100e' at src/sercon.c:442:9,
    inlined from 'handle_sercon' at src/sercon.c:504:16:
src/sercon.c:35:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   35 |     u16 pos = GET_BDA(cursor_pos[0]);
      |         ^~~
In function 'cursor_pos_col',
    inlined from 'sercon_lazy_backspace' at src/sercon.c:254:11,
    inlined from 'sercon_100e' at src/sercon.c:439:9,
    inlined from 'handle_sercon' at src/sercon.c:504:16:
src/sercon.c:29:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   29 |     u16 pos = GET_BDA(cursor_pos[0]);
      |         ^~~
In function 'cursor_pos_row',
    inlined from 'sercon_lazy_backspace' at src/sercon.c:257:35,
    inlined from 'sercon_100e' at src/sercon.c:439:9,
    inlined from 'handle_sercon' at src/sercon.c:504:16:
src/sercon.c:35:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   35 |     u16 pos = GET_BDA(cursor_pos[0]);
      |         ^~~
In function 'video_rows',
    inlined from 'sercon_1009' at src/sercon.c:411:16,
    inlined from 'handle_sercon' at src/sercon.c:503:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/sercon.c:19:12: note: in expansion of macro 'GET_BDA'
   19 |     return GET_BDA(video_rows)+1;
      |            ^~~~~~~
In function 'video_cols',
    inlined from 'sercon_1009' at src/sercon.c:411:31,
    inlined from 'handle_sercon' at src/sercon.c:503:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/sercon.c:24:12: note: in expansion of macro 'GET_BDA'
   24 |     return GET_BDA(video_cols);
      |            ^~~~~~~
In function 'cursor_pos_row',
    inlined from 'sercon_1009' at src/sercon.c:412:16,
    inlined from 'handle_sercon' at src/sercon.c:503:16:
src/sercon.c:35:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   35 |     u16 pos = GET_BDA(cursor_pos[0]);
      |         ^~~
In function 'cursor_pos_col',
    inlined from 'sercon_1009' at src/sercon.c:427:33,
    inlined from 'handle_sercon' at src/sercon.c:503:16:
src/sercon.c:29:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   29 |     u16 pos = GET_BDA(cursor_pos[0]);
      |         ^~~
In function 'video_rows',
    inlined from 'sercon_1006' at src/sercon.c:384:25,
    inlined from 'handle_sercon' at src/sercon.c:501:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/sercon.c:19:12: note: in expansion of macro 'GET_BDA'
   19 |     return GET_BDA(video_rows)+1;
      |            ^~~~~~~
In function 'video_cols',
    inlined from 'sercon_1006' at src/sercon.c:385:25,
    inlined from 'handle_sercon' at src/sercon.c:501:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/sercon.c:24:12: note: in expansion of macro 'GET_BDA'
   24 |     return GET_BDA(video_cols);
      |            ^~~~~~~
In function 'sercon_1003',
    inlined from 'handle_sercon' at src/sercon.c:500:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/sercon.c:371:16: note: in expansion of macro 'GET_BDA'
  371 |     regs->cx = GET_BDA(cursor_type);
      |                ^~~~~~~
In function 'cursor_pos_row',
    inlined from 'sercon_1003' at src/sercon.c:372:16,
    inlined from 'handle_sercon' at src/sercon.c:500:16:
src/sercon.c:35:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   35 |     u16 pos = GET_BDA(cursor_pos[0]);
      |         ^~~
In function 'cursor_pos_col',
    inlined from 'sercon_1003' at src/sercon.c:373:16,
    inlined from 'handle_sercon' at src/sercon.c:500:16:
src/sercon.c:29:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   29 |     u16 pos = GET_BDA(cursor_pos[0]);
      |         ^~~
In function 'sercon_1001',
    inlined from 'handle_sercon' at src/sercon.c:498:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/sercon.c:359:5: note: in expansion of macro 'SET_BDA'
  359 |     SET_BDA(cursor_type, regs->cx);
      |     ^~~~~~~
In function 'cursor_pos_set',
    inlined from 'sercon_1000' at src/sercon.c:335:9,
    inlined from 'handle_sercon' at src/sercon.c:497:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/sercon.c:42:5: note: in expansion of macro 'SET_BDA'
   42 |     SET_BDA(cursor_pos[0], pos);
      |     ^~~~~~~
In function 'sercon_1000',
    inlined from 'handle_sercon' at src/sercon.c:497:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/sercon.c:336:9: note: in expansion of macro 'SET_BDA'
  336 |         SET_BDA(video_mode, mode);
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/sercon.c:337:9: note: in expansion of macro 'SET_BDA'
  337 |         SET_BDA(video_cols, cols);
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/sercon.c:338:9: note: in expansion of macro 'SET_BDA'
  338 |         SET_BDA(video_rows, rows-1);
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/sercon.c:339:9: note: in expansion of macro 'SET_BDA'
  339 |         SET_BDA(cursor_type, 0x0007);
      |         ^~~~~~~
src/sercon.c: In function 'sercon_setup':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
src/sercon.c:528:15: note: in expansion of macro 'GET_IVT'
  528 |     vgabios = GET_IVT(0x10);
      |               ^~~~~~~
src/sercon.c:528:13: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  528 |     vgabios = GET_IVT(0x10);
src/sercon.c:528:13: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/sercon.c:541:5: note: in expansion of macro 'SET_IVT'
  541 |     SET_IVT(0x10, FUNC16(entry_sercon));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/sercon.c:541:5: note: in expansion of macro 'SET_IVT'
  541 |     SET_IVT(0x10, FUNC16(entry_sercon));
      |     ^~~~~~~
  Compile checking build/bios/src/clock.o
In file included from src/biosvar.h:10,
                 from src/clock.c:8:
src/clock.c: In function 'clear_usertimer':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/clock.c:383:11: note: in expansion of macro 'GET_BDA'
  383 |     if (!(GET_BDA(rtc_wait_flag) & RWS_WAIT_PENDING))
      |           ^~~~~~~
In function 'clear_usertimer',
    inlined from 'clear_usertimer' at src/clock.c:381:1:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/clock.c:386:5: note: in expansion of macro 'SET_BDA'
  386 |     SET_BDA(rtc_wait_flag, 0);
      |     ^~~~~~~
src/clock.c: In function 'clock_setup':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/clock.c:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(timer_counter, ticks % TICKS_PER_DAY);
      |     ^~~~~~~
In function 'handle_1a01',
    inlined from 'handle_1a' at src/clock.c:268:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/clock.c:86:5: note: in expansion of macro 'SET_BDA'
   86 |     SET_BDA(timer_counter, ticks);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/clock.c:87:5: note: in expansion of macro 'SET_BDA'
   87 |     SET_BDA(timer_rollover, 0); // reset flag
      |     ^~~~~~~
In function 'handle_1a00',
    inlined from 'handle_1a' at src/clock.c:267:16:
src/clock.c:73:9: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
   73 |     u32 ticks = GET_BDA(timer_counter);
      |         ^~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/clock.c:76:16: note: in expansion of macro 'GET_BDA'
   76 |     regs->al = GET_BDA(timer_rollover);
      |                ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/clock.c:77:5: note: in expansion of macro 'SET_BDA'
   77 |     SET_BDA(timer_rollover, 0); // reset flag
      |     ^~~~~~~
In function 'clock_update',
    inlined from 'handle_08' at src/clock.c:306:5:
src/clock.c:284:9: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  284 |     u32 counter = GET_BDA(timer_counter);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
src/clock.c:290:9: note: in expansion of macro 'SET_BDA'
  290 |         SET_BDA(timer_rollover, GET_BDA(timer_rollover) + 1);
      |         ^~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/clock.c:290:33: note: in expansion of macro 'GET_BDA'
  290 |         SET_BDA(timer_rollover, GET_BDA(timer_rollover) + 1);
      |                                 ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/clock.c:290:9: note: in expansion of macro 'SET_BDA'
  290 |         SET_BDA(timer_rollover, GET_BDA(timer_rollover) + 1);
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/clock.c:292:5: note: in expansion of macro 'SET_BDA'
  292 |     SET_BDA(timer_counter, counter);
      |     ^~~~~~~
src/clock.c: In function 'irqtimer_calc_ticks':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/clock.c:341:13: note: in expansion of macro 'GET_BDA'
  341 |     return (GET_BDA(timer_counter) + count + 1) % TICKS_PER_DAY;
      |             ^~~~~~~
src/clock.c: In function 'irqtimer_calc':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/clock.c:349:16: note: in expansion of macro 'GET_BDA'
  349 |         return GET_BDA(timer_counter);
      |                ^~~~~~~
src/clock.c: In function 'irqtimer_check':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/clock.c:357:15: note: in expansion of macro 'GET_BDA'
  357 |     return (((GET_BDA(timer_counter) + TICKS_PER_DAY - end) % TICKS_PER_DAY)
      |               ^~~~~~~
In function 'set_usertimer',
    inlined from 'handle_1586' at src/clock.c:403:15:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/clock.c:369:9: note: in expansion of macro 'GET_BDA'
  369 |     if (GET_BDA(rtc_wait_flag) & RWS_WAIT_PENDING)
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/clock.c:373:5: note: in expansion of macro 'SET_BDA'
  373 |     SET_BDA(rtc_wait_flag, RWS_WAIT_PENDING);  // Set status byte.
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/clock.c:374:5: note: in expansion of macro 'SET_BDA'
  374 |     SET_BDA(user_wait_complete_flag, SEGOFF(seg, offset));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/clock.c:374:5: note: in expansion of macro 'SET_BDA'
  374 |     SET_BDA(user_wait_complete_flag, SEGOFF(seg, offset));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/clock.c:375:5: note: in expansion of macro 'SET_BDA'
  375 |     SET_BDA(user_wait_timeout, usecs);
      |     ^~~~~~~
In function 'set_usertimer',
    inlined from 'handle_158300' at src/clock.c:417:15,
    inlined from 'handle_1583' at src/clock.c:448:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/clock.c:369:9: note: in expansion of macro 'GET_BDA'
  369 |     if (GET_BDA(rtc_wait_flag) & RWS_WAIT_PENDING)
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/clock.c:373:5: note: in expansion of macro 'SET_BDA'
  373 |     SET_BDA(rtc_wait_flag, RWS_WAIT_PENDING);  // Set status byte.
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/clock.c:374:5: note: in expansion of macro 'SET_BDA'
  374 |     SET_BDA(user_wait_complete_flag, SEGOFF(seg, offset));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/clock.c:374:5: note: in expansion of macro 'SET_BDA'
  374 |     SET_BDA(user_wait_complete_flag, SEGOFF(seg, offset));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/clock.c:375:5: note: in expansion of macro 'SET_BDA'
  375 |     SET_BDA(user_wait_timeout, usecs);
      |     ^~~~~~~
src/clock.c: In function 'handle_70':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/clock.c:484:10: note: in expansion of macro 'GET_BDA'
  484 |     if (!GET_BDA(rtc_wait_flag))
      |          ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/clock.c:488:16: note: in expansion of macro 'GET_BDA'
  488 |     u32 time = GET_BDA(user_wait_timeout);  // Time left in microseconds.
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/clock.c:501:9: note: in expansion of macro 'SET_BDA'
  501 |         SET_BDA(user_wait_timeout, time);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/clock.c:491:34: note: in expansion of macro 'GET_BDA'
  491 |         struct segoff_s segoff = GET_BDA(user_wait_complete_flag);
      |                                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/clock.c:491:34: note: in expansion of macro 'GET_BDA'
  491 |         struct segoff_s segoff = GET_BDA(user_wait_complete_flag);
      |                                  ^~~~~~~
  Compile checking build/bios/src/resume.o
  Compile checking build/bios/src/pnpbios.o
  Compile checking build/bios/src/vgahooks.o
  Compile checking build/bios/src/pcibios.o
  Compile checking build/bios/src/apm.o
  Compile checking build/bios/src/cp437.o
  Compile checking build/bios/src/hw/pci.o
  Compile checking build/bios/src/hw/timer.o
  Compile checking build/bios/src/hw/rtc.o
  Compile checking build/bios/src/hw/dma.o
  Compile checking build/bios/src/hw/pic.o
  Compile checking build/bios/src/hw/ps2port.o
  Compile checking build/bios/src/hw/serialio.o
  Compile checking build/bios/src/hw/usb.o
  Compile checking build/bios/src/hw/usb-uhci.o
  Compile checking build/bios/src/hw/usb-ohci.o
  Compile checking build/bios/src/hw/usb-ehci.o
  Compile checking build/bios/src/hw/usb-hid.o
  Compile checking build/bios/src/hw/usb-msc.o
  Compile checking build/bios/src/hw/usb-uas.o
  Compile checking build/bios/src/hw/blockcmd.o
  Compile checking build/bios/src/hw/floppy.o
In file included from src/biosvar.h:10,
                 from src/hw/floppy.c:8:
src/hw/floppy.c: In function 'floppy_wait_irq':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/hw/floppy.c:226:14: note: in expansion of macro 'GET_BDA'
  226 |     u8 frs = GET_BDA(floppy_recalibration_status);
      |              ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/hw/floppy.c:227:5: note: in expansion of macro 'SET_BDA'
  227 |     SET_BDA(floppy_recalibration_status, frs & ~FRS_IRQ);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/hw/floppy.c:235:15: note: in expansion of macro 'GET_BDA'
  235 |         frs = GET_BDA(floppy_recalibration_status);
      |               ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/hw/floppy.c:243:5: note: in expansion of macro 'SET_BDA'
  243 |     SET_BDA(floppy_recalibration_status, frs & ~FRS_IRQ);
      |     ^~~~~~~
src/hw/floppy.c: In function 'floppy_drive_pio':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/hw/floppy.c:372:5: note: in expansion of macro 'SET_BDA'
  372 |     SET_BDA(floppy_motor_counter, 255);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/hw/floppy.c:387:5: note: in expansion of macro 'SET_BDA'
  387 |     SET_BDA(floppy_motor_counter, FLOPPY_MOTOR_TICKS); // reset motor timeout
      |     ^~~~~~~
src/hw/floppy.c: In function 'floppy_prep':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/hw/floppy.c:494:11: note: in expansion of macro 'GET_BDA'
  494 |     if (!(GET_BDA(floppy_recalibration_status) & (1<<floppyid)) ||
      |           ^~~~~~~
In function 'floppy_drive_recal',
    inlined from 'floppy_prep' at src/hw/floppy.c:497:19:
src/hw/floppy.c:413:8: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  413 |     u8 frs = GET_BDA(floppy_recalibration_status);
      |        ^~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/hw/floppy.c:414:5: note: in expansion of macro 'SET_BDA'
  414 |     SET_BDA(floppy_recalibration_status, frs | (1<<floppyid));
      |     ^~~~~~~
In function 'floppy_media_sense',
    inlined from 'floppy_prep' at src/hw/floppy.c:502:15:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/hw/floppy.c:478:5: note: in expansion of macro 'SET_BDA'
  478 |     SET_BDA(floppy_last_data_rate, (old_data_rate<<2) | (data_rate<<6));
      |     ^~~~~~~
src/hw/floppy.c: In function 'floppy_setup':
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/hw/floppy.c:151:5: note: in expansion of macro 'SET_IVT'
  151 |     SET_IVT(0x1E, SEGOFF(SEG_BIOS
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/hw/floppy.c:151:5: note: in expansion of macro 'SET_IVT'
  151 |     SET_IVT(0x1E, SEGOFF(SEG_BIOS
      |     ^~~~~~~
In function 'floppy_reset',
    inlined from 'floppy_process_op' at src/hw/floppy.c:691:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/hw/floppy.c:594:5: note: in expansion of macro 'SET_BDA'
  594 |     SET_BDA(floppy_recalibration_status, 0);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/hw/floppy.c:595:5: note: in expansion of macro 'SET_BDA'
  595 |     SET_BDA(floppy_media_state[0], 0);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/hw/floppy.c:596:5: note: in expansion of macro 'SET_BDA'
  596 |     SET_BDA(floppy_media_state[1], 0);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/hw/floppy.c:597:5: note: in expansion of macro 'SET_BDA'
  597 |     SET_BDA(floppy_track[0], 0);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/hw/floppy.c:598:5: note: in expansion of macro 'SET_BDA'
  598 |     SET_BDA(floppy_track[1], 0);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/hw/floppy.c:599:5: note: in expansion of macro 'SET_BDA'
  599 |     SET_BDA(floppy_last_data_rate, 0);
      |     ^~~~~~~
src/hw/floppy.c: In function 'handle_0e':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/hw/floppy.c:719:14: note: in expansion of macro 'GET_BDA'
  719 |     u8 frs = GET_BDA(floppy_recalibration_status);
      |              ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/hw/floppy.c:720:5: note: in expansion of macro 'SET_BDA'
  720 |     SET_BDA(floppy_recalibration_status, frs | FRS_IRQ);
      |     ^~~~~~~
src/hw/floppy.c: In function 'floppy_tick':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/hw/floppy.c:733:17: note: in expansion of macro 'GET_BDA'
  733 |     u8 fcount = GET_BDA(floppy_motor_counter);
      |                 ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/hw/floppy.c:736:9: note: in expansion of macro 'SET_BDA'
  736 |         SET_BDA(floppy_motor_counter, fcount);
      |         ^~~~~~~
  Compile checking build/bios/src/hw/ata.o
In file included from src/biosvar.h:10,
                 from src/hw/ata.c:9:
src/hw/ata.c: In function 'ata_setup':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/hw/ata.c:1051:5: note: in expansion of macro 'SET_BDA'
 1051 |     SET_BDA(disk_control_byte, 0xc0);
      |     ^~~~~~~
  Compile checking build/bios/src/hw/ramdisk.o
  Compile checking build/bios/src/hw/lsi-scsi.o
  Compile checking build/bios/src/hw/esp-scsi.o
  Compile checking build/bios/src/hw/megasas.o
  Compile checking build/bios/src/hw/mpt-scsi.o
  Compile checking build/bios/src/post.o
In file included from src/biosvar.h:10,
                 from src/post.c:8:
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:49:5: note: in expansion of macro 'SET_IVT'
   49 |     SET_IVT(0x02, FUNC16(entry_02));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:49:5: note: in expansion of macro 'SET_IVT'
   49 |     SET_IVT(0x02, FUNC16(entry_02));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:50:5: note: in expansion of macro 'SET_IVT'
   50 |     SET_IVT(0x05, FUNC16(entry_05));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:50:5: note: in expansion of macro 'SET_IVT'
   50 |     SET_IVT(0x05, FUNC16(entry_05));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:51:5: note: in expansion of macro 'SET_IVT'
   51 |     SET_IVT(0x10, FUNC16(entry_10));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:51:5: note: in expansion of macro 'SET_IVT'
   51 |     SET_IVT(0x10, FUNC16(entry_10));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:52:5: note: in expansion of macro 'SET_IVT'
   52 |     SET_IVT(0x11, FUNC16(entry_11));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:52:5: note: in expansion of macro 'SET_IVT'
   52 |     SET_IVT(0x11, FUNC16(entry_11));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:53:5: note: in expansion of macro 'SET_IVT'
   53 |     SET_IVT(0x12, FUNC16(entry_12));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:53:5: note: in expansion of macro 'SET_IVT'
   53 |     SET_IVT(0x12, FUNC16(entry_12));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:54:5: note: in expansion of macro 'SET_IVT'
   54 |     SET_IVT(0x13, FUNC16(entry_13_official));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:54:5: note: in expansion of macro 'SET_IVT'
   54 |     SET_IVT(0x13, FUNC16(entry_13_official));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:55:5: note: in expansion of macro 'SET_IVT'
   55 |     SET_IVT(0x14, FUNC16(entry_14));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:55:5: note: in expansion of macro 'SET_IVT'
   55 |     SET_IVT(0x14, FUNC16(entry_14));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:56:5: note: in expansion of macro 'SET_IVT'
   56 |     SET_IVT(0x15, FUNC16(entry_15_official));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:56:5: note: in expansion of macro 'SET_IVT'
   56 |     SET_IVT(0x15, FUNC16(entry_15_official));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:57:5: note: in expansion of macro 'SET_IVT'
   57 |     SET_IVT(0x16, FUNC16(entry_16));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:57:5: note: in expansion of macro 'SET_IVT'
   57 |     SET_IVT(0x16, FUNC16(entry_16));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:58:5: note: in expansion of macro 'SET_IVT'
   58 |     SET_IVT(0x17, FUNC16(entry_17));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:58:5: note: in expansion of macro 'SET_IVT'
   58 |     SET_IVT(0x17, FUNC16(entry_17));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:59:5: note: in expansion of macro 'SET_IVT'
   59 |     SET_IVT(0x18, FUNC16(entry_18));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:59:5: note: in expansion of macro 'SET_IVT'
   59 |     SET_IVT(0x18, FUNC16(entry_18));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:60:5: note: in expansion of macro 'SET_IVT'
   60 |     SET_IVT(0x19, FUNC16(entry_19_official));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:60:5: note: in expansion of macro 'SET_IVT'
   60 |     SET_IVT(0x19, FUNC16(entry_19_official));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:61:5: note: in expansion of macro 'SET_IVT'
   61 |     SET_IVT(0x1a, FUNC16(entry_1a_official));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:61:5: note: in expansion of macro 'SET_IVT'
   61 |     SET_IVT(0x1a, FUNC16(entry_1a_official));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:62:5: note: in expansion of macro 'SET_IVT'
   62 |     SET_IVT(0x40, FUNC16(entry_40));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:62:5: note: in expansion of macro 'SET_IVT'
   62 |     SET_IVT(0x40, FUNC16(entry_40));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:70:5: note: in expansion of macro 'SET_IVT'
   70 |     SET_IVT(0x79, SEGOFF(0, 0));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:70:5: note: in expansion of macro 'SET_IVT'
   70 |     SET_IVT(0x79, SEGOFF(0, 0));
      |     ^~~~~~~
In function 'bda_init',
    inlined from 'interface_init' at src/post.c:114:5:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/post.c:86:5: note: in expansion of macro 'SET_BDA'
   86 |     SET_BDA(ebda_seg, ebda_seg);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/post.c:88:5: note: in expansion of macro 'SET_BDA'
   88 |     SET_BDA(mem_size_kb, ebda_seg / (1024/16));
      |     ^~~~~~~
In function 'get_ebda_seg',
    inlined from 'get_ebda_ptr' at src/biosvar.h:66:12,
    inlined from 'bda_init' at src/post.c:91:46,
    inlined from 'interface_init' at src/post.c:114:5:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/biosvar.h:60:12: note: in expansion of macro 'GET_BDA'
   60 |     return GET_BDA(ebda_seg);
      |            ^~~~~~~
  Compile checking build/bios/src/e820map.o
  Compile checking build/bios/src/malloc.o
In file included from src/biosvar.h:10,
                 from src/malloc.c:7:
src/malloc.c: In function 'malloc_prepboot':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/malloc.c:547:18: note: in expansion of macro 'GET_BDA'
  547 |     u32 endlow = GET_BDA(mem_size_kb)*1024;
      |                  ^~~~~~~
  Compile checking build/bios/src/romfile.o
  Compile checking build/bios/src/x86.o
  Compile checking build/bios/src/optionroms.o
In function 'boot_irq_captured',
    inlined from 'init_pcirom' at src/optionroms.c:344:28:
src/optionroms.c:314:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  314 |     return GET_IVT(0x19).segoff != FUNC16(entry_19_official).segoff;
In function 'boot_irq_captured',
    inlined from 'init_pcirom' at src/optionroms.c:348:9:
src/optionroms.c:314:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  314 |     return GET_IVT(0x19).segoff != FUNC16(entry_19_official).segoff;
In file included from src/optionroms.c:10:
In function 'boot_irq_restore',
    inlined from 'init_pcirom' at src/optionroms.c:354:9:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/optionroms.c:322:5: note: in expansion of macro 'SET_IVT'
  322 |     SET_IVT(0x19, seabios);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/optionroms.c:322:5: note: in expansion of macro 'SET_IVT'
  322 |     SET_IVT(0x19, seabios);
      |     ^~~~~~~
  Compile checking build/bios/src/pmm.o
  Compile checking build/bios/src/font.o
  Compile checking build/bios/src/boot.o
  Compile checking build/bios/src/bootsplash.o
  Compile checking build/bios/src/jpeg.o
  Compile checking build/bios/src/bmp.o
  Compile checking build/bios/src/tcgbios.o
  Compile checking build/bios/src/sha1.o
  Compile checking build/bios/src/hw/pcidevice.o
  Compile checking build/bios/src/hw/ahci.o
  Compile checking build/bios/src/hw/pvscsi.o
  Compile checking build/bios/src/hw/usb-xhci.o
  Compile checking build/bios/src/hw/usb-hub.o
  Compile checking build/bios/src/hw/sdcard.o
  Compile checking build/bios/src/fw/coreboot.o
  Compile checking build/bios/src/fw/lzmadecode.o
  Compile checking build/bios/src/fw/multiboot.o
  Compile checking build/bios/src/fw/csm.o
  Compile checking build/bios/src/fw/biostables.o
  Compile checking build/bios/src/fw/paravirt.o
  Compile checking build/bios/src/fw/shadow.o
  Compile checking build/bios/src/fw/pciinit.o
  Compile checking build/bios/src/fw/smm.o
  Compile checking build/bios/src/fw/smp.o
  Compile checking build/bios/src/fw/mtrr.o
  Compile checking build/bios/src/fw/xen.o
  Compile checking build/bios/src/fw/acpi.o
  Compile checking build/bios/src/fw/mptable.o
  Compile checking build/bios/src/fw/pirtable.o
  Compile checking build/bios/src/fw/smbios.o
  Compile checking build/bios/src/fw/romfile_loader.o
  Compile checking build/bios/src/fw/dsdt_parser.o
  Compile checking build/bios/src/hw/virtio-ring.o
  Compile checking build/bios/src/hw/virtio-pci.o
  Compile checking build/bios/src/hw/virtio-mmio.o
  Compile checking build/bios/src/hw/virtio-blk.o
  Compile checking build/bios/src/hw/virtio-scsi.o
  Compile checking build/bios/src/hw/tpm_drivers.o
  Compile checking build/bios/src/hw/nvme.o
  Compile checking build/bios/src/sha256.o
  Compile checking build/bios/src/sha512.o
  Compiling whole program build/bios/ccode32flat.o
In file included from ./src/biosvar.h:10,
                 from ./src/misc.c:8,
                 from build/bios/ccode32flat.o.tmp.c:1:
In function 'irqtimer_calc_ticks',
    inlined from 'irqtimer_calc' at ./src/clock.c:350:12,
    inlined from 'irqtimer_calc' at ./src/clock.c:346:1:
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
./src/clock.c:341:13: note: in expansion of macro 'GET_BDA'
  341 |     return (GET_BDA(timer_counter) + count + 1) % TICKS_PER_DAY;
      |             ^~~~~~~
./src/clock.c: In function 'irqtimer_calc':
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
./src/clock.c:349:16: note: in expansion of macro 'GET_BDA'
  349 |         return GET_BDA(timer_counter);
      |                ^~~~~~~
./src/output.c: In function 'screenc':
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
./src/output.c:77:25: note: in expansion of macro 'GET_IVT'
   77 |     if (!MODESEGMENT && GET_IVT(0x10).segoff == FUNC16(entry_10).segoff)
      |                         ^~~~~~~
In function 'irqtimer_check',
    inlined from 'get_keystroke_full' at ./src/boot.c:661:13:
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
./src/clock.c:357:15: note: in expansion of macro 'GET_BDA'
  357 |     return (((GET_BDA(timer_counter) + TICKS_PER_DAY - end) % TICKS_PER_DAY)
      |               ^~~~~~~
In function 'irqtimer_check',
    inlined from 'boot_fail' at ./src/boot.c:974:41:
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
./src/clock.c:357:15: note: in expansion of macro 'GET_BDA'
  357 |     return (((GET_BDA(timer_counter) + TICKS_PER_DAY - end) % TICKS_PER_DAY)
      |               ^~~~~~~
In file included from build/bios/ccode32flat.o.tmp.c:47:
In function 'boot_irq_captured',
    inlined from 'init_pcirom' at ./src/optionroms.c:344:28:
./src/optionroms.c:314:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  314 |     return GET_IVT(0x19).segoff != FUNC16(entry_19_official).segoff;
In function 'boot_irq_captured',
    inlined from 'init_pcirom' at ./src/optionroms.c:348:9:
./src/optionroms.c:314:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  314 |     return GET_IVT(0x19).segoff != FUNC16(entry_19_official).segoff;
In function 'boot_irq_restore',
    inlined from 'init_pcirom' at ./src/optionroms.c:354:9:
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/optionroms.c:322:5: note: in expansion of macro 'SET_IVT'
  322 |     SET_IVT(0x19, seabios);
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/optionroms.c:322:5: note: in expansion of macro 'SET_IVT'
  322 |     SET_IVT(0x19, seabios);
      |     ^~~~~~~
In function 'floppy_setup',
    inlined from 'block_setup' at ./src/block.c:510:5,
    inlined from 'device_hardware_setup' at ./src/post.c:131:5:
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/hw/floppy.c:151:5: note: in expansion of macro 'SET_IVT'
  151 |     SET_IVT(0x1E, SEGOFF(SEG_BIOS
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/hw/floppy.c:151:5: note: in expansion of macro 'SET_IVT'
  151 |     SET_IVT(0x1E, SEGOFF(SEG_BIOS
      |     ^~~~~~~
In function 'ata_setup',
    inlined from 'block_setup' at ./src/block.c:511:5,
    inlined from 'device_hardware_setup' at ./src/post.c:131:5:
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/hw/ata.c:1051:5: note: in expansion of macro 'SET_BDA'
 1051 |     SET_BDA(disk_control_byte, 0xc0);
      |     ^~~~~~~
In function 'detect_parport',
    inlined from 'lpt_setup' at ./src/serial.c:212:14,
    inlined from 'device_hardware_setup' at ./src/post.c:132:5:
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/serial.c:199:5: note: in expansion of macro 'SET_BDA'
  199 |     SET_BDA(port_lpt[count], port);
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/serial.c:200:5: note: in expansion of macro 'SET_BDA'
  200 |     SET_BDA(lpt_timeout[count], timeout);
      |     ^~~~~~~
In function 'set_equipment_flags',
    inlined from 'lpt_setup' at ./src/serial.c:217:5,
    inlined from 'device_hardware_setup' at ./src/post.c:132:5:
./src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'set_equipment_flags',
    inlined from 'serial_setup' at ./src/serial.c:56:5,
    inlined from 'device_hardware_setup' at ./src/post.c:133:5:
./src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
./src/cdrom.c: In function 'cdrom_boot':
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
./src/cdrom.c:264:9: note: in expansion of macro 'SET_BDA'
  264 |         SET_BDA(hdcount, GET_BDA(hdcount) + 1);
      |         ^~~~~~~
./src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
./src/cdrom.c:264:26: note: in expansion of macro 'GET_BDA'
  264 |         SET_BDA(hdcount, GET_BDA(hdcount) + 1);
      |                          ^~~~~~~
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/cdrom.c:264:9: note: in expansion of macro 'SET_BDA'
  264 |         SET_BDA(hdcount, GET_BDA(hdcount) + 1);
      |         ^~~~~~~
In function 'set_equipment_flags',
    inlined from 'cdrom_boot' at ./src/cdrom.c:242:9:
./src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5,
    inlined from 'maininit' at ./src/post.c:200:5:
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:49:5: note: in expansion of macro 'SET_IVT'
   49 |     SET_IVT(0x02, FUNC16(entry_02));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:49:5: note: in expansion of macro 'SET_IVT'
   49 |     SET_IVT(0x02, FUNC16(entry_02));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:50:5: note: in expansion of macro 'SET_IVT'
   50 |     SET_IVT(0x05, FUNC16(entry_05));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:50:5: note: in expansion of macro 'SET_IVT'
   50 |     SET_IVT(0x05, FUNC16(entry_05));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:51:5: note: in expansion of macro 'SET_IVT'
   51 |     SET_IVT(0x10, FUNC16(entry_10));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:51:5: note: in expansion of macro 'SET_IVT'
   51 |     SET_IVT(0x10, FUNC16(entry_10));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:52:5: note: in expansion of macro 'SET_IVT'
   52 |     SET_IVT(0x11, FUNC16(entry_11));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:52:5: note: in expansion of macro 'SET_IVT'
   52 |     SET_IVT(0x11, FUNC16(entry_11));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:53:5: note: in expansion of macro 'SET_IVT'
   53 |     SET_IVT(0x12, FUNC16(entry_12));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:53:5: note: in expansion of macro 'SET_IVT'
   53 |     SET_IVT(0x12, FUNC16(entry_12));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:54:5: note: in expansion of macro 'SET_IVT'
   54 |     SET_IVT(0x13, FUNC16(entry_13_official));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:54:5: note: in expansion of macro 'SET_IVT'
   54 |     SET_IVT(0x13, FUNC16(entry_13_official));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:55:5: note: in expansion of macro 'SET_IVT'
   55 |     SET_IVT(0x14, FUNC16(entry_14));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:55:5: note: in expansion of macro 'SET_IVT'
   55 |     SET_IVT(0x14, FUNC16(entry_14));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:56:5: note: in expansion of macro 'SET_IVT'
   56 |     SET_IVT(0x15, FUNC16(entry_15_official));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:56:5: note: in expansion of macro 'SET_IVT'
   56 |     SET_IVT(0x15, FUNC16(entry_15_official));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:57:5: note: in expansion of macro 'SET_IVT'
   57 |     SET_IVT(0x16, FUNC16(entry_16));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:57:5: note: in expansion of macro 'SET_IVT'
   57 |     SET_IVT(0x16, FUNC16(entry_16));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:58:5: note: in expansion of macro 'SET_IVT'
   58 |     SET_IVT(0x17, FUNC16(entry_17));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:58:5: note: in expansion of macro 'SET_IVT'
   58 |     SET_IVT(0x17, FUNC16(entry_17));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:59:5: note: in expansion of macro 'SET_IVT'
   59 |     SET_IVT(0x18, FUNC16(entry_18));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:59:5: note: in expansion of macro 'SET_IVT'
   59 |     SET_IVT(0x18, FUNC16(entry_18));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:60:5: note: in expansion of macro 'SET_IVT'
   60 |     SET_IVT(0x19, FUNC16(entry_19_official));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:60:5: note: in expansion of macro 'SET_IVT'
   60 |     SET_IVT(0x19, FUNC16(entry_19_official));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:61:5: note: in expansion of macro 'SET_IVT'
   61 |     SET_IVT(0x1a, FUNC16(entry_1a_official));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:61:5: note: in expansion of macro 'SET_IVT'
   61 |     SET_IVT(0x1a, FUNC16(entry_1a_official));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:62:5: note: in expansion of macro 'SET_IVT'
   62 |     SET_IVT(0x40, FUNC16(entry_40));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:62:5: note: in expansion of macro 'SET_IVT'
   62 |     SET_IVT(0x40, FUNC16(entry_40));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:70:5: note: in expansion of macro 'SET_IVT'
   70 |     SET_IVT(0x79, SEGOFF(0, 0));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:70:5: note: in expansion of macro 'SET_IVT'
   70 |     SET_IVT(0x79, SEGOFF(0, 0));
      |     ^~~~~~~
In function 'bda_init',
    inlined from 'interface_init' at ./src/post.c:114:5,
    inlined from 'maininit' at ./src/post.c:200:5:
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/post.c:86:5: note: in expansion of macro 'SET_BDA'
   86 |     SET_BDA(ebda_seg, ebda_seg);
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/post.c:88:5: note: in expansion of macro 'SET_BDA'
   88 |     SET_BDA(mem_size_kb, ebda_seg / (1024/16));
      |     ^~~~~~~
In function 'get_ebda_seg',
    inlined from 'get_ebda_ptr' at ./src/biosvar.h:66:12,
    inlined from 'bda_init' at ./src/post.c:91:46,
    inlined from 'interface_init' at ./src/post.c:114:5,
    inlined from 'maininit' at ./src/post.c:200:5:
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
./src/biosvar.h:60:12: note: in expansion of macro 'GET_BDA'
   60 |     return GET_BDA(ebda_seg);
      |            ^~~~~~~
In function 'kbd_init',
    inlined from 'interface_init' at ./src/post.c:121:5,
    inlined from 'maininit' at ./src/post.c:200:5:
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/kbd.c:23:5: note: in expansion of macro 'SET_BDA'
   23 |     SET_BDA(kbd_flag1, KF1_101KBD);
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/kbd.c:24:5: note: in expansion of macro 'SET_BDA'
   24 |     SET_BDA(kbd_buf_head, x);
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/kbd.c:25:5: note: in expansion of macro 'SET_BDA'
   25 |     SET_BDA(kbd_buf_tail, x);
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/kbd.c:26:5: note: in expansion of macro 'SET_BDA'
   26 |     SET_BDA(kbd_buf_start_offset, x);
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/kbd.c:28:5: note: in expansion of macro 'SET_BDA'
   28 |     SET_BDA(kbd_buf_end_offset
      |     ^~~~~~~
In function 'set_equipment_flags',
    inlined from 'mouse_init' at ./src/mouse.c:23:5,
    inlined from 'interface_init' at ./src/post.c:122:5,
    inlined from 'maininit' at ./src/post.c:200:5:
./src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'set_equipment_flags',
    inlined from 'mathcp_setup' at ./src/misc.c:66:5,
    inlined from 'platform_hardware_setup' at ./src/post.c:146:5,
    inlined from 'maininit' at ./src/post.c:203:5:
./src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'clock_setup',
    inlined from 'platform_hardware_setup' at ./src/post.c:154:5,
    inlined from 'maininit' at ./src/post.c:203:5:
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/clock.c:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(timer_counter, ticks % TICKS_PER_DAY);
      |     ^~~~~~~
In file included from build/bios/ccode32flat.o.tmp.c:12:
In function 'sercon_setup',
    inlined from 'maininit' at ./src/post.c:211:5:
./src/sercon.c:528:13: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  528 |     vgabios = GET_IVT(0x10);
./src/sercon.c:528:13: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
./src/sercon.c:528:13: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/sercon.c:541:5: note: in expansion of macro 'SET_IVT'
  541 |     SET_IVT(0x10, FUNC16(entry_sercon));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/sercon.c:541:5: note: in expansion of macro 'SET_IVT'
  541 |     SET_IVT(0x10, FUNC16(entry_sercon));
      |     ^~~~~~~
In function 'irqtimer_check',
    inlined from 'interactive_bootmenu' at ./src/boot.c:755:37,
    inlined from 'maininit' at ./src/post.c:224:5:
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
./src/clock.c:357:15: note: in expansion of macro 'GET_BDA'
  357 |     return (((GET_BDA(timer_counter) + TICKS_PER_DAY - end) % TICKS_PER_DAY)
      |               ^~~~~~~
In function 'malloc_prepboot',
    inlined from 'prepareboot' at ./src/post.c:172:5,
    inlined from 'maininit' at ./src/post.c:228:5:
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
./src/malloc.c:547:18: note: in expansion of macro 'GET_BDA'
  547 |     u32 endlow = GET_BDA(mem_size_kb)*1024;
      |                  ^~~~~~~
In file included from build/bios/ccode32flat.o.tmp.c:5:
In function 'map_hd_drive',
    inlined from 'bcv_prepboot' at ./src/boot.c:840:13,
    inlined from 'prepareboot' at ./src/post.c:167:5,
    inlined from 'maininit' at ./src/post.c:228:5:
./src/block.c:261:19: warning: array subscript 0 is outside array bounds of 'struct bios_data_area_s[0]' [-Warray-bounds]
  261 |     int hdid = bda->hdcount;
      |                ~~~^~~~~~~~~
In function 'get_ebda_seg',
    inlined from 'get_ebda_ptr' at ./src/biosvar.h:66:12,
    inlined from 'fill_fdpt' at ./src/block.c:213:28,
    inlined from 'map_hd_drive' at ./src/block.c:269:5,
    inlined from 'bcv_prepboot' at ./src/boot.c:840:13,
    inlined from 'prepareboot' at ./src/post.c:167:5,
    inlined from 'maininit' at ./src/post.c:228:5:
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
./src/biosvar.h:60:12: note: in expansion of macro 'GET_BDA'
   60 |     return GET_BDA(ebda_seg);
      |            ^~~~~~~
In function 'get_ebda_seg',
    inlined from 'fill_fdpt' at ./src/block.c:239:9,
    inlined from 'map_hd_drive' at ./src/block.c:269:5,
    inlined from 'bcv_prepboot' at ./src/boot.c:840:13,
    inlined from 'prepareboot' at ./src/post.c:167:5,
    inlined from 'maininit' at ./src/post.c:228:5:
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
./src/biosvar.h:60:12: note: in expansion of macro 'GET_BDA'
   60 |     return GET_BDA(ebda_seg);
      |            ^~~~~~~
In function 'fill_fdpt',
    inlined from 'map_hd_drive' at ./src/block.c:269:5,
    inlined from 'bcv_prepboot' at ./src/boot.c:840:13,
    inlined from 'prepareboot' at ./src/post.c:167:5,
    inlined from 'maininit' at ./src/post.c:228:5:
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/block.c:239:9: note: in expansion of macro 'SET_IVT'
  239 |         SET_IVT(0x46, SEGOFF(get_ebda_seg(), offsetof(
      |         ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/block.c:239:9: note: in expansion of macro 'SET_IVT'
  239 |         SET_IVT(0x46, SEGOFF(get_ebda_seg(), offsetof(
      |         ^~~~~~~
In function 'get_ebda_seg',
    inlined from 'fill_fdpt' at ./src/block.c:236:9,
    inlined from 'map_hd_drive' at ./src/block.c:269:5,
    inlined from 'bcv_prepboot' at ./src/boot.c:840:13,
    inlined from 'prepareboot' at ./src/post.c:167:5,
    inlined from 'maininit' at ./src/post.c:228:5:
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
./src/biosvar.h:60:12: note: in expansion of macro 'GET_BDA'
   60 |     return GET_BDA(ebda_seg);
      |            ^~~~~~~
In function 'fill_fdpt',
    inlined from 'map_hd_drive' at ./src/block.c:269:5,
    inlined from 'bcv_prepboot' at ./src/boot.c:840:13,
    inlined from 'prepareboot' at ./src/post.c:167:5,
    inlined from 'maininit' at ./src/post.c:228:5:
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/block.c:236:9: note: in expansion of macro 'SET_IVT'
  236 |         SET_IVT(0x41, SEGOFF(get_ebda_seg(), offsetof(
      |         ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/block.c:236:9: note: in expansion of macro 'SET_IVT'
  236 |         SET_IVT(0x41, SEGOFF(get_ebda_seg(), offsetof(
      |         ^~~~~~~
In function 'set_equipment_flags',
    inlined from 'map_floppy_drive' at ./src/block.c:296:9,
    inlined from 'bcv_prepboot' at ./src/boot.c:836:13,
    inlined from 'prepareboot' at ./src/post.c:167:5,
    inlined from 'maininit' at ./src/post.c:228:5:
./src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'map_floppy_drive',
    inlined from 'bcv_prepboot' at ./src/boot.c:836:13,
    inlined from 'prepareboot' at ./src/post.c:167:5,
    inlined from 'maininit' at ./src/post.c:228:5:
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/block.c:297:9: note: in expansion of macro 'SET_BDA'
  297 |         SET_BDA(floppy_harddisk_info, 0x77);
      |         ^~~~~~~
In function 'set_equipment_flags',
    inlined from 'map_floppy_drive' at ./src/block.c:292:9,
    inlined from 'bcv_prepboot' at ./src/boot.c:836:13,
    inlined from 'prepareboot' at ./src/post.c:167:5,
    inlined from 'maininit' at ./src/post.c:228:5:
./src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'map_floppy_drive',
    inlined from 'bcv_prepboot' at ./src/boot.c:836:13,
    inlined from 'prepareboot' at ./src/post.c:167:5,
    inlined from 'maininit' at ./src/post.c:228:5:
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/block.c:293:9: note: in expansion of macro 'SET_BDA'
  293 |         SET_BDA(floppy_harddisk_info, 0x07);
      |         ^~~~~~~
  Compiling whole program build/bios/code32seg.o
  Compiling whole program build/bios/ccode16.o
  Compiling to assembler build/bios/src/asm-offsets.s
  Generating offset file build/bios/asm-offsets.h
  Compiling (16bit) build/bios/romlayout.o
  Building ld scripts
Version: 1.16.2-debian-1.16.2-1
ld: warning: build/bios/romlayout.o: missing .note.GNU-stack section implies executable stack
ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
Fixed space: 0xe05b-0x10000  total: 8101  slack: 13  Percent slack: 0.2%
16bit size:           34720
32bit segmented size: 2297
32bit flat size:      30407
32bit flat init size: 53952
Lowmem size:          2208
f-segment var size:   1216
  Linking build/bios/rom16.o
ld: warning: build/bios/code16.o: requires executable stack (because the .note.GNU-stack section is executable)
ld: warning: build/bios/rom16.o has a LOAD segment with RWX permissions
  Stripping build/bios/rom16.noexec.o
  Linking build/bios/rom32seg.o
  Stripping build/bios/rom32seg.noexec.o
  Linking build/bios/rom.o
ld: warning: build/bios/rom32seg.noexec.o: missing .note.GNU-stack section implies executable stack
ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
ld: warning: build/bios/rom.o has a LOAD segment with RWX permissions
  Prepping build/bios/bios.bin.prep
Total size: 129056  Fixed: 68640  Free: 2016 (used 98.5% of 128KiB rom)
  Creating build/bios/bios.bin
make[1]: Leaving directory '/build/seabios-1.16.2'
rm -f build/bios.bin
ln build/bios/bios.bin build/bios.bin

=== Building bios-256k.bin ===

set -e; if [ ! -e build/bios-256k/.config.old ]; then rm -rf build/bios-256k; mkdir -p build/bios-256k; for x in QEMU=y ROM_SIZE=256; do echo CONFIG_$x; done > build/bios-256k/.config; /usr/bin/make PYTHON="python3 -B" KCONFIG_CONFIG=/build/seabios-1.16.2/build/bios-256k/.config OUT=build/bios-256k/ oldnoconfig; fi
make[1]: Entering directory '/build/seabios-1.16.2'
scripts/kconfig/conf --olddefconfig /build/seabios-1.16.2/src/Kconfig
#
# configuration written to /build/seabios-1.16.2/build/bios-256k/.config
#
make[1]: Leaving directory '/build/seabios-1.16.2'
/usr/bin/make PYTHON="python3 -B" $(cat build/env) KCONFIG_CONFIG=/build/seabios-1.16.2/build/bios-256k/.config OUT=build/bios-256k/ build/bios-256k/bios.bin
make[1]: Entering directory '/build/seabios-1.16.2'
  Build Kconfig config file
  Compile checking build/bios-256k/src/misc.o
In file included from src/biosvar.h:10,
                 from src/misc.c:8:
src/misc.c: In function 'handle_12':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/misc.c:36:16: note: in expansion of macro 'GET_BDA'
   36 |     regs->ax = GET_BDA(mem_size_kb);
      |                ^~~~~~~
src/misc.c: In function 'handle_11':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/misc.c:44:16: note: in expansion of macro 'GET_BDA'
   44 |     regs->ax = GET_BDA(equipment_list_flags);
      |                ^~~~~~~
In function 'set_equipment_flags',
    inlined from 'mathcp_setup' at src/misc.c:66:5:
src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
  Compile checking build/bios-256k/src/stacks.o
  Compile checking build/bios-256k/src/output.o
In file included from src/output.c:9:
src/output.c: In function 'screenc':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
src/output.c:77:25: note: in expansion of macro 'GET_IVT'
   77 |     if (!MODESEGMENT && GET_IVT(0x10).segoff == FUNC16(entry_10).segoff)
      |                         ^~~~~~~
  Compile checking build/bios-256k/src/string.o
  Compile checking build/bios-256k/src/block.o
src/block.c: In function 'map_hd_drive':
src/block.c:261:19: warning: array subscript 0 is outside array bounds of 'struct bios_data_area_s[0]' [-Warray-bounds]
  261 |     int hdid = bda->hdcount;
      |                   ^~
In file included from src/biosvar.h:10,
                 from src/block.c:8:
In function 'get_ebda_seg',
    inlined from 'get_ebda_ptr' at src/biosvar.h:66:12,
    inlined from 'fill_fdpt' at src/block.c:213:28,
    inlined from 'map_hd_drive' at src/block.c:269:5:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/biosvar.h:60:12: note: in expansion of macro 'GET_BDA'
   60 |     return GET_BDA(ebda_seg);
      |            ^~~~~~~
In function 'get_ebda_seg',
    inlined from 'fill_fdpt' at src/block.c:239:9,
    inlined from 'map_hd_drive' at src/block.c:269:5:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/biosvar.h:60:12: note: in expansion of macro 'GET_BDA'
   60 |     return GET_BDA(ebda_seg);
      |            ^~~~~~~
In function 'fill_fdpt',
    inlined from 'map_hd_drive' at src/block.c:269:5:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/block.c:239:9: note: in expansion of macro 'SET_IVT'
  239 |         SET_IVT(0x46, SEGOFF(get_ebda_seg(), offsetof(
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/block.c:239:9: note: in expansion of macro 'SET_IVT'
  239 |         SET_IVT(0x46, SEGOFF(get_ebda_seg(), offsetof(
      |         ^~~~~~~
In function 'get_ebda_seg',
    inlined from 'fill_fdpt' at src/block.c:236:9,
    inlined from 'map_hd_drive' at src/block.c:269:5:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/biosvar.h:60:12: note: in expansion of macro 'GET_BDA'
   60 |     return GET_BDA(ebda_seg);
      |            ^~~~~~~
In function 'fill_fdpt',
    inlined from 'map_hd_drive' at src/block.c:269:5:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/block.c:236:9: note: in expansion of macro 'SET_IVT'
  236 |         SET_IVT(0x41, SEGOFF(get_ebda_seg(), offsetof(
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/block.c:236:9: note: in expansion of macro 'SET_IVT'
  236 |         SET_IVT(0x41, SEGOFF(get_ebda_seg(), offsetof(
      |         ^~~~~~~
In function 'set_equipment_flags',
    inlined from 'map_floppy_drive' at src/block.c:296:9:
src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
src/block.c: In function 'map_floppy_drive':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/block.c:297:9: note: in expansion of macro 'SET_BDA'
  297 |         SET_BDA(floppy_harddisk_info, 0x77);
      |         ^~~~~~~
In function 'set_equipment_flags',
    inlined from 'map_floppy_drive' at src/block.c:292:9:
src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
src/block.c: In function 'map_floppy_drive':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/block.c:293:9: note: in expansion of macro 'SET_BDA'
  293 |         SET_BDA(floppy_harddisk_info, 0x07);
      |         ^~~~~~~
  Compile checking build/bios-256k/src/cdrom.o
In file included from src/biosvar.h:10,
                 from src/cdrom.c:8:
src/cdrom.c: In function 'cdrom_boot':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
src/cdrom.c:264:9: note: in expansion of macro 'SET_BDA'
  264 |         SET_BDA(hdcount, GET_BDA(hdcount) + 1);
      |         ^~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/cdrom.c:264:26: note: in expansion of macro 'GET_BDA'
  264 |         SET_BDA(hdcount, GET_BDA(hdcount) + 1);
      |                          ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/cdrom.c:264:9: note: in expansion of macro 'SET_BDA'
  264 |         SET_BDA(hdcount, GET_BDA(hdcount) + 1);
      |         ^~~~~~~
In function 'set_equipment_flags',
    inlined from 'cdrom_boot' at src/cdrom.c:242:9:
src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
  Compile checking build/bios-256k/src/disk.o
In file included from src/biosvar.h:10,
                 from src/disk.c:8:
src/disk.c: In function '__disk_ret_unimplemented':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/disk.c:45:9: note: in expansion of macro 'SET_BDA'
   45 |         SET_BDA(disk_last_status, code);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/disk.c:43:9: note: in expansion of macro 'SET_BDA'
   43 |         SET_BDA(floppy_last_status, code);
      |         ^~~~~~~
src/disk.c: In function '__disk_ret':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/disk.c:31:9: note: in expansion of macro 'SET_BDA'
   31 |         SET_BDA(disk_last_status, code);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/disk.c:29:9: note: in expansion of macro 'SET_BDA'
   29 |         SET_BDA(floppy_last_status, code);
      |         ^~~~~~~
src/disk.c: In function 'disk_1308':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/disk.c:297:17: note: in expansion of macro 'GET_BDA'
  297 |         count = GET_BDA(hdcount);
      |                 ^~~~~~~
src/disk.c: In function 'disk_13':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/disk.c:626:5: note: in expansion of macro 'SET_BDA'
  626 |     SET_BDA(disk_interrupt_flag, 0);
      |     ^~~~~~~
In function 'disk_1301',
    inlined from 'disk_13' at src/disk.c:630:16:
src/disk.c:218:11: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  218 |         v = GET_BDA(disk_last_status);
src/disk.c:216:11: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  216 |         v = GET_BDA(floppy_last_status);
src/disk.c: In function 'handle_76':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/disk.c:777:5: note: in expansion of macro 'SET_BDA'
  777 |     SET_BDA(disk_interrupt_flag, 0xff);
      |     ^~~~~~~
  Compile checking build/bios-256k/src/mouse.o
In file included from src/mouse.c:8:
In function 'set_equipment_flags',
    inlined from 'mouse_init' at src/mouse.c:23:5:
src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
In file included from src/biosvar.h:10:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'get_ebda_seg',
    inlined from 'mouse_15c207' at src/mouse.c:231:20,
    inlined from 'handle_15c2' at src/mouse.c:272:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/biosvar.h:60:12: note: in expansion of macro 'GET_BDA'
   60 |     return GET_BDA(ebda_seg);
      |            ^~~~~~~
In function 'get_ebda_seg',
    inlined from 'mouse_15c205' at src/mouse.c:162:20,
    inlined from 'handle_15c2' at src/mouse.c:270:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/biosvar.h:60:12: note: in expansion of macro 'GET_BDA'
   60 |     return GET_BDA(ebda_seg);
      |            ^~~~~~~
In function 'get_ebda_seg',
    inlined from 'mouse_15c20001' at src/mouse.c:56:20,
    inlined from 'mouse_15c200' at src/mouse.c:82:16,
    inlined from 'handle_15c2' at src/mouse.c:265:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/biosvar.h:60:12: note: in expansion of macro 'GET_BDA'
   60 |     return GET_BDA(ebda_seg);
      |            ^~~~~~~
In function 'get_ebda_seg',
    inlined from 'process_mouse' at src/mouse.c:322:20:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/biosvar.h:60:12: note: in expansion of macro 'GET_BDA'
   60 |     return GET_BDA(ebda_seg);
      |            ^~~~~~~
  Compile checking build/bios-256k/src/kbd.o
In file included from src/biosvar.h:10,
                 from src/kbd.c:8:
src/kbd.c: In function 'kbd_set_flag':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:397:18: note: in expansion of macro 'GET_BDA'
  397 |     u16 flags0 = GET_BDA(kbd_flag0);
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:398:17: note: in expansion of macro 'GET_BDA'
  398 |     u8 flags1 = GET_BDA(kbd_flag1);
      |                 ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:407:5: note: in expansion of macro 'SET_BDA'
  407 |     SET_BDA(kbd_flag0, flags0);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:408:5: note: in expansion of macro 'SET_BDA'
  408 |     SET_BDA(kbd_flag1, flags1);
      |     ^~~~~~~
src/kbd.c: In function 'set_leds':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:230:23: note: in expansion of macro 'GET_BDA'
  230 |     u8 shift_flags = (GET_BDA(kbd_flag0) >> 4) & 0x07;
      |                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:231:18: note: in expansion of macro 'GET_BDA'
  231 |     u8 kbd_led = GET_BDA(kbd_led);
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:241:5: note: in expansion of macro 'SET_BDA'
  241 |     SET_BDA(kbd_led, kbd_led);
      |     ^~~~~~~
src/kbd.c: In function 'dequeue_key':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:61:23: note: in expansion of macro 'GET_BDA'
   61 |         buffer_head = GET_BDA(kbd_buf_head);
      |                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:62:23: note: in expansion of macro 'GET_BDA'
   62 |         buffer_tail = GET_BDA(kbd_buf_tail);
      |                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:98:24: note: in expansion of macro 'GET_BDA'
   98 |     u16 buffer_start = GET_BDA(kbd_buf_start_offset);
      |                        ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:99:24: note: in expansion of macro 'GET_BDA'
   99 |     u16 buffer_end   = GET_BDA(kbd_buf_end_offset);
      |                        ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:104:5: note: in expansion of macro 'SET_BDA'
  104 |     SET_BDA(kbd_buf_head, buffer_head);
      |     ^~~~~~~
src/kbd.c: In function 'kbd_init':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:23:5: note: in expansion of macro 'SET_BDA'
   23 |     SET_BDA(kbd_flag1, KF1_101KBD);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:24:5: note: in expansion of macro 'SET_BDA'
   24 |     SET_BDA(kbd_buf_head, x);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:25:5: note: in expansion of macro 'SET_BDA'
   25 |     SET_BDA(kbd_buf_tail, x);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:26:5: note: in expansion of macro 'SET_BDA'
   26 |     SET_BDA(kbd_buf_start_offset, x);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:28:5: note: in expansion of macro 'SET_BDA'
   28 |     SET_BDA(kbd_buf_end_offset
      |     ^~~~~~~
src/kbd.c: In function 'enqueue_key':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:35:24: note: in expansion of macro 'GET_BDA'
   35 |     u16 buffer_start = GET_BDA(kbd_buf_start_offset);
      |                        ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:36:24: note: in expansion of macro 'GET_BDA'
   36 |     u16 buffer_end   = GET_BDA(kbd_buf_end_offset);
      |                        ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:38:23: note: in expansion of macro 'GET_BDA'
   38 |     u16 buffer_head = GET_BDA(kbd_buf_head);
      |                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:39:23: note: in expansion of macro 'GET_BDA'
   39 |     u16 buffer_tail = GET_BDA(kbd_buf_tail);
      |                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:50:5: note: in expansion of macro 'SET_BDA'
   50 |     SET_BDA(kbd_buf_tail, buffer_tail);
      |     ^~~~~~~
In function 'handle_1612',
    inlined from 'handle_16' at src/kbd.c:264:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:193:18: note: in expansion of macro 'GET_BDA'
  193 |     regs->ax = ((GET_BDA(kbd_flag0) & ~((KF1_RCTRL|KF1_RALT) << 8))
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:194:21: note: in expansion of macro 'GET_BDA'
  194 |                 | ((GET_BDA(kbd_flag1) & (KF1_RCTRL|KF1_RALT)) << 8));
      |                     ^~~~~~~
In function 'handle_1602',
    inlined from 'handle_16' at src/kbd.c:258:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:134:16: note: in expansion of macro 'GET_BDA'
  134 |     regs->al = GET_BDA(kbd_flag0);
      |                ^~~~~~~
In function '__process_key',
    inlined from 'process_key' at src/kbd.c:598:5:
src/kbd.c:459:8: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  459 |     u8 flags1 = GET_BDA(kbd_flag1);
      |        ^~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:473:9: note: in expansion of macro 'SET_BDA'
  473 |         SET_BDA(kbd_flag1, flags1 & ~(KF1_LAST_E0|KF1_LAST_E1));
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:529:14: note: in expansion of macro 'GET_BDA'
  529 |         if ((GET_BDA(kbd_flag0) & (KF0_CTRLACTIVE|KF0_ALTACTIVE))
      |              ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:532:13: note: in expansion of macro 'SET_BDA'
  532 |             SET_BDA(soft_reset_flag, 0x1234);
      |             ^~~~~~~
In function 'kbd_ctrl_break',
    inlined from '__process_key' at src/kbd.c:513:13,
    inlined from 'process_key' at src/kbd.c:598:5:
src/kbd.c:417:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  417 |     u16 buffer_start = GET_BDA(kbd_buf_start_offset);
      |         ^~~~~~~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:418:5: note: in expansion of macro 'SET_BDA'
  418 |     SET_BDA(kbd_buf_head, buffer_start);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:419:5: note: in expansion of macro 'SET_BDA'
  419 |     SET_BDA(kbd_buf_tail, buffer_start+2);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:422:5: note: in expansion of macro 'SET_BDA'
  422 |     SET_BDA(break_flag, 0x80);
      |     ^~~~~~~
In function '__process_key',
    inlined from 'process_key' at src/kbd.c:598:5:
src/kbd.c:552:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  552 |     u16 flags0 = GET_BDA(kbd_flag0);
      |         ^~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:463:9: note: in expansion of macro 'SET_BDA'
  463 |         SET_BDA(kbd_flag1, flags1 | eflag);
      |         ^~~~~~~
  Compile checking build/bios-256k/src/system.o
In file included from src/biosvar.h:10,
                 from src/system.c:8:
In function 'get_ebda_seg',
    inlined from 'handle_15c1' at src/system.c:255:16,
    inlined from 'handle_15' at src/system.c:352:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/biosvar.h:60:12: note: in expansion of macro 'GET_BDA'
   60 |     return GET_BDA(ebda_seg);
      |            ^~~~~~~
  Compile checking build/bios-256k/src/serial.o
In file included from src/serial.c:8:
In function 'set_equipment_flags',
    inlined from 'serial_setup' at src/serial.c:56:5:
src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
In file included from src/biosvar.h:10:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'detect_parport',
    inlined from 'lpt_setup' at src/serial.c:212:14:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/serial.c:199:5: note: in expansion of macro 'SET_BDA'
  199 |     SET_BDA(port_lpt[count], port);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/serial.c:200:5: note: in expansion of macro 'SET_BDA'
  200 |     SET_BDA(lpt_timeout[count], timeout);
      |     ^~~~~~~
In function 'set_equipment_flags',
    inlined from 'lpt_setup' at src/serial.c:217:5:
src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
  Compile checking build/bios-256k/src/sercon.o
In file included from src/biosvar.h:10,
                 from src/sercon.c:7:
In function 'cursor_pos_set',
    inlined from 'sercon_cursor_pos_set' at src/sercon.c:190:9:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/sercon.c:42:5: note: in expansion of macro 'SET_BDA'
   42 |     SET_BDA(cursor_pos[0], pos);
      |     ^~~~~~~
In function 'cursor_pos_row',
    inlined from 'sercon_lazy_lf' at src/sercon.c:270:11:
src/sercon.c:35:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   35 |     u16 pos = GET_BDA(cursor_pos[0]);
      |         ^~~
In function 'video_rows',
    inlined from 'sercon_lazy_lf' at src/sercon.c:271:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/sercon.c:19:12: note: in expansion of macro 'GET_BDA'
   19 |     return GET_BDA(video_rows)+1;
      |            ^~~~~~~
In function 'cursor_pos_row',
    inlined from 'sercon_lazy_cursor_sync' at src/sercon.c:198:14,
    inlined from 'sercon_lazy_flush' at src/sercon.c:236:5:
src/sercon.c:35:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   35 |     u16 pos = GET_BDA(cursor_pos[0]);
      |         ^~~
In function 'cursor_pos_row',
    inlined from 'sercon_lazy_putchar' at src/sercon.c:296:9:
src/sercon.c:35:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   35 |     u16 pos = GET_BDA(cursor_pos[0]);
      |         ^~~
In function 'cursor_pos_col',
    inlined from 'sercon_lazy_move_cursor' at src/sercon.c:285:11,
    inlined from 'sercon_lazy_putchar' at src/sercon.c:303:9:
src/sercon.c:29:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   29 |     u16 pos = GET_BDA(cursor_pos[0]);
      |         ^~~
In function 'video_cols',
    inlined from 'sercon_lazy_move_cursor' at src/sercon.c:286:16,
    inlined from 'sercon_lazy_putchar' at src/sercon.c:303:9:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/sercon.c:24:12: note: in expansion of macro 'GET_BDA'
   24 |     return GET_BDA(video_cols);
      |            ^~~~~~~
In function 'sercon_100f',
    inlined from 'handle_sercon' at src/sercon.c:505:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/sercon.c:456:16: note: in expansion of macro 'GET_BDA'
  456 |     regs->al = GET_BDA(video_mode);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/sercon.c:457:16: note: in expansion of macro 'GET_BDA'
  457 |     regs->ah = GET_BDA(video_cols);
      |                ^~~~~~~
In function 'cursor_pos_row',
    inlined from 'sercon_lazy_cr' at src/sercon.c:263:27,
    inlined from 'sercon_100e' at src/sercon.c:442:9,
    inlined from 'handle_sercon' at src/sercon.c:504:16:
src/sercon.c:35:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   35 |     u16 pos = GET_BDA(cursor_pos[0]);
      |         ^~~
In function 'cursor_pos_col',
    inlined from 'sercon_lazy_backspace' at src/sercon.c:254:11,
    inlined from 'sercon_100e' at src/sercon.c:439:9,
    inlined from 'handle_sercon' at src/sercon.c:504:16:
src/sercon.c:29:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   29 |     u16 pos = GET_BDA(cursor_pos[0]);
      |         ^~~
In function 'cursor_pos_row',
    inlined from 'sercon_lazy_backspace' at src/sercon.c:257:35,
    inlined from 'sercon_100e' at src/sercon.c:439:9,
    inlined from 'handle_sercon' at src/sercon.c:504:16:
src/sercon.c:35:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   35 |     u16 pos = GET_BDA(cursor_pos[0]);
      |         ^~~
In function 'video_rows',
    inlined from 'sercon_1009' at src/sercon.c:411:16,
    inlined from 'handle_sercon' at src/sercon.c:503:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/sercon.c:19:12: note: in expansion of macro 'GET_BDA'
   19 |     return GET_BDA(video_rows)+1;
      |            ^~~~~~~
In function 'video_cols',
    inlined from 'sercon_1009' at src/sercon.c:411:31,
    inlined from 'handle_sercon' at src/sercon.c:503:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/sercon.c:24:12: note: in expansion of macro 'GET_BDA'
   24 |     return GET_BDA(video_cols);
      |            ^~~~~~~
In function 'cursor_pos_row',
    inlined from 'sercon_1009' at src/sercon.c:412:16,
    inlined from 'handle_sercon' at src/sercon.c:503:16:
src/sercon.c:35:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   35 |     u16 pos = GET_BDA(cursor_pos[0]);
      |         ^~~
In function 'cursor_pos_col',
    inlined from 'sercon_1009' at src/sercon.c:427:33,
    inlined from 'handle_sercon' at src/sercon.c:503:16:
src/sercon.c:29:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   29 |     u16 pos = GET_BDA(cursor_pos[0]);
      |         ^~~
In function 'video_rows',
    inlined from 'sercon_1006' at src/sercon.c:384:25,
    inlined from 'handle_sercon' at src/sercon.c:501:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/sercon.c:19:12: note: in expansion of macro 'GET_BDA'
   19 |     return GET_BDA(video_rows)+1;
      |            ^~~~~~~
In function 'video_cols',
    inlined from 'sercon_1006' at src/sercon.c:385:25,
    inlined from 'handle_sercon' at src/sercon.c:501:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/sercon.c:24:12: note: in expansion of macro 'GET_BDA'
   24 |     return GET_BDA(video_cols);
      |            ^~~~~~~
In function 'sercon_1003',
    inlined from 'handle_sercon' at src/sercon.c:500:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/sercon.c:371:16: note: in expansion of macro 'GET_BDA'
  371 |     regs->cx = GET_BDA(cursor_type);
      |                ^~~~~~~
In function 'cursor_pos_row',
    inlined from 'sercon_1003' at src/sercon.c:372:16,
    inlined from 'handle_sercon' at src/sercon.c:500:16:
src/sercon.c:35:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   35 |     u16 pos = GET_BDA(cursor_pos[0]);
      |         ^~~
In function 'cursor_pos_col',
    inlined from 'sercon_1003' at src/sercon.c:373:16,
    inlined from 'handle_sercon' at src/sercon.c:500:16:
src/sercon.c:29:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   29 |     u16 pos = GET_BDA(cursor_pos[0]);
      |         ^~~
In function 'sercon_1001',
    inlined from 'handle_sercon' at src/sercon.c:498:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/sercon.c:359:5: note: in expansion of macro 'SET_BDA'
  359 |     SET_BDA(cursor_type, regs->cx);
      |     ^~~~~~~
In function 'cursor_pos_set',
    inlined from 'sercon_1000' at src/sercon.c:335:9,
    inlined from 'handle_sercon' at src/sercon.c:497:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/sercon.c:42:5: note: in expansion of macro 'SET_BDA'
   42 |     SET_BDA(cursor_pos[0], pos);
      |     ^~~~~~~
In function 'sercon_1000',
    inlined from 'handle_sercon' at src/sercon.c:497:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/sercon.c:336:9: note: in expansion of macro 'SET_BDA'
  336 |         SET_BDA(video_mode, mode);
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/sercon.c:337:9: note: in expansion of macro 'SET_BDA'
  337 |         SET_BDA(video_cols, cols);
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/sercon.c:338:9: note: in expansion of macro 'SET_BDA'
  338 |         SET_BDA(video_rows, rows-1);
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/sercon.c:339:9: note: in expansion of macro 'SET_BDA'
  339 |         SET_BDA(cursor_type, 0x0007);
      |         ^~~~~~~
src/sercon.c: In function 'sercon_setup':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
src/sercon.c:528:15: note: in expansion of macro 'GET_IVT'
  528 |     vgabios = GET_IVT(0x10);
      |               ^~~~~~~
src/sercon.c:528:13: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  528 |     vgabios = GET_IVT(0x10);
src/sercon.c:528:13: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/sercon.c:541:5: note: in expansion of macro 'SET_IVT'
  541 |     SET_IVT(0x10, FUNC16(entry_sercon));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/sercon.c:541:5: note: in expansion of macro 'SET_IVT'
  541 |     SET_IVT(0x10, FUNC16(entry_sercon));
      |     ^~~~~~~
  Compile checking build/bios-256k/src/clock.o
In file included from src/biosvar.h:10,
                 from src/clock.c:8:
src/clock.c: In function 'clear_usertimer':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/clock.c:383:11: note: in expansion of macro 'GET_BDA'
  383 |     if (!(GET_BDA(rtc_wait_flag) & RWS_WAIT_PENDING))
      |           ^~~~~~~
In function 'clear_usertimer',
    inlined from 'clear_usertimer' at src/clock.c:381:1:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/clock.c:386:5: note: in expansion of macro 'SET_BDA'
  386 |     SET_BDA(rtc_wait_flag, 0);
      |     ^~~~~~~
src/clock.c: In function 'clock_setup':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/clock.c:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(timer_counter, ticks % TICKS_PER_DAY);
      |     ^~~~~~~
In function 'handle_1a01',
    inlined from 'handle_1a' at src/clock.c:268:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/clock.c:86:5: note: in expansion of macro 'SET_BDA'
   86 |     SET_BDA(timer_counter, ticks);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/clock.c:87:5: note: in expansion of macro 'SET_BDA'
   87 |     SET_BDA(timer_rollover, 0); // reset flag
      |     ^~~~~~~
In function 'handle_1a00',
    inlined from 'handle_1a' at src/clock.c:267:16:
src/clock.c:73:9: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
   73 |     u32 ticks = GET_BDA(timer_counter);
      |         ^~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/clock.c:76:16: note: in expansion of macro 'GET_BDA'
   76 |     regs->al = GET_BDA(timer_rollover);
      |                ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/clock.c:77:5: note: in expansion of macro 'SET_BDA'
   77 |     SET_BDA(timer_rollover, 0); // reset flag
      |     ^~~~~~~
In function 'clock_update',
    inlined from 'handle_08' at src/clock.c:306:5:
src/clock.c:284:9: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  284 |     u32 counter = GET_BDA(timer_counter);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
src/clock.c:290:9: note: in expansion of macro 'SET_BDA'
  290 |         SET_BDA(timer_rollover, GET_BDA(timer_rollover) + 1);
      |         ^~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/clock.c:290:33: note: in expansion of macro 'GET_BDA'
  290 |         SET_BDA(timer_rollover, GET_BDA(timer_rollover) + 1);
      |                                 ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/clock.c:290:9: note: in expansion of macro 'SET_BDA'
  290 |         SET_BDA(timer_rollover, GET_BDA(timer_rollover) + 1);
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/clock.c:292:5: note: in expansion of macro 'SET_BDA'
  292 |     SET_BDA(timer_counter, counter);
      |     ^~~~~~~
src/clock.c: In function 'irqtimer_calc_ticks':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/clock.c:341:13: note: in expansion of macro 'GET_BDA'
  341 |     return (GET_BDA(timer_counter) + count + 1) % TICKS_PER_DAY;
      |             ^~~~~~~
src/clock.c: In function 'irqtimer_calc':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/clock.c:349:16: note: in expansion of macro 'GET_BDA'
  349 |         return GET_BDA(timer_counter);
      |                ^~~~~~~
src/clock.c: In function 'irqtimer_check':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/clock.c:357:15: note: in expansion of macro 'GET_BDA'
  357 |     return (((GET_BDA(timer_counter) + TICKS_PER_DAY - end) % TICKS_PER_DAY)
      |               ^~~~~~~
In function 'set_usertimer',
    inlined from 'handle_1586' at src/clock.c:403:15:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/clock.c:369:9: note: in expansion of macro 'GET_BDA'
  369 |     if (GET_BDA(rtc_wait_flag) & RWS_WAIT_PENDING)
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/clock.c:373:5: note: in expansion of macro 'SET_BDA'
  373 |     SET_BDA(rtc_wait_flag, RWS_WAIT_PENDING);  // Set status byte.
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/clock.c:374:5: note: in expansion of macro 'SET_BDA'
  374 |     SET_BDA(user_wait_complete_flag, SEGOFF(seg, offset));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/clock.c:374:5: note: in expansion of macro 'SET_BDA'
  374 |     SET_BDA(user_wait_complete_flag, SEGOFF(seg, offset));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/clock.c:375:5: note: in expansion of macro 'SET_BDA'
  375 |     SET_BDA(user_wait_timeout, usecs);
      |     ^~~~~~~
In function 'set_usertimer',
    inlined from 'handle_158300' at src/clock.c:417:15,
    inlined from 'handle_1583' at src/clock.c:448:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/clock.c:369:9: note: in expansion of macro 'GET_BDA'
  369 |     if (GET_BDA(rtc_wait_flag) & RWS_WAIT_PENDING)
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/clock.c:373:5: note: in expansion of macro 'SET_BDA'
  373 |     SET_BDA(rtc_wait_flag, RWS_WAIT_PENDING);  // Set status byte.
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/clock.c:374:5: note: in expansion of macro 'SET_BDA'
  374 |     SET_BDA(user_wait_complete_flag, SEGOFF(seg, offset));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/clock.c:374:5: note: in expansion of macro 'SET_BDA'
  374 |     SET_BDA(user_wait_complete_flag, SEGOFF(seg, offset));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/clock.c:375:5: note: in expansion of macro 'SET_BDA'
  375 |     SET_BDA(user_wait_timeout, usecs);
      |     ^~~~~~~
src/clock.c: In function 'handle_70':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/clock.c:484:10: note: in expansion of macro 'GET_BDA'
  484 |     if (!GET_BDA(rtc_wait_flag))
      |          ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/clock.c:488:16: note: in expansion of macro 'GET_BDA'
  488 |     u32 time = GET_BDA(user_wait_timeout);  // Time left in microseconds.
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/clock.c:501:9: note: in expansion of macro 'SET_BDA'
  501 |         SET_BDA(user_wait_timeout, time);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/clock.c:491:34: note: in expansion of macro 'GET_BDA'
  491 |         struct segoff_s segoff = GET_BDA(user_wait_complete_flag);
      |                                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/clock.c:491:34: note: in expansion of macro 'GET_BDA'
  491 |         struct segoff_s segoff = GET_BDA(user_wait_complete_flag);
      |                                  ^~~~~~~
  Compile checking build/bios-256k/src/resume.o
  Compile checking build/bios-256k/src/pnpbios.o
  Compile checking build/bios-256k/src/vgahooks.o
  Compile checking build/bios-256k/src/pcibios.o
  Compile checking build/bios-256k/src/apm.o
  Compile checking build/bios-256k/src/cp437.o
  Compile checking build/bios-256k/src/hw/pci.o
  Compile checking build/bios-256k/src/hw/timer.o
  Compile checking build/bios-256k/src/hw/rtc.o
  Compile checking build/bios-256k/src/hw/dma.o
  Compile checking build/bios-256k/src/hw/pic.o
  Compile checking build/bios-256k/src/hw/ps2port.o
  Compile checking build/bios-256k/src/hw/serialio.o
  Compile checking build/bios-256k/src/hw/usb.o
  Compile checking build/bios-256k/src/hw/usb-uhci.o
  Compile checking build/bios-256k/src/hw/usb-ohci.o
  Compile checking build/bios-256k/src/hw/usb-ehci.o
  Compile checking build/bios-256k/src/hw/usb-hid.o
  Compile checking build/bios-256k/src/hw/usb-msc.o
  Compile checking build/bios-256k/src/hw/usb-uas.o
  Compile checking build/bios-256k/src/hw/blockcmd.o
  Compile checking build/bios-256k/src/hw/floppy.o
In file included from src/biosvar.h:10,
                 from src/hw/floppy.c:8:
src/hw/floppy.c: In function 'floppy_wait_irq':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/hw/floppy.c:226:14: note: in expansion of macro 'GET_BDA'
  226 |     u8 frs = GET_BDA(floppy_recalibration_status);
      |              ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/hw/floppy.c:227:5: note: in expansion of macro 'SET_BDA'
  227 |     SET_BDA(floppy_recalibration_status, frs & ~FRS_IRQ);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/hw/floppy.c:235:15: note: in expansion of macro 'GET_BDA'
  235 |         frs = GET_BDA(floppy_recalibration_status);
      |               ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/hw/floppy.c:243:5: note: in expansion of macro 'SET_BDA'
  243 |     SET_BDA(floppy_recalibration_status, frs & ~FRS_IRQ);
      |     ^~~~~~~
src/hw/floppy.c: In function 'floppy_drive_pio':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/hw/floppy.c:372:5: note: in expansion of macro 'SET_BDA'
  372 |     SET_BDA(floppy_motor_counter, 255);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/hw/floppy.c:387:5: note: in expansion of macro 'SET_BDA'
  387 |     SET_BDA(floppy_motor_counter, FLOPPY_MOTOR_TICKS); // reset motor timeout
      |     ^~~~~~~
src/hw/floppy.c: In function 'floppy_prep':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/hw/floppy.c:494:11: note: in expansion of macro 'GET_BDA'
  494 |     if (!(GET_BDA(floppy_recalibration_status) & (1<<floppyid)) ||
      |           ^~~~~~~
In function 'floppy_drive_recal',
    inlined from 'floppy_prep' at src/hw/floppy.c:497:19:
src/hw/floppy.c:413:8: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  413 |     u8 frs = GET_BDA(floppy_recalibration_status);
      |        ^~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/hw/floppy.c:414:5: note: in expansion of macro 'SET_BDA'
  414 |     SET_BDA(floppy_recalibration_status, frs | (1<<floppyid));
      |     ^~~~~~~
In function 'floppy_media_sense',
    inlined from 'floppy_prep' at src/hw/floppy.c:502:15:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/hw/floppy.c:478:5: note: in expansion of macro 'SET_BDA'
  478 |     SET_BDA(floppy_last_data_rate, (old_data_rate<<2) | (data_rate<<6));
      |     ^~~~~~~
src/hw/floppy.c: In function 'floppy_setup':
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/hw/floppy.c:151:5: note: in expansion of macro 'SET_IVT'
  151 |     SET_IVT(0x1E, SEGOFF(SEG_BIOS
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/hw/floppy.c:151:5: note: in expansion of macro 'SET_IVT'
  151 |     SET_IVT(0x1E, SEGOFF(SEG_BIOS
      |     ^~~~~~~
In function 'floppy_reset',
    inlined from 'floppy_process_op' at src/hw/floppy.c:691:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/hw/floppy.c:594:5: note: in expansion of macro 'SET_BDA'
  594 |     SET_BDA(floppy_recalibration_status, 0);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/hw/floppy.c:595:5: note: in expansion of macro 'SET_BDA'
  595 |     SET_BDA(floppy_media_state[0], 0);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/hw/floppy.c:596:5: note: in expansion of macro 'SET_BDA'
  596 |     SET_BDA(floppy_media_state[1], 0);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/hw/floppy.c:597:5: note: in expansion of macro 'SET_BDA'
  597 |     SET_BDA(floppy_track[0], 0);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/hw/floppy.c:598:5: note: in expansion of macro 'SET_BDA'
  598 |     SET_BDA(floppy_track[1], 0);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/hw/floppy.c:599:5: note: in expansion of macro 'SET_BDA'
  599 |     SET_BDA(floppy_last_data_rate, 0);
      |     ^~~~~~~
src/hw/floppy.c: In function 'handle_0e':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/hw/floppy.c:719:14: note: in expansion of macro 'GET_BDA'
  719 |     u8 frs = GET_BDA(floppy_recalibration_status);
      |              ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/hw/floppy.c:720:5: note: in expansion of macro 'SET_BDA'
  720 |     SET_BDA(floppy_recalibration_status, frs | FRS_IRQ);
      |     ^~~~~~~
src/hw/floppy.c: In function 'floppy_tick':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/hw/floppy.c:733:17: note: in expansion of macro 'GET_BDA'
  733 |     u8 fcount = GET_BDA(floppy_motor_counter);
      |                 ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/hw/floppy.c:736:9: note: in expansion of macro 'SET_BDA'
  736 |         SET_BDA(floppy_motor_counter, fcount);
      |         ^~~~~~~
  Compile checking build/bios-256k/src/hw/ata.o
In file included from src/biosvar.h:10,
                 from src/hw/ata.c:9:
src/hw/ata.c: In function 'ata_setup':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/hw/ata.c:1051:5: note: in expansion of macro 'SET_BDA'
 1051 |     SET_BDA(disk_control_byte, 0xc0);
      |     ^~~~~~~
  Compile checking build/bios-256k/src/hw/ramdisk.o
  Compile checking build/bios-256k/src/hw/lsi-scsi.o
  Compile checking build/bios-256k/src/hw/esp-scsi.o
  Compile checking build/bios-256k/src/hw/megasas.o
  Compile checking build/bios-256k/src/hw/mpt-scsi.o
  Compile checking build/bios-256k/src/post.o
In file included from src/biosvar.h:10,
                 from src/post.c:8:
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:49:5: note: in expansion of macro 'SET_IVT'
   49 |     SET_IVT(0x02, FUNC16(entry_02));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:49:5: note: in expansion of macro 'SET_IVT'
   49 |     SET_IVT(0x02, FUNC16(entry_02));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:50:5: note: in expansion of macro 'SET_IVT'
   50 |     SET_IVT(0x05, FUNC16(entry_05));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:50:5: note: in expansion of macro 'SET_IVT'
   50 |     SET_IVT(0x05, FUNC16(entry_05));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:51:5: note: in expansion of macro 'SET_IVT'
   51 |     SET_IVT(0x10, FUNC16(entry_10));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:51:5: note: in expansion of macro 'SET_IVT'
   51 |     SET_IVT(0x10, FUNC16(entry_10));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:52:5: note: in expansion of macro 'SET_IVT'
   52 |     SET_IVT(0x11, FUNC16(entry_11));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:52:5: note: in expansion of macro 'SET_IVT'
   52 |     SET_IVT(0x11, FUNC16(entry_11));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:53:5: note: in expansion of macro 'SET_IVT'
   53 |     SET_IVT(0x12, FUNC16(entry_12));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:53:5: note: in expansion of macro 'SET_IVT'
   53 |     SET_IVT(0x12, FUNC16(entry_12));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:54:5: note: in expansion of macro 'SET_IVT'
   54 |     SET_IVT(0x13, FUNC16(entry_13_official));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:54:5: note: in expansion of macro 'SET_IVT'
   54 |     SET_IVT(0x13, FUNC16(entry_13_official));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:55:5: note: in expansion of macro 'SET_IVT'
   55 |     SET_IVT(0x14, FUNC16(entry_14));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:55:5: note: in expansion of macro 'SET_IVT'
   55 |     SET_IVT(0x14, FUNC16(entry_14));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:56:5: note: in expansion of macro 'SET_IVT'
   56 |     SET_IVT(0x15, FUNC16(entry_15_official));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:56:5: note: in expansion of macro 'SET_IVT'
   56 |     SET_IVT(0x15, FUNC16(entry_15_official));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:57:5: note: in expansion of macro 'SET_IVT'
   57 |     SET_IVT(0x16, FUNC16(entry_16));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:57:5: note: in expansion of macro 'SET_IVT'
   57 |     SET_IVT(0x16, FUNC16(entry_16));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:58:5: note: in expansion of macro 'SET_IVT'
   58 |     SET_IVT(0x17, FUNC16(entry_17));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:58:5: note: in expansion of macro 'SET_IVT'
   58 |     SET_IVT(0x17, FUNC16(entry_17));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:59:5: note: in expansion of macro 'SET_IVT'
   59 |     SET_IVT(0x18, FUNC16(entry_18));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:59:5: note: in expansion of macro 'SET_IVT'
   59 |     SET_IVT(0x18, FUNC16(entry_18));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:60:5: note: in expansion of macro 'SET_IVT'
   60 |     SET_IVT(0x19, FUNC16(entry_19_official));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:60:5: note: in expansion of macro 'SET_IVT'
   60 |     SET_IVT(0x19, FUNC16(entry_19_official));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:61:5: note: in expansion of macro 'SET_IVT'
   61 |     SET_IVT(0x1a, FUNC16(entry_1a_official));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:61:5: note: in expansion of macro 'SET_IVT'
   61 |     SET_IVT(0x1a, FUNC16(entry_1a_official));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:62:5: note: in expansion of macro 'SET_IVT'
   62 |     SET_IVT(0x40, FUNC16(entry_40));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:62:5: note: in expansion of macro 'SET_IVT'
   62 |     SET_IVT(0x40, FUNC16(entry_40));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:70:5: note: in expansion of macro 'SET_IVT'
   70 |     SET_IVT(0x79, SEGOFF(0, 0));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:70:5: note: in expansion of macro 'SET_IVT'
   70 |     SET_IVT(0x79, SEGOFF(0, 0));
      |     ^~~~~~~
In function 'bda_init',
    inlined from 'interface_init' at src/post.c:114:5:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/post.c:86:5: note: in expansion of macro 'SET_BDA'
   86 |     SET_BDA(ebda_seg, ebda_seg);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/post.c:88:5: note: in expansion of macro 'SET_BDA'
   88 |     SET_BDA(mem_size_kb, ebda_seg / (1024/16));
      |     ^~~~~~~
In function 'get_ebda_seg',
    inlined from 'get_ebda_ptr' at src/biosvar.h:66:12,
    inlined from 'bda_init' at src/post.c:91:46,
    inlined from 'interface_init' at src/post.c:114:5:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/biosvar.h:60:12: note: in expansion of macro 'GET_BDA'
   60 |     return GET_BDA(ebda_seg);
      |            ^~~~~~~
  Compile checking build/bios-256k/src/e820map.o
  Compile checking build/bios-256k/src/malloc.o
In file included from src/biosvar.h:10,
                 from src/malloc.c:7:
src/malloc.c: In function 'malloc_prepboot':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/malloc.c:547:18: note: in expansion of macro 'GET_BDA'
  547 |     u32 endlow = GET_BDA(mem_size_kb)*1024;
      |                  ^~~~~~~
  Compile checking build/bios-256k/src/romfile.o
  Compile checking build/bios-256k/src/x86.o
  Compile checking build/bios-256k/src/optionroms.o
In function 'boot_irq_captured',
    inlined from 'init_pcirom' at src/optionroms.c:344:28:
src/optionroms.c:314:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  314 |     return GET_IVT(0x19).segoff != FUNC16(entry_19_official).segoff;
In function 'boot_irq_captured',
    inlined from 'init_pcirom' at src/optionroms.c:348:9:
src/optionroms.c:314:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  314 |     return GET_IVT(0x19).segoff != FUNC16(entry_19_official).segoff;
In file included from src/optionroms.c:10:
In function 'boot_irq_restore',
    inlined from 'init_pcirom' at src/optionroms.c:354:9:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/optionroms.c:322:5: note: in expansion of macro 'SET_IVT'
  322 |     SET_IVT(0x19, seabios);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/optionroms.c:322:5: note: in expansion of macro 'SET_IVT'
  322 |     SET_IVT(0x19, seabios);
      |     ^~~~~~~
  Compile checking build/bios-256k/src/pmm.o
  Compile checking build/bios-256k/src/font.o
  Compile checking build/bios-256k/src/boot.o
  Compile checking build/bios-256k/src/bootsplash.o
  Compile checking build/bios-256k/src/jpeg.o
  Compile checking build/bios-256k/src/bmp.o
  Compile checking build/bios-256k/src/tcgbios.o
  Compile checking build/bios-256k/src/sha1.o
  Compile checking build/bios-256k/src/hw/pcidevice.o
  Compile checking build/bios-256k/src/hw/ahci.o
  Compile checking build/bios-256k/src/hw/pvscsi.o
  Compile checking build/bios-256k/src/hw/usb-xhci.o
  Compile checking build/bios-256k/src/hw/usb-hub.o
  Compile checking build/bios-256k/src/hw/sdcard.o
  Compile checking build/bios-256k/src/fw/coreboot.o
  Compile checking build/bios-256k/src/fw/lzmadecode.o
  Compile checking build/bios-256k/src/fw/multiboot.o
  Compile checking build/bios-256k/src/fw/csm.o
  Compile checking build/bios-256k/src/fw/biostables.o
  Compile checking build/bios-256k/src/fw/paravirt.o
  Compile checking build/bios-256k/src/fw/shadow.o
  Compile checking build/bios-256k/src/fw/pciinit.o
  Compile checking build/bios-256k/src/fw/smm.o
  Compile checking build/bios-256k/src/fw/smp.o
  Compile checking build/bios-256k/src/fw/mtrr.o
  Compile checking build/bios-256k/src/fw/xen.o
  Compile checking build/bios-256k/src/fw/acpi.o
  Compile checking build/bios-256k/src/fw/mptable.o
  Compile checking build/bios-256k/src/fw/pirtable.o
  Compile checking build/bios-256k/src/fw/smbios.o
  Compile checking build/bios-256k/src/fw/romfile_loader.o
  Compile checking build/bios-256k/src/fw/dsdt_parser.o
  Compile checking build/bios-256k/src/hw/virtio-ring.o
  Compile checking build/bios-256k/src/hw/virtio-pci.o
  Compile checking build/bios-256k/src/hw/virtio-mmio.o
  Compile checking build/bios-256k/src/hw/virtio-blk.o
  Compile checking build/bios-256k/src/hw/virtio-scsi.o
  Compile checking build/bios-256k/src/hw/tpm_drivers.o
  Compile checking build/bios-256k/src/hw/nvme.o
  Compile checking build/bios-256k/src/sha256.o
  Compile checking build/bios-256k/src/sha512.o
  Compiling whole program build/bios-256k/ccode32flat.o
In file included from ./src/biosvar.h:10,
                 from ./src/misc.c:8,
                 from build/bios-256k/ccode32flat.o.tmp.c:1:
In function 'irqtimer_calc_ticks',
    inlined from 'irqtimer_calc' at ./src/clock.c:350:12,
    inlined from 'irqtimer_calc' at ./src/clock.c:346:1:
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
./src/clock.c:341:13: note: in expansion of macro 'GET_BDA'
  341 |     return (GET_BDA(timer_counter) + count + 1) % TICKS_PER_DAY;
      |             ^~~~~~~
./src/clock.c: In function 'irqtimer_calc':
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
./src/clock.c:349:16: note: in expansion of macro 'GET_BDA'
  349 |         return GET_BDA(timer_counter);
      |                ^~~~~~~
./src/output.c: In function 'screenc':
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
./src/output.c:77:25: note: in expansion of macro 'GET_IVT'
   77 |     if (!MODESEGMENT && GET_IVT(0x10).segoff == FUNC16(entry_10).segoff)
      |                         ^~~~~~~
In function 'irqtimer_check',
    inlined from 'get_keystroke_full' at ./src/boot.c:661:13:
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
./src/clock.c:357:15: note: in expansion of macro 'GET_BDA'
  357 |     return (((GET_BDA(timer_counter) + TICKS_PER_DAY - end) % TICKS_PER_DAY)
      |               ^~~~~~~
In function 'irqtimer_check',
    inlined from 'boot_fail' at ./src/boot.c:974:41:
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
./src/clock.c:357:15: note: in expansion of macro 'GET_BDA'
  357 |     return (((GET_BDA(timer_counter) + TICKS_PER_DAY - end) % TICKS_PER_DAY)
      |               ^~~~~~~
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:49:5: note: in expansion of macro 'SET_IVT'
   49 |     SET_IVT(0x02, FUNC16(entry_02));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:49:5: note: in expansion of macro 'SET_IVT'
   49 |     SET_IVT(0x02, FUNC16(entry_02));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:50:5: note: in expansion of macro 'SET_IVT'
   50 |     SET_IVT(0x05, FUNC16(entry_05));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:50:5: note: in expansion of macro 'SET_IVT'
   50 |     SET_IVT(0x05, FUNC16(entry_05));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:51:5: note: in expansion of macro 'SET_IVT'
   51 |     SET_IVT(0x10, FUNC16(entry_10));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:51:5: note: in expansion of macro 'SET_IVT'
   51 |     SET_IVT(0x10, FUNC16(entry_10));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:52:5: note: in expansion of macro 'SET_IVT'
   52 |     SET_IVT(0x11, FUNC16(entry_11));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:52:5: note: in expansion of macro 'SET_IVT'
   52 |     SET_IVT(0x11, FUNC16(entry_11));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:53:5: note: in expansion of macro 'SET_IVT'
   53 |     SET_IVT(0x12, FUNC16(entry_12));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:53:5: note: in expansion of macro 'SET_IVT'
   53 |     SET_IVT(0x12, FUNC16(entry_12));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:54:5: note: in expansion of macro 'SET_IVT'
   54 |     SET_IVT(0x13, FUNC16(entry_13_official));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:54:5: note: in expansion of macro 'SET_IVT'
   54 |     SET_IVT(0x13, FUNC16(entry_13_official));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:55:5: note: in expansion of macro 'SET_IVT'
   55 |     SET_IVT(0x14, FUNC16(entry_14));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:55:5: note: in expansion of macro 'SET_IVT'
   55 |     SET_IVT(0x14, FUNC16(entry_14));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:56:5: note: in expansion of macro 'SET_IVT'
   56 |     SET_IVT(0x15, FUNC16(entry_15_official));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:56:5: note: in expansion of macro 'SET_IVT'
   56 |     SET_IVT(0x15, FUNC16(entry_15_official));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:57:5: note: in expansion of macro 'SET_IVT'
   57 |     SET_IVT(0x16, FUNC16(entry_16));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:57:5: note: in expansion of macro 'SET_IVT'
   57 |     SET_IVT(0x16, FUNC16(entry_16));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:58:5: note: in expansion of macro 'SET_IVT'
   58 |     SET_IVT(0x17, FUNC16(entry_17));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:58:5: note: in expansion of macro 'SET_IVT'
   58 |     SET_IVT(0x17, FUNC16(entry_17));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:59:5: note: in expansion of macro 'SET_IVT'
   59 |     SET_IVT(0x18, FUNC16(entry_18));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:59:5: note: in expansion of macro 'SET_IVT'
   59 |     SET_IVT(0x18, FUNC16(entry_18));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:60:5: note: in expansion of macro 'SET_IVT'
   60 |     SET_IVT(0x19, FUNC16(entry_19_official));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:60:5: note: in expansion of macro 'SET_IVT'
   60 |     SET_IVT(0x19, FUNC16(entry_19_official));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:61:5: note: in expansion of macro 'SET_IVT'
   61 |     SET_IVT(0x1a, FUNC16(entry_1a_official));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:61:5: note: in expansion of macro 'SET_IVT'
   61 |     SET_IVT(0x1a, FUNC16(entry_1a_official));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:62:5: note: in expansion of macro 'SET_IVT'
   62 |     SET_IVT(0x40, FUNC16(entry_40));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:62:5: note: in expansion of macro 'SET_IVT'
   62 |     SET_IVT(0x40, FUNC16(entry_40));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:70:5: note: in expansion of macro 'SET_IVT'
   70 |     SET_IVT(0x79, SEGOFF(0, 0));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:70:5: note: in expansion of macro 'SET_IVT'
   70 |     SET_IVT(0x79, SEGOFF(0, 0));
      |     ^~~~~~~
In function 'bda_init',
    inlined from 'interface_init' at ./src/post.c:114:5:
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/post.c:86:5: note: in expansion of macro 'SET_BDA'
   86 |     SET_BDA(ebda_seg, ebda_seg);
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/post.c:88:5: note: in expansion of macro 'SET_BDA'
   88 |     SET_BDA(mem_size_kb, ebda_seg / (1024/16));
      |     ^~~~~~~
In function 'get_ebda_seg',
    inlined from 'get_ebda_ptr' at ./src/biosvar.h:66:12,
    inlined from 'bda_init' at ./src/post.c:91:46,
    inlined from 'interface_init' at ./src/post.c:114:5:
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
./src/biosvar.h:60:12: note: in expansion of macro 'GET_BDA'
   60 |     return GET_BDA(ebda_seg);
      |            ^~~~~~~
In function 'kbd_init',
    inlined from 'interface_init' at ./src/post.c:121:5:
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/kbd.c:23:5: note: in expansion of macro 'SET_BDA'
   23 |     SET_BDA(kbd_flag1, KF1_101KBD);
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/kbd.c:24:5: note: in expansion of macro 'SET_BDA'
   24 |     SET_BDA(kbd_buf_head, x);
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/kbd.c:25:5: note: in expansion of macro 'SET_BDA'
   25 |     SET_BDA(kbd_buf_tail, x);
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/kbd.c:26:5: note: in expansion of macro 'SET_BDA'
   26 |     SET_BDA(kbd_buf_start_offset, x);
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/kbd.c:28:5: note: in expansion of macro 'SET_BDA'
   28 |     SET_BDA(kbd_buf_end_offset
      |     ^~~~~~~
In function 'set_equipment_flags',
    inlined from 'mouse_init' at ./src/mouse.c:23:5,
    inlined from 'interface_init' at ./src/post.c:122:5:
./src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In file included from build/bios-256k/ccode32flat.o.tmp.c:47:
In function 'boot_irq_captured',
    inlined from 'init_pcirom' at ./src/optionroms.c:344:28:
./src/optionroms.c:314:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  314 |     return GET_IVT(0x19).segoff != FUNC16(entry_19_official).segoff;
In function 'boot_irq_captured',
    inlined from 'init_pcirom' at ./src/optionroms.c:348:9:
./src/optionroms.c:314:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  314 |     return GET_IVT(0x19).segoff != FUNC16(entry_19_official).segoff;
In function 'boot_irq_restore',
    inlined from 'init_pcirom' at ./src/optionroms.c:354:9:
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/optionroms.c:322:5: note: in expansion of macro 'SET_IVT'
  322 |     SET_IVT(0x19, seabios);
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/optionroms.c:322:5: note: in expansion of macro 'SET_IVT'
  322 |     SET_IVT(0x19, seabios);
      |     ^~~~~~~
In function 'floppy_setup',
    inlined from 'block_setup' at ./src/block.c:510:5,
    inlined from 'device_hardware_setup' at ./src/post.c:131:5:
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/hw/floppy.c:151:5: note: in expansion of macro 'SET_IVT'
  151 |     SET_IVT(0x1E, SEGOFF(SEG_BIOS
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/hw/floppy.c:151:5: note: in expansion of macro 'SET_IVT'
  151 |     SET_IVT(0x1E, SEGOFF(SEG_BIOS
      |     ^~~~~~~
In function 'ata_setup',
    inlined from 'block_setup' at ./src/block.c:511:5,
    inlined from 'device_hardware_setup' at ./src/post.c:131:5:
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/hw/ata.c:1051:5: note: in expansion of macro 'SET_BDA'
 1051 |     SET_BDA(disk_control_byte, 0xc0);
      |     ^~~~~~~
In function 'detect_parport',
    inlined from 'lpt_setup' at ./src/serial.c:212:14,
    inlined from 'device_hardware_setup' at ./src/post.c:132:5:
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/serial.c:199:5: note: in expansion of macro 'SET_BDA'
  199 |     SET_BDA(port_lpt[count], port);
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/serial.c:200:5: note: in expansion of macro 'SET_BDA'
  200 |     SET_BDA(lpt_timeout[count], timeout);
      |     ^~~~~~~
In function 'set_equipment_flags',
    inlined from 'lpt_setup' at ./src/serial.c:217:5,
    inlined from 'device_hardware_setup' at ./src/post.c:132:5:
./src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'set_equipment_flags',
    inlined from 'serial_setup' at ./src/serial.c:56:5,
    inlined from 'device_hardware_setup' at ./src/post.c:133:5:
./src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'set_equipment_flags',
    inlined from 'mathcp_setup' at ./src/misc.c:66:5,
    inlined from 'platform_hardware_setup' at ./src/post.c:146:5:
./src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'clock_setup',
    inlined from 'platform_hardware_setup' at ./src/post.c:154:5:
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/clock.c:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(timer_counter, ticks % TICKS_PER_DAY);
      |     ^~~~~~~
./src/cdrom.c: In function 'cdrom_boot':
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
./src/cdrom.c:264:9: note: in expansion of macro 'SET_BDA'
  264 |         SET_BDA(hdcount, GET_BDA(hdcount) + 1);
      |         ^~~~~~~
./src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
./src/cdrom.c:264:26: note: in expansion of macro 'GET_BDA'
  264 |         SET_BDA(hdcount, GET_BDA(hdcount) + 1);
      |                          ^~~~~~~
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/cdrom.c:264:9: note: in expansion of macro 'SET_BDA'
  264 |         SET_BDA(hdcount, GET_BDA(hdcount) + 1);
      |         ^~~~~~~
In function 'set_equipment_flags',
    inlined from 'cdrom_boot' at ./src/cdrom.c:242:9:
./src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In file included from build/bios-256k/ccode32flat.o.tmp.c:12:
In function 'sercon_setup',
    inlined from 'maininit' at ./src/post.c:211:5:
./src/sercon.c:528:13: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  528 |     vgabios = GET_IVT(0x10);
./src/sercon.c:528:13: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
./src/sercon.c:528:13: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/sercon.c:541:5: note: in expansion of macro 'SET_IVT'
  541 |     SET_IVT(0x10, FUNC16(entry_sercon));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/sercon.c:541:5: note: in expansion of macro 'SET_IVT'
  541 |     SET_IVT(0x10, FUNC16(entry_sercon));
      |     ^~~~~~~
In function 'irqtimer_check',
    inlined from 'interactive_bootmenu' at ./src/boot.c:755:37,
    inlined from 'maininit' at ./src/post.c:224:5:
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
./src/clock.c:357:15: note: in expansion of macro 'GET_BDA'
  357 |     return (((GET_BDA(timer_counter) + TICKS_PER_DAY - end) % TICKS_PER_DAY)
      |               ^~~~~~~
In function 'malloc_prepboot',
    inlined from 'prepareboot' at ./src/post.c:172:5,
    inlined from 'maininit' at ./src/post.c:228:5:
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
./src/malloc.c:547:18: note: in expansion of macro 'GET_BDA'
  547 |     u32 endlow = GET_BDA(mem_size_kb)*1024;
      |                  ^~~~~~~
In file included from build/bios-256k/ccode32flat.o.tmp.c:5:
In function 'map_hd_drive',
    inlined from 'bcv_prepboot' at ./src/boot.c:840:13,
    inlined from 'prepareboot' at ./src/post.c:167:5,
    inlined from 'maininit' at ./src/post.c:228:5:
./src/block.c:261:19: warning: array subscript 0 is outside array bounds of 'struct bios_data_area_s[0]' [-Warray-bounds]
  261 |     int hdid = bda->hdcount;
      |                ~~~^~~~~~~~~
In function 'get_ebda_seg',
    inlined from 'get_ebda_ptr' at ./src/biosvar.h:66:12,
    inlined from 'fill_fdpt' at ./src/block.c:213:28,
    inlined from 'map_hd_drive' at ./src/block.c:269:5,
    inlined from 'bcv_prepboot' at ./src/boot.c:840:13,
    inlined from 'prepareboot' at ./src/post.c:167:5,
    inlined from 'maininit' at ./src/post.c:228:5:
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
./src/biosvar.h:60:12: note: in expansion of macro 'GET_BDA'
   60 |     return GET_BDA(ebda_seg);
      |            ^~~~~~~
In function 'get_ebda_seg',
    inlined from 'fill_fdpt' at ./src/block.c:239:9,
    inlined from 'map_hd_drive' at ./src/block.c:269:5,
    inlined from 'bcv_prepboot' at ./src/boot.c:840:13,
    inlined from 'prepareboot' at ./src/post.c:167:5,
    inlined from 'maininit' at ./src/post.c:228:5:
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
./src/biosvar.h:60:12: note: in expansion of macro 'GET_BDA'
   60 |     return GET_BDA(ebda_seg);
      |            ^~~~~~~
In function 'fill_fdpt',
    inlined from 'map_hd_drive' at ./src/block.c:269:5,
    inlined from 'bcv_prepboot' at ./src/boot.c:840:13,
    inlined from 'prepareboot' at ./src/post.c:167:5,
    inlined from 'maininit' at ./src/post.c:228:5:
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/block.c:239:9: note: in expansion of macro 'SET_IVT'
  239 |         SET_IVT(0x46, SEGOFF(get_ebda_seg(), offsetof(
      |         ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/block.c:239:9: note: in expansion of macro 'SET_IVT'
  239 |         SET_IVT(0x46, SEGOFF(get_ebda_seg(), offsetof(
      |         ^~~~~~~
In function 'get_ebda_seg',
    inlined from 'fill_fdpt' at ./src/block.c:236:9,
    inlined from 'map_hd_drive' at ./src/block.c:269:5,
    inlined from 'bcv_prepboot' at ./src/boot.c:840:13,
    inlined from 'prepareboot' at ./src/post.c:167:5,
    inlined from 'maininit' at ./src/post.c:228:5:
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
./src/biosvar.h:60:12: note: in expansion of macro 'GET_BDA'
   60 |     return GET_BDA(ebda_seg);
      |            ^~~~~~~
In function 'fill_fdpt',
    inlined from 'map_hd_drive' at ./src/block.c:269:5,
    inlined from 'bcv_prepboot' at ./src/boot.c:840:13,
    inlined from 'prepareboot' at ./src/post.c:167:5,
    inlined from 'maininit' at ./src/post.c:228:5:
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/block.c:236:9: note: in expansion of macro 'SET_IVT'
  236 |         SET_IVT(0x41, SEGOFF(get_ebda_seg(), offsetof(
      |         ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/block.c:236:9: note: in expansion of macro 'SET_IVT'
  236 |         SET_IVT(0x41, SEGOFF(get_ebda_seg(), offsetof(
      |         ^~~~~~~
In function 'set_equipment_flags',
    inlined from 'map_floppy_drive' at ./src/block.c:296:9,
    inlined from 'bcv_prepboot' at ./src/boot.c:836:13,
    inlined from 'prepareboot' at ./src/post.c:167:5,
    inlined from 'maininit' at ./src/post.c:228:5:
./src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'map_floppy_drive',
    inlined from 'bcv_prepboot' at ./src/boot.c:836:13,
    inlined from 'prepareboot' at ./src/post.c:167:5,
    inlined from 'maininit' at ./src/post.c:228:5:
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/block.c:297:9: note: in expansion of macro 'SET_BDA'
  297 |         SET_BDA(floppy_harddisk_info, 0x77);
      |         ^~~~~~~
In function 'set_equipment_flags',
    inlined from 'map_floppy_drive' at ./src/block.c:292:9,
    inlined from 'bcv_prepboot' at ./src/boot.c:836:13,
    inlined from 'prepareboot' at ./src/post.c:167:5,
    inlined from 'maininit' at ./src/post.c:228:5:
./src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'map_floppy_drive',
    inlined from 'bcv_prepboot' at ./src/boot.c:836:13,
    inlined from 'prepareboot' at ./src/post.c:167:5,
    inlined from 'maininit' at ./src/post.c:228:5:
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/block.c:293:9: note: in expansion of macro 'SET_BDA'
  293 |         SET_BDA(floppy_harddisk_info, 0x07);
      |         ^~~~~~~
  Compiling whole program build/bios-256k/code32seg.o
  Compiling whole program build/bios-256k/ccode16.o
  Compiling to assembler build/bios-256k/src/asm-offsets.s
  Generating offset file build/bios-256k/asm-offsets.h
  Compiling (16bit) build/bios-256k/romlayout.o
  Building ld scripts
Version: 1.16.2-debian-1.16.2-1
ld: warning: build/bios-256k/romlayout.o: missing .note.GNU-stack section implies executable stack
ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
Fixed space: 0xe05b-0x10000  total: 8101  slack: 15  Percent slack: 0.2%
16bit size:           38112
32bit segmented size: 2297
32bit flat size:      51287
32bit flat init size: 85056
Lowmem size:          2240
f-segment var size:   1232
  Linking build/bios-256k/rom16.o
ld: warning: build/bios-256k/code16.o: requires executable stack (because the .note.GNU-stack section is executable)
ld: warning: build/bios-256k/rom16.o has a LOAD segment with RWX permissions
  Stripping build/bios-256k/rom16.noexec.o
  Linking build/bios-256k/rom32seg.o
  Stripping build/bios-256k/rom32seg.noexec.o
  Linking build/bios-256k/rom.o
ld: warning: build/bios-256k/rom32seg.noexec.o: missing .note.GNU-stack section implies executable stack
ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
ld: warning: build/bios-256k/rom.o has a LOAD segment with RWX permissions
  Prepping build/bios-256k/bios.bin.prep
Total size: 186592  Fixed: 92928  Free: 75552 (used 71.2% of 256KiB rom)
  Creating build/bios-256k/bios.bin
make[1]: Leaving directory '/build/seabios-1.16.2'
rm -f build/bios-256k.bin
ln build/bios-256k/bios.bin build/bios-256k.bin

=== Building bios-microvm.bin ===

set -e; if [ ! -e build/bios-microvm/.config.old ]; then rm -rf build/bios-microvm; mkdir -p build/bios-microvm; for x in QEMU=y ROM_SIZE=128 XEN=n BOOTSPLASH=n ATA=n AHCI=n SDCARD=n PVSCSI=n ESP_SCSI=n LSI_SCSI=n MEGASAS=n MPT_SCSI=n FLOPPY=n FLASH_FLOPPY=n NVME=n PS2PORT=n USB=n LPT=n RTC_TIMER=n USE_SMM=n PMTIMER=n TCGBIOS=n HARDWARE_IRQ=n ACPI_PARSE=y; do echo CONFIG_$x; done > build/bios-microvm/.config; /usr/bin/make PYTHON="python3 -B" KCONFIG_CONFIG=/build/seabios-1.16.2/build/bios-microvm/.config OUT=build/bios-microvm/ oldnoconfig; fi
make[1]: Entering directory '/build/seabios-1.16.2'
scripts/kconfig/conf --olddefconfig /build/seabios-1.16.2/src/Kconfig
#
# configuration written to /build/seabios-1.16.2/build/bios-microvm/.config
#
make[1]: Leaving directory '/build/seabios-1.16.2'
/usr/bin/make PYTHON="python3 -B" $(cat build/env) KCONFIG_CONFIG=/build/seabios-1.16.2/build/bios-microvm/.config OUT=build/bios-microvm/ build/bios-microvm/bios.bin
make[1]: Entering directory '/build/seabios-1.16.2'
  Build Kconfig config file
  Compile checking build/bios-microvm/src/misc.o
In file included from src/biosvar.h:10,
                 from src/misc.c:8:
src/misc.c: In function 'handle_12':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/misc.c:36:16: note: in expansion of macro 'GET_BDA'
   36 |     regs->ax = GET_BDA(mem_size_kb);
      |                ^~~~~~~
src/misc.c: In function 'handle_11':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/misc.c:44:16: note: in expansion of macro 'GET_BDA'
   44 |     regs->ax = GET_BDA(equipment_list_flags);
      |                ^~~~~~~
In function 'set_equipment_flags',
    inlined from 'mathcp_setup' at src/misc.c:66:5:
src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
  Compile checking build/bios-microvm/src/stacks.o
  Compile checking build/bios-microvm/src/output.o
In file included from src/output.c:9:
src/output.c: In function 'screenc':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
src/output.c:77:25: note: in expansion of macro 'GET_IVT'
   77 |     if (!MODESEGMENT && GET_IVT(0x10).segoff == FUNC16(entry_10).segoff)
      |                         ^~~~~~~
  Compile checking build/bios-microvm/src/string.o
  Compile checking build/bios-microvm/src/block.o
src/block.c: In function 'map_hd_drive':
src/block.c:261:19: warning: array subscript 0 is outside array bounds of 'struct bios_data_area_s[0]' [-Warray-bounds]
  261 |     int hdid = bda->hdcount;
      |                   ^~
In file included from src/biosvar.h:10,
                 from src/block.c:8:
In function 'get_ebda_seg',
    inlined from 'get_ebda_ptr' at src/biosvar.h:66:12,
    inlined from 'fill_fdpt' at src/block.c:213:28,
    inlined from 'map_hd_drive' at src/block.c:269:5:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/biosvar.h:60:12: note: in expansion of macro 'GET_BDA'
   60 |     return GET_BDA(ebda_seg);
      |            ^~~~~~~
In function 'get_ebda_seg',
    inlined from 'fill_fdpt' at src/block.c:239:9,
    inlined from 'map_hd_drive' at src/block.c:269:5:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/biosvar.h:60:12: note: in expansion of macro 'GET_BDA'
   60 |     return GET_BDA(ebda_seg);
      |            ^~~~~~~
In function 'fill_fdpt',
    inlined from 'map_hd_drive' at src/block.c:269:5:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/block.c:239:9: note: in expansion of macro 'SET_IVT'
  239 |         SET_IVT(0x46, SEGOFF(get_ebda_seg(), offsetof(
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/block.c:239:9: note: in expansion of macro 'SET_IVT'
  239 |         SET_IVT(0x46, SEGOFF(get_ebda_seg(), offsetof(
      |         ^~~~~~~
In function 'get_ebda_seg',
    inlined from 'fill_fdpt' at src/block.c:236:9,
    inlined from 'map_hd_drive' at src/block.c:269:5:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/biosvar.h:60:12: note: in expansion of macro 'GET_BDA'
   60 |     return GET_BDA(ebda_seg);
      |            ^~~~~~~
In function 'fill_fdpt',
    inlined from 'map_hd_drive' at src/block.c:269:5:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/block.c:236:9: note: in expansion of macro 'SET_IVT'
  236 |         SET_IVT(0x41, SEGOFF(get_ebda_seg(), offsetof(
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/block.c:236:9: note: in expansion of macro 'SET_IVT'
  236 |         SET_IVT(0x41, SEGOFF(get_ebda_seg(), offsetof(
      |         ^~~~~~~
In function 'set_equipment_flags',
    inlined from 'map_floppy_drive' at src/block.c:296:9:
src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
src/block.c: In function 'map_floppy_drive':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/block.c:297:9: note: in expansion of macro 'SET_BDA'
  297 |         SET_BDA(floppy_harddisk_info, 0x77);
      |         ^~~~~~~
In function 'set_equipment_flags',
    inlined from 'map_floppy_drive' at src/block.c:292:9:
src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
src/block.c: In function 'map_floppy_drive':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/block.c:293:9: note: in expansion of macro 'SET_BDA'
  293 |         SET_BDA(floppy_harddisk_info, 0x07);
      |         ^~~~~~~
  Compile checking build/bios-microvm/src/cdrom.o
In file included from src/biosvar.h:10,
                 from src/cdrom.c:8:
src/cdrom.c: In function 'cdrom_boot':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
src/cdrom.c:264:9: note: in expansion of macro 'SET_BDA'
  264 |         SET_BDA(hdcount, GET_BDA(hdcount) + 1);
      |         ^~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/cdrom.c:264:26: note: in expansion of macro 'GET_BDA'
  264 |         SET_BDA(hdcount, GET_BDA(hdcount) + 1);
      |                          ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/cdrom.c:264:9: note: in expansion of macro 'SET_BDA'
  264 |         SET_BDA(hdcount, GET_BDA(hdcount) + 1);
      |         ^~~~~~~
In function 'set_equipment_flags',
    inlined from 'cdrom_boot' at src/cdrom.c:242:9:
src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
  Compile checking build/bios-microvm/src/disk.o
In file included from src/biosvar.h:10,
                 from src/disk.c:8:
src/disk.c: In function '__disk_ret_unimplemented':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/disk.c:45:9: note: in expansion of macro 'SET_BDA'
   45 |         SET_BDA(disk_last_status, code);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/disk.c:43:9: note: in expansion of macro 'SET_BDA'
   43 |         SET_BDA(floppy_last_status, code);
      |         ^~~~~~~
src/disk.c: In function '__disk_ret':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/disk.c:31:9: note: in expansion of macro 'SET_BDA'
   31 |         SET_BDA(disk_last_status, code);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/disk.c:29:9: note: in expansion of macro 'SET_BDA'
   29 |         SET_BDA(floppy_last_status, code);
      |         ^~~~~~~
src/disk.c: In function 'disk_1308':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/disk.c:297:17: note: in expansion of macro 'GET_BDA'
  297 |         count = GET_BDA(hdcount);
      |                 ^~~~~~~
src/disk.c: In function 'disk_13':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/disk.c:626:5: note: in expansion of macro 'SET_BDA'
  626 |     SET_BDA(disk_interrupt_flag, 0);
      |     ^~~~~~~
In function 'disk_1301',
    inlined from 'disk_13' at src/disk.c:630:16:
src/disk.c:218:11: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  218 |         v = GET_BDA(disk_last_status);
src/disk.c:216:11: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  216 |         v = GET_BDA(floppy_last_status);
src/disk.c: In function 'handle_76':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/disk.c:777:5: note: in expansion of macro 'SET_BDA'
  777 |     SET_BDA(disk_interrupt_flag, 0xff);
      |     ^~~~~~~
  Compile checking build/bios-microvm/src/mouse.o
In file included from src/mouse.c:8:
In function 'set_equipment_flags',
    inlined from 'mouse_init' at src/mouse.c:23:5:
src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
In file included from src/biosvar.h:10:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'get_ebda_seg',
    inlined from 'mouse_15c207' at src/mouse.c:231:20,
    inlined from 'handle_15c2' at src/mouse.c:272:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/biosvar.h:60:12: note: in expansion of macro 'GET_BDA'
   60 |     return GET_BDA(ebda_seg);
      |            ^~~~~~~
In function 'get_ebda_seg',
    inlined from 'mouse_15c205' at src/mouse.c:162:20,
    inlined from 'handle_15c2' at src/mouse.c:270:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/biosvar.h:60:12: note: in expansion of macro 'GET_BDA'
   60 |     return GET_BDA(ebda_seg);
      |            ^~~~~~~
In function 'get_ebda_seg',
    inlined from 'mouse_15c20001' at src/mouse.c:56:20,
    inlined from 'mouse_15c200' at src/mouse.c:82:16,
    inlined from 'handle_15c2' at src/mouse.c:265:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/biosvar.h:60:12: note: in expansion of macro 'GET_BDA'
   60 |     return GET_BDA(ebda_seg);
      |            ^~~~~~~
In function 'get_ebda_seg',
    inlined from 'process_mouse' at src/mouse.c:322:20:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/biosvar.h:60:12: note: in expansion of macro 'GET_BDA'
   60 |     return GET_BDA(ebda_seg);
      |            ^~~~~~~
  Compile checking build/bios-microvm/src/kbd.o
In file included from src/biosvar.h:10,
                 from src/kbd.c:8:
src/kbd.c: In function 'kbd_set_flag':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:397:18: note: in expansion of macro 'GET_BDA'
  397 |     u16 flags0 = GET_BDA(kbd_flag0);
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:398:17: note: in expansion of macro 'GET_BDA'
  398 |     u8 flags1 = GET_BDA(kbd_flag1);
      |                 ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:407:5: note: in expansion of macro 'SET_BDA'
  407 |     SET_BDA(kbd_flag0, flags0);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:408:5: note: in expansion of macro 'SET_BDA'
  408 |     SET_BDA(kbd_flag1, flags1);
      |     ^~~~~~~
src/kbd.c: In function 'set_leds':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:230:23: note: in expansion of macro 'GET_BDA'
  230 |     u8 shift_flags = (GET_BDA(kbd_flag0) >> 4) & 0x07;
      |                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:231:18: note: in expansion of macro 'GET_BDA'
  231 |     u8 kbd_led = GET_BDA(kbd_led);
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:241:5: note: in expansion of macro 'SET_BDA'
  241 |     SET_BDA(kbd_led, kbd_led);
      |     ^~~~~~~
src/kbd.c: In function 'dequeue_key':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:61:23: note: in expansion of macro 'GET_BDA'
   61 |         buffer_head = GET_BDA(kbd_buf_head);
      |                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:62:23: note: in expansion of macro 'GET_BDA'
   62 |         buffer_tail = GET_BDA(kbd_buf_tail);
      |                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:98:24: note: in expansion of macro 'GET_BDA'
   98 |     u16 buffer_start = GET_BDA(kbd_buf_start_offset);
      |                        ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:99:24: note: in expansion of macro 'GET_BDA'
   99 |     u16 buffer_end   = GET_BDA(kbd_buf_end_offset);
      |                        ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:104:5: note: in expansion of macro 'SET_BDA'
  104 |     SET_BDA(kbd_buf_head, buffer_head);
      |     ^~~~~~~
src/kbd.c: In function 'kbd_init':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:23:5: note: in expansion of macro 'SET_BDA'
   23 |     SET_BDA(kbd_flag1, KF1_101KBD);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:24:5: note: in expansion of macro 'SET_BDA'
   24 |     SET_BDA(kbd_buf_head, x);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:25:5: note: in expansion of macro 'SET_BDA'
   25 |     SET_BDA(kbd_buf_tail, x);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:26:5: note: in expansion of macro 'SET_BDA'
   26 |     SET_BDA(kbd_buf_start_offset, x);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:28:5: note: in expansion of macro 'SET_BDA'
   28 |     SET_BDA(kbd_buf_end_offset
      |     ^~~~~~~
src/kbd.c: In function 'enqueue_key':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:35:24: note: in expansion of macro 'GET_BDA'
   35 |     u16 buffer_start = GET_BDA(kbd_buf_start_offset);
      |                        ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:36:24: note: in expansion of macro 'GET_BDA'
   36 |     u16 buffer_end   = GET_BDA(kbd_buf_end_offset);
      |                        ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:38:23: note: in expansion of macro 'GET_BDA'
   38 |     u16 buffer_head = GET_BDA(kbd_buf_head);
      |                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:39:23: note: in expansion of macro 'GET_BDA'
   39 |     u16 buffer_tail = GET_BDA(kbd_buf_tail);
      |                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:50:5: note: in expansion of macro 'SET_BDA'
   50 |     SET_BDA(kbd_buf_tail, buffer_tail);
      |     ^~~~~~~
In function 'handle_1612',
    inlined from 'handle_16' at src/kbd.c:264:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:193:18: note: in expansion of macro 'GET_BDA'
  193 |     regs->ax = ((GET_BDA(kbd_flag0) & ~((KF1_RCTRL|KF1_RALT) << 8))
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:194:21: note: in expansion of macro 'GET_BDA'
  194 |                 | ((GET_BDA(kbd_flag1) & (KF1_RCTRL|KF1_RALT)) << 8));
      |                     ^~~~~~~
In function 'handle_1602',
    inlined from 'handle_16' at src/kbd.c:258:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:134:16: note: in expansion of macro 'GET_BDA'
  134 |     regs->al = GET_BDA(kbd_flag0);
      |                ^~~~~~~
In function '__process_key',
    inlined from 'process_key' at src/kbd.c:598:5:
src/kbd.c:459:8: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  459 |     u8 flags1 = GET_BDA(kbd_flag1);
      |        ^~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:473:9: note: in expansion of macro 'SET_BDA'
  473 |         SET_BDA(kbd_flag1, flags1 & ~(KF1_LAST_E0|KF1_LAST_E1));
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/kbd.c:529:14: note: in expansion of macro 'GET_BDA'
  529 |         if ((GET_BDA(kbd_flag0) & (KF0_CTRLACTIVE|KF0_ALTACTIVE))
      |              ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:532:13: note: in expansion of macro 'SET_BDA'
  532 |             SET_BDA(soft_reset_flag, 0x1234);
      |             ^~~~~~~
In function 'kbd_ctrl_break',
    inlined from '__process_key' at src/kbd.c:513:13,
    inlined from 'process_key' at src/kbd.c:598:5:
src/kbd.c:417:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  417 |     u16 buffer_start = GET_BDA(kbd_buf_start_offset);
      |         ^~~~~~~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:418:5: note: in expansion of macro 'SET_BDA'
  418 |     SET_BDA(kbd_buf_head, buffer_start);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:419:5: note: in expansion of macro 'SET_BDA'
  419 |     SET_BDA(kbd_buf_tail, buffer_start+2);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:422:5: note: in expansion of macro 'SET_BDA'
  422 |     SET_BDA(break_flag, 0x80);
      |     ^~~~~~~
In function '__process_key',
    inlined from 'process_key' at src/kbd.c:598:5:
src/kbd.c:552:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  552 |     u16 flags0 = GET_BDA(kbd_flag0);
      |         ^~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/kbd.c:463:9: note: in expansion of macro 'SET_BDA'
  463 |         SET_BDA(kbd_flag1, flags1 | eflag);
      |         ^~~~~~~
  Compile checking build/bios-microvm/src/system.o
In file included from src/biosvar.h:10,
                 from src/system.c:8:
In function 'get_ebda_seg',
    inlined from 'handle_15c1' at src/system.c:255:16,
    inlined from 'handle_15' at src/system.c:352:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/biosvar.h:60:12: note: in expansion of macro 'GET_BDA'
   60 |     return GET_BDA(ebda_seg);
      |            ^~~~~~~
  Compile checking build/bios-microvm/src/serial.o
In file included from src/serial.c:8:
In function 'set_equipment_flags',
    inlined from 'serial_setup' at src/serial.c:56:5:
src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
In file included from src/biosvar.h:10:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
  Compile checking build/bios-microvm/src/sercon.o
In file included from src/biosvar.h:10,
                 from src/sercon.c:7:
In function 'cursor_pos_set',
    inlined from 'sercon_cursor_pos_set' at src/sercon.c:190:9:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/sercon.c:42:5: note: in expansion of macro 'SET_BDA'
   42 |     SET_BDA(cursor_pos[0], pos);
      |     ^~~~~~~
In function 'cursor_pos_row',
    inlined from 'sercon_lazy_lf' at src/sercon.c:270:11:
src/sercon.c:35:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   35 |     u16 pos = GET_BDA(cursor_pos[0]);
      |         ^~~
In function 'video_rows',
    inlined from 'sercon_lazy_lf' at src/sercon.c:271:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/sercon.c:19:12: note: in expansion of macro 'GET_BDA'
   19 |     return GET_BDA(video_rows)+1;
      |            ^~~~~~~
In function 'cursor_pos_row',
    inlined from 'sercon_lazy_cursor_sync' at src/sercon.c:198:14,
    inlined from 'sercon_lazy_flush' at src/sercon.c:236:5:
src/sercon.c:35:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   35 |     u16 pos = GET_BDA(cursor_pos[0]);
      |         ^~~
In function 'cursor_pos_row',
    inlined from 'sercon_lazy_putchar' at src/sercon.c:296:9:
src/sercon.c:35:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   35 |     u16 pos = GET_BDA(cursor_pos[0]);
      |         ^~~
In function 'cursor_pos_col',
    inlined from 'sercon_lazy_move_cursor' at src/sercon.c:285:11,
    inlined from 'sercon_lazy_putchar' at src/sercon.c:303:9:
src/sercon.c:29:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   29 |     u16 pos = GET_BDA(cursor_pos[0]);
      |         ^~~
In function 'video_cols',
    inlined from 'sercon_lazy_move_cursor' at src/sercon.c:286:16,
    inlined from 'sercon_lazy_putchar' at src/sercon.c:303:9:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/sercon.c:24:12: note: in expansion of macro 'GET_BDA'
   24 |     return GET_BDA(video_cols);
      |            ^~~~~~~
In function 'sercon_100f',
    inlined from 'handle_sercon' at src/sercon.c:505:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/sercon.c:456:16: note: in expansion of macro 'GET_BDA'
  456 |     regs->al = GET_BDA(video_mode);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/sercon.c:457:16: note: in expansion of macro 'GET_BDA'
  457 |     regs->ah = GET_BDA(video_cols);
      |                ^~~~~~~
In function 'cursor_pos_row',
    inlined from 'sercon_lazy_cr' at src/sercon.c:263:27,
    inlined from 'sercon_100e' at src/sercon.c:442:9,
    inlined from 'handle_sercon' at src/sercon.c:504:16:
src/sercon.c:35:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   35 |     u16 pos = GET_BDA(cursor_pos[0]);
      |         ^~~
In function 'cursor_pos_col',
    inlined from 'sercon_lazy_backspace' at src/sercon.c:254:11,
    inlined from 'sercon_100e' at src/sercon.c:439:9,
    inlined from 'handle_sercon' at src/sercon.c:504:16:
src/sercon.c:29:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   29 |     u16 pos = GET_BDA(cursor_pos[0]);
      |         ^~~
In function 'cursor_pos_row',
    inlined from 'sercon_lazy_backspace' at src/sercon.c:257:35,
    inlined from 'sercon_100e' at src/sercon.c:439:9,
    inlined from 'handle_sercon' at src/sercon.c:504:16:
src/sercon.c:35:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   35 |     u16 pos = GET_BDA(cursor_pos[0]);
      |         ^~~
In function 'video_rows',
    inlined from 'sercon_1009' at src/sercon.c:411:16,
    inlined from 'handle_sercon' at src/sercon.c:503:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/sercon.c:19:12: note: in expansion of macro 'GET_BDA'
   19 |     return GET_BDA(video_rows)+1;
      |            ^~~~~~~
In function 'video_cols',
    inlined from 'sercon_1009' at src/sercon.c:411:31,
    inlined from 'handle_sercon' at src/sercon.c:503:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/sercon.c:24:12: note: in expansion of macro 'GET_BDA'
   24 |     return GET_BDA(video_cols);
      |            ^~~~~~~
In function 'cursor_pos_row',
    inlined from 'sercon_1009' at src/sercon.c:412:16,
    inlined from 'handle_sercon' at src/sercon.c:503:16:
src/sercon.c:35:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   35 |     u16 pos = GET_BDA(cursor_pos[0]);
      |         ^~~
In function 'cursor_pos_col',
    inlined from 'sercon_1009' at src/sercon.c:427:33,
    inlined from 'handle_sercon' at src/sercon.c:503:16:
src/sercon.c:29:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   29 |     u16 pos = GET_BDA(cursor_pos[0]);
      |         ^~~
In function 'video_rows',
    inlined from 'sercon_1006' at src/sercon.c:384:25,
    inlined from 'handle_sercon' at src/sercon.c:501:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/sercon.c:19:12: note: in expansion of macro 'GET_BDA'
   19 |     return GET_BDA(video_rows)+1;
      |            ^~~~~~~
In function 'video_cols',
    inlined from 'sercon_1006' at src/sercon.c:385:25,
    inlined from 'handle_sercon' at src/sercon.c:501:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/sercon.c:24:12: note: in expansion of macro 'GET_BDA'
   24 |     return GET_BDA(video_cols);
      |            ^~~~~~~
In function 'sercon_1003',
    inlined from 'handle_sercon' at src/sercon.c:500:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/sercon.c:371:16: note: in expansion of macro 'GET_BDA'
  371 |     regs->cx = GET_BDA(cursor_type);
      |                ^~~~~~~
In function 'cursor_pos_row',
    inlined from 'sercon_1003' at src/sercon.c:372:16,
    inlined from 'handle_sercon' at src/sercon.c:500:16:
src/sercon.c:35:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   35 |     u16 pos = GET_BDA(cursor_pos[0]);
      |         ^~~
In function 'cursor_pos_col',
    inlined from 'sercon_1003' at src/sercon.c:373:16,
    inlined from 'handle_sercon' at src/sercon.c:500:16:
src/sercon.c:29:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   29 |     u16 pos = GET_BDA(cursor_pos[0]);
      |         ^~~
In function 'sercon_1001',
    inlined from 'handle_sercon' at src/sercon.c:498:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/sercon.c:359:5: note: in expansion of macro 'SET_BDA'
  359 |     SET_BDA(cursor_type, regs->cx);
      |     ^~~~~~~
In function 'cursor_pos_set',
    inlined from 'sercon_1000' at src/sercon.c:335:9,
    inlined from 'handle_sercon' at src/sercon.c:497:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/sercon.c:42:5: note: in expansion of macro 'SET_BDA'
   42 |     SET_BDA(cursor_pos[0], pos);
      |     ^~~~~~~
In function 'sercon_1000',
    inlined from 'handle_sercon' at src/sercon.c:497:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/sercon.c:336:9: note: in expansion of macro 'SET_BDA'
  336 |         SET_BDA(video_mode, mode);
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/sercon.c:337:9: note: in expansion of macro 'SET_BDA'
  337 |         SET_BDA(video_cols, cols);
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/sercon.c:338:9: note: in expansion of macro 'SET_BDA'
  338 |         SET_BDA(video_rows, rows-1);
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/sercon.c:339:9: note: in expansion of macro 'SET_BDA'
  339 |         SET_BDA(cursor_type, 0x0007);
      |         ^~~~~~~
src/sercon.c: In function 'sercon_setup':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
src/sercon.c:528:15: note: in expansion of macro 'GET_IVT'
  528 |     vgabios = GET_IVT(0x10);
      |               ^~~~~~~
src/sercon.c:528:13: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  528 |     vgabios = GET_IVT(0x10);
src/sercon.c:528:13: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/sercon.c:541:5: note: in expansion of macro 'SET_IVT'
  541 |     SET_IVT(0x10, FUNC16(entry_sercon));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/sercon.c:541:5: note: in expansion of macro 'SET_IVT'
  541 |     SET_IVT(0x10, FUNC16(entry_sercon));
      |     ^~~~~~~
  Compile checking build/bios-microvm/src/clock.o
In file included from src/biosvar.h:10,
                 from src/clock.c:8:
src/clock.c: In function 'clock_update':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/clock.c:284:19: note: in expansion of macro 'GET_BDA'
  284 |     u32 counter = GET_BDA(timer_counter);
      |                   ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
src/clock.c:290:9: note: in expansion of macro 'SET_BDA'
  290 |         SET_BDA(timer_rollover, GET_BDA(timer_rollover) + 1);
      |         ^~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/clock.c:290:33: note: in expansion of macro 'GET_BDA'
  290 |         SET_BDA(timer_rollover, GET_BDA(timer_rollover) + 1);
      |                                 ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/clock.c:290:9: note: in expansion of macro 'SET_BDA'
  290 |         SET_BDA(timer_rollover, GET_BDA(timer_rollover) + 1);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/clock.c:292:5: note: in expansion of macro 'SET_BDA'
  292 |     SET_BDA(timer_counter, counter);
      |     ^~~~~~~
src/clock.c: In function 'clock_setup':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/clock.c:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(timer_counter, ticks % TICKS_PER_DAY);
      |     ^~~~~~~
In function 'handle_1a01',
    inlined from 'handle_1a' at src/clock.c:268:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/clock.c:86:5: note: in expansion of macro 'SET_BDA'
   86 |     SET_BDA(timer_counter, ticks);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/clock.c:87:5: note: in expansion of macro 'SET_BDA'
   87 |     SET_BDA(timer_rollover, 0); // reset flag
      |     ^~~~~~~
In function 'handle_1a00',
    inlined from 'handle_1a' at src/clock.c:267:16:
src/clock.c:73:9: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
   73 |     u32 ticks = GET_BDA(timer_counter);
      |         ^~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/clock.c:76:16: note: in expansion of macro 'GET_BDA'
   76 |     regs->al = GET_BDA(timer_rollover);
      |                ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/clock.c:77:5: note: in expansion of macro 'SET_BDA'
   77 |     SET_BDA(timer_rollover, 0); // reset flag
      |     ^~~~~~~
src/clock.c: In function 'irqtimer_calc_ticks':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/clock.c:341:13: note: in expansion of macro 'GET_BDA'
  341 |     return (GET_BDA(timer_counter) + count + 1) % TICKS_PER_DAY;
      |             ^~~~~~~
src/clock.c: In function 'irqtimer_calc':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/clock.c:349:16: note: in expansion of macro 'GET_BDA'
  349 |         return GET_BDA(timer_counter);
      |                ^~~~~~~
src/clock.c: In function 'irqtimer_check':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/clock.c:357:15: note: in expansion of macro 'GET_BDA'
  357 |     return (((GET_BDA(timer_counter) + TICKS_PER_DAY - end) % TICKS_PER_DAY)
      |               ^~~~~~~
  Compile checking build/bios-microvm/src/resume.o
  Compile checking build/bios-microvm/src/pnpbios.o
  Compile checking build/bios-microvm/src/vgahooks.o
  Compile checking build/bios-microvm/src/pcibios.o
  Compile checking build/bios-microvm/src/apm.o
  Compile checking build/bios-microvm/src/cp437.o
  Compile checking build/bios-microvm/src/hw/pci.o
  Compile checking build/bios-microvm/src/hw/timer.o
  Compile checking build/bios-microvm/src/hw/rtc.o
  Compile checking build/bios-microvm/src/hw/dma.o
  Compile checking build/bios-microvm/src/hw/pic.o
  Compile checking build/bios-microvm/src/hw/ps2port.o
  Compile checking build/bios-microvm/src/hw/serialio.o
  Compile checking build/bios-microvm/src/hw/usb.o
  Compile checking build/bios-microvm/src/hw/usb-uhci.o
  Compile checking build/bios-microvm/src/hw/usb-ohci.o
  Compile checking build/bios-microvm/src/hw/usb-ehci.o
  Compile checking build/bios-microvm/src/hw/usb-hid.o
  Compile checking build/bios-microvm/src/hw/usb-msc.o
  Compile checking build/bios-microvm/src/hw/usb-uas.o
  Compile checking build/bios-microvm/src/hw/blockcmd.o
  Compile checking build/bios-microvm/src/hw/floppy.o
In file included from src/biosvar.h:10,
                 from src/hw/floppy.c:8:
src/hw/floppy.c: In function 'floppy_setup':
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/hw/floppy.c:151:5: note: in expansion of macro 'SET_IVT'
  151 |     SET_IVT(0x1E, SEGOFF(SEG_BIOS
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/hw/floppy.c:151:5: note: in expansion of macro 'SET_IVT'
  151 |     SET_IVT(0x1E, SEGOFF(SEG_BIOS
      |     ^~~~~~~
  Compile checking build/bios-microvm/src/hw/ata.o
  Compile checking build/bios-microvm/src/hw/ramdisk.o
  Compile checking build/bios-microvm/src/hw/lsi-scsi.o
  Compile checking build/bios-microvm/src/hw/esp-scsi.o
  Compile checking build/bios-microvm/src/hw/megasas.o
  Compile checking build/bios-microvm/src/hw/mpt-scsi.o
  Compile checking build/bios-microvm/src/post.o
In file included from src/biosvar.h:10,
                 from src/post.c:8:
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:49:5: note: in expansion of macro 'SET_IVT'
   49 |     SET_IVT(0x02, FUNC16(entry_02));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:49:5: note: in expansion of macro 'SET_IVT'
   49 |     SET_IVT(0x02, FUNC16(entry_02));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:50:5: note: in expansion of macro 'SET_IVT'
   50 |     SET_IVT(0x05, FUNC16(entry_05));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:50:5: note: in expansion of macro 'SET_IVT'
   50 |     SET_IVT(0x05, FUNC16(entry_05));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:51:5: note: in expansion of macro 'SET_IVT'
   51 |     SET_IVT(0x10, FUNC16(entry_10));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:51:5: note: in expansion of macro 'SET_IVT'
   51 |     SET_IVT(0x10, FUNC16(entry_10));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:52:5: note: in expansion of macro 'SET_IVT'
   52 |     SET_IVT(0x11, FUNC16(entry_11));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:52:5: note: in expansion of macro 'SET_IVT'
   52 |     SET_IVT(0x11, FUNC16(entry_11));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:53:5: note: in expansion of macro 'SET_IVT'
   53 |     SET_IVT(0x12, FUNC16(entry_12));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:53:5: note: in expansion of macro 'SET_IVT'
   53 |     SET_IVT(0x12, FUNC16(entry_12));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:54:5: note: in expansion of macro 'SET_IVT'
   54 |     SET_IVT(0x13, FUNC16(entry_13_official));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:54:5: note: in expansion of macro 'SET_IVT'
   54 |     SET_IVT(0x13, FUNC16(entry_13_official));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:55:5: note: in expansion of macro 'SET_IVT'
   55 |     SET_IVT(0x14, FUNC16(entry_14));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:55:5: note: in expansion of macro 'SET_IVT'
   55 |     SET_IVT(0x14, FUNC16(entry_14));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:56:5: note: in expansion of macro 'SET_IVT'
   56 |     SET_IVT(0x15, FUNC16(entry_15_official));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:56:5: note: in expansion of macro 'SET_IVT'
   56 |     SET_IVT(0x15, FUNC16(entry_15_official));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:57:5: note: in expansion of macro 'SET_IVT'
   57 |     SET_IVT(0x16, FUNC16(entry_16));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:57:5: note: in expansion of macro 'SET_IVT'
   57 |     SET_IVT(0x16, FUNC16(entry_16));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:58:5: note: in expansion of macro 'SET_IVT'
   58 |     SET_IVT(0x17, FUNC16(entry_17));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:58:5: note: in expansion of macro 'SET_IVT'
   58 |     SET_IVT(0x17, FUNC16(entry_17));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:59:5: note: in expansion of macro 'SET_IVT'
   59 |     SET_IVT(0x18, FUNC16(entry_18));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:59:5: note: in expansion of macro 'SET_IVT'
   59 |     SET_IVT(0x18, FUNC16(entry_18));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:60:5: note: in expansion of macro 'SET_IVT'
   60 |     SET_IVT(0x19, FUNC16(entry_19_official));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:60:5: note: in expansion of macro 'SET_IVT'
   60 |     SET_IVT(0x19, FUNC16(entry_19_official));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:61:5: note: in expansion of macro 'SET_IVT'
   61 |     SET_IVT(0x1a, FUNC16(entry_1a_official));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:61:5: note: in expansion of macro 'SET_IVT'
   61 |     SET_IVT(0x1a, FUNC16(entry_1a_official));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:62:5: note: in expansion of macro 'SET_IVT'
   62 |     SET_IVT(0x40, FUNC16(entry_40));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:62:5: note: in expansion of macro 'SET_IVT'
   62 |     SET_IVT(0x40, FUNC16(entry_40));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:70:5: note: in expansion of macro 'SET_IVT'
   70 |     SET_IVT(0x79, SEGOFF(0, 0));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/post.c:70:5: note: in expansion of macro 'SET_IVT'
   70 |     SET_IVT(0x79, SEGOFF(0, 0));
      |     ^~~~~~~
In function 'bda_init',
    inlined from 'interface_init' at src/post.c:114:5:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/post.c:86:5: note: in expansion of macro 'SET_BDA'
   86 |     SET_BDA(ebda_seg, ebda_seg);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/post.c:88:5: note: in expansion of macro 'SET_BDA'
   88 |     SET_BDA(mem_size_kb, ebda_seg / (1024/16));
      |     ^~~~~~~
In function 'get_ebda_seg',
    inlined from 'get_ebda_ptr' at src/biosvar.h:66:12,
    inlined from 'bda_init' at src/post.c:91:46,
    inlined from 'interface_init' at src/post.c:114:5:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/biosvar.h:60:12: note: in expansion of macro 'GET_BDA'
   60 |     return GET_BDA(ebda_seg);
      |            ^~~~~~~
  Compile checking build/bios-microvm/src/e820map.o
  Compile checking build/bios-microvm/src/malloc.o
In file included from src/biosvar.h:10,
                 from src/malloc.c:7:
src/malloc.c: In function 'malloc_prepboot':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
src/malloc.c:547:18: note: in expansion of macro 'GET_BDA'
  547 |     u32 endlow = GET_BDA(mem_size_kb)*1024;
      |                  ^~~~~~~
  Compile checking build/bios-microvm/src/romfile.o
  Compile checking build/bios-microvm/src/x86.o
  Compile checking build/bios-microvm/src/optionroms.o
In function 'boot_irq_captured',
    inlined from 'init_pcirom' at src/optionroms.c:344:28:
src/optionroms.c:314:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  314 |     return GET_IVT(0x19).segoff != FUNC16(entry_19_official).segoff;
In function 'boot_irq_captured',
    inlined from 'init_pcirom' at src/optionroms.c:348:9:
src/optionroms.c:314:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  314 |     return GET_IVT(0x19).segoff != FUNC16(entry_19_official).segoff;
In file included from src/optionroms.c:10:
In function 'boot_irq_restore',
    inlined from 'init_pcirom' at src/optionroms.c:354:9:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/optionroms.c:322:5: note: in expansion of macro 'SET_IVT'
  322 |     SET_IVT(0x19, seabios);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
src/optionroms.c:322:5: note: in expansion of macro 'SET_IVT'
  322 |     SET_IVT(0x19, seabios);
      |     ^~~~~~~
  Compile checking build/bios-microvm/src/pmm.o
  Compile checking build/bios-microvm/src/font.o
  Compile checking build/bios-microvm/src/boot.o
  Compile checking build/bios-microvm/src/bootsplash.o
  Compile checking build/bios-microvm/src/jpeg.o
  Compile checking build/bios-microvm/src/bmp.o
  Compile checking build/bios-microvm/src/tcgbios.o
  Compile checking build/bios-microvm/src/sha1.o
  Compile checking build/bios-microvm/src/hw/pcidevice.o
  Compile checking build/bios-microvm/src/hw/ahci.o
  Compile checking build/bios-microvm/src/hw/pvscsi.o
  Compile checking build/bios-microvm/src/hw/usb-xhci.o
  Compile checking build/bios-microvm/src/hw/usb-hub.o
  Compile checking build/bios-microvm/src/hw/sdcard.o
  Compile checking build/bios-microvm/src/fw/coreboot.o
  Compile checking build/bios-microvm/src/fw/lzmadecode.o
  Compile checking build/bios-microvm/src/fw/multiboot.o
  Compile checking build/bios-microvm/src/fw/csm.o
  Compile checking build/bios-microvm/src/fw/biostables.o
  Compile checking build/bios-microvm/src/fw/paravirt.o
  Compile checking build/bios-microvm/src/fw/shadow.o
  Compile checking build/bios-microvm/src/fw/pciinit.o
  Compile checking build/bios-microvm/src/fw/smm.o
  Compile checking build/bios-microvm/src/fw/smp.o
  Compile checking build/bios-microvm/src/fw/mtrr.o
  Compile checking build/bios-microvm/src/fw/xen.o
  Compile checking build/bios-microvm/src/fw/acpi.o
  Compile checking build/bios-microvm/src/fw/mptable.o
  Compile checking build/bios-microvm/src/fw/pirtable.o
  Compile checking build/bios-microvm/src/fw/smbios.o
  Compile checking build/bios-microvm/src/fw/romfile_loader.o
  Compile checking build/bios-microvm/src/fw/dsdt_parser.o
  Compile checking build/bios-microvm/src/hw/virtio-ring.o
  Compile checking build/bios-microvm/src/hw/virtio-pci.o
  Compile checking build/bios-microvm/src/hw/virtio-mmio.o
  Compile checking build/bios-microvm/src/hw/virtio-blk.o
  Compile checking build/bios-microvm/src/hw/virtio-scsi.o
  Compile checking build/bios-microvm/src/hw/tpm_drivers.o
  Compile checking build/bios-microvm/src/hw/nvme.o
  Compile checking build/bios-microvm/src/sha256.o
  Compile checking build/bios-microvm/src/sha512.o
  Compiling whole program build/bios-microvm/ccode32flat.o
In file included from ./src/biosvar.h:10,
                 from ./src/misc.c:8,
                 from build/bios-microvm/ccode32flat.o.tmp.c:1:
In function 'irqtimer_calc_ticks',
    inlined from 'irqtimer_calc' at ./src/clock.c:350:12,
    inlined from 'irqtimer_calc' at ./src/clock.c:346:1:
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
./src/clock.c:341:13: note: in expansion of macro 'GET_BDA'
  341 |     return (GET_BDA(timer_counter) + count + 1) % TICKS_PER_DAY;
      |             ^~~~~~~
./src/clock.c: In function 'irqtimer_calc':
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
./src/clock.c:349:16: note: in expansion of macro 'GET_BDA'
  349 |         return GET_BDA(timer_counter);
      |                ^~~~~~~
./src/output.c: In function 'screenc':
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
./src/output.c:77:25: note: in expansion of macro 'GET_IVT'
   77 |     if (!MODESEGMENT && GET_IVT(0x10).segoff == FUNC16(entry_10).segoff)
      |                         ^~~~~~~
In function 'irqtimer_check',
    inlined from 'get_keystroke_full' at ./src/boot.c:661:13:
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
./src/clock.c:357:15: note: in expansion of macro 'GET_BDA'
  357 |     return (((GET_BDA(timer_counter) + TICKS_PER_DAY - end) % TICKS_PER_DAY)
      |               ^~~~~~~
In function 'irqtimer_check',
    inlined from 'boot_fail' at ./src/boot.c:974:41:
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
./src/clock.c:357:15: note: in expansion of macro 'GET_BDA'
  357 |     return (((GET_BDA(timer_counter) + TICKS_PER_DAY - end) % TICKS_PER_DAY)
      |               ^~~~~~~
In file included from build/bios-microvm/ccode32flat.o.tmp.c:47:
In function 'boot_irq_captured',
    inlined from 'init_pcirom' at ./src/optionroms.c:344:28:
./src/optionroms.c:314:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  314 |     return GET_IVT(0x19).segoff != FUNC16(entry_19_official).segoff;
In function 'boot_irq_captured',
    inlined from 'init_pcirom' at ./src/optionroms.c:348:9:
./src/optionroms.c:314:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  314 |     return GET_IVT(0x19).segoff != FUNC16(entry_19_official).segoff;
In function 'boot_irq_restore',
    inlined from 'init_pcirom' at ./src/optionroms.c:354:9:
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/optionroms.c:322:5: note: in expansion of macro 'SET_IVT'
  322 |     SET_IVT(0x19, seabios);
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/optionroms.c:322:5: note: in expansion of macro 'SET_IVT'
  322 |     SET_IVT(0x19, seabios);
      |     ^~~~~~~
./src/cdrom.c: In function 'cdrom_boot':
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
./src/cdrom.c:264:9: note: in expansion of macro 'SET_BDA'
  264 |         SET_BDA(hdcount, GET_BDA(hdcount) + 1);
      |         ^~~~~~~
./src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
./src/cdrom.c:264:26: note: in expansion of macro 'GET_BDA'
  264 |         SET_BDA(hdcount, GET_BDA(hdcount) + 1);
      |                          ^~~~~~~
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/cdrom.c:264:9: note: in expansion of macro 'SET_BDA'
  264 |         SET_BDA(hdcount, GET_BDA(hdcount) + 1);
      |         ^~~~~~~
In function 'set_equipment_flags',
    inlined from 'cdrom_boot' at ./src/cdrom.c:242:9:
./src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5,
    inlined from 'maininit' at ./src/post.c:200:5:
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:49:5: note: in expansion of macro 'SET_IVT'
   49 |     SET_IVT(0x02, FUNC16(entry_02));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:49:5: note: in expansion of macro 'SET_IVT'
   49 |     SET_IVT(0x02, FUNC16(entry_02));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:50:5: note: in expansion of macro 'SET_IVT'
   50 |     SET_IVT(0x05, FUNC16(entry_05));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:50:5: note: in expansion of macro 'SET_IVT'
   50 |     SET_IVT(0x05, FUNC16(entry_05));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:51:5: note: in expansion of macro 'SET_IVT'
   51 |     SET_IVT(0x10, FUNC16(entry_10));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:51:5: note: in expansion of macro 'SET_IVT'
   51 |     SET_IVT(0x10, FUNC16(entry_10));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:52:5: note: in expansion of macro 'SET_IVT'
   52 |     SET_IVT(0x11, FUNC16(entry_11));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:52:5: note: in expansion of macro 'SET_IVT'
   52 |     SET_IVT(0x11, FUNC16(entry_11));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:53:5: note: in expansion of macro 'SET_IVT'
   53 |     SET_IVT(0x12, FUNC16(entry_12));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:53:5: note: in expansion of macro 'SET_IVT'
   53 |     SET_IVT(0x12, FUNC16(entry_12));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:54:5: note: in expansion of macro 'SET_IVT'
   54 |     SET_IVT(0x13, FUNC16(entry_13_official));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:54:5: note: in expansion of macro 'SET_IVT'
   54 |     SET_IVT(0x13, FUNC16(entry_13_official));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:55:5: note: in expansion of macro 'SET_IVT'
   55 |     SET_IVT(0x14, FUNC16(entry_14));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:55:5: note: in expansion of macro 'SET_IVT'
   55 |     SET_IVT(0x14, FUNC16(entry_14));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:56:5: note: in expansion of macro 'SET_IVT'
   56 |     SET_IVT(0x15, FUNC16(entry_15_official));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:56:5: note: in expansion of macro 'SET_IVT'
   56 |     SET_IVT(0x15, FUNC16(entry_15_official));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:57:5: note: in expansion of macro 'SET_IVT'
   57 |     SET_IVT(0x16, FUNC16(entry_16));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:57:5: note: in expansion of macro 'SET_IVT'
   57 |     SET_IVT(0x16, FUNC16(entry_16));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:58:5: note: in expansion of macro 'SET_IVT'
   58 |     SET_IVT(0x17, FUNC16(entry_17));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:58:5: note: in expansion of macro 'SET_IVT'
   58 |     SET_IVT(0x17, FUNC16(entry_17));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:59:5: note: in expansion of macro 'SET_IVT'
   59 |     SET_IVT(0x18, FUNC16(entry_18));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:59:5: note: in expansion of macro 'SET_IVT'
   59 |     SET_IVT(0x18, FUNC16(entry_18));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:60:5: note: in expansion of macro 'SET_IVT'
   60 |     SET_IVT(0x19, FUNC16(entry_19_official));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:60:5: note: in expansion of macro 'SET_IVT'
   60 |     SET_IVT(0x19, FUNC16(entry_19_official));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:61:5: note: in expansion of macro 'SET_IVT'
   61 |     SET_IVT(0x1a, FUNC16(entry_1a_official));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:61:5: note: in expansion of macro 'SET_IVT'
   61 |     SET_IVT(0x1a, FUNC16(entry_1a_official));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:62:5: note: in expansion of macro 'SET_IVT'
   62 |     SET_IVT(0x40, FUNC16(entry_40));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:62:5: note: in expansion of macro 'SET_IVT'
   62 |     SET_IVT(0x40, FUNC16(entry_40));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:70:5: note: in expansion of macro 'SET_IVT'
   70 |     SET_IVT(0x79, SEGOFF(0, 0));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/post.c:70:5: note: in expansion of macro 'SET_IVT'
   70 |     SET_IVT(0x79, SEGOFF(0, 0));
      |     ^~~~~~~
In function 'bda_init',
    inlined from 'interface_init' at ./src/post.c:114:5,
    inlined from 'maininit' at ./src/post.c:200:5:
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/post.c:86:5: note: in expansion of macro 'SET_BDA'
   86 |     SET_BDA(ebda_seg, ebda_seg);
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/post.c:88:5: note: in expansion of macro 'SET_BDA'
   88 |     SET_BDA(mem_size_kb, ebda_seg / (1024/16));
      |     ^~~~~~~
In function 'get_ebda_seg',
    inlined from 'get_ebda_ptr' at ./src/biosvar.h:66:12,
    inlined from 'bda_init' at ./src/post.c:91:46,
    inlined from 'interface_init' at ./src/post.c:114:5,
    inlined from 'maininit' at ./src/post.c:200:5:
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
./src/biosvar.h:60:12: note: in expansion of macro 'GET_BDA'
   60 |     return GET_BDA(ebda_seg);
      |            ^~~~~~~
In function 'kbd_init',
    inlined from 'interface_init' at ./src/post.c:121:5,
    inlined from 'maininit' at ./src/post.c:200:5:
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/kbd.c:23:5: note: in expansion of macro 'SET_BDA'
   23 |     SET_BDA(kbd_flag1, KF1_101KBD);
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/kbd.c:24:5: note: in expansion of macro 'SET_BDA'
   24 |     SET_BDA(kbd_buf_head, x);
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/kbd.c:25:5: note: in expansion of macro 'SET_BDA'
   25 |     SET_BDA(kbd_buf_tail, x);
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/kbd.c:26:5: note: in expansion of macro 'SET_BDA'
   26 |     SET_BDA(kbd_buf_start_offset, x);
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/kbd.c:28:5: note: in expansion of macro 'SET_BDA'
   28 |     SET_BDA(kbd_buf_end_offset
      |     ^~~~~~~
In function 'set_equipment_flags',
    inlined from 'mouse_init' at ./src/mouse.c:23:5,
    inlined from 'interface_init' at ./src/post.c:122:5,
    inlined from 'maininit' at ./src/post.c:200:5:
./src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'set_equipment_flags',
    inlined from 'mathcp_setup' at ./src/misc.c:66:5,
    inlined from 'platform_hardware_setup' at ./src/post.c:146:5,
    inlined from 'maininit' at ./src/post.c:203:5:
./src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'clock_setup',
    inlined from 'platform_hardware_setup' at ./src/post.c:154:5,
    inlined from 'maininit' at ./src/post.c:203:5:
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/clock.c:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(timer_counter, ticks % TICKS_PER_DAY);
      |     ^~~~~~~
In file included from build/bios-microvm/ccode32flat.o.tmp.c:12:
In function 'sercon_setup',
    inlined from 'maininit' at ./src/post.c:211:5:
./src/sercon.c:528:13: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  528 |     vgabios = GET_IVT(0x10);
./src/sercon.c:528:13: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
./src/sercon.c:528:13: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/sercon.c:541:5: note: in expansion of macro 'SET_IVT'
  541 |     SET_IVT(0x10, FUNC16(entry_sercon));
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/sercon.c:541:5: note: in expansion of macro 'SET_IVT'
  541 |     SET_IVT(0x10, FUNC16(entry_sercon));
      |     ^~~~~~~
In function 'floppy_setup',
    inlined from 'block_setup' at ./src/block.c:510:5,
    inlined from 'device_hardware_setup' at ./src/post.c:131:5,
    inlined from 'maininit' at ./src/post.c:216:9:
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/hw/floppy.c:151:5: note: in expansion of macro 'SET_IVT'
  151 |     SET_IVT(0x1E, SEGOFF(SEG_BIOS
      |     ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/hw/floppy.c:151:5: note: in expansion of macro 'SET_IVT'
  151 |     SET_IVT(0x1E, SEGOFF(SEG_BIOS
      |     ^~~~~~~
In function 'set_equipment_flags',
    inlined from 'serial_setup' at ./src/serial.c:56:5,
    inlined from 'device_hardware_setup' at ./src/post.c:133:5,
    inlined from 'maininit' at ./src/post.c:216:9:
./src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'irqtimer_check',
    inlined from 'interactive_bootmenu' at ./src/boot.c:755:37,
    inlined from 'maininit' at ./src/post.c:224:5:
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
./src/clock.c:357:15: note: in expansion of macro 'GET_BDA'
  357 |     return (((GET_BDA(timer_counter) + TICKS_PER_DAY - end) % TICKS_PER_DAY)
      |               ^~~~~~~
In function 'malloc_prepboot',
    inlined from 'prepareboot' at ./src/post.c:172:5,
    inlined from 'maininit' at ./src/post.c:228:5:
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
./src/malloc.c:547:18: note: in expansion of macro 'GET_BDA'
  547 |     u32 endlow = GET_BDA(mem_size_kb)*1024;
      |                  ^~~~~~~
In file included from build/bios-microvm/ccode32flat.o.tmp.c:5:
In function 'map_hd_drive',
    inlined from 'bcv_prepboot' at ./src/boot.c:840:13,
    inlined from 'prepareboot' at ./src/post.c:167:5,
    inlined from 'maininit' at ./src/post.c:228:5:
./src/block.c:261:19: warning: array subscript 0 is outside array bounds of 'struct bios_data_area_s[0]' [-Warray-bounds]
  261 |     int hdid = bda->hdcount;
      |                ~~~^~~~~~~~~
In function 'get_ebda_seg',
    inlined from 'get_ebda_ptr' at ./src/biosvar.h:66:12,
    inlined from 'fill_fdpt' at ./src/block.c:213:28,
    inlined from 'map_hd_drive' at ./src/block.c:269:5,
    inlined from 'bcv_prepboot' at ./src/boot.c:840:13,
    inlined from 'prepareboot' at ./src/post.c:167:5,
    inlined from 'maininit' at ./src/post.c:228:5:
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
./src/biosvar.h:60:12: note: in expansion of macro 'GET_BDA'
   60 |     return GET_BDA(ebda_seg);
      |            ^~~~~~~
In function 'get_ebda_seg',
    inlined from 'fill_fdpt' at ./src/block.c:239:9,
    inlined from 'map_hd_drive' at ./src/block.c:269:5,
    inlined from 'bcv_prepboot' at ./src/boot.c:840:13,
    inlined from 'prepareboot' at ./src/post.c:167:5,
    inlined from 'maininit' at ./src/post.c:228:5:
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
./src/biosvar.h:60:12: note: in expansion of macro 'GET_BDA'
   60 |     return GET_BDA(ebda_seg);
      |            ^~~~~~~
In function 'fill_fdpt',
    inlined from 'map_hd_drive' at ./src/block.c:269:5,
    inlined from 'bcv_prepboot' at ./src/boot.c:840:13,
    inlined from 'prepareboot' at ./src/post.c:167:5,
    inlined from 'maininit' at ./src/post.c:228:5:
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/block.c:239:9: note: in expansion of macro 'SET_IVT'
  239 |         SET_IVT(0x46, SEGOFF(get_ebda_seg(), offsetof(
      |         ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/block.c:239:9: note: in expansion of macro 'SET_IVT'
  239 |         SET_IVT(0x46, SEGOFF(get_ebda_seg(), offsetof(
      |         ^~~~~~~
In function 'get_ebda_seg',
    inlined from 'fill_fdpt' at ./src/block.c:236:9,
    inlined from 'map_hd_drive' at ./src/block.c:269:5,
    inlined from 'bcv_prepboot' at ./src/boot.c:840:13,
    inlined from 'prepareboot' at ./src/post.c:167:5,
    inlined from 'maininit' at ./src/post.c:228:5:
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
./src/biosvar.h:60:12: note: in expansion of macro 'GET_BDA'
   60 |     return GET_BDA(ebda_seg);
      |            ^~~~~~~
In function 'fill_fdpt',
    inlined from 'map_hd_drive' at ./src/block.c:269:5,
    inlined from 'bcv_prepboot' at ./src/boot.c:840:13,
    inlined from 'prepareboot' at ./src/post.c:167:5,
    inlined from 'maininit' at ./src/post.c:228:5:
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/block.c:236:9: note: in expansion of macro 'SET_IVT'
  236 |         SET_IVT(0x41, SEGOFF(get_ebda_seg(), offsetof(
      |         ^~~~~~~
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
./src/block.c:236:9: note: in expansion of macro 'SET_IVT'
  236 |         SET_IVT(0x41, SEGOFF(get_ebda_seg(), offsetof(
      |         ^~~~~~~
In function 'set_equipment_flags',
    inlined from 'map_floppy_drive' at ./src/block.c:296:9,
    inlined from 'bcv_prepboot' at ./src/boot.c:836:13,
    inlined from 'prepareboot' at ./src/post.c:167:5,
    inlined from 'maininit' at ./src/post.c:228:5:
./src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'map_floppy_drive',
    inlined from 'bcv_prepboot' at ./src/boot.c:836:13,
    inlined from 'prepareboot' at ./src/post.c:167:5,
    inlined from 'maininit' at ./src/post.c:228:5:
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/block.c:297:9: note: in expansion of macro 'SET_BDA'
  297 |         SET_BDA(floppy_harddisk_info, 0x77);
      |         ^~~~~~~
In function 'set_equipment_flags',
    inlined from 'map_floppy_drive' at ./src/block.c:292:9,
    inlined from 'bcv_prepboot' at ./src/boot.c:836:13,
    inlined from 'prepareboot' at ./src/post.c:167:5,
    inlined from 'maininit' at ./src/post.c:228:5:
./src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'map_floppy_drive',
    inlined from 'bcv_prepboot' at ./src/boot.c:836:13,
    inlined from 'prepareboot' at ./src/post.c:167:5,
    inlined from 'maininit' at ./src/post.c:228:5:
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
./src/block.c:293:9: note: in expansion of macro 'SET_BDA'
  293 |         SET_BDA(floppy_harddisk_info, 0x07);
      |         ^~~~~~~
  Compiling whole program build/bios-microvm/code32seg.o
  Compiling whole program build/bios-microvm/ccode16.o
  Compiling to assembler build/bios-microvm/src/asm-offsets.s
  Generating offset file build/bios-microvm/asm-offsets.h
  Compiling (16bit) build/bios-microvm/romlayout.o
  Building ld scripts
Version: 1.16.2-debian-1.16.2-1
ld: warning: build/bios-microvm/romlayout.o: missing .note.GNU-stack section implies executable stack
ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
Fixed space: 0xe05b-0x10000  total: 8101  slack: 12  Percent slack: 0.1%
16bit size:           19840
32bit segmented size: 2299
32bit flat size:      22597
32bit flat init size: 45312
Lowmem size:          2176
f-segment var size:   1152
  Linking build/bios-microvm/rom16.o
ld: warning: build/bios-microvm/code16.o: requires executable stack (because the .note.GNU-stack section is executable)
ld: warning: build/bios-microvm/rom16.o has a LOAD segment with RWX permissions
  Stripping build/bios-microvm/rom16.noexec.o
  Linking build/bios-microvm/rom32seg.o
  Stripping build/bios-microvm/rom32seg.noexec.o
  Linking build/bios-microvm/rom.o
ld: warning: build/bios-microvm/rom32seg.noexec.o: missing .note.GNU-stack section implies executable stack
ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
ld: warning: build/bios-microvm/rom.o has a LOAD segment with RWX permissions
  Prepping build/bios-microvm/bios.bin.prep
Total size: 96864  Fixed: 45888  Free: 34208 (used 73.9% of 128KiB rom)
  Creating build/bios-microvm/bios.bin
make[1]: Leaving directory '/build/seabios-1.16.2'
rm -f build/bios-microvm.bin
ln build/bios-microvm/bios.bin build/bios-microvm.bin

=== Building vgabios-ati.bin ===

set -e; if [ ! -e build/vgabios-ati/.config.old ]; then rm -rf build/vgabios-ati; mkdir -p build/vgabios-ati; for x in BUILD_VGABIOS=y VGA_ATI=y VGA_PCI=y; do echo CONFIG_$x; done > build/vgabios-ati/.config; /usr/bin/make PYTHON="python3 -B" KCONFIG_CONFIG=/build/seabios-1.16.2/build/vgabios-ati/.config OUT=build/vgabios-ati/ oldnoconfig; fi
make[1]: Entering directory '/build/seabios-1.16.2'
scripts/kconfig/conf --olddefconfig /build/seabios-1.16.2/src/Kconfig
#
# configuration written to /build/seabios-1.16.2/build/vgabios-ati/.config
#
make[1]: Leaving directory '/build/seabios-1.16.2'
/usr/bin/make PYTHON="python3 -B" $(cat build/env) KCONFIG_CONFIG=/build/seabios-1.16.2/build/vgabios-ati/.config OUT=build/vgabios-ati/ build/vgabios-ati/vgabios.bin
make[1]: Entering directory '/build/seabios-1.16.2'
  Build Kconfig config file
  Compile checking build/vgabios-ati/src/output.o
In file included from src/output.c:9:
src/output.c: In function 'screenc':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
src/output.c:77:25: note: in expansion of macro 'GET_IVT'
   77 |     if (!MODESEGMENT && GET_IVT(0x10).segoff == FUNC16(entry_10).segoff)
      |                         ^~~~~~~
  Compile checking build/vgabios-ati/src/string.o
  Compile checking build/vgabios-ati/src/hw/pci.o
  Compile checking build/vgabios-ati/src/hw/serialio.o
  Compile checking build/vgabios-ati/vgasrc/vgainit.o
In file included from vgasrc/vgainit.c:8:
In function 'set_equipment_flags',
    inlined from 'init_bios_area' at vgasrc/vgainit.c:141:5,
    inlined from 'vga_post' at vgasrc/vgainit.c:182:5:
src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
In file included from src/biosvar.h:10:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'init_bios_area',
    inlined from 'vga_post' at vgasrc/vgainit.c:182:5:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgainit.c:144:5: note: in expansion of macro 'SET_BDA'
  144 |     SET_BDA(modeset_ctl, 0x51);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgainit.c:146:5: note: in expansion of macro 'SET_BDA'
  146 |     SET_BDA(dcc_index, CONFIG_VGA_STDVGA_PORTS ? 0x08 : 0xff);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgainit.c:149:5: note: in expansion of macro 'SET_BDA'
  149 |     SET_BDA(video_msr, 0x00); // Unavailable on vanilla vga, but...
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgainit.c:150:5: note: in expansion of macro 'SET_BDA'
  150 |     SET_BDA(video_pal, 0x00); // Unavailable on vanilla vga, but...
      |     ^~~~~~~
vgasrc/vgainit.c: In function 'vga_post':
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgainit.c:188:5: note: in expansion of macro 'SET_IVT'
  188 |     SET_IVT(0x10, SEGOFF(get_global_seg(), (u32)entry_10));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgainit.c:188:5: note: in expansion of macro 'SET_IVT'
  188 |     SET_IVT(0x10, SEGOFF(get_global_seg(), (u32)entry_10));
      |     ^~~~~~~
In function 'allocate_extra_stack',
    inlined from 'vga_post' at vgasrc/vgainit.c:190:5:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgainit.c:97:5: note: in expansion of macro 'SET_IVT'
   97 |     SET_IVT(0x10, SEGOFF(get_global_seg(), (u32)entry_10_extrastack));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgainit.c:97:5: note: in expansion of macro 'SET_IVT'
   97 |     SET_IVT(0x10, SEGOFF(get_global_seg(), (u32)entry_10_extrastack));
      |     ^~~~~~~
  Compile checking build/vgabios-ati/vgasrc/vgabios.o
In file included from src/biosvar.h:10,
                 from vgasrc/vgabios.c:8:
vgasrc/vgabios.c: In function 'set_cursor_pos':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:91:20: note: in expansion of macro 'GET_BDA'
   91 |     if (cp.page == GET_BDA(video_page)) {
      |                    ^~~~~~~
vgasrc/vgabios.c: In function 'verify_scroll':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:395:18: note: in expansion of macro 'GET_BDA'
  395 |     u16 nbrows = GET_BDA(video_rows) + 1;
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:398:18: note: in expansion of macro 'GET_BDA'
  398 |     u16 nbcols = GET_BDA(video_cols);
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:410:39: note: in expansion of macro 'GET_BDA'
  410 |     struct cursorpos win = {ulx, uly, GET_BDA(video_page)};
      |                                       ^~~~~~~
vgasrc/vgabios.c: In function 'write_char':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:164:19: note: in expansion of macro 'GET_BDA'
  164 |     if (pcp->x == GET_BDA(video_cols)) {
      |                   ^~~~~~~
vgasrc/vgabios.c: In function 'write_teletype':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:195:18: note: in expansion of macro 'GET_BDA'
  195 |     u16 nbrows = GET_BDA(video_rows);
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:200:37: note: in expansion of macro 'GET_BDA'
  200 |         struct cursorpos winsize = {GET_BDA(video_cols), nbrows+1};
      |                                     ^~~~~~~
vgasrc/vgabios.c: In function 'get_cursor_shape':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:59:23: note: in expansion of macro 'GET_BDA'
   59 |     u16 cursor_type = GET_BDA(cursor_type);
      |                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:60:26: note: in expansion of macro 'GET_BDA'
   60 |     u8 emulate_cursor = (GET_BDA(video_ctl) & 1) == 0;
      |                          ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:65:19: note: in expansion of macro 'GET_BDA'
   65 |     u16 cheight = GET_BDA(char_height);
      |                   ^~~~~~~
vgasrc/vgabios.c: In function 'set_cursor_shape':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:79:5: note: in expansion of macro 'SET_BDA'
   79 |     SET_BDA(cursor_type, cursor_type);
      |     ^~~~~~~
vgasrc/vgabios.c: In function 'set_scan_lines':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:140:5: note: in expansion of macro 'SET_BDA'
  140 |     SET_BDA(char_height, lines);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:143:5: note: in expansion of macro 'SET_BDA'
  143 |     SET_BDA(video_rows, rows - 1);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:144:16: note: in expansion of macro 'GET_BDA'
  144 |     u16 cols = GET_BDA(video_cols);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:145:5: note: in expansion of macro 'SET_BDA'
  145 |     SET_BDA(video_pagesize, calc_page_size(MM_TEXT, cols, rows));
      |     ^~~~~~~
vgasrc/vgabios.c: In function 'handle_100e.isra':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:510:42: note: in expansion of macro 'GET_BDA'
  510 |     struct cursorpos cp = get_cursor_pos(GET_BDA(video_page));
      |                                          ^~~~~~~
vgasrc/vgabios.c: In function 'bda_save_restore':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |      ^
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:230:41: note: in expansion of macro 'GET_BDA_EXT'
  230 |         SET_FARVAR(seg, info->vbe_mode, GET_BDA_EXT(vbe_mode));
      |                                         ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |      ^
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgabios.c:231:38: note: in expansion of macro 'GET_IVT'
  231 |         SET_FARVAR(seg, info->font0, GET_IVT(0x1f));
      |                                      ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |      ^
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgabios.c:232:38: note: in expansion of macro 'GET_IVT'
  232 |         SET_FARVAR(seg, info->font1, GET_IVT(0x43));
      |                                      ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:240:9: note: in expansion of macro 'SET_BDA_EXT'
  240 |         SET_BDA_EXT(vbe_mode, vbe_mode);
      |         ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:242:9: note: in expansion of macro 'SET_BDA_EXT'
  242 |         SET_BDA_EXT(vgamode_offset, (u32)vmode_g);
      |         ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:243:9: note: in expansion of macro 'SET_IVT'
  243 |         SET_IVT(0x1f, GET_FARVAR(seg, info->font0));
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:244:9: note: in expansion of macro 'SET_IVT'
  244 |         SET_IVT(0x43, GET_FARVAR(seg, info->font1));
      |         ^~~~~~~
vgasrc/vgabios.c: In function 'get_current_mode':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
vgasrc/vgabios.c: In function 'vga_set_mode':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:281:9: note: in expansion of macro 'SET_BDA'
  281 |         SET_BDA(video_mode, 0xff);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:279:9: note: in expansion of macro 'SET_BDA'
  279 |         SET_BDA(video_mode, mode);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:282:5: note: in expansion of macro 'SET_BDA_EXT'
  282 |     SET_BDA_EXT(vbe_mode, mode | (flags & MF_VBEFLAGS));
      |     ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:283:5: note: in expansion of macro 'SET_BDA_EXT'
  283 |     SET_BDA_EXT(vgamode_offset, (u32)vmode_g);
      |     ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:23: note: in expansion of macro 'GET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |                       ^~~~~~~~~~~
vgasrc/vgabios.c:288:9: note: in expansion of macro 'MASK_BDA_EXT'
  288 |         MASK_BDA_EXT(flags, BF_EXTRA_STACK
      |         ^~~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/vgabios.c:288:9: note: in expansion of macro 'MASK_BDA_EXT'
  288 |         MASK_BDA_EXT(flags, BF_EXTRA_STACK
      |         ^~~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:296:9: note: in expansion of macro 'SET_BDA'
  296 |         SET_BDA(video_cols, width / cwidth);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:297:9: note: in expansion of macro 'SET_BDA'
  297 |         SET_BDA(video_rows, (height / cheight) - 1);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:298:9: note: in expansion of macro 'SET_BDA'
  298 |         SET_BDA(cursor_type, vga_emulate_text() ? 0x0607 : 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:291:9: note: in expansion of macro 'SET_BDA'
  291 |         SET_BDA(video_cols, width);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:292:9: note: in expansion of macro 'SET_BDA'
  292 |         SET_BDA(video_rows, height-1);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:293:9: note: in expansion of macro 'SET_BDA'
  293 |         SET_BDA(cursor_type, 0x0607);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:300:5: note: in expansion of macro 'SET_BDA'
  300 |     SET_BDA(video_pagesize, calc_page_size(memmodel, width, height));
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:301:5: note: in expansion of macro 'SET_BDA'
  301 |     SET_BDA(crtc_address, CONFIG_VGA_STDVGA_PORTS ? stdvga_get_crtc() : 0);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:302:5: note: in expansion of macro 'SET_BDA'
  302 |     SET_BDA(char_height, cheight);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:303:5: note: in expansion of macro 'SET_BDA'
  303 |     SET_BDA(video_ctl, 0x60 | (flags & MF_NOCLEARMEM ? 0x80 : 0x00));
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:304:5: note: in expansion of macro 'SET_BDA'
  304 |     SET_BDA(video_switches, 0xF9);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.c:305:5: note: in expansion of macro 'SET_BDA'
  305 |     SET_BDA(modeset_ctl, GET_BDA(modeset_ctl) & 0x7f);
      |     ^~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:305:26: note: in expansion of macro 'GET_BDA'
  305 |     SET_BDA(modeset_ctl, GET_BDA(modeset_ctl) & 0x7f);
      |                          ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:305:5: note: in expansion of macro 'SET_BDA'
  305 |     SET_BDA(modeset_ctl, GET_BDA(modeset_ctl) & 0x7f);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:309:5: note: in expansion of macro 'SET_BDA'
  309 |     SET_BDA(video_pagestart, 0x0000);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:310:5: note: in expansion of macro 'SET_BDA'
  310 |     SET_BDA(video_page, 0x00);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:313:5: note: in expansion of macro 'SET_IVT'
  313 |     SET_IVT(0x1f, SEGOFF(get_global_seg(), (u32)&vgafont8[128 * 8]));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:313:5: note: in expansion of macro 'SET_IVT'
  313 |     SET_IVT(0x1f, SEGOFF(get_global_seg(), (u32)&vgafont8[128 * 8]));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:323:9: note: in expansion of macro 'SET_IVT'
  323 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont16));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:323:9: note: in expansion of macro 'SET_IVT'
  323 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont16));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:320:9: note: in expansion of macro 'SET_IVT'
  320 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont14));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:320:9: note: in expansion of macro 'SET_IVT'
  320 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont14));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:317:9: note: in expansion of macro 'SET_IVT'
  317 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont8));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:317:9: note: in expansion of macro 'SET_IVT'
  317 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont8));
      |         ^~~~~~~
vgasrc/vgabios.c: In function 'load_gfx_font':
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:735:5: note: in expansion of macro 'SET_IVT'
  735 |     SET_IVT(0x43, SEGOFF(seg, off));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:735:5: note: in expansion of macro 'SET_IVT'
  735 |     SET_IVT(0x43, SEGOFF(seg, off));
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:751:5: note: in expansion of macro 'SET_BDA'
  751 |     SET_BDA(video_rows, rows - 1);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:752:5: note: in expansion of macro 'SET_BDA'
  752 |     SET_BDA(char_height, height);
      |     ^~~~~~~
In function 'handle_101b',
    inlined from 'handle_10' at vgasrc/vgabios.c:1125:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |      ^
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:1062:38: note: in expansion of macro 'GET_BDA'
 1062 |     SET_FARVAR(seg, info->dcc_index, GET_BDA(dcc_index));
      |                                      ^~~~~~~
In function 'handle_101a01',
    inlined from 'handle_101a' at vgasrc/vgabios.c:1032:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1124:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:1016:5: note: in expansion of macro 'SET_BDA'
 1016 |     SET_BDA(dcc_index, regs->bl);
      |     ^~~~~~~
In function 'handle_101a00',
    inlined from 'handle_101a' at vgasrc/vgabios.c:1031:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1124:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:1009:16: note: in expansion of macro 'GET_BDA'
 1009 |     regs->bx = GET_BDA(dcc_index);
      |                ^~~~~~~
In function 'handle_101234',
    inlined from 'handle_1012' at vgasrc/vgabios.c:973:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.c:935:5: note: in expansion of macro 'SET_BDA'
  935 |     SET_BDA(video_ctl, (GET_BDA(video_ctl) & ~0x01) | (regs->al & 0x01));
      |     ^~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:935:25: note: in expansion of macro 'GET_BDA'
  935 |     SET_BDA(video_ctl, (GET_BDA(video_ctl) & ~0x01) | (regs->al & 0x01));
      |                         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:935:5: note: in expansion of macro 'SET_BDA'
  935 |     SET_BDA(video_ctl, (GET_BDA(video_ctl) & ~0x01) | (regs->al & 0x01));
      |     ^~~~~~~
In function 'handle_101233',
    inlined from 'handle_1012' at vgasrc/vgabios.c:972:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:927:13: note: in expansion of macro 'GET_BDA'
  927 |     u8 v2 = GET_BDA(modeset_ctl) & ~0x02;
      |             ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:928:5: note: in expansion of macro 'SET_BDA'
  928 |     SET_BDA(modeset_ctl, v | v2);
      |     ^~~~~~~
In function 'handle_101231',
    inlined from 'handle_1012' at vgasrc/vgabios.c:970:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:909:15: note: in expansion of macro 'GET_BDA'
  909 |     u8 mctl = GET_BDA(video_ctl) & ~0x08;
      |               ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:910:5: note: in expansion of macro 'SET_BDA'
  910 |     SET_BDA(video_ctl, mctl | v);
      |     ^~~~~~~
In function 'handle_101230',
    inlined from 'handle_1012' at vgasrc/vgabios.c:969:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
vgasrc/vgabios.c:878:8: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  878 |     u8 mctl = GET_BDA(modeset_ctl);
      |        ^~~~
vgasrc/vgabios.c:879:8: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  879 |     u8 vswt = GET_BDA(video_switches);
      |        ^~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:900:5: note: in expansion of macro 'SET_BDA'
  900 |     SET_BDA(modeset_ctl, mctl);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:901:5: note: in expansion of macro 'SET_BDA'
  901 |     SET_BDA(video_switches, vswt);
      |     ^~~~~~~
In function 'handle_101210',
    inlined from 'handle_1012' at vgasrc/vgabios.c:968:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
vgasrc/vgabios.c:867:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  867 |     u16 crtc_addr = GET_BDA(crtc_address);
      |         ^~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:872:16: note: in expansion of macro 'GET_BDA'
  872 |     regs->cx = GET_BDA(video_switches) & 0x0f;
      |                ^~~~~~~
In function 'handle_101130',
    inlined from 'handle_1011' at vgasrc/vgabios.c:853:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1121:16:
vgasrc/vgabios.c:790:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  790 |         struct segoff_s so = GET_IVT(0x43);
      |                         ^~
vgasrc/vgabios.c:790:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
vgasrc/vgabios.c:784:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  784 |         struct segoff_s so = GET_IVT(0x1f);
      |                         ^~
vgasrc/vgabios.c:784:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:824:16: note: in expansion of macro 'GET_BDA'
  824 |     regs->cx = GET_BDA(char_height) & 0xff;
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:827:16: note: in expansion of macro 'GET_BDA'
  827 |     regs->dl = GET_BDA(video_rows);
      |                ^~~~~~~
In function 'handle_101120',
    inlined from 'handle_1011' at vgasrc/vgabios.c:854:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1121:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:727:5: note: in expansion of macro 'SET_IVT'
  727 |     SET_IVT(0x1f, SEGOFF(regs->es, regs->bp));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:727:5: note: in expansion of macro 'SET_IVT'
  727 |     SET_IVT(0x1f, SEGOFF(regs->es, regs->bp));
      |     ^~~~~~~
In function 'handle_100f',
    inlined from 'handle_10' at vgasrc/vgabios.c:1119:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:518:16: note: in expansion of macro 'GET_BDA'
  518 |     regs->bh = GET_BDA(video_page);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:519:16: note: in expansion of macro 'GET_BDA'
  519 |     regs->al = GET_BDA(video_mode) | (GET_BDA(video_ctl) & 0x80);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:519:39: note: in expansion of macro 'GET_BDA'
  519 |     regs->al = GET_BDA(video_mode) | (GET_BDA(video_ctl) & 0x80);
      |                                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:520:16: note: in expansion of macro 'GET_BDA'
  520 |     regs->ah = GET_BDA(video_cols);
      |                ^~~~~~~
In function 'get_current_mode',
    inlined from 'set_active_page' at vgasrc/vgabios.c:117:33,
    inlined from 'handle_1005' at vgasrc/vgabios.c:387:5,
    inlined from 'handle_10' at vgasrc/vgabios.c:1109:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'set_active_page',
    inlined from 'handle_1005' at vgasrc/vgabios.c:387:5,
    inlined from 'handle_10' at vgasrc/vgabios.c:1109:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:127:5: note: in expansion of macro 'SET_BDA'
  127 |     SET_BDA(video_pagestart, address);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:128:5: note: in expansion of macro 'SET_BDA'
  128 |     SET_BDA(video_page, page);
      |     ^~~~~~~
In function 'handle_1003',
    inlined from 'handle_10' at vgasrc/vgabios.c:1107:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:370:16: note: in expansion of macro 'GET_BDA'
  370 |     regs->cx = GET_BDA(cursor_type);
      |                ^~~~~~~
In function 'handle_1000',
    inlined from 'handle_10' at vgasrc/vgabios.c:1104:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:339:30: note: in expansion of macro 'GET_BDA'
  339 |     int flags = MF_LEGACY | (GET_BDA(modeset_ctl) & (MF_NOPALETTE|MF_GRAYSUM));
      |                              ^~~~~~~
  Compile checking build/vgabios-ati/vgasrc/vgafb.o
In file included from src/biosvar.h:10,
                 from vgasrc/vgafb.c:8:
vgasrc/vgafb.c: In function 'get_font_data':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:387:23: note: in expansion of macro 'GET_BDA'
  387 |     int char_height = GET_BDA(char_height);
      |                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgafb.c:390:16: note: in expansion of macro 'GET_IVT'
  390 |         font = GET_IVT(0x1f);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgafb.c:390:16: note: in expansion of macro 'GET_IVT'
  390 |         font = GET_IVT(0x1f);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgafb.c:393:16: note: in expansion of macro 'GET_IVT'
  393 |         font = GET_IVT(0x43);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgafb.c:393:16: note: in expansion of macro 'GET_IVT'
  393 |         font = GET_IVT(0x43);
      |                ^~~~~~~
vgasrc/vgafb.c: In function 'text_address':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:552:18: note: in expansion of macro 'GET_BDA'
  552 |     int stride = GET_BDA(video_cols) * 2;
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:553:22: note: in expansion of macro 'GET_BDA'
  553 |     u32 pageoffset = GET_BDA(video_pagesize) * cp.page;
      |                      ^~~~~~~
vgasrc/vgafb.c: In function 'vgafb_clear_chars.isra':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:590:18: note: in expansion of macro 'GET_BDA'
  590 |     int stride = GET_BDA(video_cols) * 2;
      |                  ^~~~~~~
In function 'gfx_clear_chars',
    inlined from 'vgafb_clear_chars.isra' at vgasrc/vgafb.c:586:9:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:373:19: note: in expansion of macro 'GET_BDA'
  373 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
vgasrc/vgafb.c: In function 'vgafb_move_chars.isra':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:570:18: note: in expansion of macro 'GET_BDA'
  570 |     int stride = GET_BDA(video_cols) * 2;
      |                  ^~~~~~~
In function 'gfx_move_chars',
    inlined from 'vgafb_move_chars.isra' at vgasrc/vgafb.c:566:9:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:356:19: note: in expansion of macro 'GET_BDA'
  356 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
In function 'gfx_write_char',
    inlined from 'vgafb_write_char' at vgasrc/vgafb.c:633:9:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:404:17: note: in expansion of macro 'GET_BDA'
  404 |     if (cp.x >= GET_BDA(video_cols))
      |                 ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:411:19: note: in expansion of macro 'GET_BDA'
  411 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
In function 'gfx_read_char',
    inlined from 'vgafb_read_char' at vgasrc/vgafb.c:655:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:456:19: note: in expansion of macro 'GET_BDA'
  456 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:457:17: note: in expansion of macro 'GET_BDA'
  457 |     if (cp.x >= GET_BDA(video_cols) || cheight > ARRAY_SIZE(lines))
      |                 ^~~~~~~
  Compile checking build/vgabios-ati/vgasrc/swcursor.o
  Compile checking build/vgabios-ati/vgasrc/vgafonts.o
  Compile checking build/vgabios-ati/vgasrc/vbe.o
In file included from src/biosvar.h:10,
                 from vgasrc/vbe.c:9:
vgasrc/vbe.c: In function 'vbe_104f05':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vbe.c:257:9: note: in expansion of macro 'GET_BDA_EXT'
  257 |     if (GET_BDA_EXT(vbe_mode) & MF_LINEARFB) {
      |         ^~~~~~~~~~~
In function 'vbe_104f10',
    inlined from 'handle_104f' at vgasrc/vbe.c:458:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vbe.c:395:20: note: in expansion of macro 'GET_BDA_EXT'
  395 |         regs->bh = GET_BDA_EXT(flags) & BF_PM_MASK;
      |                    ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:23: note: in expansion of macro 'GET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |                       ^~~~~~~~~~~
vgasrc/vbe.c:392:9: note: in expansion of macro 'MASK_BDA_EXT'
  392 |         MASK_BDA_EXT(flags, BF_PM_MASK, regs->bh & BF_PM_MASK);
      |         ^~~~~~~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/vbe.c:392:9: note: in expansion of macro 'MASK_BDA_EXT'
  392 |         MASK_BDA_EXT(flags, BF_PM_MASK, regs->bh & BF_PM_MASK);
      |         ^~~~~~~~~~~~
In function 'vbe_104f03',
    inlined from 'handle_104f' at vgasrc/vbe.c:451:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vbe.c:227:16: note: in expansion of macro 'GET_BDA_EXT'
  227 |     regs->bx = GET_BDA_EXT(vbe_mode);
      |                ^~~~~~~~~~~
  Compile checking build/vgabios-ati/vgasrc/stdvga.o
  Compile checking build/vgabios-ati/vgasrc/stdvgamodes.o
In file included from src/biosvar.h:10,
                 from vgasrc/stdvgamodes.c:8:
vgasrc/stdvgamodes.c: In function 'stdvga_build_video_param':
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/stdvgamodes.c:360:5: note: in expansion of macro 'SET_BDA'
  360 |     SET_BDA(video_savetable
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/stdvgamodes.c:360:5: note: in expansion of macro 'SET_BDA'
  360 |     SET_BDA(video_savetable
      |     ^~~~~~~
  Compile checking build/vgabios-ati/vgasrc/stdvgaio.o
  Compile checking build/vgabios-ati/vgasrc/clext.o
  Compile checking build/vgabios-ati/vgasrc/svgamodes.o
  Compile checking build/vgabios-ati/vgasrc/atiext.o
  Compile checking build/vgabios-ati/vgasrc/bochsvga.o
  Compile checking build/vgabios-ati/vgasrc/geodevga.o
  Compile checking build/vgabios-ati/src/fw/coreboot.o
  Compile checking build/vgabios-ati/vgasrc/cbvga.o
In file included from src/biosvar.h:10,
                 from vgasrc/cbvga.c:8:
vgasrc/cbvga.c: In function 'cbvga_set_mode':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/cbvga.c:139:22: note: in expansion of macro 'GET_BDA_EXT'
  139 |     u8 extra_stack = GET_BDA_EXT(flags) & BF_EXTRA_STACK;
      |                      ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/cbvga.c:139:22: note: in expansion of macro 'GET_BDA_EXT'
  139 |     u8 extra_stack = GET_BDA_EXT(flags) & BF_EXTRA_STACK;
      |                      ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/cbvga.c:140:5: note: in expansion of macro 'MASK_BDA_EXT'
  140 |     MASK_BDA_EXT(flags, BF_EMULATE_TEXT, emul ? BF_EMULATE_TEXT : 0);
      |     ^~~~~~~~~~~~
  Compile checking build/vgabios-ati/vgasrc/bochsdisplay.o
  Compile checking build/vgabios-ati/vgasrc/ramfb.o
  Compiling whole program build/vgabios-ati/vgaccode16.raw.s
In file included from ./src/output.c:9,
                 from build/vgabios-ati/vgaccode16.raw.s.tmp.c:1:
In function 'bda_save_restore',
    inlined from 'stdvga_save_restore' at ./vgasrc/stdvga.c:453:12:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:113:34: note: in definition of macro '__SET_FARVAR'
  113 |         typeof(var) __sfv_val = (val);          \
      |                                  ^~~
./vgasrc/vgabios.c:230:9: note: in expansion of macro 'SET_FARVAR'
  230 |         SET_FARVAR(seg, info->vbe_mode, GET_BDA_EXT(vbe_mode));
      |         ^~~~~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:230:41: note: in expansion of macro 'GET_BDA_EXT'
  230 |         SET_FARVAR(seg, info->vbe_mode, GET_BDA_EXT(vbe_mode));
      |                                         ^~~~~~~~~~~
./src/farptr.h:37:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   37 |     __asm__(prefix "movw %w1, %%" #SEG ":%0" : "=m"(var)        \
      |     ^~~~~~~
./src/farptr.h:73:13: note: in expansion of macro 'WRITE16_SEG'
   73 |             WRITE16_SEG(prefix, seg, var, (val));       \
      |             ^~~~~~~~~~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:240:9: note: in expansion of macro 'SET_BDA_EXT'
  240 |         SET_BDA_EXT(vbe_mode, vbe_mode);
      |         ^~~~~~~~~~~
./src/farptr.h:37:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   37 |     __asm__(prefix "movw %w1, %%" #SEG ":%0" : "=m"(var)        \
      |     ^~~~~~~
./src/farptr.h:73:13: note: in expansion of macro 'WRITE16_SEG'
   73 |             WRITE16_SEG(prefix, seg, var, (val));       \
      |             ^~~~~~~~~~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:242:9: note: in expansion of macro 'SET_BDA_EXT'
  242 |         SET_BDA_EXT(vgamode_offset, (u32)vmode_g);
      |         ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_write_pixel' at ./vgasrc/vgafb.c:505:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_read_pixel' at ./vgasrc/vgafb.c:529:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_write_char' at ./vgasrc/vgafb.c:628:33,
    inlined from 'write_char.isra' at ./vgasrc/vgabios.c:161:5:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_clear_chars.constprop.isra' at ./vgasrc/vgafb.c:581:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_move_chars.isra' at ./vgasrc/vgafb.c:561:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
./vgasrc/vgabios.c: In function 'vga_set_mode':
./vgasrc/vgabios.h:63:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |                                                             ^~
./src/farptr.h:37:53: note: in definition of macro 'WRITE16_SEG'
   37 |     __asm__(prefix "movw %w1, %%" #SEG ":%0" : "=m"(var)        \
      |                                                     ^~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:282:5: note: in expansion of macro 'SET_BDA_EXT'
  282 |     SET_BDA_EXT(vbe_mode, mode | (flags & MF_VBEFLAGS));
      |     ^~~~~~~~~~~
./vgasrc/vgabios.h:63:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |                                                             ^~
./src/farptr.h:37:53: note: in definition of macro 'WRITE16_SEG'
   37 |     __asm__(prefix "movw %w1, %%" #SEG ":%0" : "=m"(var)        \
      |                                                     ^~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:283:5: note: in expansion of macro 'SET_BDA_EXT'
  283 |     SET_BDA_EXT(vgamode_offset, (u32)vmode_g);
      |     ^~~~~~~~~~~
./vgasrc/vgabios.h:61:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |                                                             ^~
./src/farptr.h:113:34: note: in definition of macro '__SET_FARVAR'
  113 |         typeof(var) __sfv_val = (val);          \
      |                                  ^~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./src/farptr.h:58:9: note: in expansion of macro 'READ8_SEG'
   58 |         READ8_SEG(prefix, seg, __val, var);     \
      |         ^~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:23: note: in expansion of macro 'GET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |                       ^~~~~~~~~~~
./vgasrc/vgabios.c:288:9: note: in expansion of macro 'MASK_BDA_EXT'
  288 |         MASK_BDA_EXT(flags, BF_EXTRA_STACK
      |         ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |                                                             ^~
./src/farptr.h:34:53: note: in definition of macro 'WRITE8_SEG'
   34 |     __asm__(prefix "movb %b1, %%" #SEG ":%0" : "=m"(var)        \
      |                                                     ^~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./vgasrc/vgabios.c:288:9: note: in expansion of macro 'MASK_BDA_EXT'
  288 |         MASK_BDA_EXT(flags, BF_EXTRA_STACK
      |         ^~~~~~~~~~~~
./vgasrc/vbe.c: In function 'vbe_104f05':
./vgasrc/vgabios.h:61:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |                                                             ^~
./src/farptr.h:22:19: note: in definition of macro 'READ16_SEG'
   22 |             : "m"(var), "m"(__segment_ ## SEG))
      |                   ^~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vbe.c:257:9: note: in expansion of macro 'GET_BDA_EXT'
  257 |     if (GET_BDA_EXT(vbe_mode) & MF_LINEARFB) {
      |         ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vbe_104f05' at ./vgasrc/vbe.c:261:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'vbe_104f10',
    inlined from 'handle_104f' at ./vgasrc/vbe.c:458:16:
./src/farptr.h:18:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   18 |     __asm__(prefix "movb %%" #SEG ":%1, %b0" : "=Qi"(value)     \
      |     ^~~~~~~
./src/farptr.h:58:9: note: in expansion of macro 'READ8_SEG'
   58 |         READ8_SEG(prefix, seg, __val, var);     \
      |         ^~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vbe.c:395:20: note: in expansion of macro 'GET_BDA_EXT'
  395 |         regs->bh = GET_BDA_EXT(flags) & BF_PM_MASK;
      |                    ^~~~~~~~~~~
./src/farptr.h:18:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   18 |     __asm__(prefix "movb %%" #SEG ":%1, %b0" : "=Qi"(value)     \
      |     ^~~~~~~
./src/farptr.h:113:34: note: in definition of macro '__SET_FARVAR'
  113 |         typeof(var) __sfv_val = (val);          \
      |                                  ^~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./src/farptr.h:58:9: note: in expansion of macro 'READ8_SEG'
   58 |         READ8_SEG(prefix, seg, __val, var);     \
      |         ^~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:23: note: in expansion of macro 'GET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |                       ^~~~~~~~~~~
./vgasrc/vbe.c:392:9: note: in expansion of macro 'MASK_BDA_EXT'
  392 |         MASK_BDA_EXT(flags, BF_PM_MASK, regs->bh & BF_PM_MASK);
      |         ^~~~~~~~~~~~
./src/farptr.h:34:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   34 |     __asm__(prefix "movb %b1, %%" #SEG ":%0" : "=m"(var)        \
      |     ^~~~~~~
./src/farptr.h:71:13: note: in expansion of macro 'WRITE8_SEG'
   71 |             WRITE8_SEG(prefix, seg, var, (val));        \
      |             ^~~~~~~~~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./vgasrc/vbe.c:392:9: note: in expansion of macro 'MASK_BDA_EXT'
  392 |         MASK_BDA_EXT(flags, BF_PM_MASK, regs->bh & BF_PM_MASK);
      |         ^~~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vbe_104f08' at ./vgasrc/vbe.c:352:33,
    inlined from 'handle_104f' at ./vgasrc/vbe.c:456:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vbe_104f07' at ./vgasrc/vbe.c:316:33,
    inlined from 'handle_104f' at ./vgasrc/vbe.c:455:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vbe_104f06' at ./vgasrc/vbe.c:286:33,
    inlined from 'handle_104f' at ./vgasrc/vbe.c:454:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'vbe_104f03',
    inlined from 'handle_104f' at ./vgasrc/vbe.c:451:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vbe.c:227:16: note: in expansion of macro 'GET_BDA_EXT'
  227 |     regs->bx = GET_BDA_EXT(vbe_mode);
      |                ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_read_char' at ./vgasrc/vgafb.c:650:33,
    inlined from 'handle_1008' at ./vgasrc/vgabios.c:431:25,
    inlined from 'handle_10' at ./vgasrc/vgabios.c:1112:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'set_active_page' at ./vgasrc/vgabios.c:117:33,
    inlined from 'handle_1005' at ./vgasrc/vgabios.c:387:5,
    inlined from 'handle_10' at ./vgasrc/vgabios.c:1109:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
  Fixup VGA rom assembler
  Compiling to assembler build/vgabios-ati/src/asm-offsets.s
  Generating offset file build/vgabios-ati/asm-offsets.h
  Compiling (16bit) build/vgabios-ati/vgaentry.o
  Precompiling build/vgabios-ati/vgasrc/vgalayout.lds
  Linking build/vgabios-ati/vgarom.o
Version: 1.16.2-debian-1.16.2-1
ld: warning: build/vgabios-ati/vgaentry.o: missing .note.GNU-stack section implies executable stack
ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
ld: warning: build/vgabios-ati/vgarom.o has a LOAD segment with RWX permissions
  Extracting binary build/vgabios-ati/vgabios.bin.raw
  Finalizing rom build/vgabios-ati/vgabios.bin
make[1]: Leaving directory '/build/seabios-1.16.2'
rm -f build/vgabios-ati.bin
ln build/vgabios-ati/vgabios.bin build/vgabios-ati.bin

=== Building vgabios-bochs-display.bin ===

set -e; if [ ! -e build/vgabios-bochs-display/.config.old ]; then rm -rf build/vgabios-bochs-display; mkdir -p build/vgabios-bochs-display; for x in BUILD_VGABIOS=y DISPLAY_BOCHS=y VGA_PCI=y; do echo CONFIG_$x; done > build/vgabios-bochs-display/.config; /usr/bin/make PYTHON="python3 -B" KCONFIG_CONFIG=/build/seabios-1.16.2/build/vgabios-bochs-display/.config OUT=build/vgabios-bochs-display/ oldnoconfig; fi
make[1]: Entering directory '/build/seabios-1.16.2'
scripts/kconfig/conf --olddefconfig /build/seabios-1.16.2/src/Kconfig
#
# configuration written to /build/seabios-1.16.2/build/vgabios-bochs-display/.config
#
make[1]: Leaving directory '/build/seabios-1.16.2'
/usr/bin/make PYTHON="python3 -B" $(cat build/env) KCONFIG_CONFIG=/build/seabios-1.16.2/build/vgabios-bochs-display/.config OUT=build/vgabios-bochs-display/ build/vgabios-bochs-display/vgabios.bin
make[1]: Entering directory '/build/seabios-1.16.2'
  Build Kconfig config file
  Compile checking build/vgabios-bochs-display/src/output.o
In file included from src/output.c:9:
src/output.c: In function 'screenc':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
src/output.c:77:25: note: in expansion of macro 'GET_IVT'
   77 |     if (!MODESEGMENT && GET_IVT(0x10).segoff == FUNC16(entry_10).segoff)
      |                         ^~~~~~~
  Compile checking build/vgabios-bochs-display/src/string.o
  Compile checking build/vgabios-bochs-display/src/hw/pci.o
  Compile checking build/vgabios-bochs-display/src/hw/serialio.o
  Compile checking build/vgabios-bochs-display/vgasrc/vgainit.o
In file included from vgasrc/vgainit.c:8:
In function 'set_equipment_flags',
    inlined from 'init_bios_area' at vgasrc/vgainit.c:141:5,
    inlined from 'vga_post' at vgasrc/vgainit.c:182:5:
src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
In file included from src/biosvar.h:10:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'init_bios_area',
    inlined from 'vga_post' at vgasrc/vgainit.c:182:5:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgainit.c:144:5: note: in expansion of macro 'SET_BDA'
  144 |     SET_BDA(modeset_ctl, 0x51);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgainit.c:146:5: note: in expansion of macro 'SET_BDA'
  146 |     SET_BDA(dcc_index, CONFIG_VGA_STDVGA_PORTS ? 0x08 : 0xff);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgainit.c:149:5: note: in expansion of macro 'SET_BDA'
  149 |     SET_BDA(video_msr, 0x00); // Unavailable on vanilla vga, but...
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgainit.c:150:5: note: in expansion of macro 'SET_BDA'
  150 |     SET_BDA(video_pal, 0x00); // Unavailable on vanilla vga, but...
      |     ^~~~~~~
vgasrc/vgainit.c: In function 'vga_post':
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgainit.c:188:5: note: in expansion of macro 'SET_IVT'
  188 |     SET_IVT(0x10, SEGOFF(get_global_seg(), (u32)entry_10));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgainit.c:188:5: note: in expansion of macro 'SET_IVT'
  188 |     SET_IVT(0x10, SEGOFF(get_global_seg(), (u32)entry_10));
      |     ^~~~~~~
In function 'allocate_extra_stack',
    inlined from 'vga_post' at vgasrc/vgainit.c:190:5:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgainit.c:97:5: note: in expansion of macro 'SET_IVT'
   97 |     SET_IVT(0x10, SEGOFF(get_global_seg(), (u32)entry_10_extrastack));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgainit.c:97:5: note: in expansion of macro 'SET_IVT'
   97 |     SET_IVT(0x10, SEGOFF(get_global_seg(), (u32)entry_10_extrastack));
      |     ^~~~~~~
In function 'hook_timer_irq',
    inlined from 'vga_post' at vgasrc/vgainit.c:192:5:
vgasrc/vgainit.c:121:21: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  121 |     struct segoff_s oldirq = GET_IVT(0x08);
      |                     ^~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgainit.c:128:5: note: in expansion of macro 'SET_IVT'
  128 |     SET_IVT(0x08, newirq);
      |     ^~~~~~~
  Compile checking build/vgabios-bochs-display/vgasrc/vgabios.o
In file included from src/biosvar.h:10,
                 from vgasrc/vgabios.c:8:
vgasrc/vgabios.c: In function 'verify_scroll':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:395:18: note: in expansion of macro 'GET_BDA'
  395 |     u16 nbrows = GET_BDA(video_rows) + 1;
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:398:18: note: in expansion of macro 'GET_BDA'
  398 |     u16 nbcols = GET_BDA(video_cols);
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:410:39: note: in expansion of macro 'GET_BDA'
  410 |     struct cursorpos win = {ulx, uly, GET_BDA(video_page)};
      |                                       ^~~~~~~
vgasrc/vgabios.c: In function 'write_char':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:164:19: note: in expansion of macro 'GET_BDA'
  164 |     if (pcp->x == GET_BDA(video_cols)) {
      |                   ^~~~~~~
vgasrc/vgabios.c: In function 'write_teletype':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:195:18: note: in expansion of macro 'GET_BDA'
  195 |     u16 nbrows = GET_BDA(video_rows);
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:200:37: note: in expansion of macro 'GET_BDA'
  200 |         struct cursorpos winsize = {GET_BDA(video_cols), nbrows+1};
      |                                     ^~~~~~~
vgasrc/vgabios.c: In function 'get_cursor_shape':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:59:23: note: in expansion of macro 'GET_BDA'
   59 |     u16 cursor_type = GET_BDA(cursor_type);
      |                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:60:26: note: in expansion of macro 'GET_BDA'
   60 |     u8 emulate_cursor = (GET_BDA(video_ctl) & 1) == 0;
      |                          ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:65:19: note: in expansion of macro 'GET_BDA'
   65 |     u16 cheight = GET_BDA(char_height);
      |                   ^~~~~~~
vgasrc/vgabios.c: In function 'handle_100e.isra':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:510:42: note: in expansion of macro 'GET_BDA'
  510 |     struct cursorpos cp = get_cursor_pos(GET_BDA(video_page));
      |                                          ^~~~~~~
vgasrc/vgabios.c: In function 'bda_save_restore':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |      ^
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:230:41: note: in expansion of macro 'GET_BDA_EXT'
  230 |         SET_FARVAR(seg, info->vbe_mode, GET_BDA_EXT(vbe_mode));
      |                                         ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |      ^
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgabios.c:231:38: note: in expansion of macro 'GET_IVT'
  231 |         SET_FARVAR(seg, info->font0, GET_IVT(0x1f));
      |                                      ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |      ^
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgabios.c:232:38: note: in expansion of macro 'GET_IVT'
  232 |         SET_FARVAR(seg, info->font1, GET_IVT(0x43));
      |                                      ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:240:9: note: in expansion of macro 'SET_BDA_EXT'
  240 |         SET_BDA_EXT(vbe_mode, vbe_mode);
      |         ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:242:9: note: in expansion of macro 'SET_BDA_EXT'
  242 |         SET_BDA_EXT(vgamode_offset, (u32)vmode_g);
      |         ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:243:9: note: in expansion of macro 'SET_IVT'
  243 |         SET_IVT(0x1f, GET_FARVAR(seg, info->font0));
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:244:9: note: in expansion of macro 'SET_IVT'
  244 |         SET_IVT(0x43, GET_FARVAR(seg, info->font1));
      |         ^~~~~~~
vgasrc/vgabios.c: In function 'get_current_mode':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
vgasrc/vgabios.c: In function 'vga_set_mode':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:281:9: note: in expansion of macro 'SET_BDA'
  281 |         SET_BDA(video_mode, 0xff);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:279:9: note: in expansion of macro 'SET_BDA'
  279 |         SET_BDA(video_mode, mode);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:282:5: note: in expansion of macro 'SET_BDA_EXT'
  282 |     SET_BDA_EXT(vbe_mode, mode | (flags & MF_VBEFLAGS));
      |     ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:283:5: note: in expansion of macro 'SET_BDA_EXT'
  283 |     SET_BDA_EXT(vgamode_offset, (u32)vmode_g);
      |     ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:23: note: in expansion of macro 'GET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |                       ^~~~~~~~~~~
vgasrc/vgabios.c:288:9: note: in expansion of macro 'MASK_BDA_EXT'
  288 |         MASK_BDA_EXT(flags, BF_EXTRA_STACK
      |         ^~~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/vgabios.c:288:9: note: in expansion of macro 'MASK_BDA_EXT'
  288 |         MASK_BDA_EXT(flags, BF_EXTRA_STACK
      |         ^~~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:296:9: note: in expansion of macro 'SET_BDA'
  296 |         SET_BDA(video_cols, width / cwidth);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:297:9: note: in expansion of macro 'SET_BDA'
  297 |         SET_BDA(video_rows, (height / cheight) - 1);
      |         ^~~~~~~
In function 'vga_emulate_text',
    inlined from 'vga_set_mode' at vgasrc/vgabios.c:298:9:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.h:68:39: note: in expansion of macro 'GET_BDA_EXT'
   68 |     return CONFIG_VGA_EMULATE_TEXT && GET_BDA_EXT(flags) & BF_EMULATE_TEXT;
      |                                       ^~~~~~~~~~~
vgasrc/vgabios.c: In function 'vga_set_mode':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:298:9: note: in expansion of macro 'SET_BDA'
  298 |         SET_BDA(cursor_type, vga_emulate_text() ? 0x0607 : 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:291:9: note: in expansion of macro 'SET_BDA'
  291 |         SET_BDA(video_cols, width);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:292:9: note: in expansion of macro 'SET_BDA'
  292 |         SET_BDA(video_rows, height-1);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:293:9: note: in expansion of macro 'SET_BDA'
  293 |         SET_BDA(cursor_type, 0x0607);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:300:5: note: in expansion of macro 'SET_BDA'
  300 |     SET_BDA(video_pagesize, calc_page_size(memmodel, width, height));
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:301:5: note: in expansion of macro 'SET_BDA'
  301 |     SET_BDA(crtc_address, CONFIG_VGA_STDVGA_PORTS ? stdvga_get_crtc() : 0);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:302:5: note: in expansion of macro 'SET_BDA'
  302 |     SET_BDA(char_height, cheight);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:303:5: note: in expansion of macro 'SET_BDA'
  303 |     SET_BDA(video_ctl, 0x60 | (flags & MF_NOCLEARMEM ? 0x80 : 0x00));
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:304:5: note: in expansion of macro 'SET_BDA'
  304 |     SET_BDA(video_switches, 0xF9);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.c:305:5: note: in expansion of macro 'SET_BDA'
  305 |     SET_BDA(modeset_ctl, GET_BDA(modeset_ctl) & 0x7f);
      |     ^~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:305:26: note: in expansion of macro 'GET_BDA'
  305 |     SET_BDA(modeset_ctl, GET_BDA(modeset_ctl) & 0x7f);
      |                          ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:305:5: note: in expansion of macro 'SET_BDA'
  305 |     SET_BDA(modeset_ctl, GET_BDA(modeset_ctl) & 0x7f);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:309:5: note: in expansion of macro 'SET_BDA'
  309 |     SET_BDA(video_pagestart, 0x0000);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:310:5: note: in expansion of macro 'SET_BDA'
  310 |     SET_BDA(video_page, 0x00);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:313:5: note: in expansion of macro 'SET_IVT'
  313 |     SET_IVT(0x1f, SEGOFF(get_global_seg(), (u32)&vgafont8[128 * 8]));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:313:5: note: in expansion of macro 'SET_IVT'
  313 |     SET_IVT(0x1f, SEGOFF(get_global_seg(), (u32)&vgafont8[128 * 8]));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:323:9: note: in expansion of macro 'SET_IVT'
  323 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont16));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:323:9: note: in expansion of macro 'SET_IVT'
  323 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont16));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:320:9: note: in expansion of macro 'SET_IVT'
  320 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont14));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:320:9: note: in expansion of macro 'SET_IVT'
  320 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont14));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:317:9: note: in expansion of macro 'SET_IVT'
  317 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont8));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:317:9: note: in expansion of macro 'SET_IVT'
  317 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont8));
      |         ^~~~~~~
vgasrc/vgabios.c: In function 'load_gfx_font':
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:735:5: note: in expansion of macro 'SET_IVT'
  735 |     SET_IVT(0x43, SEGOFF(seg, off));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:735:5: note: in expansion of macro 'SET_IVT'
  735 |     SET_IVT(0x43, SEGOFF(seg, off));
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:751:5: note: in expansion of macro 'SET_BDA'
  751 |     SET_BDA(video_rows, rows - 1);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:752:5: note: in expansion of macro 'SET_BDA'
  752 |     SET_BDA(char_height, height);
      |     ^~~~~~~
In function 'handle_101b',
    inlined from 'handle_10' at vgasrc/vgabios.c:1125:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |      ^
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:1062:38: note: in expansion of macro 'GET_BDA'
 1062 |     SET_FARVAR(seg, info->dcc_index, GET_BDA(dcc_index));
      |                                      ^~~~~~~
In function 'handle_101a01',
    inlined from 'handle_101a' at vgasrc/vgabios.c:1032:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1124:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:1016:5: note: in expansion of macro 'SET_BDA'
 1016 |     SET_BDA(dcc_index, regs->bl);
      |     ^~~~~~~
In function 'handle_101a00',
    inlined from 'handle_101a' at vgasrc/vgabios.c:1031:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1124:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:1009:16: note: in expansion of macro 'GET_BDA'
 1009 |     regs->bx = GET_BDA(dcc_index);
      |                ^~~~~~~
In function 'handle_101234',
    inlined from 'handle_1012' at vgasrc/vgabios.c:973:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.c:935:5: note: in expansion of macro 'SET_BDA'
  935 |     SET_BDA(video_ctl, (GET_BDA(video_ctl) & ~0x01) | (regs->al & 0x01));
      |     ^~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:935:25: note: in expansion of macro 'GET_BDA'
  935 |     SET_BDA(video_ctl, (GET_BDA(video_ctl) & ~0x01) | (regs->al & 0x01));
      |                         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:935:5: note: in expansion of macro 'SET_BDA'
  935 |     SET_BDA(video_ctl, (GET_BDA(video_ctl) & ~0x01) | (regs->al & 0x01));
      |     ^~~~~~~
In function 'handle_101233',
    inlined from 'handle_1012' at vgasrc/vgabios.c:972:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:927:13: note: in expansion of macro 'GET_BDA'
  927 |     u8 v2 = GET_BDA(modeset_ctl) & ~0x02;
      |             ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:928:5: note: in expansion of macro 'SET_BDA'
  928 |     SET_BDA(modeset_ctl, v | v2);
      |     ^~~~~~~
In function 'handle_101231',
    inlined from 'handle_1012' at vgasrc/vgabios.c:970:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:909:15: note: in expansion of macro 'GET_BDA'
  909 |     u8 mctl = GET_BDA(video_ctl) & ~0x08;
      |               ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:910:5: note: in expansion of macro 'SET_BDA'
  910 |     SET_BDA(video_ctl, mctl | v);
      |     ^~~~~~~
In function 'handle_101230',
    inlined from 'handle_1012' at vgasrc/vgabios.c:969:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
vgasrc/vgabios.c:878:8: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  878 |     u8 mctl = GET_BDA(modeset_ctl);
      |        ^~~~
vgasrc/vgabios.c:879:8: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  879 |     u8 vswt = GET_BDA(video_switches);
      |        ^~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:900:5: note: in expansion of macro 'SET_BDA'
  900 |     SET_BDA(modeset_ctl, mctl);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:901:5: note: in expansion of macro 'SET_BDA'
  901 |     SET_BDA(video_switches, vswt);
      |     ^~~~~~~
In function 'handle_101210',
    inlined from 'handle_1012' at vgasrc/vgabios.c:968:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
vgasrc/vgabios.c:867:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  867 |     u16 crtc_addr = GET_BDA(crtc_address);
      |         ^~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:872:16: note: in expansion of macro 'GET_BDA'
  872 |     regs->cx = GET_BDA(video_switches) & 0x0f;
      |                ^~~~~~~
In function 'handle_101130',
    inlined from 'handle_1011' at vgasrc/vgabios.c:853:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1121:16:
vgasrc/vgabios.c:790:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  790 |         struct segoff_s so = GET_IVT(0x43);
      |                         ^~
vgasrc/vgabios.c:790:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
vgasrc/vgabios.c:784:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  784 |         struct segoff_s so = GET_IVT(0x1f);
      |                         ^~
vgasrc/vgabios.c:784:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:824:16: note: in expansion of macro 'GET_BDA'
  824 |     regs->cx = GET_BDA(char_height) & 0xff;
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:827:16: note: in expansion of macro 'GET_BDA'
  827 |     regs->dl = GET_BDA(video_rows);
      |                ^~~~~~~
In function 'handle_101120',
    inlined from 'handle_1011' at vgasrc/vgabios.c:854:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1121:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:727:5: note: in expansion of macro 'SET_IVT'
  727 |     SET_IVT(0x1f, SEGOFF(regs->es, regs->bp));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:727:5: note: in expansion of macro 'SET_IVT'
  727 |     SET_IVT(0x1f, SEGOFF(regs->es, regs->bp));
      |     ^~~~~~~
In function 'handle_100f',
    inlined from 'handle_10' at vgasrc/vgabios.c:1119:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:518:16: note: in expansion of macro 'GET_BDA'
  518 |     regs->bh = GET_BDA(video_page);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:519:16: note: in expansion of macro 'GET_BDA'
  519 |     regs->al = GET_BDA(video_mode) | (GET_BDA(video_ctl) & 0x80);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:519:39: note: in expansion of macro 'GET_BDA'
  519 |     regs->al = GET_BDA(video_mode) | (GET_BDA(video_ctl) & 0x80);
      |                                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:520:16: note: in expansion of macro 'GET_BDA'
  520 |     regs->ah = GET_BDA(video_cols);
      |                ^~~~~~~
In function 'get_current_mode',
    inlined from 'set_active_page' at vgasrc/vgabios.c:117:33,
    inlined from 'handle_1005' at vgasrc/vgabios.c:387:5,
    inlined from 'handle_10' at vgasrc/vgabios.c:1109:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'set_active_page',
    inlined from 'handle_1005' at vgasrc/vgabios.c:387:5,
    inlined from 'handle_10' at vgasrc/vgabios.c:1109:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:127:5: note: in expansion of macro 'SET_BDA'
  127 |     SET_BDA(video_pagestart, address);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:128:5: note: in expansion of macro 'SET_BDA'
  128 |     SET_BDA(video_page, page);
      |     ^~~~~~~
In function 'handle_1003',
    inlined from 'handle_10' at vgasrc/vgabios.c:1107:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:370:16: note: in expansion of macro 'GET_BDA'
  370 |     regs->cx = GET_BDA(cursor_type);
      |                ^~~~~~~
In function 'set_cursor_shape',
    inlined from 'handle_1001' at vgasrc/vgabios.c:357:5,
    inlined from 'handle_10' at vgasrc/vgabios.c:1105:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:79:5: note: in expansion of macro 'SET_BDA'
   79 |     SET_BDA(cursor_type, cursor_type);
      |     ^~~~~~~
In function 'handle_1000',
    inlined from 'handle_10' at vgasrc/vgabios.c:1104:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:339:30: note: in expansion of macro 'GET_BDA'
  339 |     int flags = MF_LEGACY | (GET_BDA(modeset_ctl) & (MF_NOPALETTE|MF_GRAYSUM));
      |                              ^~~~~~~
  Compile checking build/vgabios-bochs-display/vgasrc/vgafb.o
In file included from src/biosvar.h:10,
                 from vgasrc/vgafb.c:8:
vgasrc/vgafb.c: In function 'get_font_data':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:387:23: note: in expansion of macro 'GET_BDA'
  387 |     int char_height = GET_BDA(char_height);
      |                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgafb.c:390:16: note: in expansion of macro 'GET_IVT'
  390 |         font = GET_IVT(0x1f);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgafb.c:390:16: note: in expansion of macro 'GET_IVT'
  390 |         font = GET_IVT(0x1f);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgafb.c:393:16: note: in expansion of macro 'GET_IVT'
  393 |         font = GET_IVT(0x43);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgafb.c:393:16: note: in expansion of macro 'GET_IVT'
  393 |         font = GET_IVT(0x43);
      |                ^~~~~~~
vgasrc/vgafb.c: In function 'text_address':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:552:18: note: in expansion of macro 'GET_BDA'
  552 |     int stride = GET_BDA(video_cols) * 2;
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:553:22: note: in expansion of macro 'GET_BDA'
  553 |     u32 pageoffset = GET_BDA(video_pagesize) * cp.page;
      |                      ^~~~~~~
vgasrc/vgafb.c: In function 'vgafb_clear_chars.isra':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:590:18: note: in expansion of macro 'GET_BDA'
  590 |     int stride = GET_BDA(video_cols) * 2;
      |                  ^~~~~~~
In function 'gfx_clear_chars',
    inlined from 'vgafb_clear_chars.isra' at vgasrc/vgafb.c:586:9:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:373:19: note: in expansion of macro 'GET_BDA'
  373 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
In function 'vga_emulate_text',
    inlined from 'gfx_clear_chars' at vgasrc/vgafb.c:377:9,
    inlined from 'vgafb_clear_chars.isra' at vgasrc/vgafb.c:586:9:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.h:68:39: note: in expansion of macro 'GET_BDA_EXT'
   68 |     return CONFIG_VGA_EMULATE_TEXT && GET_BDA_EXT(flags) & BF_EMULATE_TEXT;
      |                                       ^~~~~~~~~~~
vgasrc/vgafb.c: In function 'vgafb_move_chars.isra':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:570:18: note: in expansion of macro 'GET_BDA'
  570 |     int stride = GET_BDA(video_cols) * 2;
      |                  ^~~~~~~
In function 'gfx_move_chars',
    inlined from 'vgafb_move_chars.isra' at vgasrc/vgafb.c:566:9:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:356:19: note: in expansion of macro 'GET_BDA'
  356 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
In function 'gfx_write_char',
    inlined from 'vgafb_write_char' at vgasrc/vgafb.c:633:9:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:404:17: note: in expansion of macro 'GET_BDA'
  404 |     if (cp.x >= GET_BDA(video_cols))
      |                 ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:411:19: note: in expansion of macro 'GET_BDA'
  411 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
In function 'vga_emulate_text',
    inlined from 'gfx_write_char' at vgasrc/vgafb.c:415:9,
    inlined from 'vgafb_write_char' at vgasrc/vgafb.c:633:9:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.h:68:39: note: in expansion of macro 'GET_BDA_EXT'
   68 |     return CONFIG_VGA_EMULATE_TEXT && GET_BDA_EXT(flags) & BF_EMULATE_TEXT;
      |                                       ^~~~~~~~~~~
In function 'gfx_read_char',
    inlined from 'vgafb_read_char' at vgasrc/vgafb.c:655:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:456:19: note: in expansion of macro 'GET_BDA'
  456 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:457:17: note: in expansion of macro 'GET_BDA'
  457 |     if (cp.x >= GET_BDA(video_cols) || cheight > ARRAY_SIZE(lines))
      |                 ^~~~~~~
In function 'vga_emulate_text',
    inlined from 'gfx_read_char' at vgasrc/vgafb.c:468:9,
    inlined from 'vgafb_read_char' at vgasrc/vgafb.c:655:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.h:68:39: note: in expansion of macro 'GET_BDA_EXT'
   68 |     return CONFIG_VGA_EMULATE_TEXT && GET_BDA_EXT(flags) & BF_EMULATE_TEXT;
      |                                       ^~~~~~~~~~~
  Compile checking build/vgabios-bochs-display/vgasrc/swcursor.o
In file included from src/biosvar.h:10,
                 from vgasrc/swcursor.c:7:
vgasrc/swcursor.c: In function 'set_swcursor':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/swcursor.c:41:16: note: in expansion of macro 'GET_BDA_EXT'
   41 |     u8 flags = GET_BDA_EXT(flags);
      |                ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/swcursor.c:48:42: note: in expansion of macro 'GET_BDA'
   48 |     struct cursorpos cp = get_cursor_pos(GET_BDA(video_page));
      |                                          ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/swcursor.c:49:17: note: in expansion of macro 'GET_BDA'
   49 |     if (cp.x >= GET_BDA(video_cols) || cp.y > GET_BDA(video_rows)
      |                 ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/swcursor.c:49:47: note: in expansion of macro 'GET_BDA'
   49 |     if (cp.x >= GET_BDA(video_cols) || cp.y > GET_BDA(video_rows)
      |                                               ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/swcursor.c:50:12: note: in expansion of macro 'GET_BDA'
   50 |         || GET_BDA(cursor_type) >= 0x2000)
      |            ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/swcursor.c:54:5: note: in expansion of macro 'SET_BDA_EXT'
   54 |     SET_BDA_EXT(flags, (flags & ~BF_SWCURSOR) | (enable ? BF_SWCURSOR : 0));
      |     ^~~~~~~~~~~
In function 'gfx_set_swcursor',
    inlined from 'set_swcursor' at vgasrc/swcursor.c:57:9:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/swcursor.c:22:19: note: in expansion of macro 'GET_BDA'
   22 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
In function 'vga_emulate_text',
    inlined from 'swcursor_pre_handle10' at vgasrc/swcursor.c:72:10:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.h:68:39: note: in expansion of macro 'GET_BDA_EXT'
   68 |     return CONFIG_VGA_EMULATE_TEXT && GET_BDA_EXT(flags) & BF_EMULATE_TEXT;
      |                                       ^~~~~~~~~~~
In function 'vga_emulate_text',
    inlined from 'swcursor_check_event' at vgasrc/swcursor.c:93:10:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.h:68:39: note: in expansion of macro 'GET_BDA_EXT'
   68 |     return CONFIG_VGA_EMULATE_TEXT && GET_BDA_EXT(flags) & BF_EMULATE_TEXT;
      |                                       ^~~~~~~~~~~
vgasrc/swcursor.c: In function 'swcursor_check_event':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/swcursor.c:95:18: note: in expansion of macro 'GET_BDA'
   95 |     set_swcursor(GET_BDA(timer_counter) % 18 < 9);
      |                  ^~~~~~~
  Compile checking build/vgabios-bochs-display/vgasrc/vgafonts.o
  Compile checking build/vgabios-bochs-display/vgasrc/vbe.o
In file included from src/biosvar.h:10,
                 from vgasrc/vbe.c:9:
vgasrc/vbe.c: In function 'vbe_104f05':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vbe.c:257:9: note: in expansion of macro 'GET_BDA_EXT'
  257 |     if (GET_BDA_EXT(vbe_mode) & MF_LINEARFB) {
      |         ^~~~~~~~~~~
In function 'vbe_104f10',
    inlined from 'handle_104f' at vgasrc/vbe.c:458:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vbe.c:395:20: note: in expansion of macro 'GET_BDA_EXT'
  395 |         regs->bh = GET_BDA_EXT(flags) & BF_PM_MASK;
      |                    ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:23: note: in expansion of macro 'GET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |                       ^~~~~~~~~~~
vgasrc/vbe.c:392:9: note: in expansion of macro 'MASK_BDA_EXT'
  392 |         MASK_BDA_EXT(flags, BF_PM_MASK, regs->bh & BF_PM_MASK);
      |         ^~~~~~~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/vbe.c:392:9: note: in expansion of macro 'MASK_BDA_EXT'
  392 |         MASK_BDA_EXT(flags, BF_PM_MASK, regs->bh & BF_PM_MASK);
      |         ^~~~~~~~~~~~
In function 'vbe_104f03',
    inlined from 'handle_104f' at vgasrc/vbe.c:451:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vbe.c:227:16: note: in expansion of macro 'GET_BDA_EXT'
  227 |     regs->bx = GET_BDA_EXT(vbe_mode);
      |                ^~~~~~~~~~~
  Compile checking build/vgabios-bochs-display/vgasrc/stdvga.o
  Compile checking build/vgabios-bochs-display/vgasrc/stdvgamodes.o
In file included from src/biosvar.h:10,
                 from vgasrc/stdvgamodes.c:8:
vgasrc/stdvgamodes.c: In function 'stdvga_build_video_param':
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/stdvgamodes.c:360:5: note: in expansion of macro 'SET_BDA'
  360 |     SET_BDA(video_savetable
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/stdvgamodes.c:360:5: note: in expansion of macro 'SET_BDA'
  360 |     SET_BDA(video_savetable
      |     ^~~~~~~
  Compile checking build/vgabios-bochs-display/vgasrc/stdvgaio.o
  Compile checking build/vgabios-bochs-display/vgasrc/clext.o
  Compile checking build/vgabios-bochs-display/vgasrc/svgamodes.o
  Compile checking build/vgabios-bochs-display/vgasrc/atiext.o
  Compile checking build/vgabios-bochs-display/vgasrc/bochsvga.o
  Compile checking build/vgabios-bochs-display/vgasrc/geodevga.o
  Compile checking build/vgabios-bochs-display/src/fw/coreboot.o
  Compile checking build/vgabios-bochs-display/vgasrc/cbvga.o
In file included from src/biosvar.h:10,
                 from vgasrc/cbvga.c:8:
vgasrc/cbvga.c: In function 'cbvga_set_mode':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/cbvga.c:139:22: note: in expansion of macro 'GET_BDA_EXT'
  139 |     u8 extra_stack = GET_BDA_EXT(flags) & BF_EXTRA_STACK;
      |                      ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/cbvga.c:139:22: note: in expansion of macro 'GET_BDA_EXT'
  139 |     u8 extra_stack = GET_BDA_EXT(flags) & BF_EXTRA_STACK;
      |                      ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/cbvga.c:140:5: note: in expansion of macro 'MASK_BDA_EXT'
  140 |     MASK_BDA_EXT(flags, BF_EMULATE_TEXT, emul ? BF_EMULATE_TEXT : 0);
      |     ^~~~~~~~~~~~
  Compile checking build/vgabios-bochs-display/vgasrc/bochsdisplay.o
  Compile checking build/vgabios-bochs-display/vgasrc/ramfb.o
  Compiling whole program build/vgabios-bochs-display/vgaccode16.raw.s
In file included from ./src/output.c:9,
                 from build/vgabios-bochs-display/vgaccode16.raw.s.tmp.c:1:
./vgasrc/vgabios.h: In function 'vga_emulate_text':
./vgasrc/vgabios.h:61:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |                                                             ^~
./src/farptr.h:19:19: note: in definition of macro 'READ8_SEG'
   19 |             : "m"(var), "m"(__segment_ ## SEG))
      |                   ^~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:68:39: note: in expansion of macro 'GET_BDA_EXT'
   68 |     return CONFIG_VGA_EMULATE_TEXT && GET_BDA_EXT(flags) & BF_EMULATE_TEXT;
      |                                       ^~~~~~~~~~~
./vgasrc/vgabios.c: In function 'bda_save_restore':
./vgasrc/vgabios.h:61:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |                                                             ^~
./src/farptr.h:113:34: note: in definition of macro '__SET_FARVAR'
  113 |         typeof(var) __sfv_val = (val);          \
      |                                  ^~~
./vgasrc/vgabios.c:230:9: note: in expansion of macro 'SET_FARVAR'
  230 |         SET_FARVAR(seg, info->vbe_mode, GET_BDA_EXT(vbe_mode));
      |         ^~~~~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:230:41: note: in expansion of macro 'GET_BDA_EXT'
  230 |         SET_FARVAR(seg, info->vbe_mode, GET_BDA_EXT(vbe_mode));
      |                                         ^~~~~~~~~~~
./vgasrc/vgabios.h:63:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |                                                             ^~
./src/farptr.h:37:53: note: in definition of macro 'WRITE16_SEG'
   37 |     __asm__(prefix "movw %w1, %%" #SEG ":%0" : "=m"(var)        \
      |                                                     ^~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:240:9: note: in expansion of macro 'SET_BDA_EXT'
  240 |         SET_BDA_EXT(vbe_mode, vbe_mode);
      |         ^~~~~~~~~~~
./vgasrc/vgabios.h:63:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |                                                             ^~
./src/farptr.h:37:53: note: in definition of macro 'WRITE16_SEG'
   37 |     __asm__(prefix "movw %w1, %%" #SEG ":%0" : "=m"(var)        \
      |                                                     ^~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:242:9: note: in expansion of macro 'SET_BDA_EXT'
  242 |         SET_BDA_EXT(vgamode_offset, (u32)vmode_g);
      |         ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_write_pixel' at ./vgasrc/vgafb.c:505:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_read_pixel' at ./vgasrc/vgafb.c:529:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
./vgasrc/cbvga.c: In function 'cbvga_set_mode':
./vgasrc/vgabios.h:61:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |                                                             ^~
./src/farptr.h:19:19: note: in definition of macro 'READ8_SEG'
   19 |             : "m"(var), "m"(__segment_ ## SEG))
      |                   ^~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/cbvga.c:139:22: note: in expansion of macro 'GET_BDA_EXT'
  139 |     u8 extra_stack = GET_BDA_EXT(flags) & BF_EXTRA_STACK;
      |                      ^~~~~~~~~~~
./vgasrc/vgabios.h:61:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |                                                             ^~
./src/farptr.h:113:34: note: in definition of macro '__SET_FARVAR'
  113 |         typeof(var) __sfv_val = (val);          \
      |                                  ^~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./src/farptr.h:58:9: note: in expansion of macro 'READ8_SEG'
   58 |         READ8_SEG(prefix, seg, __val, var);     \
      |         ^~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:23: note: in expansion of macro 'GET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |                       ^~~~~~~~~~~
./vgasrc/cbvga.c:140:5: note: in expansion of macro 'MASK_BDA_EXT'
  140 |     MASK_BDA_EXT(flags, BF_EMULATE_TEXT, emul ? BF_EMULATE_TEXT : 0);
      |     ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |                                                             ^~
./src/farptr.h:19:19: note: in definition of macro 'READ8_SEG'
   19 |             : "m"(var), "m"(__segment_ ## SEG))
      |                   ^~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/cbvga.c:139:22: note: in expansion of macro 'GET_BDA_EXT'
  139 |     u8 extra_stack = GET_BDA_EXT(flags) & BF_EXTRA_STACK;
      |                      ^~~~~~~~~~~
./vgasrc/vgabios.h:61:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |                                                             ^~
./src/farptr.h:113:34: note: in definition of macro '__SET_FARVAR'
  113 |         typeof(var) __sfv_val = (val);          \
      |                                  ^~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./src/farptr.h:58:9: note: in expansion of macro 'READ8_SEG'
   58 |         READ8_SEG(prefix, seg, __val, var);     \
      |         ^~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:23: note: in expansion of macro 'GET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |                       ^~~~~~~~~~~
./vgasrc/cbvga.c:140:5: note: in expansion of macro 'MASK_BDA_EXT'
  140 |     MASK_BDA_EXT(flags, BF_EMULATE_TEXT, emul ? BF_EMULATE_TEXT : 0);
      |     ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |                                                             ^~
./src/farptr.h:34:53: note: in definition of macro 'WRITE8_SEG'
   34 |     __asm__(prefix "movb %b1, %%" #SEG ":%0" : "=m"(var)        \
      |                                                     ^~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./vgasrc/cbvga.c:140:5: note: in expansion of macro 'MASK_BDA_EXT'
  140 |     MASK_BDA_EXT(flags, BF_EMULATE_TEXT, emul ? BF_EMULATE_TEXT : 0);
      |     ^~~~~~~~~~~~
./vgasrc/swcursor.c: In function 'set_swcursor':
./vgasrc/vgabios.h:61:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |                                                             ^~
./src/farptr.h:19:19: note: in definition of macro 'READ8_SEG'
   19 |             : "m"(var), "m"(__segment_ ## SEG))
      |                   ^~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/swcursor.c:41:16: note: in expansion of macro 'GET_BDA_EXT'
   41 |     u8 flags = GET_BDA_EXT(flags);
      |                ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'set_swcursor' at ./vgasrc/swcursor.c:45:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
./vgasrc/swcursor.c: In function 'set_swcursor':
./vgasrc/vgabios.h:63:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |                                                             ^~
./src/farptr.h:34:53: note: in definition of macro 'WRITE8_SEG'
   34 |     __asm__(prefix "movb %b1, %%" #SEG ":%0" : "=m"(var)        \
      |                                                     ^~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/swcursor.c:54:5: note: in expansion of macro 'SET_BDA_EXT'
   54 |     SET_BDA_EXT(flags, (flags & ~BF_SWCURSOR) | (enable ? BF_SWCURSOR : 0));
      |     ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_clear_chars.constprop.isra' at ./vgasrc/vgafb.c:581:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_move_chars.isra' at ./vgasrc/vgafb.c:561:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_write_char' at ./vgasrc/vgafb.c:628:33,
    inlined from 'write_char.isra' at ./vgasrc/vgabios.c:161:5:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
./vgasrc/vgabios.c: In function 'vga_set_mode':
./vgasrc/vgabios.h:63:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |                                                             ^~
./src/farptr.h:37:53: note: in definition of macro 'WRITE16_SEG'
   37 |     __asm__(prefix "movw %w1, %%" #SEG ":%0" : "=m"(var)        \
      |                                                     ^~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:282:5: note: in expansion of macro 'SET_BDA_EXT'
  282 |     SET_BDA_EXT(vbe_mode, mode | (flags & MF_VBEFLAGS));
      |     ^~~~~~~~~~~
./vgasrc/vgabios.h:63:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |                                                             ^~
./src/farptr.h:37:53: note: in definition of macro 'WRITE16_SEG'
   37 |     __asm__(prefix "movw %w1, %%" #SEG ":%0" : "=m"(var)        \
      |                                                     ^~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:283:5: note: in expansion of macro 'SET_BDA_EXT'
  283 |     SET_BDA_EXT(vgamode_offset, (u32)vmode_g);
      |     ^~~~~~~~~~~
./vgasrc/vgabios.h:61:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |                                                             ^~
./src/farptr.h:113:34: note: in definition of macro '__SET_FARVAR'
  113 |         typeof(var) __sfv_val = (val);          \
      |                                  ^~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./src/farptr.h:58:9: note: in expansion of macro 'READ8_SEG'
   58 |         READ8_SEG(prefix, seg, __val, var);     \
      |         ^~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:23: note: in expansion of macro 'GET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |                       ^~~~~~~~~~~
./vgasrc/vgabios.c:288:9: note: in expansion of macro 'MASK_BDA_EXT'
  288 |         MASK_BDA_EXT(flags, BF_EXTRA_STACK
      |         ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |                                                             ^~
./src/farptr.h:34:53: note: in definition of macro 'WRITE8_SEG'
   34 |     __asm__(prefix "movb %b1, %%" #SEG ":%0" : "=m"(var)        \
      |                                                     ^~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./vgasrc/vgabios.c:288:9: note: in expansion of macro 'MASK_BDA_EXT'
  288 |         MASK_BDA_EXT(flags, BF_EXTRA_STACK
      |         ^~~~~~~~~~~~
./vgasrc/vbe.c: In function 'vbe_104f05':
./vgasrc/vgabios.h:61:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |                                                             ^~
./src/farptr.h:22:19: note: in definition of macro 'READ16_SEG'
   22 |             : "m"(var), "m"(__segment_ ## SEG))
      |                   ^~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vbe.c:257:9: note: in expansion of macro 'GET_BDA_EXT'
  257 |     if (GET_BDA_EXT(vbe_mode) & MF_LINEARFB) {
      |         ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vbe_104f05' at ./vgasrc/vbe.c:261:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'vbe_104f10',
    inlined from 'handle_104f' at ./vgasrc/vbe.c:458:16:
./src/farptr.h:18:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   18 |     __asm__(prefix "movb %%" #SEG ":%1, %b0" : "=Qi"(value)     \
      |     ^~~~~~~
./src/farptr.h:58:9: note: in expansion of macro 'READ8_SEG'
   58 |         READ8_SEG(prefix, seg, __val, var);     \
      |         ^~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vbe.c:395:20: note: in expansion of macro 'GET_BDA_EXT'
  395 |         regs->bh = GET_BDA_EXT(flags) & BF_PM_MASK;
      |                    ^~~~~~~~~~~
./src/farptr.h:18:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   18 |     __asm__(prefix "movb %%" #SEG ":%1, %b0" : "=Qi"(value)     \
      |     ^~~~~~~
./src/farptr.h:113:34: note: in definition of macro '__SET_FARVAR'
  113 |         typeof(var) __sfv_val = (val);          \
      |                                  ^~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./src/farptr.h:58:9: note: in expansion of macro 'READ8_SEG'
   58 |         READ8_SEG(prefix, seg, __val, var);     \
      |         ^~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:23: note: in expansion of macro 'GET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |                       ^~~~~~~~~~~
./vgasrc/vbe.c:392:9: note: in expansion of macro 'MASK_BDA_EXT'
  392 |         MASK_BDA_EXT(flags, BF_PM_MASK, regs->bh & BF_PM_MASK);
      |         ^~~~~~~~~~~~
./src/farptr.h:34:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   34 |     __asm__(prefix "movb %b1, %%" #SEG ":%0" : "=m"(var)        \
      |     ^~~~~~~
./src/farptr.h:71:13: note: in expansion of macro 'WRITE8_SEG'
   71 |             WRITE8_SEG(prefix, seg, var, (val));        \
      |             ^~~~~~~~~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./vgasrc/vbe.c:392:9: note: in expansion of macro 'MASK_BDA_EXT'
  392 |         MASK_BDA_EXT(flags, BF_PM_MASK, regs->bh & BF_PM_MASK);
      |         ^~~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vbe_104f08' at ./vgasrc/vbe.c:352:33,
    inlined from 'handle_104f' at ./vgasrc/vbe.c:456:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vbe_104f07' at ./vgasrc/vbe.c:316:33,
    inlined from 'handle_104f' at ./vgasrc/vbe.c:455:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vbe_104f06' at ./vgasrc/vbe.c:286:33,
    inlined from 'handle_104f' at ./vgasrc/vbe.c:454:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'vbe_104f03',
    inlined from 'handle_104f' at ./vgasrc/vbe.c:451:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vbe.c:227:16: note: in expansion of macro 'GET_BDA_EXT'
  227 |     regs->bx = GET_BDA_EXT(vbe_mode);
      |                ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_read_char' at ./vgasrc/vgafb.c:650:33,
    inlined from 'handle_1008' at ./vgasrc/vgabios.c:431:25,
    inlined from 'handle_10' at ./vgasrc/vgabios.c:1112:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'set_active_page' at ./vgasrc/vgabios.c:117:33,
    inlined from 'handle_1005' at ./vgasrc/vgabios.c:387:5,
    inlined from 'handle_10' at ./vgasrc/vgabios.c:1109:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
  Fixup VGA rom assembler
  Compiling to assembler build/vgabios-bochs-display/src/asm-offsets.s
  Generating offset file build/vgabios-bochs-display/asm-offsets.h
  Compiling (16bit) build/vgabios-bochs-display/vgaentry.o
  Precompiling build/vgabios-bochs-display/vgasrc/vgalayout.lds
  Linking build/vgabios-bochs-display/vgarom.o
Version: 1.16.2-debian-1.16.2-1
ld: warning: build/vgabios-bochs-display/vgaentry.o: missing .note.GNU-stack section implies executable stack
ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
ld: warning: build/vgabios-bochs-display/vgarom.o has a LOAD segment with RWX permissions
  Extracting binary build/vgabios-bochs-display/vgabios.bin.raw
  Finalizing rom build/vgabios-bochs-display/vgabios.bin
make[1]: Leaving directory '/build/seabios-1.16.2'
rm -f build/vgabios-bochs-display.bin
ln build/vgabios-bochs-display/vgabios.bin build/vgabios-bochs-display.bin

=== Building vgabios-cirrus.bin ===

set -e; if [ ! -e build/vgabios-cirrus/.config.old ]; then rm -rf build/vgabios-cirrus; mkdir -p build/vgabios-cirrus; for x in BUILD_VGABIOS=y VGA_CIRRUS=y VGA_PCI=y; do echo CONFIG_$x; done > build/vgabios-cirrus/.config; /usr/bin/make PYTHON="python3 -B" KCONFIG_CONFIG=/build/seabios-1.16.2/build/vgabios-cirrus/.config OUT=build/vgabios-cirrus/ oldnoconfig; fi
make[1]: Entering directory '/build/seabios-1.16.2'
scripts/kconfig/conf --olddefconfig /build/seabios-1.16.2/src/Kconfig
#
# configuration written to /build/seabios-1.16.2/build/vgabios-cirrus/.config
#
make[1]: Leaving directory '/build/seabios-1.16.2'
/usr/bin/make PYTHON="python3 -B" $(cat build/env) KCONFIG_CONFIG=/build/seabios-1.16.2/build/vgabios-cirrus/.config OUT=build/vgabios-cirrus/ build/vgabios-cirrus/vgabios.bin
make[1]: Entering directory '/build/seabios-1.16.2'
  Build Kconfig config file
  Compile checking build/vgabios-cirrus/src/output.o
In file included from src/output.c:9:
src/output.c: In function 'screenc':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
src/output.c:77:25: note: in expansion of macro 'GET_IVT'
   77 |     if (!MODESEGMENT && GET_IVT(0x10).segoff == FUNC16(entry_10).segoff)
      |                         ^~~~~~~
  Compile checking build/vgabios-cirrus/src/string.o
  Compile checking build/vgabios-cirrus/src/hw/pci.o
  Compile checking build/vgabios-cirrus/src/hw/serialio.o
  Compile checking build/vgabios-cirrus/vgasrc/vgainit.o
In file included from vgasrc/vgainit.c:8:
In function 'set_equipment_flags',
    inlined from 'init_bios_area' at vgasrc/vgainit.c:141:5,
    inlined from 'vga_post' at vgasrc/vgainit.c:182:5:
src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
In file included from src/biosvar.h:10:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'init_bios_area',
    inlined from 'vga_post' at vgasrc/vgainit.c:182:5:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgainit.c:144:5: note: in expansion of macro 'SET_BDA'
  144 |     SET_BDA(modeset_ctl, 0x51);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgainit.c:146:5: note: in expansion of macro 'SET_BDA'
  146 |     SET_BDA(dcc_index, CONFIG_VGA_STDVGA_PORTS ? 0x08 : 0xff);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgainit.c:149:5: note: in expansion of macro 'SET_BDA'
  149 |     SET_BDA(video_msr, 0x00); // Unavailable on vanilla vga, but...
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgainit.c:150:5: note: in expansion of macro 'SET_BDA'
  150 |     SET_BDA(video_pal, 0x00); // Unavailable on vanilla vga, but...
      |     ^~~~~~~
vgasrc/vgainit.c: In function 'vga_post':
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgainit.c:188:5: note: in expansion of macro 'SET_IVT'
  188 |     SET_IVT(0x10, SEGOFF(get_global_seg(), (u32)entry_10));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgainit.c:188:5: note: in expansion of macro 'SET_IVT'
  188 |     SET_IVT(0x10, SEGOFF(get_global_seg(), (u32)entry_10));
      |     ^~~~~~~
In function 'allocate_extra_stack',
    inlined from 'vga_post' at vgasrc/vgainit.c:190:5:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgainit.c:97:5: note: in expansion of macro 'SET_IVT'
   97 |     SET_IVT(0x10, SEGOFF(get_global_seg(), (u32)entry_10_extrastack));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgainit.c:97:5: note: in expansion of macro 'SET_IVT'
   97 |     SET_IVT(0x10, SEGOFF(get_global_seg(), (u32)entry_10_extrastack));
      |     ^~~~~~~
  Compile checking build/vgabios-cirrus/vgasrc/vgabios.o
In file included from src/biosvar.h:10,
                 from vgasrc/vgabios.c:8:
vgasrc/vgabios.c: In function 'set_cursor_pos':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:91:20: note: in expansion of macro 'GET_BDA'
   91 |     if (cp.page == GET_BDA(video_page)) {
      |                    ^~~~~~~
vgasrc/vgabios.c: In function 'verify_scroll':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:395:18: note: in expansion of macro 'GET_BDA'
  395 |     u16 nbrows = GET_BDA(video_rows) + 1;
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:398:18: note: in expansion of macro 'GET_BDA'
  398 |     u16 nbcols = GET_BDA(video_cols);
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:410:39: note: in expansion of macro 'GET_BDA'
  410 |     struct cursorpos win = {ulx, uly, GET_BDA(video_page)};
      |                                       ^~~~~~~
vgasrc/vgabios.c: In function 'write_char':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:164:19: note: in expansion of macro 'GET_BDA'
  164 |     if (pcp->x == GET_BDA(video_cols)) {
      |                   ^~~~~~~
vgasrc/vgabios.c: In function 'write_teletype':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:195:18: note: in expansion of macro 'GET_BDA'
  195 |     u16 nbrows = GET_BDA(video_rows);
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:200:37: note: in expansion of macro 'GET_BDA'
  200 |         struct cursorpos winsize = {GET_BDA(video_cols), nbrows+1};
      |                                     ^~~~~~~
vgasrc/vgabios.c: In function 'get_cursor_shape':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:59:23: note: in expansion of macro 'GET_BDA'
   59 |     u16 cursor_type = GET_BDA(cursor_type);
      |                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:60:26: note: in expansion of macro 'GET_BDA'
   60 |     u8 emulate_cursor = (GET_BDA(video_ctl) & 1) == 0;
      |                          ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:65:19: note: in expansion of macro 'GET_BDA'
   65 |     u16 cheight = GET_BDA(char_height);
      |                   ^~~~~~~
vgasrc/vgabios.c: In function 'set_cursor_shape':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:79:5: note: in expansion of macro 'SET_BDA'
   79 |     SET_BDA(cursor_type, cursor_type);
      |     ^~~~~~~
vgasrc/vgabios.c: In function 'set_scan_lines':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:140:5: note: in expansion of macro 'SET_BDA'
  140 |     SET_BDA(char_height, lines);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:143:5: note: in expansion of macro 'SET_BDA'
  143 |     SET_BDA(video_rows, rows - 1);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:144:16: note: in expansion of macro 'GET_BDA'
  144 |     u16 cols = GET_BDA(video_cols);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:145:5: note: in expansion of macro 'SET_BDA'
  145 |     SET_BDA(video_pagesize, calc_page_size(MM_TEXT, cols, rows));
      |     ^~~~~~~
vgasrc/vgabios.c: In function 'handle_100e.isra':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:510:42: note: in expansion of macro 'GET_BDA'
  510 |     struct cursorpos cp = get_cursor_pos(GET_BDA(video_page));
      |                                          ^~~~~~~
vgasrc/vgabios.c: In function 'bda_save_restore':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |      ^
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:230:41: note: in expansion of macro 'GET_BDA_EXT'
  230 |         SET_FARVAR(seg, info->vbe_mode, GET_BDA_EXT(vbe_mode));
      |                                         ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |      ^
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgabios.c:231:38: note: in expansion of macro 'GET_IVT'
  231 |         SET_FARVAR(seg, info->font0, GET_IVT(0x1f));
      |                                      ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |      ^
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgabios.c:232:38: note: in expansion of macro 'GET_IVT'
  232 |         SET_FARVAR(seg, info->font1, GET_IVT(0x43));
      |                                      ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:240:9: note: in expansion of macro 'SET_BDA_EXT'
  240 |         SET_BDA_EXT(vbe_mode, vbe_mode);
      |         ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:242:9: note: in expansion of macro 'SET_BDA_EXT'
  242 |         SET_BDA_EXT(vgamode_offset, (u32)vmode_g);
      |         ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:243:9: note: in expansion of macro 'SET_IVT'
  243 |         SET_IVT(0x1f, GET_FARVAR(seg, info->font0));
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:244:9: note: in expansion of macro 'SET_IVT'
  244 |         SET_IVT(0x43, GET_FARVAR(seg, info->font1));
      |         ^~~~~~~
vgasrc/vgabios.c: In function 'get_current_mode':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
vgasrc/vgabios.c: In function 'vga_set_mode':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:281:9: note: in expansion of macro 'SET_BDA'
  281 |         SET_BDA(video_mode, 0xff);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:279:9: note: in expansion of macro 'SET_BDA'
  279 |         SET_BDA(video_mode, mode);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:282:5: note: in expansion of macro 'SET_BDA_EXT'
  282 |     SET_BDA_EXT(vbe_mode, mode | (flags & MF_VBEFLAGS));
      |     ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:283:5: note: in expansion of macro 'SET_BDA_EXT'
  283 |     SET_BDA_EXT(vgamode_offset, (u32)vmode_g);
      |     ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:23: note: in expansion of macro 'GET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |                       ^~~~~~~~~~~
vgasrc/vgabios.c:288:9: note: in expansion of macro 'MASK_BDA_EXT'
  288 |         MASK_BDA_EXT(flags, BF_EXTRA_STACK
      |         ^~~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/vgabios.c:288:9: note: in expansion of macro 'MASK_BDA_EXT'
  288 |         MASK_BDA_EXT(flags, BF_EXTRA_STACK
      |         ^~~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:296:9: note: in expansion of macro 'SET_BDA'
  296 |         SET_BDA(video_cols, width / cwidth);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:297:9: note: in expansion of macro 'SET_BDA'
  297 |         SET_BDA(video_rows, (height / cheight) - 1);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:298:9: note: in expansion of macro 'SET_BDA'
  298 |         SET_BDA(cursor_type, vga_emulate_text() ? 0x0607 : 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:291:9: note: in expansion of macro 'SET_BDA'
  291 |         SET_BDA(video_cols, width);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:292:9: note: in expansion of macro 'SET_BDA'
  292 |         SET_BDA(video_rows, height-1);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:293:9: note: in expansion of macro 'SET_BDA'
  293 |         SET_BDA(cursor_type, 0x0607);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:300:5: note: in expansion of macro 'SET_BDA'
  300 |     SET_BDA(video_pagesize, calc_page_size(memmodel, width, height));
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:301:5: note: in expansion of macro 'SET_BDA'
  301 |     SET_BDA(crtc_address, CONFIG_VGA_STDVGA_PORTS ? stdvga_get_crtc() : 0);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:302:5: note: in expansion of macro 'SET_BDA'
  302 |     SET_BDA(char_height, cheight);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:303:5: note: in expansion of macro 'SET_BDA'
  303 |     SET_BDA(video_ctl, 0x60 | (flags & MF_NOCLEARMEM ? 0x80 : 0x00));
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:304:5: note: in expansion of macro 'SET_BDA'
  304 |     SET_BDA(video_switches, 0xF9);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.c:305:5: note: in expansion of macro 'SET_BDA'
  305 |     SET_BDA(modeset_ctl, GET_BDA(modeset_ctl) & 0x7f);
      |     ^~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:305:26: note: in expansion of macro 'GET_BDA'
  305 |     SET_BDA(modeset_ctl, GET_BDA(modeset_ctl) & 0x7f);
      |                          ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:305:5: note: in expansion of macro 'SET_BDA'
  305 |     SET_BDA(modeset_ctl, GET_BDA(modeset_ctl) & 0x7f);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:309:5: note: in expansion of macro 'SET_BDA'
  309 |     SET_BDA(video_pagestart, 0x0000);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:310:5: note: in expansion of macro 'SET_BDA'
  310 |     SET_BDA(video_page, 0x00);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:313:5: note: in expansion of macro 'SET_IVT'
  313 |     SET_IVT(0x1f, SEGOFF(get_global_seg(), (u32)&vgafont8[128 * 8]));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:313:5: note: in expansion of macro 'SET_IVT'
  313 |     SET_IVT(0x1f, SEGOFF(get_global_seg(), (u32)&vgafont8[128 * 8]));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:323:9: note: in expansion of macro 'SET_IVT'
  323 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont16));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:323:9: note: in expansion of macro 'SET_IVT'
  323 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont16));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:320:9: note: in expansion of macro 'SET_IVT'
  320 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont14));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:320:9: note: in expansion of macro 'SET_IVT'
  320 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont14));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:317:9: note: in expansion of macro 'SET_IVT'
  317 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont8));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:317:9: note: in expansion of macro 'SET_IVT'
  317 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont8));
      |         ^~~~~~~
vgasrc/vgabios.c: In function 'load_gfx_font':
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:735:5: note: in expansion of macro 'SET_IVT'
  735 |     SET_IVT(0x43, SEGOFF(seg, off));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:735:5: note: in expansion of macro 'SET_IVT'
  735 |     SET_IVT(0x43, SEGOFF(seg, off));
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:751:5: note: in expansion of macro 'SET_BDA'
  751 |     SET_BDA(video_rows, rows - 1);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:752:5: note: in expansion of macro 'SET_BDA'
  752 |     SET_BDA(char_height, height);
      |     ^~~~~~~
In function 'handle_101b',
    inlined from 'handle_10' at vgasrc/vgabios.c:1125:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |      ^
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:1062:38: note: in expansion of macro 'GET_BDA'
 1062 |     SET_FARVAR(seg, info->dcc_index, GET_BDA(dcc_index));
      |                                      ^~~~~~~
In function 'handle_101a01',
    inlined from 'handle_101a' at vgasrc/vgabios.c:1032:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1124:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:1016:5: note: in expansion of macro 'SET_BDA'
 1016 |     SET_BDA(dcc_index, regs->bl);
      |     ^~~~~~~
In function 'handle_101a00',
    inlined from 'handle_101a' at vgasrc/vgabios.c:1031:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1124:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:1009:16: note: in expansion of macro 'GET_BDA'
 1009 |     regs->bx = GET_BDA(dcc_index);
      |                ^~~~~~~
In function 'handle_101234',
    inlined from 'handle_1012' at vgasrc/vgabios.c:973:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.c:935:5: note: in expansion of macro 'SET_BDA'
  935 |     SET_BDA(video_ctl, (GET_BDA(video_ctl) & ~0x01) | (regs->al & 0x01));
      |     ^~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:935:25: note: in expansion of macro 'GET_BDA'
  935 |     SET_BDA(video_ctl, (GET_BDA(video_ctl) & ~0x01) | (regs->al & 0x01));
      |                         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:935:5: note: in expansion of macro 'SET_BDA'
  935 |     SET_BDA(video_ctl, (GET_BDA(video_ctl) & ~0x01) | (regs->al & 0x01));
      |     ^~~~~~~
In function 'handle_101233',
    inlined from 'handle_1012' at vgasrc/vgabios.c:972:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:927:13: note: in expansion of macro 'GET_BDA'
  927 |     u8 v2 = GET_BDA(modeset_ctl) & ~0x02;
      |             ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:928:5: note: in expansion of macro 'SET_BDA'
  928 |     SET_BDA(modeset_ctl, v | v2);
      |     ^~~~~~~
In function 'handle_101231',
    inlined from 'handle_1012' at vgasrc/vgabios.c:970:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:909:15: note: in expansion of macro 'GET_BDA'
  909 |     u8 mctl = GET_BDA(video_ctl) & ~0x08;
      |               ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:910:5: note: in expansion of macro 'SET_BDA'
  910 |     SET_BDA(video_ctl, mctl | v);
      |     ^~~~~~~
In function 'handle_101230',
    inlined from 'handle_1012' at vgasrc/vgabios.c:969:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
vgasrc/vgabios.c:878:8: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  878 |     u8 mctl = GET_BDA(modeset_ctl);
      |        ^~~~
vgasrc/vgabios.c:879:8: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  879 |     u8 vswt = GET_BDA(video_switches);
      |        ^~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:900:5: note: in expansion of macro 'SET_BDA'
  900 |     SET_BDA(modeset_ctl, mctl);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:901:5: note: in expansion of macro 'SET_BDA'
  901 |     SET_BDA(video_switches, vswt);
      |     ^~~~~~~
In function 'handle_101210',
    inlined from 'handle_1012' at vgasrc/vgabios.c:968:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
vgasrc/vgabios.c:867:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  867 |     u16 crtc_addr = GET_BDA(crtc_address);
      |         ^~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:872:16: note: in expansion of macro 'GET_BDA'
  872 |     regs->cx = GET_BDA(video_switches) & 0x0f;
      |                ^~~~~~~
In function 'handle_101130',
    inlined from 'handle_1011' at vgasrc/vgabios.c:853:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1121:16:
vgasrc/vgabios.c:790:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  790 |         struct segoff_s so = GET_IVT(0x43);
      |                         ^~
vgasrc/vgabios.c:790:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
vgasrc/vgabios.c:784:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  784 |         struct segoff_s so = GET_IVT(0x1f);
      |                         ^~
vgasrc/vgabios.c:784:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:824:16: note: in expansion of macro 'GET_BDA'
  824 |     regs->cx = GET_BDA(char_height) & 0xff;
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:827:16: note: in expansion of macro 'GET_BDA'
  827 |     regs->dl = GET_BDA(video_rows);
      |                ^~~~~~~
In function 'handle_101120',
    inlined from 'handle_1011' at vgasrc/vgabios.c:854:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1121:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:727:5: note: in expansion of macro 'SET_IVT'
  727 |     SET_IVT(0x1f, SEGOFF(regs->es, regs->bp));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:727:5: note: in expansion of macro 'SET_IVT'
  727 |     SET_IVT(0x1f, SEGOFF(regs->es, regs->bp));
      |     ^~~~~~~
In function 'handle_100f',
    inlined from 'handle_10' at vgasrc/vgabios.c:1119:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:518:16: note: in expansion of macro 'GET_BDA'
  518 |     regs->bh = GET_BDA(video_page);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:519:16: note: in expansion of macro 'GET_BDA'
  519 |     regs->al = GET_BDA(video_mode) | (GET_BDA(video_ctl) & 0x80);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:519:39: note: in expansion of macro 'GET_BDA'
  519 |     regs->al = GET_BDA(video_mode) | (GET_BDA(video_ctl) & 0x80);
      |                                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:520:16: note: in expansion of macro 'GET_BDA'
  520 |     regs->ah = GET_BDA(video_cols);
      |                ^~~~~~~
In function 'get_current_mode',
    inlined from 'set_active_page' at vgasrc/vgabios.c:117:33,
    inlined from 'handle_1005' at vgasrc/vgabios.c:387:5,
    inlined from 'handle_10' at vgasrc/vgabios.c:1109:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'set_active_page',
    inlined from 'handle_1005' at vgasrc/vgabios.c:387:5,
    inlined from 'handle_10' at vgasrc/vgabios.c:1109:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:127:5: note: in expansion of macro 'SET_BDA'
  127 |     SET_BDA(video_pagestart, address);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:128:5: note: in expansion of macro 'SET_BDA'
  128 |     SET_BDA(video_page, page);
      |     ^~~~~~~
In function 'handle_1003',
    inlined from 'handle_10' at vgasrc/vgabios.c:1107:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:370:16: note: in expansion of macro 'GET_BDA'
  370 |     regs->cx = GET_BDA(cursor_type);
      |                ^~~~~~~
In function 'handle_1000',
    inlined from 'handle_10' at vgasrc/vgabios.c:1104:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:339:30: note: in expansion of macro 'GET_BDA'
  339 |     int flags = MF_LEGACY | (GET_BDA(modeset_ctl) & (MF_NOPALETTE|MF_GRAYSUM));
      |                              ^~~~~~~
  Compile checking build/vgabios-cirrus/vgasrc/vgafb.o
In file included from src/biosvar.h:10,
                 from vgasrc/vgafb.c:8:
vgasrc/vgafb.c: In function 'get_font_data':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:387:23: note: in expansion of macro 'GET_BDA'
  387 |     int char_height = GET_BDA(char_height);
      |                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgafb.c:390:16: note: in expansion of macro 'GET_IVT'
  390 |         font = GET_IVT(0x1f);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgafb.c:390:16: note: in expansion of macro 'GET_IVT'
  390 |         font = GET_IVT(0x1f);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgafb.c:393:16: note: in expansion of macro 'GET_IVT'
  393 |         font = GET_IVT(0x43);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgafb.c:393:16: note: in expansion of macro 'GET_IVT'
  393 |         font = GET_IVT(0x43);
      |                ^~~~~~~
vgasrc/vgafb.c: In function 'text_address':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:552:18: note: in expansion of macro 'GET_BDA'
  552 |     int stride = GET_BDA(video_cols) * 2;
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:553:22: note: in expansion of macro 'GET_BDA'
  553 |     u32 pageoffset = GET_BDA(video_pagesize) * cp.page;
      |                      ^~~~~~~
vgasrc/vgafb.c: In function 'vgafb_clear_chars.isra':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:590:18: note: in expansion of macro 'GET_BDA'
  590 |     int stride = GET_BDA(video_cols) * 2;
      |                  ^~~~~~~
In function 'gfx_clear_chars',
    inlined from 'vgafb_clear_chars.isra' at vgasrc/vgafb.c:586:9:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:373:19: note: in expansion of macro 'GET_BDA'
  373 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
vgasrc/vgafb.c: In function 'vgafb_move_chars.isra':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:570:18: note: in expansion of macro 'GET_BDA'
  570 |     int stride = GET_BDA(video_cols) * 2;
      |                  ^~~~~~~
In function 'gfx_move_chars',
    inlined from 'vgafb_move_chars.isra' at vgasrc/vgafb.c:566:9:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:356:19: note: in expansion of macro 'GET_BDA'
  356 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
In function 'gfx_write_char',
    inlined from 'vgafb_write_char' at vgasrc/vgafb.c:633:9:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:404:17: note: in expansion of macro 'GET_BDA'
  404 |     if (cp.x >= GET_BDA(video_cols))
      |                 ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:411:19: note: in expansion of macro 'GET_BDA'
  411 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
In function 'gfx_read_char',
    inlined from 'vgafb_read_char' at vgasrc/vgafb.c:655:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:456:19: note: in expansion of macro 'GET_BDA'
  456 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:457:17: note: in expansion of macro 'GET_BDA'
  457 |     if (cp.x >= GET_BDA(video_cols) || cheight > ARRAY_SIZE(lines))
      |                 ^~~~~~~
  Compile checking build/vgabios-cirrus/vgasrc/swcursor.o
  Compile checking build/vgabios-cirrus/vgasrc/vgafonts.o
  Compile checking build/vgabios-cirrus/vgasrc/vbe.o
In file included from src/biosvar.h:10,
                 from vgasrc/vbe.c:9:
vgasrc/vbe.c: In function 'vbe_104f05':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vbe.c:257:9: note: in expansion of macro 'GET_BDA_EXT'
  257 |     if (GET_BDA_EXT(vbe_mode) & MF_LINEARFB) {
      |         ^~~~~~~~~~~
In function 'vbe_104f10',
    inlined from 'handle_104f' at vgasrc/vbe.c:458:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vbe.c:395:20: note: in expansion of macro 'GET_BDA_EXT'
  395 |         regs->bh = GET_BDA_EXT(flags) & BF_PM_MASK;
      |                    ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:23: note: in expansion of macro 'GET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |                       ^~~~~~~~~~~
vgasrc/vbe.c:392:9: note: in expansion of macro 'MASK_BDA_EXT'
  392 |         MASK_BDA_EXT(flags, BF_PM_MASK, regs->bh & BF_PM_MASK);
      |         ^~~~~~~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/vbe.c:392:9: note: in expansion of macro 'MASK_BDA_EXT'
  392 |         MASK_BDA_EXT(flags, BF_PM_MASK, regs->bh & BF_PM_MASK);
      |         ^~~~~~~~~~~~
In function 'vbe_104f03',
    inlined from 'handle_104f' at vgasrc/vbe.c:451:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vbe.c:227:16: note: in expansion of macro 'GET_BDA_EXT'
  227 |     regs->bx = GET_BDA_EXT(vbe_mode);
      |                ^~~~~~~~~~~
  Compile checking build/vgabios-cirrus/vgasrc/stdvga.o
  Compile checking build/vgabios-cirrus/vgasrc/stdvgamodes.o
In file included from src/biosvar.h:10,
                 from vgasrc/stdvgamodes.c:8:
vgasrc/stdvgamodes.c: In function 'stdvga_build_video_param':
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/stdvgamodes.c:360:5: note: in expansion of macro 'SET_BDA'
  360 |     SET_BDA(video_savetable
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/stdvgamodes.c:360:5: note: in expansion of macro 'SET_BDA'
  360 |     SET_BDA(video_savetable
      |     ^~~~~~~
  Compile checking build/vgabios-cirrus/vgasrc/stdvgaio.o
  Compile checking build/vgabios-cirrus/vgasrc/clext.o
  Compile checking build/vgabios-cirrus/vgasrc/svgamodes.o
  Compile checking build/vgabios-cirrus/vgasrc/atiext.o
  Compile checking build/vgabios-cirrus/vgasrc/bochsvga.o
  Compile checking build/vgabios-cirrus/vgasrc/geodevga.o
  Compile checking build/vgabios-cirrus/src/fw/coreboot.o
  Compile checking build/vgabios-cirrus/vgasrc/cbvga.o
In file included from src/biosvar.h:10,
                 from vgasrc/cbvga.c:8:
vgasrc/cbvga.c: In function 'cbvga_set_mode':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/cbvga.c:139:22: note: in expansion of macro 'GET_BDA_EXT'
  139 |     u8 extra_stack = GET_BDA_EXT(flags) & BF_EXTRA_STACK;
      |                      ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/cbvga.c:139:22: note: in expansion of macro 'GET_BDA_EXT'
  139 |     u8 extra_stack = GET_BDA_EXT(flags) & BF_EXTRA_STACK;
      |                      ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/cbvga.c:140:5: note: in expansion of macro 'MASK_BDA_EXT'
  140 |     MASK_BDA_EXT(flags, BF_EMULATE_TEXT, emul ? BF_EMULATE_TEXT : 0);
      |     ^~~~~~~~~~~~
  Compile checking build/vgabios-cirrus/vgasrc/bochsdisplay.o
  Compile checking build/vgabios-cirrus/vgasrc/ramfb.o
  Compiling whole program build/vgabios-cirrus/vgaccode16.raw.s
In file included from ./src/output.c:9,
                 from build/vgabios-cirrus/vgaccode16.raw.s.tmp.c:1:
In function 'bda_save_restore',
    inlined from 'stdvga_save_restore' at ./vgasrc/stdvga.c:453:12:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:113:34: note: in definition of macro '__SET_FARVAR'
  113 |         typeof(var) __sfv_val = (val);          \
      |                                  ^~~
./vgasrc/vgabios.c:230:9: note: in expansion of macro 'SET_FARVAR'
  230 |         SET_FARVAR(seg, info->vbe_mode, GET_BDA_EXT(vbe_mode));
      |         ^~~~~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:230:41: note: in expansion of macro 'GET_BDA_EXT'
  230 |         SET_FARVAR(seg, info->vbe_mode, GET_BDA_EXT(vbe_mode));
      |                                         ^~~~~~~~~~~
./src/farptr.h:37:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   37 |     __asm__(prefix "movw %w1, %%" #SEG ":%0" : "=m"(var)        \
      |     ^~~~~~~
./src/farptr.h:73:13: note: in expansion of macro 'WRITE16_SEG'
   73 |             WRITE16_SEG(prefix, seg, var, (val));       \
      |             ^~~~~~~~~~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:240:9: note: in expansion of macro 'SET_BDA_EXT'
  240 |         SET_BDA_EXT(vbe_mode, vbe_mode);
      |         ^~~~~~~~~~~
./src/farptr.h:37:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   37 |     __asm__(prefix "movw %w1, %%" #SEG ":%0" : "=m"(var)        \
      |     ^~~~~~~
./src/farptr.h:73:13: note: in expansion of macro 'WRITE16_SEG'
   73 |             WRITE16_SEG(prefix, seg, var, (val));       \
      |             ^~~~~~~~~~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:242:9: note: in expansion of macro 'SET_BDA_EXT'
  242 |         SET_BDA_EXT(vgamode_offset, (u32)vmode_g);
      |         ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_write_pixel' at ./vgasrc/vgafb.c:505:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_read_pixel' at ./vgasrc/vgafb.c:529:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_write_char' at ./vgasrc/vgafb.c:628:33,
    inlined from 'write_char.isra' at ./vgasrc/vgabios.c:161:5:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_clear_chars.constprop.isra' at ./vgasrc/vgafb.c:581:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_move_chars.isra' at ./vgasrc/vgafb.c:561:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
./vgasrc/vgabios.c: In function 'vga_set_mode':
./vgasrc/vgabios.h:63:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |                                                             ^~
./src/farptr.h:37:53: note: in definition of macro 'WRITE16_SEG'
   37 |     __asm__(prefix "movw %w1, %%" #SEG ":%0" : "=m"(var)        \
      |                                                     ^~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:282:5: note: in expansion of macro 'SET_BDA_EXT'
  282 |     SET_BDA_EXT(vbe_mode, mode | (flags & MF_VBEFLAGS));
      |     ^~~~~~~~~~~
./vgasrc/vgabios.h:63:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |                                                             ^~
./src/farptr.h:37:53: note: in definition of macro 'WRITE16_SEG'
   37 |     __asm__(prefix "movw %w1, %%" #SEG ":%0" : "=m"(var)        \
      |                                                     ^~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:283:5: note: in expansion of macro 'SET_BDA_EXT'
  283 |     SET_BDA_EXT(vgamode_offset, (u32)vmode_g);
      |     ^~~~~~~~~~~
./vgasrc/vgabios.h:61:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |                                                             ^~
./src/farptr.h:113:34: note: in definition of macro '__SET_FARVAR'
  113 |         typeof(var) __sfv_val = (val);          \
      |                                  ^~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./src/farptr.h:58:9: note: in expansion of macro 'READ8_SEG'
   58 |         READ8_SEG(prefix, seg, __val, var);     \
      |         ^~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:23: note: in expansion of macro 'GET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |                       ^~~~~~~~~~~
./vgasrc/vgabios.c:288:9: note: in expansion of macro 'MASK_BDA_EXT'
  288 |         MASK_BDA_EXT(flags, BF_EXTRA_STACK
      |         ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |                                                             ^~
./src/farptr.h:34:53: note: in definition of macro 'WRITE8_SEG'
   34 |     __asm__(prefix "movb %b1, %%" #SEG ":%0" : "=m"(var)        \
      |                                                     ^~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./vgasrc/vgabios.c:288:9: note: in expansion of macro 'MASK_BDA_EXT'
  288 |         MASK_BDA_EXT(flags, BF_EXTRA_STACK
      |         ^~~~~~~~~~~~
./vgasrc/vbe.c: In function 'vbe_104f05':
./vgasrc/vgabios.h:61:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |                                                             ^~
./src/farptr.h:22:19: note: in definition of macro 'READ16_SEG'
   22 |             : "m"(var), "m"(__segment_ ## SEG))
      |                   ^~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vbe.c:257:9: note: in expansion of macro 'GET_BDA_EXT'
  257 |     if (GET_BDA_EXT(vbe_mode) & MF_LINEARFB) {
      |         ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vbe_104f05' at ./vgasrc/vbe.c:261:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'vbe_104f10',
    inlined from 'handle_104f' at ./vgasrc/vbe.c:458:16:
./src/farptr.h:18:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   18 |     __asm__(prefix "movb %%" #SEG ":%1, %b0" : "=Qi"(value)     \
      |     ^~~~~~~
./src/farptr.h:58:9: note: in expansion of macro 'READ8_SEG'
   58 |         READ8_SEG(prefix, seg, __val, var);     \
      |         ^~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vbe.c:395:20: note: in expansion of macro 'GET_BDA_EXT'
  395 |         regs->bh = GET_BDA_EXT(flags) & BF_PM_MASK;
      |                    ^~~~~~~~~~~
./src/farptr.h:18:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   18 |     __asm__(prefix "movb %%" #SEG ":%1, %b0" : "=Qi"(value)     \
      |     ^~~~~~~
./src/farptr.h:113:34: note: in definition of macro '__SET_FARVAR'
  113 |         typeof(var) __sfv_val = (val);          \
      |                                  ^~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./src/farptr.h:58:9: note: in expansion of macro 'READ8_SEG'
   58 |         READ8_SEG(prefix, seg, __val, var);     \
      |         ^~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:23: note: in expansion of macro 'GET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |                       ^~~~~~~~~~~
./vgasrc/vbe.c:392:9: note: in expansion of macro 'MASK_BDA_EXT'
  392 |         MASK_BDA_EXT(flags, BF_PM_MASK, regs->bh & BF_PM_MASK);
      |         ^~~~~~~~~~~~
./src/farptr.h:34:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   34 |     __asm__(prefix "movb %b1, %%" #SEG ":%0" : "=m"(var)        \
      |     ^~~~~~~
./src/farptr.h:71:13: note: in expansion of macro 'WRITE8_SEG'
   71 |             WRITE8_SEG(prefix, seg, var, (val));        \
      |             ^~~~~~~~~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./vgasrc/vbe.c:392:9: note: in expansion of macro 'MASK_BDA_EXT'
  392 |         MASK_BDA_EXT(flags, BF_PM_MASK, regs->bh & BF_PM_MASK);
      |         ^~~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vbe_104f08' at ./vgasrc/vbe.c:352:33,
    inlined from 'handle_104f' at ./vgasrc/vbe.c:456:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vbe_104f07' at ./vgasrc/vbe.c:316:33,
    inlined from 'handle_104f' at ./vgasrc/vbe.c:455:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vbe_104f06' at ./vgasrc/vbe.c:286:33,
    inlined from 'handle_104f' at ./vgasrc/vbe.c:454:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'vbe_104f03',
    inlined from 'handle_104f' at ./vgasrc/vbe.c:451:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vbe.c:227:16: note: in expansion of macro 'GET_BDA_EXT'
  227 |     regs->bx = GET_BDA_EXT(vbe_mode);
      |                ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_read_char' at ./vgasrc/vgafb.c:650:33,
    inlined from 'handle_1008' at ./vgasrc/vgabios.c:431:25,
    inlined from 'handle_10' at ./vgasrc/vgabios.c:1112:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'set_active_page' at ./vgasrc/vgabios.c:117:33,
    inlined from 'handle_1005' at ./vgasrc/vgabios.c:387:5,
    inlined from 'handle_10' at ./vgasrc/vgabios.c:1109:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
  Fixup VGA rom assembler
  Compiling to assembler build/vgabios-cirrus/src/asm-offsets.s
  Generating offset file build/vgabios-cirrus/asm-offsets.h
  Compiling (16bit) build/vgabios-cirrus/vgaentry.o
  Precompiling build/vgabios-cirrus/vgasrc/vgalayout.lds
  Linking build/vgabios-cirrus/vgarom.o
Version: 1.16.2-debian-1.16.2-1
ld: warning: build/vgabios-cirrus/vgaentry.o: missing .note.GNU-stack section implies executable stack
ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
ld: warning: build/vgabios-cirrus/vgarom.o has a LOAD segment with RWX permissions
  Extracting binary build/vgabios-cirrus/vgabios.bin.raw
  Finalizing rom build/vgabios-cirrus/vgabios.bin
make[1]: Leaving directory '/build/seabios-1.16.2'
rm -f build/vgabios-cirrus.bin
ln build/vgabios-cirrus/vgabios.bin build/vgabios-cirrus.bin

=== Building vgabios-stdvga.bin ===

set -e; if [ ! -e build/vgabios-stdvga/.config.old ]; then rm -rf build/vgabios-stdvga; mkdir -p build/vgabios-stdvga; for x in BUILD_VGABIOS=y VGA_BOCHS=y VGA_PCI=y; do echo CONFIG_$x; done > build/vgabios-stdvga/.config; /usr/bin/make PYTHON="python3 -B" KCONFIG_CONFIG=/build/seabios-1.16.2/build/vgabios-stdvga/.config OUT=build/vgabios-stdvga/ oldnoconfig; fi
make[1]: Entering directory '/build/seabios-1.16.2'
scripts/kconfig/conf --olddefconfig /build/seabios-1.16.2/src/Kconfig
#
# configuration written to /build/seabios-1.16.2/build/vgabios-stdvga/.config
#
make[1]: Leaving directory '/build/seabios-1.16.2'
/usr/bin/make PYTHON="python3 -B" $(cat build/env) KCONFIG_CONFIG=/build/seabios-1.16.2/build/vgabios-stdvga/.config OUT=build/vgabios-stdvga/ build/vgabios-stdvga/vgabios.bin
make[1]: Entering directory '/build/seabios-1.16.2'
  Build Kconfig config file
  Compile checking build/vgabios-stdvga/src/output.o
In file included from src/output.c:9:
src/output.c: In function 'screenc':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
src/output.c:77:25: note: in expansion of macro 'GET_IVT'
   77 |     if (!MODESEGMENT && GET_IVT(0x10).segoff == FUNC16(entry_10).segoff)
      |                         ^~~~~~~
  Compile checking build/vgabios-stdvga/src/string.o
  Compile checking build/vgabios-stdvga/src/hw/pci.o
  Compile checking build/vgabios-stdvga/src/hw/serialio.o
  Compile checking build/vgabios-stdvga/vgasrc/vgainit.o
In file included from vgasrc/vgainit.c:8:
In function 'set_equipment_flags',
    inlined from 'init_bios_area' at vgasrc/vgainit.c:141:5,
    inlined from 'vga_post' at vgasrc/vgainit.c:182:5:
src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
In file included from src/biosvar.h:10:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'init_bios_area',
    inlined from 'vga_post' at vgasrc/vgainit.c:182:5:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgainit.c:144:5: note: in expansion of macro 'SET_BDA'
  144 |     SET_BDA(modeset_ctl, 0x51);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgainit.c:146:5: note: in expansion of macro 'SET_BDA'
  146 |     SET_BDA(dcc_index, CONFIG_VGA_STDVGA_PORTS ? 0x08 : 0xff);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgainit.c:149:5: note: in expansion of macro 'SET_BDA'
  149 |     SET_BDA(video_msr, 0x00); // Unavailable on vanilla vga, but...
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgainit.c:150:5: note: in expansion of macro 'SET_BDA'
  150 |     SET_BDA(video_pal, 0x00); // Unavailable on vanilla vga, but...
      |     ^~~~~~~
vgasrc/vgainit.c: In function 'vga_post':
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgainit.c:188:5: note: in expansion of macro 'SET_IVT'
  188 |     SET_IVT(0x10, SEGOFF(get_global_seg(), (u32)entry_10));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgainit.c:188:5: note: in expansion of macro 'SET_IVT'
  188 |     SET_IVT(0x10, SEGOFF(get_global_seg(), (u32)entry_10));
      |     ^~~~~~~
In function 'allocate_extra_stack',
    inlined from 'vga_post' at vgasrc/vgainit.c:190:5:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgainit.c:97:5: note: in expansion of macro 'SET_IVT'
   97 |     SET_IVT(0x10, SEGOFF(get_global_seg(), (u32)entry_10_extrastack));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgainit.c:97:5: note: in expansion of macro 'SET_IVT'
   97 |     SET_IVT(0x10, SEGOFF(get_global_seg(), (u32)entry_10_extrastack));
      |     ^~~~~~~
  Compile checking build/vgabios-stdvga/vgasrc/vgabios.o
In file included from src/biosvar.h:10,
                 from vgasrc/vgabios.c:8:
vgasrc/vgabios.c: In function 'set_cursor_pos':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:91:20: note: in expansion of macro 'GET_BDA'
   91 |     if (cp.page == GET_BDA(video_page)) {
      |                    ^~~~~~~
vgasrc/vgabios.c: In function 'verify_scroll':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:395:18: note: in expansion of macro 'GET_BDA'
  395 |     u16 nbrows = GET_BDA(video_rows) + 1;
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:398:18: note: in expansion of macro 'GET_BDA'
  398 |     u16 nbcols = GET_BDA(video_cols);
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:410:39: note: in expansion of macro 'GET_BDA'
  410 |     struct cursorpos win = {ulx, uly, GET_BDA(video_page)};
      |                                       ^~~~~~~
vgasrc/vgabios.c: In function 'write_char':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:164:19: note: in expansion of macro 'GET_BDA'
  164 |     if (pcp->x == GET_BDA(video_cols)) {
      |                   ^~~~~~~
vgasrc/vgabios.c: In function 'write_teletype':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:195:18: note: in expansion of macro 'GET_BDA'
  195 |     u16 nbrows = GET_BDA(video_rows);
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:200:37: note: in expansion of macro 'GET_BDA'
  200 |         struct cursorpos winsize = {GET_BDA(video_cols), nbrows+1};
      |                                     ^~~~~~~
vgasrc/vgabios.c: In function 'get_cursor_shape':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:59:23: note: in expansion of macro 'GET_BDA'
   59 |     u16 cursor_type = GET_BDA(cursor_type);
      |                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:60:26: note: in expansion of macro 'GET_BDA'
   60 |     u8 emulate_cursor = (GET_BDA(video_ctl) & 1) == 0;
      |                          ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:65:19: note: in expansion of macro 'GET_BDA'
   65 |     u16 cheight = GET_BDA(char_height);
      |                   ^~~~~~~
vgasrc/vgabios.c: In function 'set_cursor_shape':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:79:5: note: in expansion of macro 'SET_BDA'
   79 |     SET_BDA(cursor_type, cursor_type);
      |     ^~~~~~~
vgasrc/vgabios.c: In function 'set_scan_lines':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:140:5: note: in expansion of macro 'SET_BDA'
  140 |     SET_BDA(char_height, lines);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:143:5: note: in expansion of macro 'SET_BDA'
  143 |     SET_BDA(video_rows, rows - 1);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:144:16: note: in expansion of macro 'GET_BDA'
  144 |     u16 cols = GET_BDA(video_cols);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:145:5: note: in expansion of macro 'SET_BDA'
  145 |     SET_BDA(video_pagesize, calc_page_size(MM_TEXT, cols, rows));
      |     ^~~~~~~
vgasrc/vgabios.c: In function 'handle_100e.isra':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:510:42: note: in expansion of macro 'GET_BDA'
  510 |     struct cursorpos cp = get_cursor_pos(GET_BDA(video_page));
      |                                          ^~~~~~~
vgasrc/vgabios.c: In function 'bda_save_restore':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |      ^
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:230:41: note: in expansion of macro 'GET_BDA_EXT'
  230 |         SET_FARVAR(seg, info->vbe_mode, GET_BDA_EXT(vbe_mode));
      |                                         ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |      ^
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgabios.c:231:38: note: in expansion of macro 'GET_IVT'
  231 |         SET_FARVAR(seg, info->font0, GET_IVT(0x1f));
      |                                      ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |      ^
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgabios.c:232:38: note: in expansion of macro 'GET_IVT'
  232 |         SET_FARVAR(seg, info->font1, GET_IVT(0x43));
      |                                      ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:240:9: note: in expansion of macro 'SET_BDA_EXT'
  240 |         SET_BDA_EXT(vbe_mode, vbe_mode);
      |         ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:242:9: note: in expansion of macro 'SET_BDA_EXT'
  242 |         SET_BDA_EXT(vgamode_offset, (u32)vmode_g);
      |         ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:243:9: note: in expansion of macro 'SET_IVT'
  243 |         SET_IVT(0x1f, GET_FARVAR(seg, info->font0));
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:244:9: note: in expansion of macro 'SET_IVT'
  244 |         SET_IVT(0x43, GET_FARVAR(seg, info->font1));
      |         ^~~~~~~
vgasrc/vgabios.c: In function 'get_current_mode':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
vgasrc/vgabios.c: In function 'vga_set_mode':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:281:9: note: in expansion of macro 'SET_BDA'
  281 |         SET_BDA(video_mode, 0xff);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:279:9: note: in expansion of macro 'SET_BDA'
  279 |         SET_BDA(video_mode, mode);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:282:5: note: in expansion of macro 'SET_BDA_EXT'
  282 |     SET_BDA_EXT(vbe_mode, mode | (flags & MF_VBEFLAGS));
      |     ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:283:5: note: in expansion of macro 'SET_BDA_EXT'
  283 |     SET_BDA_EXT(vgamode_offset, (u32)vmode_g);
      |     ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:23: note: in expansion of macro 'GET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |                       ^~~~~~~~~~~
vgasrc/vgabios.c:288:9: note: in expansion of macro 'MASK_BDA_EXT'
  288 |         MASK_BDA_EXT(flags, BF_EXTRA_STACK
      |         ^~~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/vgabios.c:288:9: note: in expansion of macro 'MASK_BDA_EXT'
  288 |         MASK_BDA_EXT(flags, BF_EXTRA_STACK
      |         ^~~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:296:9: note: in expansion of macro 'SET_BDA'
  296 |         SET_BDA(video_cols, width / cwidth);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:297:9: note: in expansion of macro 'SET_BDA'
  297 |         SET_BDA(video_rows, (height / cheight) - 1);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:298:9: note: in expansion of macro 'SET_BDA'
  298 |         SET_BDA(cursor_type, vga_emulate_text() ? 0x0607 : 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:291:9: note: in expansion of macro 'SET_BDA'
  291 |         SET_BDA(video_cols, width);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:292:9: note: in expansion of macro 'SET_BDA'
  292 |         SET_BDA(video_rows, height-1);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:293:9: note: in expansion of macro 'SET_BDA'
  293 |         SET_BDA(cursor_type, 0x0607);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:300:5: note: in expansion of macro 'SET_BDA'
  300 |     SET_BDA(video_pagesize, calc_page_size(memmodel, width, height));
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:301:5: note: in expansion of macro 'SET_BDA'
  301 |     SET_BDA(crtc_address, CONFIG_VGA_STDVGA_PORTS ? stdvga_get_crtc() : 0);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:302:5: note: in expansion of macro 'SET_BDA'
  302 |     SET_BDA(char_height, cheight);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:303:5: note: in expansion of macro 'SET_BDA'
  303 |     SET_BDA(video_ctl, 0x60 | (flags & MF_NOCLEARMEM ? 0x80 : 0x00));
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:304:5: note: in expansion of macro 'SET_BDA'
  304 |     SET_BDA(video_switches, 0xF9);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.c:305:5: note: in expansion of macro 'SET_BDA'
  305 |     SET_BDA(modeset_ctl, GET_BDA(modeset_ctl) & 0x7f);
      |     ^~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:305:26: note: in expansion of macro 'GET_BDA'
  305 |     SET_BDA(modeset_ctl, GET_BDA(modeset_ctl) & 0x7f);
      |                          ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:305:5: note: in expansion of macro 'SET_BDA'
  305 |     SET_BDA(modeset_ctl, GET_BDA(modeset_ctl) & 0x7f);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:309:5: note: in expansion of macro 'SET_BDA'
  309 |     SET_BDA(video_pagestart, 0x0000);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:310:5: note: in expansion of macro 'SET_BDA'
  310 |     SET_BDA(video_page, 0x00);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:313:5: note: in expansion of macro 'SET_IVT'
  313 |     SET_IVT(0x1f, SEGOFF(get_global_seg(), (u32)&vgafont8[128 * 8]));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:313:5: note: in expansion of macro 'SET_IVT'
  313 |     SET_IVT(0x1f, SEGOFF(get_global_seg(), (u32)&vgafont8[128 * 8]));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:323:9: note: in expansion of macro 'SET_IVT'
  323 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont16));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:323:9: note: in expansion of macro 'SET_IVT'
  323 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont16));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:320:9: note: in expansion of macro 'SET_IVT'
  320 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont14));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:320:9: note: in expansion of macro 'SET_IVT'
  320 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont14));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:317:9: note: in expansion of macro 'SET_IVT'
  317 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont8));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:317:9: note: in expansion of macro 'SET_IVT'
  317 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont8));
      |         ^~~~~~~
vgasrc/vgabios.c: In function 'load_gfx_font':
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:735:5: note: in expansion of macro 'SET_IVT'
  735 |     SET_IVT(0x43, SEGOFF(seg, off));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:735:5: note: in expansion of macro 'SET_IVT'
  735 |     SET_IVT(0x43, SEGOFF(seg, off));
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:751:5: note: in expansion of macro 'SET_BDA'
  751 |     SET_BDA(video_rows, rows - 1);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:752:5: note: in expansion of macro 'SET_BDA'
  752 |     SET_BDA(char_height, height);
      |     ^~~~~~~
In function 'handle_101b',
    inlined from 'handle_10' at vgasrc/vgabios.c:1125:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |      ^
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:1062:38: note: in expansion of macro 'GET_BDA'
 1062 |     SET_FARVAR(seg, info->dcc_index, GET_BDA(dcc_index));
      |                                      ^~~~~~~
In function 'handle_101a01',
    inlined from 'handle_101a' at vgasrc/vgabios.c:1032:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1124:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:1016:5: note: in expansion of macro 'SET_BDA'
 1016 |     SET_BDA(dcc_index, regs->bl);
      |     ^~~~~~~
In function 'handle_101a00',
    inlined from 'handle_101a' at vgasrc/vgabios.c:1031:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1124:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:1009:16: note: in expansion of macro 'GET_BDA'
 1009 |     regs->bx = GET_BDA(dcc_index);
      |                ^~~~~~~
In function 'handle_101234',
    inlined from 'handle_1012' at vgasrc/vgabios.c:973:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.c:935:5: note: in expansion of macro 'SET_BDA'
  935 |     SET_BDA(video_ctl, (GET_BDA(video_ctl) & ~0x01) | (regs->al & 0x01));
      |     ^~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:935:25: note: in expansion of macro 'GET_BDA'
  935 |     SET_BDA(video_ctl, (GET_BDA(video_ctl) & ~0x01) | (regs->al & 0x01));
      |                         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:935:5: note: in expansion of macro 'SET_BDA'
  935 |     SET_BDA(video_ctl, (GET_BDA(video_ctl) & ~0x01) | (regs->al & 0x01));
      |     ^~~~~~~
In function 'handle_101233',
    inlined from 'handle_1012' at vgasrc/vgabios.c:972:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:927:13: note: in expansion of macro 'GET_BDA'
  927 |     u8 v2 = GET_BDA(modeset_ctl) & ~0x02;
      |             ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:928:5: note: in expansion of macro 'SET_BDA'
  928 |     SET_BDA(modeset_ctl, v | v2);
      |     ^~~~~~~
In function 'handle_101231',
    inlined from 'handle_1012' at vgasrc/vgabios.c:970:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:909:15: note: in expansion of macro 'GET_BDA'
  909 |     u8 mctl = GET_BDA(video_ctl) & ~0x08;
      |               ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:910:5: note: in expansion of macro 'SET_BDA'
  910 |     SET_BDA(video_ctl, mctl | v);
      |     ^~~~~~~
In function 'handle_101230',
    inlined from 'handle_1012' at vgasrc/vgabios.c:969:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
vgasrc/vgabios.c:878:8: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  878 |     u8 mctl = GET_BDA(modeset_ctl);
      |        ^~~~
vgasrc/vgabios.c:879:8: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  879 |     u8 vswt = GET_BDA(video_switches);
      |        ^~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:900:5: note: in expansion of macro 'SET_BDA'
  900 |     SET_BDA(modeset_ctl, mctl);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:901:5: note: in expansion of macro 'SET_BDA'
  901 |     SET_BDA(video_switches, vswt);
      |     ^~~~~~~
In function 'handle_101210',
    inlined from 'handle_1012' at vgasrc/vgabios.c:968:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
vgasrc/vgabios.c:867:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  867 |     u16 crtc_addr = GET_BDA(crtc_address);
      |         ^~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:872:16: note: in expansion of macro 'GET_BDA'
  872 |     regs->cx = GET_BDA(video_switches) & 0x0f;
      |                ^~~~~~~
In function 'handle_101130',
    inlined from 'handle_1011' at vgasrc/vgabios.c:853:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1121:16:
vgasrc/vgabios.c:790:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  790 |         struct segoff_s so = GET_IVT(0x43);
      |                         ^~
vgasrc/vgabios.c:790:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
vgasrc/vgabios.c:784:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  784 |         struct segoff_s so = GET_IVT(0x1f);
      |                         ^~
vgasrc/vgabios.c:784:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:824:16: note: in expansion of macro 'GET_BDA'
  824 |     regs->cx = GET_BDA(char_height) & 0xff;
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:827:16: note: in expansion of macro 'GET_BDA'
  827 |     regs->dl = GET_BDA(video_rows);
      |                ^~~~~~~
In function 'handle_101120',
    inlined from 'handle_1011' at vgasrc/vgabios.c:854:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1121:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:727:5: note: in expansion of macro 'SET_IVT'
  727 |     SET_IVT(0x1f, SEGOFF(regs->es, regs->bp));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:727:5: note: in expansion of macro 'SET_IVT'
  727 |     SET_IVT(0x1f, SEGOFF(regs->es, regs->bp));
      |     ^~~~~~~
In function 'handle_100f',
    inlined from 'handle_10' at vgasrc/vgabios.c:1119:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:518:16: note: in expansion of macro 'GET_BDA'
  518 |     regs->bh = GET_BDA(video_page);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:519:16: note: in expansion of macro 'GET_BDA'
  519 |     regs->al = GET_BDA(video_mode) | (GET_BDA(video_ctl) & 0x80);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:519:39: note: in expansion of macro 'GET_BDA'
  519 |     regs->al = GET_BDA(video_mode) | (GET_BDA(video_ctl) & 0x80);
      |                                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:520:16: note: in expansion of macro 'GET_BDA'
  520 |     regs->ah = GET_BDA(video_cols);
      |                ^~~~~~~
In function 'get_current_mode',
    inlined from 'set_active_page' at vgasrc/vgabios.c:117:33,
    inlined from 'handle_1005' at vgasrc/vgabios.c:387:5,
    inlined from 'handle_10' at vgasrc/vgabios.c:1109:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'set_active_page',
    inlined from 'handle_1005' at vgasrc/vgabios.c:387:5,
    inlined from 'handle_10' at vgasrc/vgabios.c:1109:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:127:5: note: in expansion of macro 'SET_BDA'
  127 |     SET_BDA(video_pagestart, address);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:128:5: note: in expansion of macro 'SET_BDA'
  128 |     SET_BDA(video_page, page);
      |     ^~~~~~~
In function 'handle_1003',
    inlined from 'handle_10' at vgasrc/vgabios.c:1107:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:370:16: note: in expansion of macro 'GET_BDA'
  370 |     regs->cx = GET_BDA(cursor_type);
      |                ^~~~~~~
In function 'handle_1000',
    inlined from 'handle_10' at vgasrc/vgabios.c:1104:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:339:30: note: in expansion of macro 'GET_BDA'
  339 |     int flags = MF_LEGACY | (GET_BDA(modeset_ctl) & (MF_NOPALETTE|MF_GRAYSUM));
      |                              ^~~~~~~
  Compile checking build/vgabios-stdvga/vgasrc/vgafb.o
In file included from src/biosvar.h:10,
                 from vgasrc/vgafb.c:8:
vgasrc/vgafb.c: In function 'get_font_data':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:387:23: note: in expansion of macro 'GET_BDA'
  387 |     int char_height = GET_BDA(char_height);
      |                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgafb.c:390:16: note: in expansion of macro 'GET_IVT'
  390 |         font = GET_IVT(0x1f);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgafb.c:390:16: note: in expansion of macro 'GET_IVT'
  390 |         font = GET_IVT(0x1f);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgafb.c:393:16: note: in expansion of macro 'GET_IVT'
  393 |         font = GET_IVT(0x43);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgafb.c:393:16: note: in expansion of macro 'GET_IVT'
  393 |         font = GET_IVT(0x43);
      |                ^~~~~~~
vgasrc/vgafb.c: In function 'text_address':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:552:18: note: in expansion of macro 'GET_BDA'
  552 |     int stride = GET_BDA(video_cols) * 2;
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:553:22: note: in expansion of macro 'GET_BDA'
  553 |     u32 pageoffset = GET_BDA(video_pagesize) * cp.page;
      |                      ^~~~~~~
vgasrc/vgafb.c: In function 'vgafb_clear_chars.isra':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:590:18: note: in expansion of macro 'GET_BDA'
  590 |     int stride = GET_BDA(video_cols) * 2;
      |                  ^~~~~~~
In function 'gfx_clear_chars',
    inlined from 'vgafb_clear_chars.isra' at vgasrc/vgafb.c:586:9:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:373:19: note: in expansion of macro 'GET_BDA'
  373 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
vgasrc/vgafb.c: In function 'vgafb_move_chars.isra':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:570:18: note: in expansion of macro 'GET_BDA'
  570 |     int stride = GET_BDA(video_cols) * 2;
      |                  ^~~~~~~
In function 'gfx_move_chars',
    inlined from 'vgafb_move_chars.isra' at vgasrc/vgafb.c:566:9:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:356:19: note: in expansion of macro 'GET_BDA'
  356 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
In function 'gfx_write_char',
    inlined from 'vgafb_write_char' at vgasrc/vgafb.c:633:9:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:404:17: note: in expansion of macro 'GET_BDA'
  404 |     if (cp.x >= GET_BDA(video_cols))
      |                 ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:411:19: note: in expansion of macro 'GET_BDA'
  411 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
In function 'gfx_read_char',
    inlined from 'vgafb_read_char' at vgasrc/vgafb.c:655:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:456:19: note: in expansion of macro 'GET_BDA'
  456 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:457:17: note: in expansion of macro 'GET_BDA'
  457 |     if (cp.x >= GET_BDA(video_cols) || cheight > ARRAY_SIZE(lines))
      |                 ^~~~~~~
  Compile checking build/vgabios-stdvga/vgasrc/swcursor.o
  Compile checking build/vgabios-stdvga/vgasrc/vgafonts.o
  Compile checking build/vgabios-stdvga/vgasrc/vbe.o
In file included from src/biosvar.h:10,
                 from vgasrc/vbe.c:9:
vgasrc/vbe.c: In function 'vbe_104f05':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vbe.c:257:9: note: in expansion of macro 'GET_BDA_EXT'
  257 |     if (GET_BDA_EXT(vbe_mode) & MF_LINEARFB) {
      |         ^~~~~~~~~~~
In function 'vbe_104f10',
    inlined from 'handle_104f' at vgasrc/vbe.c:458:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vbe.c:395:20: note: in expansion of macro 'GET_BDA_EXT'
  395 |         regs->bh = GET_BDA_EXT(flags) & BF_PM_MASK;
      |                    ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:23: note: in expansion of macro 'GET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |                       ^~~~~~~~~~~
vgasrc/vbe.c:392:9: note: in expansion of macro 'MASK_BDA_EXT'
  392 |         MASK_BDA_EXT(flags, BF_PM_MASK, regs->bh & BF_PM_MASK);
      |         ^~~~~~~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/vbe.c:392:9: note: in expansion of macro 'MASK_BDA_EXT'
  392 |         MASK_BDA_EXT(flags, BF_PM_MASK, regs->bh & BF_PM_MASK);
      |         ^~~~~~~~~~~~
In function 'vbe_104f03',
    inlined from 'handle_104f' at vgasrc/vbe.c:451:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vbe.c:227:16: note: in expansion of macro 'GET_BDA_EXT'
  227 |     regs->bx = GET_BDA_EXT(vbe_mode);
      |                ^~~~~~~~~~~
  Compile checking build/vgabios-stdvga/vgasrc/stdvga.o
  Compile checking build/vgabios-stdvga/vgasrc/stdvgamodes.o
In file included from src/biosvar.h:10,
                 from vgasrc/stdvgamodes.c:8:
vgasrc/stdvgamodes.c: In function 'stdvga_build_video_param':
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/stdvgamodes.c:360:5: note: in expansion of macro 'SET_BDA'
  360 |     SET_BDA(video_savetable
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/stdvgamodes.c:360:5: note: in expansion of macro 'SET_BDA'
  360 |     SET_BDA(video_savetable
      |     ^~~~~~~
  Compile checking build/vgabios-stdvga/vgasrc/stdvgaio.o
  Compile checking build/vgabios-stdvga/vgasrc/clext.o
  Compile checking build/vgabios-stdvga/vgasrc/svgamodes.o
  Compile checking build/vgabios-stdvga/vgasrc/atiext.o
  Compile checking build/vgabios-stdvga/vgasrc/bochsvga.o
  Compile checking build/vgabios-stdvga/vgasrc/geodevga.o
  Compile checking build/vgabios-stdvga/src/fw/coreboot.o
  Compile checking build/vgabios-stdvga/vgasrc/cbvga.o
In file included from src/biosvar.h:10,
                 from vgasrc/cbvga.c:8:
vgasrc/cbvga.c: In function 'cbvga_set_mode':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/cbvga.c:139:22: note: in expansion of macro 'GET_BDA_EXT'
  139 |     u8 extra_stack = GET_BDA_EXT(flags) & BF_EXTRA_STACK;
      |                      ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/cbvga.c:139:22: note: in expansion of macro 'GET_BDA_EXT'
  139 |     u8 extra_stack = GET_BDA_EXT(flags) & BF_EXTRA_STACK;
      |                      ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/cbvga.c:140:5: note: in expansion of macro 'MASK_BDA_EXT'
  140 |     MASK_BDA_EXT(flags, BF_EMULATE_TEXT, emul ? BF_EMULATE_TEXT : 0);
      |     ^~~~~~~~~~~~
  Compile checking build/vgabios-stdvga/vgasrc/bochsdisplay.o
  Compile checking build/vgabios-stdvga/vgasrc/ramfb.o
  Compiling whole program build/vgabios-stdvga/vgaccode16.raw.s
In file included from ./src/output.c:9,
                 from build/vgabios-stdvga/vgaccode16.raw.s.tmp.c:1:
In function 'get_current_mode',
    inlined from 'vgafb_write_pixel' at ./vgasrc/vgafb.c:505:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_read_pixel' at ./vgasrc/vgafb.c:529:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_write_char' at ./vgasrc/vgafb.c:628:33,
    inlined from 'write_char.isra' at ./vgasrc/vgabios.c:161:5:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_clear_chars.constprop.isra' at ./vgasrc/vgafb.c:581:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_move_chars.isra' at ./vgasrc/vgafb.c:561:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'bda_save_restore',
    inlined from 'stdvga_save_restore' at ./vgasrc/stdvga.c:453:12,
    inlined from 'bochsvga_save_restore' at ./vgasrc/bochsvga.c:230:15:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:113:34: note: in definition of macro '__SET_FARVAR'
  113 |         typeof(var) __sfv_val = (val);          \
      |                                  ^~~
./vgasrc/vgabios.c:230:9: note: in expansion of macro 'SET_FARVAR'
  230 |         SET_FARVAR(seg, info->vbe_mode, GET_BDA_EXT(vbe_mode));
      |         ^~~~~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:230:41: note: in expansion of macro 'GET_BDA_EXT'
  230 |         SET_FARVAR(seg, info->vbe_mode, GET_BDA_EXT(vbe_mode));
      |                                         ^~~~~~~~~~~
./src/farptr.h:37:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   37 |     __asm__(prefix "movw %w1, %%" #SEG ":%0" : "=m"(var)        \
      |     ^~~~~~~
./src/farptr.h:73:13: note: in expansion of macro 'WRITE16_SEG'
   73 |             WRITE16_SEG(prefix, seg, var, (val));       \
      |             ^~~~~~~~~~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:240:9: note: in expansion of macro 'SET_BDA_EXT'
  240 |         SET_BDA_EXT(vbe_mode, vbe_mode);
      |         ^~~~~~~~~~~
./src/farptr.h:37:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   37 |     __asm__(prefix "movw %w1, %%" #SEG ":%0" : "=m"(var)        \
      |     ^~~~~~~
./src/farptr.h:73:13: note: in expansion of macro 'WRITE16_SEG'
   73 |             WRITE16_SEG(prefix, seg, var, (val));       \
      |             ^~~~~~~~~~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:242:9: note: in expansion of macro 'SET_BDA_EXT'
  242 |         SET_BDA_EXT(vgamode_offset, (u32)vmode_g);
      |         ^~~~~~~~~~~
./vgasrc/vgabios.c: In function 'vga_set_mode':
./vgasrc/vgabios.h:63:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |                                                             ^~
./src/farptr.h:37:53: note: in definition of macro 'WRITE16_SEG'
   37 |     __asm__(prefix "movw %w1, %%" #SEG ":%0" : "=m"(var)        \
      |                                                     ^~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:282:5: note: in expansion of macro 'SET_BDA_EXT'
  282 |     SET_BDA_EXT(vbe_mode, mode | (flags & MF_VBEFLAGS));
      |     ^~~~~~~~~~~
./vgasrc/vgabios.h:63:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |                                                             ^~
./src/farptr.h:37:53: note: in definition of macro 'WRITE16_SEG'
   37 |     __asm__(prefix "movw %w1, %%" #SEG ":%0" : "=m"(var)        \
      |                                                     ^~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:283:5: note: in expansion of macro 'SET_BDA_EXT'
  283 |     SET_BDA_EXT(vgamode_offset, (u32)vmode_g);
      |     ^~~~~~~~~~~
./vgasrc/vgabios.h:61:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |                                                             ^~
./src/farptr.h:113:34: note: in definition of macro '__SET_FARVAR'
  113 |         typeof(var) __sfv_val = (val);          \
      |                                  ^~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./src/farptr.h:58:9: note: in expansion of macro 'READ8_SEG'
   58 |         READ8_SEG(prefix, seg, __val, var);     \
      |         ^~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:23: note: in expansion of macro 'GET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |                       ^~~~~~~~~~~
./vgasrc/vgabios.c:288:9: note: in expansion of macro 'MASK_BDA_EXT'
  288 |         MASK_BDA_EXT(flags, BF_EXTRA_STACK
      |         ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |                                                             ^~
./src/farptr.h:34:53: note: in definition of macro 'WRITE8_SEG'
   34 |     __asm__(prefix "movb %b1, %%" #SEG ":%0" : "=m"(var)        \
      |                                                     ^~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./vgasrc/vgabios.c:288:9: note: in expansion of macro 'MASK_BDA_EXT'
  288 |         MASK_BDA_EXT(flags, BF_EXTRA_STACK
      |         ^~~~~~~~~~~~
./vgasrc/vbe.c: In function 'vbe_104f05':
./vgasrc/vgabios.h:61:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |                                                             ^~
./src/farptr.h:22:19: note: in definition of macro 'READ16_SEG'
   22 |             : "m"(var), "m"(__segment_ ## SEG))
      |                   ^~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vbe.c:257:9: note: in expansion of macro 'GET_BDA_EXT'
  257 |     if (GET_BDA_EXT(vbe_mode) & MF_LINEARFB) {
      |         ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vbe_104f05' at ./vgasrc/vbe.c:261:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'vbe_104f10',
    inlined from 'handle_104f' at ./vgasrc/vbe.c:458:16:
./src/farptr.h:18:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   18 |     __asm__(prefix "movb %%" #SEG ":%1, %b0" : "=Qi"(value)     \
      |     ^~~~~~~
./src/farptr.h:58:9: note: in expansion of macro 'READ8_SEG'
   58 |         READ8_SEG(prefix, seg, __val, var);     \
      |         ^~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vbe.c:395:20: note: in expansion of macro 'GET_BDA_EXT'
  395 |         regs->bh = GET_BDA_EXT(flags) & BF_PM_MASK;
      |                    ^~~~~~~~~~~
./src/farptr.h:18:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   18 |     __asm__(prefix "movb %%" #SEG ":%1, %b0" : "=Qi"(value)     \
      |     ^~~~~~~
./src/farptr.h:113:34: note: in definition of macro '__SET_FARVAR'
  113 |         typeof(var) __sfv_val = (val);          \
      |                                  ^~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./src/farptr.h:58:9: note: in expansion of macro 'READ8_SEG'
   58 |         READ8_SEG(prefix, seg, __val, var);     \
      |         ^~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:23: note: in expansion of macro 'GET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |                       ^~~~~~~~~~~
./vgasrc/vbe.c:392:9: note: in expansion of macro 'MASK_BDA_EXT'
  392 |         MASK_BDA_EXT(flags, BF_PM_MASK, regs->bh & BF_PM_MASK);
      |         ^~~~~~~~~~~~
./src/farptr.h:34:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   34 |     __asm__(prefix "movb %b1, %%" #SEG ":%0" : "=m"(var)        \
      |     ^~~~~~~
./src/farptr.h:71:13: note: in expansion of macro 'WRITE8_SEG'
   71 |             WRITE8_SEG(prefix, seg, var, (val));        \
      |             ^~~~~~~~~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./vgasrc/vbe.c:392:9: note: in expansion of macro 'MASK_BDA_EXT'
  392 |         MASK_BDA_EXT(flags, BF_PM_MASK, regs->bh & BF_PM_MASK);
      |         ^~~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vbe_104f08' at ./vgasrc/vbe.c:352:33,
    inlined from 'handle_104f' at ./vgasrc/vbe.c:456:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vbe_104f07' at ./vgasrc/vbe.c:316:33,
    inlined from 'handle_104f' at ./vgasrc/vbe.c:455:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vbe_104f06' at ./vgasrc/vbe.c:286:33,
    inlined from 'handle_104f' at ./vgasrc/vbe.c:454:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'vbe_104f03',
    inlined from 'handle_104f' at ./vgasrc/vbe.c:451:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vbe.c:227:16: note: in expansion of macro 'GET_BDA_EXT'
  227 |     regs->bx = GET_BDA_EXT(vbe_mode);
      |                ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_read_char' at ./vgasrc/vgafb.c:650:33,
    inlined from 'handle_1008' at ./vgasrc/vgabios.c:431:25,
    inlined from 'handle_10' at ./vgasrc/vgabios.c:1112:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'set_active_page' at ./vgasrc/vgabios.c:117:33,
    inlined from 'handle_1005' at ./vgasrc/vgabios.c:387:5,
    inlined from 'handle_10' at ./vgasrc/vgabios.c:1109:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
  Fixup VGA rom assembler
  Compiling to assembler build/vgabios-stdvga/src/asm-offsets.s
  Generating offset file build/vgabios-stdvga/asm-offsets.h
  Compiling (16bit) build/vgabios-stdvga/vgaentry.o
  Precompiling build/vgabios-stdvga/vgasrc/vgalayout.lds
  Linking build/vgabios-stdvga/vgarom.o
Version: 1.16.2-debian-1.16.2-1
ld: warning: build/vgabios-stdvga/vgaentry.o: missing .note.GNU-stack section implies executable stack
ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
ld: warning: build/vgabios-stdvga/vgarom.o has a LOAD segment with RWX permissions
  Extracting binary build/vgabios-stdvga/vgabios.bin.raw
  Finalizing rom build/vgabios-stdvga/vgabios.bin
make[1]: Leaving directory '/build/seabios-1.16.2'
rm -f build/vgabios-stdvga.bin
ln build/vgabios-stdvga/vgabios.bin build/vgabios-stdvga.bin

=== Building vgabios-virtio.bin ===

set -e; if [ ! -e build/vgabios-virtio/.config.old ]; then rm -rf build/vgabios-virtio; mkdir -p build/vgabios-virtio; for x in BUILD_VGABIOS=y VGA_BOCHS=y VGA_PCI=y OVERRIDE_PCI_ID=y VGA_VID=0x1af4 VGA_DID=0x1050; do echo CONFIG_$x; done > build/vgabios-virtio/.config; /usr/bin/make PYTHON="python3 -B" KCONFIG_CONFIG=/build/seabios-1.16.2/build/vgabios-virtio/.config OUT=build/vgabios-virtio/ oldnoconfig; fi
make[1]: Entering directory '/build/seabios-1.16.2'
scripts/kconfig/conf --olddefconfig /build/seabios-1.16.2/src/Kconfig
#
# configuration written to /build/seabios-1.16.2/build/vgabios-virtio/.config
#
make[1]: Leaving directory '/build/seabios-1.16.2'
/usr/bin/make PYTHON="python3 -B" $(cat build/env) KCONFIG_CONFIG=/build/seabios-1.16.2/build/vgabios-virtio/.config OUT=build/vgabios-virtio/ build/vgabios-virtio/vgabios.bin
make[1]: Entering directory '/build/seabios-1.16.2'
  Build Kconfig config file
  Compile checking build/vgabios-virtio/src/output.o
In file included from src/output.c:9:
src/output.c: In function 'screenc':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
src/output.c:77:25: note: in expansion of macro 'GET_IVT'
   77 |     if (!MODESEGMENT && GET_IVT(0x10).segoff == FUNC16(entry_10).segoff)
      |                         ^~~~~~~
  Compile checking build/vgabios-virtio/src/string.o
  Compile checking build/vgabios-virtio/src/hw/pci.o
  Compile checking build/vgabios-virtio/src/hw/serialio.o
  Compile checking build/vgabios-virtio/vgasrc/vgainit.o
In file included from vgasrc/vgainit.c:8:
In function 'set_equipment_flags',
    inlined from 'init_bios_area' at vgasrc/vgainit.c:141:5,
    inlined from 'vga_post' at vgasrc/vgainit.c:182:5:
src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
In file included from src/biosvar.h:10:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'init_bios_area',
    inlined from 'vga_post' at vgasrc/vgainit.c:182:5:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgainit.c:144:5: note: in expansion of macro 'SET_BDA'
  144 |     SET_BDA(modeset_ctl, 0x51);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgainit.c:146:5: note: in expansion of macro 'SET_BDA'
  146 |     SET_BDA(dcc_index, CONFIG_VGA_STDVGA_PORTS ? 0x08 : 0xff);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgainit.c:149:5: note: in expansion of macro 'SET_BDA'
  149 |     SET_BDA(video_msr, 0x00); // Unavailable on vanilla vga, but...
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgainit.c:150:5: note: in expansion of macro 'SET_BDA'
  150 |     SET_BDA(video_pal, 0x00); // Unavailable on vanilla vga, but...
      |     ^~~~~~~
vgasrc/vgainit.c: In function 'vga_post':
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgainit.c:188:5: note: in expansion of macro 'SET_IVT'
  188 |     SET_IVT(0x10, SEGOFF(get_global_seg(), (u32)entry_10));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgainit.c:188:5: note: in expansion of macro 'SET_IVT'
  188 |     SET_IVT(0x10, SEGOFF(get_global_seg(), (u32)entry_10));
      |     ^~~~~~~
In function 'allocate_extra_stack',
    inlined from 'vga_post' at vgasrc/vgainit.c:190:5:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgainit.c:97:5: note: in expansion of macro 'SET_IVT'
   97 |     SET_IVT(0x10, SEGOFF(get_global_seg(), (u32)entry_10_extrastack));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgainit.c:97:5: note: in expansion of macro 'SET_IVT'
   97 |     SET_IVT(0x10, SEGOFF(get_global_seg(), (u32)entry_10_extrastack));
      |     ^~~~~~~
  Compile checking build/vgabios-virtio/vgasrc/vgabios.o
In file included from src/biosvar.h:10,
                 from vgasrc/vgabios.c:8:
vgasrc/vgabios.c: In function 'set_cursor_pos':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:91:20: note: in expansion of macro 'GET_BDA'
   91 |     if (cp.page == GET_BDA(video_page)) {
      |                    ^~~~~~~
vgasrc/vgabios.c: In function 'verify_scroll':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:395:18: note: in expansion of macro 'GET_BDA'
  395 |     u16 nbrows = GET_BDA(video_rows) + 1;
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:398:18: note: in expansion of macro 'GET_BDA'
  398 |     u16 nbcols = GET_BDA(video_cols);
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:410:39: note: in expansion of macro 'GET_BDA'
  410 |     struct cursorpos win = {ulx, uly, GET_BDA(video_page)};
      |                                       ^~~~~~~
vgasrc/vgabios.c: In function 'write_char':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:164:19: note: in expansion of macro 'GET_BDA'
  164 |     if (pcp->x == GET_BDA(video_cols)) {
      |                   ^~~~~~~
vgasrc/vgabios.c: In function 'write_teletype':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:195:18: note: in expansion of macro 'GET_BDA'
  195 |     u16 nbrows = GET_BDA(video_rows);
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:200:37: note: in expansion of macro 'GET_BDA'
  200 |         struct cursorpos winsize = {GET_BDA(video_cols), nbrows+1};
      |                                     ^~~~~~~
vgasrc/vgabios.c: In function 'get_cursor_shape':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:59:23: note: in expansion of macro 'GET_BDA'
   59 |     u16 cursor_type = GET_BDA(cursor_type);
      |                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:60:26: note: in expansion of macro 'GET_BDA'
   60 |     u8 emulate_cursor = (GET_BDA(video_ctl) & 1) == 0;
      |                          ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:65:19: note: in expansion of macro 'GET_BDA'
   65 |     u16 cheight = GET_BDA(char_height);
      |                   ^~~~~~~
vgasrc/vgabios.c: In function 'set_cursor_shape':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:79:5: note: in expansion of macro 'SET_BDA'
   79 |     SET_BDA(cursor_type, cursor_type);
      |     ^~~~~~~
vgasrc/vgabios.c: In function 'set_scan_lines':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:140:5: note: in expansion of macro 'SET_BDA'
  140 |     SET_BDA(char_height, lines);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:143:5: note: in expansion of macro 'SET_BDA'
  143 |     SET_BDA(video_rows, rows - 1);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:144:16: note: in expansion of macro 'GET_BDA'
  144 |     u16 cols = GET_BDA(video_cols);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:145:5: note: in expansion of macro 'SET_BDA'
  145 |     SET_BDA(video_pagesize, calc_page_size(MM_TEXT, cols, rows));
      |     ^~~~~~~
vgasrc/vgabios.c: In function 'handle_100e.isra':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:510:42: note: in expansion of macro 'GET_BDA'
  510 |     struct cursorpos cp = get_cursor_pos(GET_BDA(video_page));
      |                                          ^~~~~~~
vgasrc/vgabios.c: In function 'bda_save_restore':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |      ^
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:230:41: note: in expansion of macro 'GET_BDA_EXT'
  230 |         SET_FARVAR(seg, info->vbe_mode, GET_BDA_EXT(vbe_mode));
      |                                         ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |      ^
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgabios.c:231:38: note: in expansion of macro 'GET_IVT'
  231 |         SET_FARVAR(seg, info->font0, GET_IVT(0x1f));
      |                                      ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |      ^
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgabios.c:232:38: note: in expansion of macro 'GET_IVT'
  232 |         SET_FARVAR(seg, info->font1, GET_IVT(0x43));
      |                                      ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:240:9: note: in expansion of macro 'SET_BDA_EXT'
  240 |         SET_BDA_EXT(vbe_mode, vbe_mode);
      |         ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:242:9: note: in expansion of macro 'SET_BDA_EXT'
  242 |         SET_BDA_EXT(vgamode_offset, (u32)vmode_g);
      |         ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:243:9: note: in expansion of macro 'SET_IVT'
  243 |         SET_IVT(0x1f, GET_FARVAR(seg, info->font0));
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:244:9: note: in expansion of macro 'SET_IVT'
  244 |         SET_IVT(0x43, GET_FARVAR(seg, info->font1));
      |         ^~~~~~~
vgasrc/vgabios.c: In function 'get_current_mode':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
vgasrc/vgabios.c: In function 'vga_set_mode':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:281:9: note: in expansion of macro 'SET_BDA'
  281 |         SET_BDA(video_mode, 0xff);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:279:9: note: in expansion of macro 'SET_BDA'
  279 |         SET_BDA(video_mode, mode);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:282:5: note: in expansion of macro 'SET_BDA_EXT'
  282 |     SET_BDA_EXT(vbe_mode, mode | (flags & MF_VBEFLAGS));
      |     ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:283:5: note: in expansion of macro 'SET_BDA_EXT'
  283 |     SET_BDA_EXT(vgamode_offset, (u32)vmode_g);
      |     ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:23: note: in expansion of macro 'GET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |                       ^~~~~~~~~~~
vgasrc/vgabios.c:288:9: note: in expansion of macro 'MASK_BDA_EXT'
  288 |         MASK_BDA_EXT(flags, BF_EXTRA_STACK
      |         ^~~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/vgabios.c:288:9: note: in expansion of macro 'MASK_BDA_EXT'
  288 |         MASK_BDA_EXT(flags, BF_EXTRA_STACK
      |         ^~~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:296:9: note: in expansion of macro 'SET_BDA'
  296 |         SET_BDA(video_cols, width / cwidth);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:297:9: note: in expansion of macro 'SET_BDA'
  297 |         SET_BDA(video_rows, (height / cheight) - 1);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:298:9: note: in expansion of macro 'SET_BDA'
  298 |         SET_BDA(cursor_type, vga_emulate_text() ? 0x0607 : 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:291:9: note: in expansion of macro 'SET_BDA'
  291 |         SET_BDA(video_cols, width);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:292:9: note: in expansion of macro 'SET_BDA'
  292 |         SET_BDA(video_rows, height-1);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:293:9: note: in expansion of macro 'SET_BDA'
  293 |         SET_BDA(cursor_type, 0x0607);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:300:5: note: in expansion of macro 'SET_BDA'
  300 |     SET_BDA(video_pagesize, calc_page_size(memmodel, width, height));
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:301:5: note: in expansion of macro 'SET_BDA'
  301 |     SET_BDA(crtc_address, CONFIG_VGA_STDVGA_PORTS ? stdvga_get_crtc() : 0);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:302:5: note: in expansion of macro 'SET_BDA'
  302 |     SET_BDA(char_height, cheight);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:303:5: note: in expansion of macro 'SET_BDA'
  303 |     SET_BDA(video_ctl, 0x60 | (flags & MF_NOCLEARMEM ? 0x80 : 0x00));
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:304:5: note: in expansion of macro 'SET_BDA'
  304 |     SET_BDA(video_switches, 0xF9);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.c:305:5: note: in expansion of macro 'SET_BDA'
  305 |     SET_BDA(modeset_ctl, GET_BDA(modeset_ctl) & 0x7f);
      |     ^~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:305:26: note: in expansion of macro 'GET_BDA'
  305 |     SET_BDA(modeset_ctl, GET_BDA(modeset_ctl) & 0x7f);
      |                          ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:305:5: note: in expansion of macro 'SET_BDA'
  305 |     SET_BDA(modeset_ctl, GET_BDA(modeset_ctl) & 0x7f);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:309:5: note: in expansion of macro 'SET_BDA'
  309 |     SET_BDA(video_pagestart, 0x0000);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:310:5: note: in expansion of macro 'SET_BDA'
  310 |     SET_BDA(video_page, 0x00);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:313:5: note: in expansion of macro 'SET_IVT'
  313 |     SET_IVT(0x1f, SEGOFF(get_global_seg(), (u32)&vgafont8[128 * 8]));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:313:5: note: in expansion of macro 'SET_IVT'
  313 |     SET_IVT(0x1f, SEGOFF(get_global_seg(), (u32)&vgafont8[128 * 8]));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:323:9: note: in expansion of macro 'SET_IVT'
  323 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont16));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:323:9: note: in expansion of macro 'SET_IVT'
  323 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont16));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:320:9: note: in expansion of macro 'SET_IVT'
  320 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont14));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:320:9: note: in expansion of macro 'SET_IVT'
  320 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont14));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:317:9: note: in expansion of macro 'SET_IVT'
  317 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont8));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:317:9: note: in expansion of macro 'SET_IVT'
  317 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont8));
      |         ^~~~~~~
vgasrc/vgabios.c: In function 'load_gfx_font':
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:735:5: note: in expansion of macro 'SET_IVT'
  735 |     SET_IVT(0x43, SEGOFF(seg, off));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:735:5: note: in expansion of macro 'SET_IVT'
  735 |     SET_IVT(0x43, SEGOFF(seg, off));
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:751:5: note: in expansion of macro 'SET_BDA'
  751 |     SET_BDA(video_rows, rows - 1);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:752:5: note: in expansion of macro 'SET_BDA'
  752 |     SET_BDA(char_height, height);
      |     ^~~~~~~
In function 'handle_101b',
    inlined from 'handle_10' at vgasrc/vgabios.c:1125:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |      ^
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:1062:38: note: in expansion of macro 'GET_BDA'
 1062 |     SET_FARVAR(seg, info->dcc_index, GET_BDA(dcc_index));
      |                                      ^~~~~~~
In function 'handle_101a01',
    inlined from 'handle_101a' at vgasrc/vgabios.c:1032:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1124:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:1016:5: note: in expansion of macro 'SET_BDA'
 1016 |     SET_BDA(dcc_index, regs->bl);
      |     ^~~~~~~
In function 'handle_101a00',
    inlined from 'handle_101a' at vgasrc/vgabios.c:1031:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1124:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:1009:16: note: in expansion of macro 'GET_BDA'
 1009 |     regs->bx = GET_BDA(dcc_index);
      |                ^~~~~~~
In function 'handle_101234',
    inlined from 'handle_1012' at vgasrc/vgabios.c:973:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.c:935:5: note: in expansion of macro 'SET_BDA'
  935 |     SET_BDA(video_ctl, (GET_BDA(video_ctl) & ~0x01) | (regs->al & 0x01));
      |     ^~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:935:25: note: in expansion of macro 'GET_BDA'
  935 |     SET_BDA(video_ctl, (GET_BDA(video_ctl) & ~0x01) | (regs->al & 0x01));
      |                         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:935:5: note: in expansion of macro 'SET_BDA'
  935 |     SET_BDA(video_ctl, (GET_BDA(video_ctl) & ~0x01) | (regs->al & 0x01));
      |     ^~~~~~~
In function 'handle_101233',
    inlined from 'handle_1012' at vgasrc/vgabios.c:972:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:927:13: note: in expansion of macro 'GET_BDA'
  927 |     u8 v2 = GET_BDA(modeset_ctl) & ~0x02;
      |             ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:928:5: note: in expansion of macro 'SET_BDA'
  928 |     SET_BDA(modeset_ctl, v | v2);
      |     ^~~~~~~
In function 'handle_101231',
    inlined from 'handle_1012' at vgasrc/vgabios.c:970:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:909:15: note: in expansion of macro 'GET_BDA'
  909 |     u8 mctl = GET_BDA(video_ctl) & ~0x08;
      |               ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:910:5: note: in expansion of macro 'SET_BDA'
  910 |     SET_BDA(video_ctl, mctl | v);
      |     ^~~~~~~
In function 'handle_101230',
    inlined from 'handle_1012' at vgasrc/vgabios.c:969:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
vgasrc/vgabios.c:878:8: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  878 |     u8 mctl = GET_BDA(modeset_ctl);
      |        ^~~~
vgasrc/vgabios.c:879:8: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  879 |     u8 vswt = GET_BDA(video_switches);
      |        ^~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:900:5: note: in expansion of macro 'SET_BDA'
  900 |     SET_BDA(modeset_ctl, mctl);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:901:5: note: in expansion of macro 'SET_BDA'
  901 |     SET_BDA(video_switches, vswt);
      |     ^~~~~~~
In function 'handle_101210',
    inlined from 'handle_1012' at vgasrc/vgabios.c:968:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
vgasrc/vgabios.c:867:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  867 |     u16 crtc_addr = GET_BDA(crtc_address);
      |         ^~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:872:16: note: in expansion of macro 'GET_BDA'
  872 |     regs->cx = GET_BDA(video_switches) & 0x0f;
      |                ^~~~~~~
In function 'handle_101130',
    inlined from 'handle_1011' at vgasrc/vgabios.c:853:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1121:16:
vgasrc/vgabios.c:790:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  790 |         struct segoff_s so = GET_IVT(0x43);
      |                         ^~
vgasrc/vgabios.c:790:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
vgasrc/vgabios.c:784:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  784 |         struct segoff_s so = GET_IVT(0x1f);
      |                         ^~
vgasrc/vgabios.c:784:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:824:16: note: in expansion of macro 'GET_BDA'
  824 |     regs->cx = GET_BDA(char_height) & 0xff;
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:827:16: note: in expansion of macro 'GET_BDA'
  827 |     regs->dl = GET_BDA(video_rows);
      |                ^~~~~~~
In function 'handle_101120',
    inlined from 'handle_1011' at vgasrc/vgabios.c:854:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1121:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:727:5: note: in expansion of macro 'SET_IVT'
  727 |     SET_IVT(0x1f, SEGOFF(regs->es, regs->bp));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:727:5: note: in expansion of macro 'SET_IVT'
  727 |     SET_IVT(0x1f, SEGOFF(regs->es, regs->bp));
      |     ^~~~~~~
In function 'handle_100f',
    inlined from 'handle_10' at vgasrc/vgabios.c:1119:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:518:16: note: in expansion of macro 'GET_BDA'
  518 |     regs->bh = GET_BDA(video_page);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:519:16: note: in expansion of macro 'GET_BDA'
  519 |     regs->al = GET_BDA(video_mode) | (GET_BDA(video_ctl) & 0x80);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:519:39: note: in expansion of macro 'GET_BDA'
  519 |     regs->al = GET_BDA(video_mode) | (GET_BDA(video_ctl) & 0x80);
      |                                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:520:16: note: in expansion of macro 'GET_BDA'
  520 |     regs->ah = GET_BDA(video_cols);
      |                ^~~~~~~
In function 'get_current_mode',
    inlined from 'set_active_page' at vgasrc/vgabios.c:117:33,
    inlined from 'handle_1005' at vgasrc/vgabios.c:387:5,
    inlined from 'handle_10' at vgasrc/vgabios.c:1109:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'set_active_page',
    inlined from 'handle_1005' at vgasrc/vgabios.c:387:5,
    inlined from 'handle_10' at vgasrc/vgabios.c:1109:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:127:5: note: in expansion of macro 'SET_BDA'
  127 |     SET_BDA(video_pagestart, address);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:128:5: note: in expansion of macro 'SET_BDA'
  128 |     SET_BDA(video_page, page);
      |     ^~~~~~~
In function 'handle_1003',
    inlined from 'handle_10' at vgasrc/vgabios.c:1107:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:370:16: note: in expansion of macro 'GET_BDA'
  370 |     regs->cx = GET_BDA(cursor_type);
      |                ^~~~~~~
In function 'handle_1000',
    inlined from 'handle_10' at vgasrc/vgabios.c:1104:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:339:30: note: in expansion of macro 'GET_BDA'
  339 |     int flags = MF_LEGACY | (GET_BDA(modeset_ctl) & (MF_NOPALETTE|MF_GRAYSUM));
      |                              ^~~~~~~
  Compile checking build/vgabios-virtio/vgasrc/vgafb.o
In file included from src/biosvar.h:10,
                 from vgasrc/vgafb.c:8:
vgasrc/vgafb.c: In function 'get_font_data':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:387:23: note: in expansion of macro 'GET_BDA'
  387 |     int char_height = GET_BDA(char_height);
      |                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgafb.c:390:16: note: in expansion of macro 'GET_IVT'
  390 |         font = GET_IVT(0x1f);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgafb.c:390:16: note: in expansion of macro 'GET_IVT'
  390 |         font = GET_IVT(0x1f);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgafb.c:393:16: note: in expansion of macro 'GET_IVT'
  393 |         font = GET_IVT(0x43);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgafb.c:393:16: note: in expansion of macro 'GET_IVT'
  393 |         font = GET_IVT(0x43);
      |                ^~~~~~~
vgasrc/vgafb.c: In function 'text_address':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:552:18: note: in expansion of macro 'GET_BDA'
  552 |     int stride = GET_BDA(video_cols) * 2;
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:553:22: note: in expansion of macro 'GET_BDA'
  553 |     u32 pageoffset = GET_BDA(video_pagesize) * cp.page;
      |                      ^~~~~~~
vgasrc/vgafb.c: In function 'vgafb_clear_chars.isra':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:590:18: note: in expansion of macro 'GET_BDA'
  590 |     int stride = GET_BDA(video_cols) * 2;
      |                  ^~~~~~~
In function 'gfx_clear_chars',
    inlined from 'vgafb_clear_chars.isra' at vgasrc/vgafb.c:586:9:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:373:19: note: in expansion of macro 'GET_BDA'
  373 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
vgasrc/vgafb.c: In function 'vgafb_move_chars.isra':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:570:18: note: in expansion of macro 'GET_BDA'
  570 |     int stride = GET_BDA(video_cols) * 2;
      |                  ^~~~~~~
In function 'gfx_move_chars',
    inlined from 'vgafb_move_chars.isra' at vgasrc/vgafb.c:566:9:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:356:19: note: in expansion of macro 'GET_BDA'
  356 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
In function 'gfx_write_char',
    inlined from 'vgafb_write_char' at vgasrc/vgafb.c:633:9:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:404:17: note: in expansion of macro 'GET_BDA'
  404 |     if (cp.x >= GET_BDA(video_cols))
      |                 ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:411:19: note: in expansion of macro 'GET_BDA'
  411 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
In function 'gfx_read_char',
    inlined from 'vgafb_read_char' at vgasrc/vgafb.c:655:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:456:19: note: in expansion of macro 'GET_BDA'
  456 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:457:17: note: in expansion of macro 'GET_BDA'
  457 |     if (cp.x >= GET_BDA(video_cols) || cheight > ARRAY_SIZE(lines))
      |                 ^~~~~~~
  Compile checking build/vgabios-virtio/vgasrc/swcursor.o
  Compile checking build/vgabios-virtio/vgasrc/vgafonts.o
  Compile checking build/vgabios-virtio/vgasrc/vbe.o
In file included from src/biosvar.h:10,
                 from vgasrc/vbe.c:9:
vgasrc/vbe.c: In function 'vbe_104f05':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vbe.c:257:9: note: in expansion of macro 'GET_BDA_EXT'
  257 |     if (GET_BDA_EXT(vbe_mode) & MF_LINEARFB) {
      |         ^~~~~~~~~~~
In function 'vbe_104f10',
    inlined from 'handle_104f' at vgasrc/vbe.c:458:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vbe.c:395:20: note: in expansion of macro 'GET_BDA_EXT'
  395 |         regs->bh = GET_BDA_EXT(flags) & BF_PM_MASK;
      |                    ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:23: note: in expansion of macro 'GET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |                       ^~~~~~~~~~~
vgasrc/vbe.c:392:9: note: in expansion of macro 'MASK_BDA_EXT'
  392 |         MASK_BDA_EXT(flags, BF_PM_MASK, regs->bh & BF_PM_MASK);
      |         ^~~~~~~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/vbe.c:392:9: note: in expansion of macro 'MASK_BDA_EXT'
  392 |         MASK_BDA_EXT(flags, BF_PM_MASK, regs->bh & BF_PM_MASK);
      |         ^~~~~~~~~~~~
In function 'vbe_104f03',
    inlined from 'handle_104f' at vgasrc/vbe.c:451:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vbe.c:227:16: note: in expansion of macro 'GET_BDA_EXT'
  227 |     regs->bx = GET_BDA_EXT(vbe_mode);
      |                ^~~~~~~~~~~
  Compile checking build/vgabios-virtio/vgasrc/stdvga.o
  Compile checking build/vgabios-virtio/vgasrc/stdvgamodes.o
In file included from src/biosvar.h:10,
                 from vgasrc/stdvgamodes.c:8:
vgasrc/stdvgamodes.c: In function 'stdvga_build_video_param':
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/stdvgamodes.c:360:5: note: in expansion of macro 'SET_BDA'
  360 |     SET_BDA(video_savetable
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/stdvgamodes.c:360:5: note: in expansion of macro 'SET_BDA'
  360 |     SET_BDA(video_savetable
      |     ^~~~~~~
  Compile checking build/vgabios-virtio/vgasrc/stdvgaio.o
  Compile checking build/vgabios-virtio/vgasrc/clext.o
  Compile checking build/vgabios-virtio/vgasrc/svgamodes.o
  Compile checking build/vgabios-virtio/vgasrc/atiext.o
  Compile checking build/vgabios-virtio/vgasrc/bochsvga.o
  Compile checking build/vgabios-virtio/vgasrc/geodevga.o
  Compile checking build/vgabios-virtio/src/fw/coreboot.o
  Compile checking build/vgabios-virtio/vgasrc/cbvga.o
In file included from src/biosvar.h:10,
                 from vgasrc/cbvga.c:8:
vgasrc/cbvga.c: In function 'cbvga_set_mode':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/cbvga.c:139:22: note: in expansion of macro 'GET_BDA_EXT'
  139 |     u8 extra_stack = GET_BDA_EXT(flags) & BF_EXTRA_STACK;
      |                      ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/cbvga.c:139:22: note: in expansion of macro 'GET_BDA_EXT'
  139 |     u8 extra_stack = GET_BDA_EXT(flags) & BF_EXTRA_STACK;
      |                      ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/cbvga.c:140:5: note: in expansion of macro 'MASK_BDA_EXT'
  140 |     MASK_BDA_EXT(flags, BF_EMULATE_TEXT, emul ? BF_EMULATE_TEXT : 0);
      |     ^~~~~~~~~~~~
  Compile checking build/vgabios-virtio/vgasrc/bochsdisplay.o
  Compile checking build/vgabios-virtio/vgasrc/ramfb.o
  Compiling whole program build/vgabios-virtio/vgaccode16.raw.s
In file included from ./src/output.c:9,
                 from build/vgabios-virtio/vgaccode16.raw.s.tmp.c:1:
In function 'get_current_mode',
    inlined from 'vgafb_write_pixel' at ./vgasrc/vgafb.c:505:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_read_pixel' at ./vgasrc/vgafb.c:529:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_write_char' at ./vgasrc/vgafb.c:628:33,
    inlined from 'write_char.isra' at ./vgasrc/vgabios.c:161:5:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_clear_chars.constprop.isra' at ./vgasrc/vgafb.c:581:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_move_chars.isra' at ./vgasrc/vgafb.c:561:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'bda_save_restore',
    inlined from 'stdvga_save_restore' at ./vgasrc/stdvga.c:453:12,
    inlined from 'bochsvga_save_restore' at ./vgasrc/bochsvga.c:230:15:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:113:34: note: in definition of macro '__SET_FARVAR'
  113 |         typeof(var) __sfv_val = (val);          \
      |                                  ^~~
./vgasrc/vgabios.c:230:9: note: in expansion of macro 'SET_FARVAR'
  230 |         SET_FARVAR(seg, info->vbe_mode, GET_BDA_EXT(vbe_mode));
      |         ^~~~~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:230:41: note: in expansion of macro 'GET_BDA_EXT'
  230 |         SET_FARVAR(seg, info->vbe_mode, GET_BDA_EXT(vbe_mode));
      |                                         ^~~~~~~~~~~
./src/farptr.h:37:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   37 |     __asm__(prefix "movw %w1, %%" #SEG ":%0" : "=m"(var)        \
      |     ^~~~~~~
./src/farptr.h:73:13: note: in expansion of macro 'WRITE16_SEG'
   73 |             WRITE16_SEG(prefix, seg, var, (val));       \
      |             ^~~~~~~~~~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:240:9: note: in expansion of macro 'SET_BDA_EXT'
  240 |         SET_BDA_EXT(vbe_mode, vbe_mode);
      |         ^~~~~~~~~~~
./src/farptr.h:37:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   37 |     __asm__(prefix "movw %w1, %%" #SEG ":%0" : "=m"(var)        \
      |     ^~~~~~~
./src/farptr.h:73:13: note: in expansion of macro 'WRITE16_SEG'
   73 |             WRITE16_SEG(prefix, seg, var, (val));       \
      |             ^~~~~~~~~~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:242:9: note: in expansion of macro 'SET_BDA_EXT'
  242 |         SET_BDA_EXT(vgamode_offset, (u32)vmode_g);
      |         ^~~~~~~~~~~
./vgasrc/vgabios.c: In function 'vga_set_mode':
./vgasrc/vgabios.h:63:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |                                                             ^~
./src/farptr.h:37:53: note: in definition of macro 'WRITE16_SEG'
   37 |     __asm__(prefix "movw %w1, %%" #SEG ":%0" : "=m"(var)        \
      |                                                     ^~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:282:5: note: in expansion of macro 'SET_BDA_EXT'
  282 |     SET_BDA_EXT(vbe_mode, mode | (flags & MF_VBEFLAGS));
      |     ^~~~~~~~~~~
./vgasrc/vgabios.h:63:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |                                                             ^~
./src/farptr.h:37:53: note: in definition of macro 'WRITE16_SEG'
   37 |     __asm__(prefix "movw %w1, %%" #SEG ":%0" : "=m"(var)        \
      |                                                     ^~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:283:5: note: in expansion of macro 'SET_BDA_EXT'
  283 |     SET_BDA_EXT(vgamode_offset, (u32)vmode_g);
      |     ^~~~~~~~~~~
./vgasrc/vgabios.h:61:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |                                                             ^~
./src/farptr.h:113:34: note: in definition of macro '__SET_FARVAR'
  113 |         typeof(var) __sfv_val = (val);          \
      |                                  ^~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./src/farptr.h:58:9: note: in expansion of macro 'READ8_SEG'
   58 |         READ8_SEG(prefix, seg, __val, var);     \
      |         ^~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:23: note: in expansion of macro 'GET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |                       ^~~~~~~~~~~
./vgasrc/vgabios.c:288:9: note: in expansion of macro 'MASK_BDA_EXT'
  288 |         MASK_BDA_EXT(flags, BF_EXTRA_STACK
      |         ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |                                                             ^~
./src/farptr.h:34:53: note: in definition of macro 'WRITE8_SEG'
   34 |     __asm__(prefix "movb %b1, %%" #SEG ":%0" : "=m"(var)        \
      |                                                     ^~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./vgasrc/vgabios.c:288:9: note: in expansion of macro 'MASK_BDA_EXT'
  288 |         MASK_BDA_EXT(flags, BF_EXTRA_STACK
      |         ^~~~~~~~~~~~
./vgasrc/vbe.c: In function 'vbe_104f05':
./vgasrc/vgabios.h:61:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |                                                             ^~
./src/farptr.h:22:19: note: in definition of macro 'READ16_SEG'
   22 |             : "m"(var), "m"(__segment_ ## SEG))
      |                   ^~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vbe.c:257:9: note: in expansion of macro 'GET_BDA_EXT'
  257 |     if (GET_BDA_EXT(vbe_mode) & MF_LINEARFB) {
      |         ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vbe_104f05' at ./vgasrc/vbe.c:261:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'vbe_104f10',
    inlined from 'handle_104f' at ./vgasrc/vbe.c:458:16:
./src/farptr.h:18:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   18 |     __asm__(prefix "movb %%" #SEG ":%1, %b0" : "=Qi"(value)     \
      |     ^~~~~~~
./src/farptr.h:58:9: note: in expansion of macro 'READ8_SEG'
   58 |         READ8_SEG(prefix, seg, __val, var);     \
      |         ^~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vbe.c:395:20: note: in expansion of macro 'GET_BDA_EXT'
  395 |         regs->bh = GET_BDA_EXT(flags) & BF_PM_MASK;
      |                    ^~~~~~~~~~~
./src/farptr.h:18:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   18 |     __asm__(prefix "movb %%" #SEG ":%1, %b0" : "=Qi"(value)     \
      |     ^~~~~~~
./src/farptr.h:113:34: note: in definition of macro '__SET_FARVAR'
  113 |         typeof(var) __sfv_val = (val);          \
      |                                  ^~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./src/farptr.h:58:9: note: in expansion of macro 'READ8_SEG'
   58 |         READ8_SEG(prefix, seg, __val, var);     \
      |         ^~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:23: note: in expansion of macro 'GET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |                       ^~~~~~~~~~~
./vgasrc/vbe.c:392:9: note: in expansion of macro 'MASK_BDA_EXT'
  392 |         MASK_BDA_EXT(flags, BF_PM_MASK, regs->bh & BF_PM_MASK);
      |         ^~~~~~~~~~~~
./src/farptr.h:34:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   34 |     __asm__(prefix "movb %b1, %%" #SEG ":%0" : "=m"(var)        \
      |     ^~~~~~~
./src/farptr.h:71:13: note: in expansion of macro 'WRITE8_SEG'
   71 |             WRITE8_SEG(prefix, seg, var, (val));        \
      |             ^~~~~~~~~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./vgasrc/vbe.c:392:9: note: in expansion of macro 'MASK_BDA_EXT'
  392 |         MASK_BDA_EXT(flags, BF_PM_MASK, regs->bh & BF_PM_MASK);
      |         ^~~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vbe_104f08' at ./vgasrc/vbe.c:352:33,
    inlined from 'handle_104f' at ./vgasrc/vbe.c:456:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vbe_104f07' at ./vgasrc/vbe.c:316:33,
    inlined from 'handle_104f' at ./vgasrc/vbe.c:455:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vbe_104f06' at ./vgasrc/vbe.c:286:33,
    inlined from 'handle_104f' at ./vgasrc/vbe.c:454:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'vbe_104f03',
    inlined from 'handle_104f' at ./vgasrc/vbe.c:451:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vbe.c:227:16: note: in expansion of macro 'GET_BDA_EXT'
  227 |     regs->bx = GET_BDA_EXT(vbe_mode);
      |                ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_read_char' at ./vgasrc/vgafb.c:650:33,
    inlined from 'handle_1008' at ./vgasrc/vgabios.c:431:25,
    inlined from 'handle_10' at ./vgasrc/vgabios.c:1112:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'set_active_page' at ./vgasrc/vgabios.c:117:33,
    inlined from 'handle_1005' at ./vgasrc/vgabios.c:387:5,
    inlined from 'handle_10' at ./vgasrc/vgabios.c:1109:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
  Fixup VGA rom assembler
  Compiling to assembler build/vgabios-virtio/src/asm-offsets.s
  Generating offset file build/vgabios-virtio/asm-offsets.h
  Compiling (16bit) build/vgabios-virtio/vgaentry.o
  Precompiling build/vgabios-virtio/vgasrc/vgalayout.lds
  Linking build/vgabios-virtio/vgarom.o
Version: 1.16.2-debian-1.16.2-1
ld: warning: build/vgabios-virtio/vgaentry.o: missing .note.GNU-stack section implies executable stack
ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
ld: warning: build/vgabios-virtio/vgarom.o has a LOAD segment with RWX permissions
  Extracting binary build/vgabios-virtio/vgabios.bin.raw
  Finalizing rom build/vgabios-virtio/vgabios.bin
make[1]: Leaving directory '/build/seabios-1.16.2'
rm -f build/vgabios-virtio.bin
ln build/vgabios-virtio/vgabios.bin build/vgabios-virtio.bin

=== Building vgabios-vmware.bin ===

set -e; if [ ! -e build/vgabios-vmware/.config.old ]; then rm -rf build/vgabios-vmware; mkdir -p build/vgabios-vmware; for x in BUILD_VGABIOS=y VGA_BOCHS=y VGA_PCI=y OVERRIDE_PCI_ID=y VGA_VID=0x15ad VGA_DID=0x0405; do echo CONFIG_$x; done > build/vgabios-vmware/.config; /usr/bin/make PYTHON="python3 -B" KCONFIG_CONFIG=/build/seabios-1.16.2/build/vgabios-vmware/.config OUT=build/vgabios-vmware/ oldnoconfig; fi
make[1]: Entering directory '/build/seabios-1.16.2'
scripts/kconfig/conf --olddefconfig /build/seabios-1.16.2/src/Kconfig
#
# configuration written to /build/seabios-1.16.2/build/vgabios-vmware/.config
#
make[1]: Leaving directory '/build/seabios-1.16.2'
/usr/bin/make PYTHON="python3 -B" $(cat build/env) KCONFIG_CONFIG=/build/seabios-1.16.2/build/vgabios-vmware/.config OUT=build/vgabios-vmware/ build/vgabios-vmware/vgabios.bin
make[1]: Entering directory '/build/seabios-1.16.2'
  Build Kconfig config file
  Compile checking build/vgabios-vmware/src/output.o
In file included from src/output.c:9:
src/output.c: In function 'screenc':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
src/output.c:77:25: note: in expansion of macro 'GET_IVT'
   77 |     if (!MODESEGMENT && GET_IVT(0x10).segoff == FUNC16(entry_10).segoff)
      |                         ^~~~~~~
  Compile checking build/vgabios-vmware/src/string.o
  Compile checking build/vgabios-vmware/src/hw/pci.o
  Compile checking build/vgabios-vmware/src/hw/serialio.o
  Compile checking build/vgabios-vmware/vgasrc/vgainit.o
In file included from vgasrc/vgainit.c:8:
In function 'set_equipment_flags',
    inlined from 'init_bios_area' at vgasrc/vgainit.c:141:5,
    inlined from 'vga_post' at vgasrc/vgainit.c:182:5:
src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
In file included from src/biosvar.h:10:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'init_bios_area',
    inlined from 'vga_post' at vgasrc/vgainit.c:182:5:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgainit.c:144:5: note: in expansion of macro 'SET_BDA'
  144 |     SET_BDA(modeset_ctl, 0x51);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgainit.c:146:5: note: in expansion of macro 'SET_BDA'
  146 |     SET_BDA(dcc_index, CONFIG_VGA_STDVGA_PORTS ? 0x08 : 0xff);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgainit.c:149:5: note: in expansion of macro 'SET_BDA'
  149 |     SET_BDA(video_msr, 0x00); // Unavailable on vanilla vga, but...
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgainit.c:150:5: note: in expansion of macro 'SET_BDA'
  150 |     SET_BDA(video_pal, 0x00); // Unavailable on vanilla vga, but...
      |     ^~~~~~~
vgasrc/vgainit.c: In function 'vga_post':
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgainit.c:188:5: note: in expansion of macro 'SET_IVT'
  188 |     SET_IVT(0x10, SEGOFF(get_global_seg(), (u32)entry_10));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgainit.c:188:5: note: in expansion of macro 'SET_IVT'
  188 |     SET_IVT(0x10, SEGOFF(get_global_seg(), (u32)entry_10));
      |     ^~~~~~~
In function 'allocate_extra_stack',
    inlined from 'vga_post' at vgasrc/vgainit.c:190:5:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgainit.c:97:5: note: in expansion of macro 'SET_IVT'
   97 |     SET_IVT(0x10, SEGOFF(get_global_seg(), (u32)entry_10_extrastack));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgainit.c:97:5: note: in expansion of macro 'SET_IVT'
   97 |     SET_IVT(0x10, SEGOFF(get_global_seg(), (u32)entry_10_extrastack));
      |     ^~~~~~~
  Compile checking build/vgabios-vmware/vgasrc/vgabios.o
In file included from src/biosvar.h:10,
                 from vgasrc/vgabios.c:8:
vgasrc/vgabios.c: In function 'set_cursor_pos':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:91:20: note: in expansion of macro 'GET_BDA'
   91 |     if (cp.page == GET_BDA(video_page)) {
      |                    ^~~~~~~
vgasrc/vgabios.c: In function 'verify_scroll':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:395:18: note: in expansion of macro 'GET_BDA'
  395 |     u16 nbrows = GET_BDA(video_rows) + 1;
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:398:18: note: in expansion of macro 'GET_BDA'
  398 |     u16 nbcols = GET_BDA(video_cols);
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:410:39: note: in expansion of macro 'GET_BDA'
  410 |     struct cursorpos win = {ulx, uly, GET_BDA(video_page)};
      |                                       ^~~~~~~
vgasrc/vgabios.c: In function 'write_char':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:164:19: note: in expansion of macro 'GET_BDA'
  164 |     if (pcp->x == GET_BDA(video_cols)) {
      |                   ^~~~~~~
vgasrc/vgabios.c: In function 'write_teletype':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:195:18: note: in expansion of macro 'GET_BDA'
  195 |     u16 nbrows = GET_BDA(video_rows);
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:200:37: note: in expansion of macro 'GET_BDA'
  200 |         struct cursorpos winsize = {GET_BDA(video_cols), nbrows+1};
      |                                     ^~~~~~~
vgasrc/vgabios.c: In function 'get_cursor_shape':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:59:23: note: in expansion of macro 'GET_BDA'
   59 |     u16 cursor_type = GET_BDA(cursor_type);
      |                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:60:26: note: in expansion of macro 'GET_BDA'
   60 |     u8 emulate_cursor = (GET_BDA(video_ctl) & 1) == 0;
      |                          ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:65:19: note: in expansion of macro 'GET_BDA'
   65 |     u16 cheight = GET_BDA(char_height);
      |                   ^~~~~~~
vgasrc/vgabios.c: In function 'set_cursor_shape':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:79:5: note: in expansion of macro 'SET_BDA'
   79 |     SET_BDA(cursor_type, cursor_type);
      |     ^~~~~~~
vgasrc/vgabios.c: In function 'set_scan_lines':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:140:5: note: in expansion of macro 'SET_BDA'
  140 |     SET_BDA(char_height, lines);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:143:5: note: in expansion of macro 'SET_BDA'
  143 |     SET_BDA(video_rows, rows - 1);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:144:16: note: in expansion of macro 'GET_BDA'
  144 |     u16 cols = GET_BDA(video_cols);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:145:5: note: in expansion of macro 'SET_BDA'
  145 |     SET_BDA(video_pagesize, calc_page_size(MM_TEXT, cols, rows));
      |     ^~~~~~~
vgasrc/vgabios.c: In function 'handle_100e.isra':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:510:42: note: in expansion of macro 'GET_BDA'
  510 |     struct cursorpos cp = get_cursor_pos(GET_BDA(video_page));
      |                                          ^~~~~~~
vgasrc/vgabios.c: In function 'bda_save_restore':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |      ^
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:230:41: note: in expansion of macro 'GET_BDA_EXT'
  230 |         SET_FARVAR(seg, info->vbe_mode, GET_BDA_EXT(vbe_mode));
      |                                         ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |      ^
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgabios.c:231:38: note: in expansion of macro 'GET_IVT'
  231 |         SET_FARVAR(seg, info->font0, GET_IVT(0x1f));
      |                                      ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |      ^
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgabios.c:232:38: note: in expansion of macro 'GET_IVT'
  232 |         SET_FARVAR(seg, info->font1, GET_IVT(0x43));
      |                                      ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:240:9: note: in expansion of macro 'SET_BDA_EXT'
  240 |         SET_BDA_EXT(vbe_mode, vbe_mode);
      |         ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:242:9: note: in expansion of macro 'SET_BDA_EXT'
  242 |         SET_BDA_EXT(vgamode_offset, (u32)vmode_g);
      |         ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:243:9: note: in expansion of macro 'SET_IVT'
  243 |         SET_IVT(0x1f, GET_FARVAR(seg, info->font0));
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:244:9: note: in expansion of macro 'SET_IVT'
  244 |         SET_IVT(0x43, GET_FARVAR(seg, info->font1));
      |         ^~~~~~~
vgasrc/vgabios.c: In function 'get_current_mode':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
vgasrc/vgabios.c: In function 'vga_set_mode':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:281:9: note: in expansion of macro 'SET_BDA'
  281 |         SET_BDA(video_mode, 0xff);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:279:9: note: in expansion of macro 'SET_BDA'
  279 |         SET_BDA(video_mode, mode);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:282:5: note: in expansion of macro 'SET_BDA_EXT'
  282 |     SET_BDA_EXT(vbe_mode, mode | (flags & MF_VBEFLAGS));
      |     ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:283:5: note: in expansion of macro 'SET_BDA_EXT'
  283 |     SET_BDA_EXT(vgamode_offset, (u32)vmode_g);
      |     ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:23: note: in expansion of macro 'GET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |                       ^~~~~~~~~~~
vgasrc/vgabios.c:288:9: note: in expansion of macro 'MASK_BDA_EXT'
  288 |         MASK_BDA_EXT(flags, BF_EXTRA_STACK
      |         ^~~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/vgabios.c:288:9: note: in expansion of macro 'MASK_BDA_EXT'
  288 |         MASK_BDA_EXT(flags, BF_EXTRA_STACK
      |         ^~~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:296:9: note: in expansion of macro 'SET_BDA'
  296 |         SET_BDA(video_cols, width / cwidth);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:297:9: note: in expansion of macro 'SET_BDA'
  297 |         SET_BDA(video_rows, (height / cheight) - 1);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:298:9: note: in expansion of macro 'SET_BDA'
  298 |         SET_BDA(cursor_type, vga_emulate_text() ? 0x0607 : 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:291:9: note: in expansion of macro 'SET_BDA'
  291 |         SET_BDA(video_cols, width);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:292:9: note: in expansion of macro 'SET_BDA'
  292 |         SET_BDA(video_rows, height-1);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:293:9: note: in expansion of macro 'SET_BDA'
  293 |         SET_BDA(cursor_type, 0x0607);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:300:5: note: in expansion of macro 'SET_BDA'
  300 |     SET_BDA(video_pagesize, calc_page_size(memmodel, width, height));
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:301:5: note: in expansion of macro 'SET_BDA'
  301 |     SET_BDA(crtc_address, CONFIG_VGA_STDVGA_PORTS ? stdvga_get_crtc() : 0);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:302:5: note: in expansion of macro 'SET_BDA'
  302 |     SET_BDA(char_height, cheight);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:303:5: note: in expansion of macro 'SET_BDA'
  303 |     SET_BDA(video_ctl, 0x60 | (flags & MF_NOCLEARMEM ? 0x80 : 0x00));
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:304:5: note: in expansion of macro 'SET_BDA'
  304 |     SET_BDA(video_switches, 0xF9);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.c:305:5: note: in expansion of macro 'SET_BDA'
  305 |     SET_BDA(modeset_ctl, GET_BDA(modeset_ctl) & 0x7f);
      |     ^~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:305:26: note: in expansion of macro 'GET_BDA'
  305 |     SET_BDA(modeset_ctl, GET_BDA(modeset_ctl) & 0x7f);
      |                          ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:305:5: note: in expansion of macro 'SET_BDA'
  305 |     SET_BDA(modeset_ctl, GET_BDA(modeset_ctl) & 0x7f);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:309:5: note: in expansion of macro 'SET_BDA'
  309 |     SET_BDA(video_pagestart, 0x0000);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:310:5: note: in expansion of macro 'SET_BDA'
  310 |     SET_BDA(video_page, 0x00);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:313:5: note: in expansion of macro 'SET_IVT'
  313 |     SET_IVT(0x1f, SEGOFF(get_global_seg(), (u32)&vgafont8[128 * 8]));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:313:5: note: in expansion of macro 'SET_IVT'
  313 |     SET_IVT(0x1f, SEGOFF(get_global_seg(), (u32)&vgafont8[128 * 8]));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:323:9: note: in expansion of macro 'SET_IVT'
  323 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont16));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:323:9: note: in expansion of macro 'SET_IVT'
  323 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont16));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:320:9: note: in expansion of macro 'SET_IVT'
  320 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont14));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:320:9: note: in expansion of macro 'SET_IVT'
  320 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont14));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:317:9: note: in expansion of macro 'SET_IVT'
  317 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont8));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:317:9: note: in expansion of macro 'SET_IVT'
  317 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont8));
      |         ^~~~~~~
vgasrc/vgabios.c: In function 'load_gfx_font':
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:735:5: note: in expansion of macro 'SET_IVT'
  735 |     SET_IVT(0x43, SEGOFF(seg, off));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:735:5: note: in expansion of macro 'SET_IVT'
  735 |     SET_IVT(0x43, SEGOFF(seg, off));
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:751:5: note: in expansion of macro 'SET_BDA'
  751 |     SET_BDA(video_rows, rows - 1);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:752:5: note: in expansion of macro 'SET_BDA'
  752 |     SET_BDA(char_height, height);
      |     ^~~~~~~
In function 'handle_101b',
    inlined from 'handle_10' at vgasrc/vgabios.c:1125:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |      ^
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:1062:38: note: in expansion of macro 'GET_BDA'
 1062 |     SET_FARVAR(seg, info->dcc_index, GET_BDA(dcc_index));
      |                                      ^~~~~~~
In function 'handle_101a01',
    inlined from 'handle_101a' at vgasrc/vgabios.c:1032:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1124:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:1016:5: note: in expansion of macro 'SET_BDA'
 1016 |     SET_BDA(dcc_index, regs->bl);
      |     ^~~~~~~
In function 'handle_101a00',
    inlined from 'handle_101a' at vgasrc/vgabios.c:1031:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1124:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:1009:16: note: in expansion of macro 'GET_BDA'
 1009 |     regs->bx = GET_BDA(dcc_index);
      |                ^~~~~~~
In function 'handle_101234',
    inlined from 'handle_1012' at vgasrc/vgabios.c:973:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.c:935:5: note: in expansion of macro 'SET_BDA'
  935 |     SET_BDA(video_ctl, (GET_BDA(video_ctl) & ~0x01) | (regs->al & 0x01));
      |     ^~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:935:25: note: in expansion of macro 'GET_BDA'
  935 |     SET_BDA(video_ctl, (GET_BDA(video_ctl) & ~0x01) | (regs->al & 0x01));
      |                         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:935:5: note: in expansion of macro 'SET_BDA'
  935 |     SET_BDA(video_ctl, (GET_BDA(video_ctl) & ~0x01) | (regs->al & 0x01));
      |     ^~~~~~~
In function 'handle_101233',
    inlined from 'handle_1012' at vgasrc/vgabios.c:972:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:927:13: note: in expansion of macro 'GET_BDA'
  927 |     u8 v2 = GET_BDA(modeset_ctl) & ~0x02;
      |             ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:928:5: note: in expansion of macro 'SET_BDA'
  928 |     SET_BDA(modeset_ctl, v | v2);
      |     ^~~~~~~
In function 'handle_101231',
    inlined from 'handle_1012' at vgasrc/vgabios.c:970:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:909:15: note: in expansion of macro 'GET_BDA'
  909 |     u8 mctl = GET_BDA(video_ctl) & ~0x08;
      |               ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:910:5: note: in expansion of macro 'SET_BDA'
  910 |     SET_BDA(video_ctl, mctl | v);
      |     ^~~~~~~
In function 'handle_101230',
    inlined from 'handle_1012' at vgasrc/vgabios.c:969:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
vgasrc/vgabios.c:878:8: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  878 |     u8 mctl = GET_BDA(modeset_ctl);
      |        ^~~~
vgasrc/vgabios.c:879:8: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  879 |     u8 vswt = GET_BDA(video_switches);
      |        ^~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:900:5: note: in expansion of macro 'SET_BDA'
  900 |     SET_BDA(modeset_ctl, mctl);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:901:5: note: in expansion of macro 'SET_BDA'
  901 |     SET_BDA(video_switches, vswt);
      |     ^~~~~~~
In function 'handle_101210',
    inlined from 'handle_1012' at vgasrc/vgabios.c:968:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
vgasrc/vgabios.c:867:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  867 |     u16 crtc_addr = GET_BDA(crtc_address);
      |         ^~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:872:16: note: in expansion of macro 'GET_BDA'
  872 |     regs->cx = GET_BDA(video_switches) & 0x0f;
      |                ^~~~~~~
In function 'handle_101130',
    inlined from 'handle_1011' at vgasrc/vgabios.c:853:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1121:16:
vgasrc/vgabios.c:790:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  790 |         struct segoff_s so = GET_IVT(0x43);
      |                         ^~
vgasrc/vgabios.c:790:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
vgasrc/vgabios.c:784:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  784 |         struct segoff_s so = GET_IVT(0x1f);
      |                         ^~
vgasrc/vgabios.c:784:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:824:16: note: in expansion of macro 'GET_BDA'
  824 |     regs->cx = GET_BDA(char_height) & 0xff;
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:827:16: note: in expansion of macro 'GET_BDA'
  827 |     regs->dl = GET_BDA(video_rows);
      |                ^~~~~~~
In function 'handle_101120',
    inlined from 'handle_1011' at vgasrc/vgabios.c:854:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1121:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:727:5: note: in expansion of macro 'SET_IVT'
  727 |     SET_IVT(0x1f, SEGOFF(regs->es, regs->bp));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:727:5: note: in expansion of macro 'SET_IVT'
  727 |     SET_IVT(0x1f, SEGOFF(regs->es, regs->bp));
      |     ^~~~~~~
In function 'handle_100f',
    inlined from 'handle_10' at vgasrc/vgabios.c:1119:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:518:16: note: in expansion of macro 'GET_BDA'
  518 |     regs->bh = GET_BDA(video_page);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:519:16: note: in expansion of macro 'GET_BDA'
  519 |     regs->al = GET_BDA(video_mode) | (GET_BDA(video_ctl) & 0x80);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:519:39: note: in expansion of macro 'GET_BDA'
  519 |     regs->al = GET_BDA(video_mode) | (GET_BDA(video_ctl) & 0x80);
      |                                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:520:16: note: in expansion of macro 'GET_BDA'
  520 |     regs->ah = GET_BDA(video_cols);
      |                ^~~~~~~
In function 'get_current_mode',
    inlined from 'set_active_page' at vgasrc/vgabios.c:117:33,
    inlined from 'handle_1005' at vgasrc/vgabios.c:387:5,
    inlined from 'handle_10' at vgasrc/vgabios.c:1109:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'set_active_page',
    inlined from 'handle_1005' at vgasrc/vgabios.c:387:5,
    inlined from 'handle_10' at vgasrc/vgabios.c:1109:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:127:5: note: in expansion of macro 'SET_BDA'
  127 |     SET_BDA(video_pagestart, address);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:128:5: note: in expansion of macro 'SET_BDA'
  128 |     SET_BDA(video_page, page);
      |     ^~~~~~~
In function 'handle_1003',
    inlined from 'handle_10' at vgasrc/vgabios.c:1107:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:370:16: note: in expansion of macro 'GET_BDA'
  370 |     regs->cx = GET_BDA(cursor_type);
      |                ^~~~~~~
In function 'handle_1000',
    inlined from 'handle_10' at vgasrc/vgabios.c:1104:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:339:30: note: in expansion of macro 'GET_BDA'
  339 |     int flags = MF_LEGACY | (GET_BDA(modeset_ctl) & (MF_NOPALETTE|MF_GRAYSUM));
      |                              ^~~~~~~
  Compile checking build/vgabios-vmware/vgasrc/vgafb.o
In file included from src/biosvar.h:10,
                 from vgasrc/vgafb.c:8:
vgasrc/vgafb.c: In function 'get_font_data':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:387:23: note: in expansion of macro 'GET_BDA'
  387 |     int char_height = GET_BDA(char_height);
      |                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgafb.c:390:16: note: in expansion of macro 'GET_IVT'
  390 |         font = GET_IVT(0x1f);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgafb.c:390:16: note: in expansion of macro 'GET_IVT'
  390 |         font = GET_IVT(0x1f);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgafb.c:393:16: note: in expansion of macro 'GET_IVT'
  393 |         font = GET_IVT(0x43);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgafb.c:393:16: note: in expansion of macro 'GET_IVT'
  393 |         font = GET_IVT(0x43);
      |                ^~~~~~~
vgasrc/vgafb.c: In function 'text_address':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:552:18: note: in expansion of macro 'GET_BDA'
  552 |     int stride = GET_BDA(video_cols) * 2;
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:553:22: note: in expansion of macro 'GET_BDA'
  553 |     u32 pageoffset = GET_BDA(video_pagesize) * cp.page;
      |                      ^~~~~~~
vgasrc/vgafb.c: In function 'vgafb_clear_chars.isra':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:590:18: note: in expansion of macro 'GET_BDA'
  590 |     int stride = GET_BDA(video_cols) * 2;
      |                  ^~~~~~~
In function 'gfx_clear_chars',
    inlined from 'vgafb_clear_chars.isra' at vgasrc/vgafb.c:586:9:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:373:19: note: in expansion of macro 'GET_BDA'
  373 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
vgasrc/vgafb.c: In function 'vgafb_move_chars.isra':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:570:18: note: in expansion of macro 'GET_BDA'
  570 |     int stride = GET_BDA(video_cols) * 2;
      |                  ^~~~~~~
In function 'gfx_move_chars',
    inlined from 'vgafb_move_chars.isra' at vgasrc/vgafb.c:566:9:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:356:19: note: in expansion of macro 'GET_BDA'
  356 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
In function 'gfx_write_char',
    inlined from 'vgafb_write_char' at vgasrc/vgafb.c:633:9:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:404:17: note: in expansion of macro 'GET_BDA'
  404 |     if (cp.x >= GET_BDA(video_cols))
      |                 ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:411:19: note: in expansion of macro 'GET_BDA'
  411 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
In function 'gfx_read_char',
    inlined from 'vgafb_read_char' at vgasrc/vgafb.c:655:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:456:19: note: in expansion of macro 'GET_BDA'
  456 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:457:17: note: in expansion of macro 'GET_BDA'
  457 |     if (cp.x >= GET_BDA(video_cols) || cheight > ARRAY_SIZE(lines))
      |                 ^~~~~~~
  Compile checking build/vgabios-vmware/vgasrc/swcursor.o
  Compile checking build/vgabios-vmware/vgasrc/vgafonts.o
  Compile checking build/vgabios-vmware/vgasrc/vbe.o
In file included from src/biosvar.h:10,
                 from vgasrc/vbe.c:9:
vgasrc/vbe.c: In function 'vbe_104f05':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vbe.c:257:9: note: in expansion of macro 'GET_BDA_EXT'
  257 |     if (GET_BDA_EXT(vbe_mode) & MF_LINEARFB) {
      |         ^~~~~~~~~~~
In function 'vbe_104f10',
    inlined from 'handle_104f' at vgasrc/vbe.c:458:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vbe.c:395:20: note: in expansion of macro 'GET_BDA_EXT'
  395 |         regs->bh = GET_BDA_EXT(flags) & BF_PM_MASK;
      |                    ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:23: note: in expansion of macro 'GET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |                       ^~~~~~~~~~~
vgasrc/vbe.c:392:9: note: in expansion of macro 'MASK_BDA_EXT'
  392 |         MASK_BDA_EXT(flags, BF_PM_MASK, regs->bh & BF_PM_MASK);
      |         ^~~~~~~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/vbe.c:392:9: note: in expansion of macro 'MASK_BDA_EXT'
  392 |         MASK_BDA_EXT(flags, BF_PM_MASK, regs->bh & BF_PM_MASK);
      |         ^~~~~~~~~~~~
In function 'vbe_104f03',
    inlined from 'handle_104f' at vgasrc/vbe.c:451:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vbe.c:227:16: note: in expansion of macro 'GET_BDA_EXT'
  227 |     regs->bx = GET_BDA_EXT(vbe_mode);
      |                ^~~~~~~~~~~
  Compile checking build/vgabios-vmware/vgasrc/stdvga.o
  Compile checking build/vgabios-vmware/vgasrc/stdvgamodes.o
In file included from src/biosvar.h:10,
                 from vgasrc/stdvgamodes.c:8:
vgasrc/stdvgamodes.c: In function 'stdvga_build_video_param':
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/stdvgamodes.c:360:5: note: in expansion of macro 'SET_BDA'
  360 |     SET_BDA(video_savetable
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/stdvgamodes.c:360:5: note: in expansion of macro 'SET_BDA'
  360 |     SET_BDA(video_savetable
      |     ^~~~~~~
  Compile checking build/vgabios-vmware/vgasrc/stdvgaio.o
  Compile checking build/vgabios-vmware/vgasrc/clext.o
  Compile checking build/vgabios-vmware/vgasrc/svgamodes.o
  Compile checking build/vgabios-vmware/vgasrc/atiext.o
  Compile checking build/vgabios-vmware/vgasrc/bochsvga.o
  Compile checking build/vgabios-vmware/vgasrc/geodevga.o
  Compile checking build/vgabios-vmware/src/fw/coreboot.o
  Compile checking build/vgabios-vmware/vgasrc/cbvga.o
In file included from src/biosvar.h:10,
                 from vgasrc/cbvga.c:8:
vgasrc/cbvga.c: In function 'cbvga_set_mode':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/cbvga.c:139:22: note: in expansion of macro 'GET_BDA_EXT'
  139 |     u8 extra_stack = GET_BDA_EXT(flags) & BF_EXTRA_STACK;
      |                      ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/cbvga.c:139:22: note: in expansion of macro 'GET_BDA_EXT'
  139 |     u8 extra_stack = GET_BDA_EXT(flags) & BF_EXTRA_STACK;
      |                      ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/cbvga.c:140:5: note: in expansion of macro 'MASK_BDA_EXT'
  140 |     MASK_BDA_EXT(flags, BF_EMULATE_TEXT, emul ? BF_EMULATE_TEXT : 0);
      |     ^~~~~~~~~~~~
  Compile checking build/vgabios-vmware/vgasrc/bochsdisplay.o
  Compile checking build/vgabios-vmware/vgasrc/ramfb.o
  Compiling whole program build/vgabios-vmware/vgaccode16.raw.s
In file included from ./src/output.c:9,
                 from build/vgabios-vmware/vgaccode16.raw.s.tmp.c:1:
In function 'get_current_mode',
    inlined from 'vgafb_write_pixel' at ./vgasrc/vgafb.c:505:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_read_pixel' at ./vgasrc/vgafb.c:529:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_write_char' at ./vgasrc/vgafb.c:628:33,
    inlined from 'write_char.isra' at ./vgasrc/vgabios.c:161:5:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_clear_chars.constprop.isra' at ./vgasrc/vgafb.c:581:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_move_chars.isra' at ./vgasrc/vgafb.c:561:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'bda_save_restore',
    inlined from 'stdvga_save_restore' at ./vgasrc/stdvga.c:453:12,
    inlined from 'bochsvga_save_restore' at ./vgasrc/bochsvga.c:230:15:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:113:34: note: in definition of macro '__SET_FARVAR'
  113 |         typeof(var) __sfv_val = (val);          \
      |                                  ^~~
./vgasrc/vgabios.c:230:9: note: in expansion of macro 'SET_FARVAR'
  230 |         SET_FARVAR(seg, info->vbe_mode, GET_BDA_EXT(vbe_mode));
      |         ^~~~~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:230:41: note: in expansion of macro 'GET_BDA_EXT'
  230 |         SET_FARVAR(seg, info->vbe_mode, GET_BDA_EXT(vbe_mode));
      |                                         ^~~~~~~~~~~
./src/farptr.h:37:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   37 |     __asm__(prefix "movw %w1, %%" #SEG ":%0" : "=m"(var)        \
      |     ^~~~~~~
./src/farptr.h:73:13: note: in expansion of macro 'WRITE16_SEG'
   73 |             WRITE16_SEG(prefix, seg, var, (val));       \
      |             ^~~~~~~~~~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:240:9: note: in expansion of macro 'SET_BDA_EXT'
  240 |         SET_BDA_EXT(vbe_mode, vbe_mode);
      |         ^~~~~~~~~~~
./src/farptr.h:37:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   37 |     __asm__(prefix "movw %w1, %%" #SEG ":%0" : "=m"(var)        \
      |     ^~~~~~~
./src/farptr.h:73:13: note: in expansion of macro 'WRITE16_SEG'
   73 |             WRITE16_SEG(prefix, seg, var, (val));       \
      |             ^~~~~~~~~~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:242:9: note: in expansion of macro 'SET_BDA_EXT'
  242 |         SET_BDA_EXT(vgamode_offset, (u32)vmode_g);
      |         ^~~~~~~~~~~
./vgasrc/vgabios.c: In function 'vga_set_mode':
./vgasrc/vgabios.h:63:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |                                                             ^~
./src/farptr.h:37:53: note: in definition of macro 'WRITE16_SEG'
   37 |     __asm__(prefix "movw %w1, %%" #SEG ":%0" : "=m"(var)        \
      |                                                     ^~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:282:5: note: in expansion of macro 'SET_BDA_EXT'
  282 |     SET_BDA_EXT(vbe_mode, mode | (flags & MF_VBEFLAGS));
      |     ^~~~~~~~~~~
./vgasrc/vgabios.h:63:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |                                                             ^~
./src/farptr.h:37:53: note: in definition of macro 'WRITE16_SEG'
   37 |     __asm__(prefix "movw %w1, %%" #SEG ":%0" : "=m"(var)        \
      |                                                     ^~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:283:5: note: in expansion of macro 'SET_BDA_EXT'
  283 |     SET_BDA_EXT(vgamode_offset, (u32)vmode_g);
      |     ^~~~~~~~~~~
./vgasrc/vgabios.h:61:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |                                                             ^~
./src/farptr.h:113:34: note: in definition of macro '__SET_FARVAR'
  113 |         typeof(var) __sfv_val = (val);          \
      |                                  ^~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./src/farptr.h:58:9: note: in expansion of macro 'READ8_SEG'
   58 |         READ8_SEG(prefix, seg, __val, var);     \
      |         ^~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:23: note: in expansion of macro 'GET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |                       ^~~~~~~~~~~
./vgasrc/vgabios.c:288:9: note: in expansion of macro 'MASK_BDA_EXT'
  288 |         MASK_BDA_EXT(flags, BF_EXTRA_STACK
      |         ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |                                                             ^~
./src/farptr.h:34:53: note: in definition of macro 'WRITE8_SEG'
   34 |     __asm__(prefix "movb %b1, %%" #SEG ":%0" : "=m"(var)        \
      |                                                     ^~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./vgasrc/vgabios.c:288:9: note: in expansion of macro 'MASK_BDA_EXT'
  288 |         MASK_BDA_EXT(flags, BF_EXTRA_STACK
      |         ^~~~~~~~~~~~
./vgasrc/vbe.c: In function 'vbe_104f05':
./vgasrc/vgabios.h:61:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |                                                             ^~
./src/farptr.h:22:19: note: in definition of macro 'READ16_SEG'
   22 |             : "m"(var), "m"(__segment_ ## SEG))
      |                   ^~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vbe.c:257:9: note: in expansion of macro 'GET_BDA_EXT'
  257 |     if (GET_BDA_EXT(vbe_mode) & MF_LINEARFB) {
      |         ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vbe_104f05' at ./vgasrc/vbe.c:261:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'vbe_104f10',
    inlined from 'handle_104f' at ./vgasrc/vbe.c:458:16:
./src/farptr.h:18:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   18 |     __asm__(prefix "movb %%" #SEG ":%1, %b0" : "=Qi"(value)     \
      |     ^~~~~~~
./src/farptr.h:58:9: note: in expansion of macro 'READ8_SEG'
   58 |         READ8_SEG(prefix, seg, __val, var);     \
      |         ^~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vbe.c:395:20: note: in expansion of macro 'GET_BDA_EXT'
  395 |         regs->bh = GET_BDA_EXT(flags) & BF_PM_MASK;
      |                    ^~~~~~~~~~~
./src/farptr.h:18:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   18 |     __asm__(prefix "movb %%" #SEG ":%1, %b0" : "=Qi"(value)     \
      |     ^~~~~~~
./src/farptr.h:113:34: note: in definition of macro '__SET_FARVAR'
  113 |         typeof(var) __sfv_val = (val);          \
      |                                  ^~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./src/farptr.h:58:9: note: in expansion of macro 'READ8_SEG'
   58 |         READ8_SEG(prefix, seg, __val, var);     \
      |         ^~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:23: note: in expansion of macro 'GET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |                       ^~~~~~~~~~~
./vgasrc/vbe.c:392:9: note: in expansion of macro 'MASK_BDA_EXT'
  392 |         MASK_BDA_EXT(flags, BF_PM_MASK, regs->bh & BF_PM_MASK);
      |         ^~~~~~~~~~~~
./src/farptr.h:34:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   34 |     __asm__(prefix "movb %b1, %%" #SEG ":%0" : "=m"(var)        \
      |     ^~~~~~~
./src/farptr.h:71:13: note: in expansion of macro 'WRITE8_SEG'
   71 |             WRITE8_SEG(prefix, seg, var, (val));        \
      |             ^~~~~~~~~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./vgasrc/vbe.c:392:9: note: in expansion of macro 'MASK_BDA_EXT'
  392 |         MASK_BDA_EXT(flags, BF_PM_MASK, regs->bh & BF_PM_MASK);
      |         ^~~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vbe_104f08' at ./vgasrc/vbe.c:352:33,
    inlined from 'handle_104f' at ./vgasrc/vbe.c:456:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vbe_104f07' at ./vgasrc/vbe.c:316:33,
    inlined from 'handle_104f' at ./vgasrc/vbe.c:455:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vbe_104f06' at ./vgasrc/vbe.c:286:33,
    inlined from 'handle_104f' at ./vgasrc/vbe.c:454:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'vbe_104f03',
    inlined from 'handle_104f' at ./vgasrc/vbe.c:451:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vbe.c:227:16: note: in expansion of macro 'GET_BDA_EXT'
  227 |     regs->bx = GET_BDA_EXT(vbe_mode);
      |                ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_read_char' at ./vgasrc/vgafb.c:650:33,
    inlined from 'handle_1008' at ./vgasrc/vgabios.c:431:25,
    inlined from 'handle_10' at ./vgasrc/vgabios.c:1112:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'set_active_page' at ./vgasrc/vgabios.c:117:33,
    inlined from 'handle_1005' at ./vgasrc/vgabios.c:387:5,
    inlined from 'handle_10' at ./vgasrc/vgabios.c:1109:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
  Fixup VGA rom assembler
  Compiling to assembler build/vgabios-vmware/src/asm-offsets.s
  Generating offset file build/vgabios-vmware/asm-offsets.h
  Compiling (16bit) build/vgabios-vmware/vgaentry.o
  Precompiling build/vgabios-vmware/vgasrc/vgalayout.lds
  Linking build/vgabios-vmware/vgarom.o
Version: 1.16.2-debian-1.16.2-1
ld: warning: build/vgabios-vmware/vgaentry.o: missing .note.GNU-stack section implies executable stack
ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
ld: warning: build/vgabios-vmware/vgarom.o has a LOAD segment with RWX permissions
  Extracting binary build/vgabios-vmware/vgabios.bin.raw
  Finalizing rom build/vgabios-vmware/vgabios.bin
make[1]: Leaving directory '/build/seabios-1.16.2'
rm -f build/vgabios-vmware.bin
ln build/vgabios-vmware/vgabios.bin build/vgabios-vmware.bin

=== Building vgabios-qxl.bin ===

set -e; if [ ! -e build/vgabios-qxl/.config.old ]; then rm -rf build/vgabios-qxl; mkdir -p build/vgabios-qxl; for x in BUILD_VGABIOS=y VGA_BOCHS=y VGA_PCI=y OVERRIDE_PCI_ID=y VGA_VID=0x1b36 VGA_DID=0x0100; do echo CONFIG_$x; done > build/vgabios-qxl/.config; /usr/bin/make PYTHON="python3 -B" KCONFIG_CONFIG=/build/seabios-1.16.2/build/vgabios-qxl/.config OUT=build/vgabios-qxl/ oldnoconfig; fi
make[1]: Entering directory '/build/seabios-1.16.2'
scripts/kconfig/conf --olddefconfig /build/seabios-1.16.2/src/Kconfig
#
# configuration written to /build/seabios-1.16.2/build/vgabios-qxl/.config
#
make[1]: Leaving directory '/build/seabios-1.16.2'
/usr/bin/make PYTHON="python3 -B" $(cat build/env) KCONFIG_CONFIG=/build/seabios-1.16.2/build/vgabios-qxl/.config OUT=build/vgabios-qxl/ build/vgabios-qxl/vgabios.bin
make[1]: Entering directory '/build/seabios-1.16.2'
  Build Kconfig config file
  Compile checking build/vgabios-qxl/src/output.o
In file included from src/output.c:9:
src/output.c: In function 'screenc':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
src/output.c:77:25: note: in expansion of macro 'GET_IVT'
   77 |     if (!MODESEGMENT && GET_IVT(0x10).segoff == FUNC16(entry_10).segoff)
      |                         ^~~~~~~
  Compile checking build/vgabios-qxl/src/string.o
  Compile checking build/vgabios-qxl/src/hw/pci.o
  Compile checking build/vgabios-qxl/src/hw/serialio.o
  Compile checking build/vgabios-qxl/vgasrc/vgainit.o
In file included from vgasrc/vgainit.c:8:
In function 'set_equipment_flags',
    inlined from 'init_bios_area' at vgasrc/vgainit.c:141:5,
    inlined from 'vga_post' at vgasrc/vgainit.c:182:5:
src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
In file included from src/biosvar.h:10:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'init_bios_area',
    inlined from 'vga_post' at vgasrc/vgainit.c:182:5:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgainit.c:144:5: note: in expansion of macro 'SET_BDA'
  144 |     SET_BDA(modeset_ctl, 0x51);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgainit.c:146:5: note: in expansion of macro 'SET_BDA'
  146 |     SET_BDA(dcc_index, CONFIG_VGA_STDVGA_PORTS ? 0x08 : 0xff);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgainit.c:149:5: note: in expansion of macro 'SET_BDA'
  149 |     SET_BDA(video_msr, 0x00); // Unavailable on vanilla vga, but...
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgainit.c:150:5: note: in expansion of macro 'SET_BDA'
  150 |     SET_BDA(video_pal, 0x00); // Unavailable on vanilla vga, but...
      |     ^~~~~~~
vgasrc/vgainit.c: In function 'vga_post':
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgainit.c:188:5: note: in expansion of macro 'SET_IVT'
  188 |     SET_IVT(0x10, SEGOFF(get_global_seg(), (u32)entry_10));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgainit.c:188:5: note: in expansion of macro 'SET_IVT'
  188 |     SET_IVT(0x10, SEGOFF(get_global_seg(), (u32)entry_10));
      |     ^~~~~~~
In function 'allocate_extra_stack',
    inlined from 'vga_post' at vgasrc/vgainit.c:190:5:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgainit.c:97:5: note: in expansion of macro 'SET_IVT'
   97 |     SET_IVT(0x10, SEGOFF(get_global_seg(), (u32)entry_10_extrastack));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgainit.c:97:5: note: in expansion of macro 'SET_IVT'
   97 |     SET_IVT(0x10, SEGOFF(get_global_seg(), (u32)entry_10_extrastack));
      |     ^~~~~~~
  Compile checking build/vgabios-qxl/vgasrc/vgabios.o
In file included from src/biosvar.h:10,
                 from vgasrc/vgabios.c:8:
vgasrc/vgabios.c: In function 'set_cursor_pos':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:91:20: note: in expansion of macro 'GET_BDA'
   91 |     if (cp.page == GET_BDA(video_page)) {
      |                    ^~~~~~~
vgasrc/vgabios.c: In function 'verify_scroll':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:395:18: note: in expansion of macro 'GET_BDA'
  395 |     u16 nbrows = GET_BDA(video_rows) + 1;
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:398:18: note: in expansion of macro 'GET_BDA'
  398 |     u16 nbcols = GET_BDA(video_cols);
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:410:39: note: in expansion of macro 'GET_BDA'
  410 |     struct cursorpos win = {ulx, uly, GET_BDA(video_page)};
      |                                       ^~~~~~~
vgasrc/vgabios.c: In function 'write_char':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:164:19: note: in expansion of macro 'GET_BDA'
  164 |     if (pcp->x == GET_BDA(video_cols)) {
      |                   ^~~~~~~
vgasrc/vgabios.c: In function 'write_teletype':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:195:18: note: in expansion of macro 'GET_BDA'
  195 |     u16 nbrows = GET_BDA(video_rows);
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:200:37: note: in expansion of macro 'GET_BDA'
  200 |         struct cursorpos winsize = {GET_BDA(video_cols), nbrows+1};
      |                                     ^~~~~~~
vgasrc/vgabios.c: In function 'get_cursor_shape':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:59:23: note: in expansion of macro 'GET_BDA'
   59 |     u16 cursor_type = GET_BDA(cursor_type);
      |                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:60:26: note: in expansion of macro 'GET_BDA'
   60 |     u8 emulate_cursor = (GET_BDA(video_ctl) & 1) == 0;
      |                          ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:65:19: note: in expansion of macro 'GET_BDA'
   65 |     u16 cheight = GET_BDA(char_height);
      |                   ^~~~~~~
vgasrc/vgabios.c: In function 'set_cursor_shape':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:79:5: note: in expansion of macro 'SET_BDA'
   79 |     SET_BDA(cursor_type, cursor_type);
      |     ^~~~~~~
vgasrc/vgabios.c: In function 'set_scan_lines':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:140:5: note: in expansion of macro 'SET_BDA'
  140 |     SET_BDA(char_height, lines);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:143:5: note: in expansion of macro 'SET_BDA'
  143 |     SET_BDA(video_rows, rows - 1);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:144:16: note: in expansion of macro 'GET_BDA'
  144 |     u16 cols = GET_BDA(video_cols);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:145:5: note: in expansion of macro 'SET_BDA'
  145 |     SET_BDA(video_pagesize, calc_page_size(MM_TEXT, cols, rows));
      |     ^~~~~~~
vgasrc/vgabios.c: In function 'handle_100e.isra':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:510:42: note: in expansion of macro 'GET_BDA'
  510 |     struct cursorpos cp = get_cursor_pos(GET_BDA(video_page));
      |                                          ^~~~~~~
vgasrc/vgabios.c: In function 'bda_save_restore':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |      ^
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:230:41: note: in expansion of macro 'GET_BDA_EXT'
  230 |         SET_FARVAR(seg, info->vbe_mode, GET_BDA_EXT(vbe_mode));
      |                                         ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |      ^
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgabios.c:231:38: note: in expansion of macro 'GET_IVT'
  231 |         SET_FARVAR(seg, info->font0, GET_IVT(0x1f));
      |                                      ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |      ^
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgabios.c:232:38: note: in expansion of macro 'GET_IVT'
  232 |         SET_FARVAR(seg, info->font1, GET_IVT(0x43));
      |                                      ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:240:9: note: in expansion of macro 'SET_BDA_EXT'
  240 |         SET_BDA_EXT(vbe_mode, vbe_mode);
      |         ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:242:9: note: in expansion of macro 'SET_BDA_EXT'
  242 |         SET_BDA_EXT(vgamode_offset, (u32)vmode_g);
      |         ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:243:9: note: in expansion of macro 'SET_IVT'
  243 |         SET_IVT(0x1f, GET_FARVAR(seg, info->font0));
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:244:9: note: in expansion of macro 'SET_IVT'
  244 |         SET_IVT(0x43, GET_FARVAR(seg, info->font1));
      |         ^~~~~~~
vgasrc/vgabios.c: In function 'get_current_mode':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
vgasrc/vgabios.c: In function 'vga_set_mode':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:281:9: note: in expansion of macro 'SET_BDA'
  281 |         SET_BDA(video_mode, 0xff);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:279:9: note: in expansion of macro 'SET_BDA'
  279 |         SET_BDA(video_mode, mode);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:282:5: note: in expansion of macro 'SET_BDA_EXT'
  282 |     SET_BDA_EXT(vbe_mode, mode | (flags & MF_VBEFLAGS));
      |     ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:283:5: note: in expansion of macro 'SET_BDA_EXT'
  283 |     SET_BDA_EXT(vgamode_offset, (u32)vmode_g);
      |     ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:23: note: in expansion of macro 'GET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |                       ^~~~~~~~~~~
vgasrc/vgabios.c:288:9: note: in expansion of macro 'MASK_BDA_EXT'
  288 |         MASK_BDA_EXT(flags, BF_EXTRA_STACK
      |         ^~~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/vgabios.c:288:9: note: in expansion of macro 'MASK_BDA_EXT'
  288 |         MASK_BDA_EXT(flags, BF_EXTRA_STACK
      |         ^~~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:296:9: note: in expansion of macro 'SET_BDA'
  296 |         SET_BDA(video_cols, width / cwidth);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:297:9: note: in expansion of macro 'SET_BDA'
  297 |         SET_BDA(video_rows, (height / cheight) - 1);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:298:9: note: in expansion of macro 'SET_BDA'
  298 |         SET_BDA(cursor_type, vga_emulate_text() ? 0x0607 : 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:291:9: note: in expansion of macro 'SET_BDA'
  291 |         SET_BDA(video_cols, width);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:292:9: note: in expansion of macro 'SET_BDA'
  292 |         SET_BDA(video_rows, height-1);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:293:9: note: in expansion of macro 'SET_BDA'
  293 |         SET_BDA(cursor_type, 0x0607);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:300:5: note: in expansion of macro 'SET_BDA'
  300 |     SET_BDA(video_pagesize, calc_page_size(memmodel, width, height));
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:301:5: note: in expansion of macro 'SET_BDA'
  301 |     SET_BDA(crtc_address, CONFIG_VGA_STDVGA_PORTS ? stdvga_get_crtc() : 0);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:302:5: note: in expansion of macro 'SET_BDA'
  302 |     SET_BDA(char_height, cheight);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:303:5: note: in expansion of macro 'SET_BDA'
  303 |     SET_BDA(video_ctl, 0x60 | (flags & MF_NOCLEARMEM ? 0x80 : 0x00));
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:304:5: note: in expansion of macro 'SET_BDA'
  304 |     SET_BDA(video_switches, 0xF9);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.c:305:5: note: in expansion of macro 'SET_BDA'
  305 |     SET_BDA(modeset_ctl, GET_BDA(modeset_ctl) & 0x7f);
      |     ^~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:305:26: note: in expansion of macro 'GET_BDA'
  305 |     SET_BDA(modeset_ctl, GET_BDA(modeset_ctl) & 0x7f);
      |                          ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:305:5: note: in expansion of macro 'SET_BDA'
  305 |     SET_BDA(modeset_ctl, GET_BDA(modeset_ctl) & 0x7f);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:309:5: note: in expansion of macro 'SET_BDA'
  309 |     SET_BDA(video_pagestart, 0x0000);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:310:5: note: in expansion of macro 'SET_BDA'
  310 |     SET_BDA(video_page, 0x00);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:313:5: note: in expansion of macro 'SET_IVT'
  313 |     SET_IVT(0x1f, SEGOFF(get_global_seg(), (u32)&vgafont8[128 * 8]));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:313:5: note: in expansion of macro 'SET_IVT'
  313 |     SET_IVT(0x1f, SEGOFF(get_global_seg(), (u32)&vgafont8[128 * 8]));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:323:9: note: in expansion of macro 'SET_IVT'
  323 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont16));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:323:9: note: in expansion of macro 'SET_IVT'
  323 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont16));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:320:9: note: in expansion of macro 'SET_IVT'
  320 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont14));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:320:9: note: in expansion of macro 'SET_IVT'
  320 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont14));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:317:9: note: in expansion of macro 'SET_IVT'
  317 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont8));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:317:9: note: in expansion of macro 'SET_IVT'
  317 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont8));
      |         ^~~~~~~
vgasrc/vgabios.c: In function 'load_gfx_font':
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:735:5: note: in expansion of macro 'SET_IVT'
  735 |     SET_IVT(0x43, SEGOFF(seg, off));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:735:5: note: in expansion of macro 'SET_IVT'
  735 |     SET_IVT(0x43, SEGOFF(seg, off));
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:751:5: note: in expansion of macro 'SET_BDA'
  751 |     SET_BDA(video_rows, rows - 1);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:752:5: note: in expansion of macro 'SET_BDA'
  752 |     SET_BDA(char_height, height);
      |     ^~~~~~~
In function 'handle_101b',
    inlined from 'handle_10' at vgasrc/vgabios.c:1125:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |      ^
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:1062:38: note: in expansion of macro 'GET_BDA'
 1062 |     SET_FARVAR(seg, info->dcc_index, GET_BDA(dcc_index));
      |                                      ^~~~~~~
In function 'handle_101a01',
    inlined from 'handle_101a' at vgasrc/vgabios.c:1032:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1124:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:1016:5: note: in expansion of macro 'SET_BDA'
 1016 |     SET_BDA(dcc_index, regs->bl);
      |     ^~~~~~~
In function 'handle_101a00',
    inlined from 'handle_101a' at vgasrc/vgabios.c:1031:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1124:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:1009:16: note: in expansion of macro 'GET_BDA'
 1009 |     regs->bx = GET_BDA(dcc_index);
      |                ^~~~~~~
In function 'handle_101234',
    inlined from 'handle_1012' at vgasrc/vgabios.c:973:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.c:935:5: note: in expansion of macro 'SET_BDA'
  935 |     SET_BDA(video_ctl, (GET_BDA(video_ctl) & ~0x01) | (regs->al & 0x01));
      |     ^~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:935:25: note: in expansion of macro 'GET_BDA'
  935 |     SET_BDA(video_ctl, (GET_BDA(video_ctl) & ~0x01) | (regs->al & 0x01));
      |                         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:935:5: note: in expansion of macro 'SET_BDA'
  935 |     SET_BDA(video_ctl, (GET_BDA(video_ctl) & ~0x01) | (regs->al & 0x01));
      |     ^~~~~~~
In function 'handle_101233',
    inlined from 'handle_1012' at vgasrc/vgabios.c:972:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:927:13: note: in expansion of macro 'GET_BDA'
  927 |     u8 v2 = GET_BDA(modeset_ctl) & ~0x02;
      |             ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:928:5: note: in expansion of macro 'SET_BDA'
  928 |     SET_BDA(modeset_ctl, v | v2);
      |     ^~~~~~~
In function 'handle_101231',
    inlined from 'handle_1012' at vgasrc/vgabios.c:970:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:909:15: note: in expansion of macro 'GET_BDA'
  909 |     u8 mctl = GET_BDA(video_ctl) & ~0x08;
      |               ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:910:5: note: in expansion of macro 'SET_BDA'
  910 |     SET_BDA(video_ctl, mctl | v);
      |     ^~~~~~~
In function 'handle_101230',
    inlined from 'handle_1012' at vgasrc/vgabios.c:969:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
vgasrc/vgabios.c:878:8: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  878 |     u8 mctl = GET_BDA(modeset_ctl);
      |        ^~~~
vgasrc/vgabios.c:879:8: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  879 |     u8 vswt = GET_BDA(video_switches);
      |        ^~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:900:5: note: in expansion of macro 'SET_BDA'
  900 |     SET_BDA(modeset_ctl, mctl);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:901:5: note: in expansion of macro 'SET_BDA'
  901 |     SET_BDA(video_switches, vswt);
      |     ^~~~~~~
In function 'handle_101210',
    inlined from 'handle_1012' at vgasrc/vgabios.c:968:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
vgasrc/vgabios.c:867:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  867 |     u16 crtc_addr = GET_BDA(crtc_address);
      |         ^~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:872:16: note: in expansion of macro 'GET_BDA'
  872 |     regs->cx = GET_BDA(video_switches) & 0x0f;
      |                ^~~~~~~
In function 'handle_101130',
    inlined from 'handle_1011' at vgasrc/vgabios.c:853:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1121:16:
vgasrc/vgabios.c:790:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  790 |         struct segoff_s so = GET_IVT(0x43);
      |                         ^~
vgasrc/vgabios.c:790:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
vgasrc/vgabios.c:784:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  784 |         struct segoff_s so = GET_IVT(0x1f);
      |                         ^~
vgasrc/vgabios.c:784:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:824:16: note: in expansion of macro 'GET_BDA'
  824 |     regs->cx = GET_BDA(char_height) & 0xff;
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:827:16: note: in expansion of macro 'GET_BDA'
  827 |     regs->dl = GET_BDA(video_rows);
      |                ^~~~~~~
In function 'handle_101120',
    inlined from 'handle_1011' at vgasrc/vgabios.c:854:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1121:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:727:5: note: in expansion of macro 'SET_IVT'
  727 |     SET_IVT(0x1f, SEGOFF(regs->es, regs->bp));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:727:5: note: in expansion of macro 'SET_IVT'
  727 |     SET_IVT(0x1f, SEGOFF(regs->es, regs->bp));
      |     ^~~~~~~
In function 'handle_100f',
    inlined from 'handle_10' at vgasrc/vgabios.c:1119:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:518:16: note: in expansion of macro 'GET_BDA'
  518 |     regs->bh = GET_BDA(video_page);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:519:16: note: in expansion of macro 'GET_BDA'
  519 |     regs->al = GET_BDA(video_mode) | (GET_BDA(video_ctl) & 0x80);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:519:39: note: in expansion of macro 'GET_BDA'
  519 |     regs->al = GET_BDA(video_mode) | (GET_BDA(video_ctl) & 0x80);
      |                                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:520:16: note: in expansion of macro 'GET_BDA'
  520 |     regs->ah = GET_BDA(video_cols);
      |                ^~~~~~~
In function 'get_current_mode',
    inlined from 'set_active_page' at vgasrc/vgabios.c:117:33,
    inlined from 'handle_1005' at vgasrc/vgabios.c:387:5,
    inlined from 'handle_10' at vgasrc/vgabios.c:1109:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'set_active_page',
    inlined from 'handle_1005' at vgasrc/vgabios.c:387:5,
    inlined from 'handle_10' at vgasrc/vgabios.c:1109:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:127:5: note: in expansion of macro 'SET_BDA'
  127 |     SET_BDA(video_pagestart, address);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:128:5: note: in expansion of macro 'SET_BDA'
  128 |     SET_BDA(video_page, page);
      |     ^~~~~~~
In function 'handle_1003',
    inlined from 'handle_10' at vgasrc/vgabios.c:1107:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:370:16: note: in expansion of macro 'GET_BDA'
  370 |     regs->cx = GET_BDA(cursor_type);
      |                ^~~~~~~
In function 'handle_1000',
    inlined from 'handle_10' at vgasrc/vgabios.c:1104:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:339:30: note: in expansion of macro 'GET_BDA'
  339 |     int flags = MF_LEGACY | (GET_BDA(modeset_ctl) & (MF_NOPALETTE|MF_GRAYSUM));
      |                              ^~~~~~~
  Compile checking build/vgabios-qxl/vgasrc/vgafb.o
In file included from src/biosvar.h:10,
                 from vgasrc/vgafb.c:8:
vgasrc/vgafb.c: In function 'get_font_data':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:387:23: note: in expansion of macro 'GET_BDA'
  387 |     int char_height = GET_BDA(char_height);
      |                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgafb.c:390:16: note: in expansion of macro 'GET_IVT'
  390 |         font = GET_IVT(0x1f);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgafb.c:390:16: note: in expansion of macro 'GET_IVT'
  390 |         font = GET_IVT(0x1f);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgafb.c:393:16: note: in expansion of macro 'GET_IVT'
  393 |         font = GET_IVT(0x43);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgafb.c:393:16: note: in expansion of macro 'GET_IVT'
  393 |         font = GET_IVT(0x43);
      |                ^~~~~~~
vgasrc/vgafb.c: In function 'text_address':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:552:18: note: in expansion of macro 'GET_BDA'
  552 |     int stride = GET_BDA(video_cols) * 2;
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:553:22: note: in expansion of macro 'GET_BDA'
  553 |     u32 pageoffset = GET_BDA(video_pagesize) * cp.page;
      |                      ^~~~~~~
vgasrc/vgafb.c: In function 'vgafb_clear_chars.isra':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:590:18: note: in expansion of macro 'GET_BDA'
  590 |     int stride = GET_BDA(video_cols) * 2;
      |                  ^~~~~~~
In function 'gfx_clear_chars',
    inlined from 'vgafb_clear_chars.isra' at vgasrc/vgafb.c:586:9:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:373:19: note: in expansion of macro 'GET_BDA'
  373 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
vgasrc/vgafb.c: In function 'vgafb_move_chars.isra':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:570:18: note: in expansion of macro 'GET_BDA'
  570 |     int stride = GET_BDA(video_cols) * 2;
      |                  ^~~~~~~
In function 'gfx_move_chars',
    inlined from 'vgafb_move_chars.isra' at vgasrc/vgafb.c:566:9:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:356:19: note: in expansion of macro 'GET_BDA'
  356 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
In function 'gfx_write_char',
    inlined from 'vgafb_write_char' at vgasrc/vgafb.c:633:9:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:404:17: note: in expansion of macro 'GET_BDA'
  404 |     if (cp.x >= GET_BDA(video_cols))
      |                 ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:411:19: note: in expansion of macro 'GET_BDA'
  411 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
In function 'gfx_read_char',
    inlined from 'vgafb_read_char' at vgasrc/vgafb.c:655:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:456:19: note: in expansion of macro 'GET_BDA'
  456 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:457:17: note: in expansion of macro 'GET_BDA'
  457 |     if (cp.x >= GET_BDA(video_cols) || cheight > ARRAY_SIZE(lines))
      |                 ^~~~~~~
  Compile checking build/vgabios-qxl/vgasrc/swcursor.o
  Compile checking build/vgabios-qxl/vgasrc/vgafonts.o
  Compile checking build/vgabios-qxl/vgasrc/vbe.o
In file included from src/biosvar.h:10,
                 from vgasrc/vbe.c:9:
vgasrc/vbe.c: In function 'vbe_104f05':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vbe.c:257:9: note: in expansion of macro 'GET_BDA_EXT'
  257 |     if (GET_BDA_EXT(vbe_mode) & MF_LINEARFB) {
      |         ^~~~~~~~~~~
In function 'vbe_104f10',
    inlined from 'handle_104f' at vgasrc/vbe.c:458:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vbe.c:395:20: note: in expansion of macro 'GET_BDA_EXT'
  395 |         regs->bh = GET_BDA_EXT(flags) & BF_PM_MASK;
      |                    ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:23: note: in expansion of macro 'GET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |                       ^~~~~~~~~~~
vgasrc/vbe.c:392:9: note: in expansion of macro 'MASK_BDA_EXT'
  392 |         MASK_BDA_EXT(flags, BF_PM_MASK, regs->bh & BF_PM_MASK);
      |         ^~~~~~~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/vbe.c:392:9: note: in expansion of macro 'MASK_BDA_EXT'
  392 |         MASK_BDA_EXT(flags, BF_PM_MASK, regs->bh & BF_PM_MASK);
      |         ^~~~~~~~~~~~
In function 'vbe_104f03',
    inlined from 'handle_104f' at vgasrc/vbe.c:451:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vbe.c:227:16: note: in expansion of macro 'GET_BDA_EXT'
  227 |     regs->bx = GET_BDA_EXT(vbe_mode);
      |                ^~~~~~~~~~~
  Compile checking build/vgabios-qxl/vgasrc/stdvga.o
  Compile checking build/vgabios-qxl/vgasrc/stdvgamodes.o
In file included from src/biosvar.h:10,
                 from vgasrc/stdvgamodes.c:8:
vgasrc/stdvgamodes.c: In function 'stdvga_build_video_param':
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/stdvgamodes.c:360:5: note: in expansion of macro 'SET_BDA'
  360 |     SET_BDA(video_savetable
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/stdvgamodes.c:360:5: note: in expansion of macro 'SET_BDA'
  360 |     SET_BDA(video_savetable
      |     ^~~~~~~
  Compile checking build/vgabios-qxl/vgasrc/stdvgaio.o
  Compile checking build/vgabios-qxl/vgasrc/clext.o
  Compile checking build/vgabios-qxl/vgasrc/svgamodes.o
  Compile checking build/vgabios-qxl/vgasrc/atiext.o
  Compile checking build/vgabios-qxl/vgasrc/bochsvga.o
  Compile checking build/vgabios-qxl/vgasrc/geodevga.o
  Compile checking build/vgabios-qxl/src/fw/coreboot.o
  Compile checking build/vgabios-qxl/vgasrc/cbvga.o
In file included from src/biosvar.h:10,
                 from vgasrc/cbvga.c:8:
vgasrc/cbvga.c: In function 'cbvga_set_mode':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/cbvga.c:139:22: note: in expansion of macro 'GET_BDA_EXT'
  139 |     u8 extra_stack = GET_BDA_EXT(flags) & BF_EXTRA_STACK;
      |                      ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/cbvga.c:139:22: note: in expansion of macro 'GET_BDA_EXT'
  139 |     u8 extra_stack = GET_BDA_EXT(flags) & BF_EXTRA_STACK;
      |                      ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/cbvga.c:140:5: note: in expansion of macro 'MASK_BDA_EXT'
  140 |     MASK_BDA_EXT(flags, BF_EMULATE_TEXT, emul ? BF_EMULATE_TEXT : 0);
      |     ^~~~~~~~~~~~
  Compile checking build/vgabios-qxl/vgasrc/bochsdisplay.o
  Compile checking build/vgabios-qxl/vgasrc/ramfb.o
  Compiling whole program build/vgabios-qxl/vgaccode16.raw.s
In file included from ./src/output.c:9,
                 from build/vgabios-qxl/vgaccode16.raw.s.tmp.c:1:
In function 'get_current_mode',
    inlined from 'vgafb_write_pixel' at ./vgasrc/vgafb.c:505:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_read_pixel' at ./vgasrc/vgafb.c:529:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_write_char' at ./vgasrc/vgafb.c:628:33,
    inlined from 'write_char.isra' at ./vgasrc/vgabios.c:161:5:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_clear_chars.constprop.isra' at ./vgasrc/vgafb.c:581:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_move_chars.isra' at ./vgasrc/vgafb.c:561:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'bda_save_restore',
    inlined from 'stdvga_save_restore' at ./vgasrc/stdvga.c:453:12,
    inlined from 'bochsvga_save_restore' at ./vgasrc/bochsvga.c:230:15:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:113:34: note: in definition of macro '__SET_FARVAR'
  113 |         typeof(var) __sfv_val = (val);          \
      |                                  ^~~
./vgasrc/vgabios.c:230:9: note: in expansion of macro 'SET_FARVAR'
  230 |         SET_FARVAR(seg, info->vbe_mode, GET_BDA_EXT(vbe_mode));
      |         ^~~~~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:230:41: note: in expansion of macro 'GET_BDA_EXT'
  230 |         SET_FARVAR(seg, info->vbe_mode, GET_BDA_EXT(vbe_mode));
      |                                         ^~~~~~~~~~~
./src/farptr.h:37:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   37 |     __asm__(prefix "movw %w1, %%" #SEG ":%0" : "=m"(var)        \
      |     ^~~~~~~
./src/farptr.h:73:13: note: in expansion of macro 'WRITE16_SEG'
   73 |             WRITE16_SEG(prefix, seg, var, (val));       \
      |             ^~~~~~~~~~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:240:9: note: in expansion of macro 'SET_BDA_EXT'
  240 |         SET_BDA_EXT(vbe_mode, vbe_mode);
      |         ^~~~~~~~~~~
./src/farptr.h:37:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   37 |     __asm__(prefix "movw %w1, %%" #SEG ":%0" : "=m"(var)        \
      |     ^~~~~~~
./src/farptr.h:73:13: note: in expansion of macro 'WRITE16_SEG'
   73 |             WRITE16_SEG(prefix, seg, var, (val));       \
      |             ^~~~~~~~~~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:242:9: note: in expansion of macro 'SET_BDA_EXT'
  242 |         SET_BDA_EXT(vgamode_offset, (u32)vmode_g);
      |         ^~~~~~~~~~~
./vgasrc/vgabios.c: In function 'vga_set_mode':
./vgasrc/vgabios.h:63:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |                                                             ^~
./src/farptr.h:37:53: note: in definition of macro 'WRITE16_SEG'
   37 |     __asm__(prefix "movw %w1, %%" #SEG ":%0" : "=m"(var)        \
      |                                                     ^~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:282:5: note: in expansion of macro 'SET_BDA_EXT'
  282 |     SET_BDA_EXT(vbe_mode, mode | (flags & MF_VBEFLAGS));
      |     ^~~~~~~~~~~
./vgasrc/vgabios.h:63:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |                                                             ^~
./src/farptr.h:37:53: note: in definition of macro 'WRITE16_SEG'
   37 |     __asm__(prefix "movw %w1, %%" #SEG ":%0" : "=m"(var)        \
      |                                                     ^~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:283:5: note: in expansion of macro 'SET_BDA_EXT'
  283 |     SET_BDA_EXT(vgamode_offset, (u32)vmode_g);
      |     ^~~~~~~~~~~
./vgasrc/vgabios.h:61:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |                                                             ^~
./src/farptr.h:113:34: note: in definition of macro '__SET_FARVAR'
  113 |         typeof(var) __sfv_val = (val);          \
      |                                  ^~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./src/farptr.h:58:9: note: in expansion of macro 'READ8_SEG'
   58 |         READ8_SEG(prefix, seg, __val, var);     \
      |         ^~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:23: note: in expansion of macro 'GET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |                       ^~~~~~~~~~~
./vgasrc/vgabios.c:288:9: note: in expansion of macro 'MASK_BDA_EXT'
  288 |         MASK_BDA_EXT(flags, BF_EXTRA_STACK
      |         ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |                                                             ^~
./src/farptr.h:34:53: note: in definition of macro 'WRITE8_SEG'
   34 |     __asm__(prefix "movb %b1, %%" #SEG ":%0" : "=m"(var)        \
      |                                                     ^~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./vgasrc/vgabios.c:288:9: note: in expansion of macro 'MASK_BDA_EXT'
  288 |         MASK_BDA_EXT(flags, BF_EXTRA_STACK
      |         ^~~~~~~~~~~~
./vgasrc/vbe.c: In function 'vbe_104f05':
./vgasrc/vgabios.h:61:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |                                                             ^~
./src/farptr.h:22:19: note: in definition of macro 'READ16_SEG'
   22 |             : "m"(var), "m"(__segment_ ## SEG))
      |                   ^~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vbe.c:257:9: note: in expansion of macro 'GET_BDA_EXT'
  257 |     if (GET_BDA_EXT(vbe_mode) & MF_LINEARFB) {
      |         ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vbe_104f05' at ./vgasrc/vbe.c:261:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'vbe_104f10',
    inlined from 'handle_104f' at ./vgasrc/vbe.c:458:16:
./src/farptr.h:18:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   18 |     __asm__(prefix "movb %%" #SEG ":%1, %b0" : "=Qi"(value)     \
      |     ^~~~~~~
./src/farptr.h:58:9: note: in expansion of macro 'READ8_SEG'
   58 |         READ8_SEG(prefix, seg, __val, var);     \
      |         ^~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vbe.c:395:20: note: in expansion of macro 'GET_BDA_EXT'
  395 |         regs->bh = GET_BDA_EXT(flags) & BF_PM_MASK;
      |                    ^~~~~~~~~~~
./src/farptr.h:18:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   18 |     __asm__(prefix "movb %%" #SEG ":%1, %b0" : "=Qi"(value)     \
      |     ^~~~~~~
./src/farptr.h:113:34: note: in definition of macro '__SET_FARVAR'
  113 |         typeof(var) __sfv_val = (val);          \
      |                                  ^~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./src/farptr.h:58:9: note: in expansion of macro 'READ8_SEG'
   58 |         READ8_SEG(prefix, seg, __val, var);     \
      |         ^~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:23: note: in expansion of macro 'GET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |                       ^~~~~~~~~~~
./vgasrc/vbe.c:392:9: note: in expansion of macro 'MASK_BDA_EXT'
  392 |         MASK_BDA_EXT(flags, BF_PM_MASK, regs->bh & BF_PM_MASK);
      |         ^~~~~~~~~~~~
./src/farptr.h:34:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   34 |     __asm__(prefix "movb %b1, %%" #SEG ":%0" : "=m"(var)        \
      |     ^~~~~~~
./src/farptr.h:71:13: note: in expansion of macro 'WRITE8_SEG'
   71 |             WRITE8_SEG(prefix, seg, var, (val));        \
      |             ^~~~~~~~~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./vgasrc/vbe.c:392:9: note: in expansion of macro 'MASK_BDA_EXT'
  392 |         MASK_BDA_EXT(flags, BF_PM_MASK, regs->bh & BF_PM_MASK);
      |         ^~~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vbe_104f08' at ./vgasrc/vbe.c:352:33,
    inlined from 'handle_104f' at ./vgasrc/vbe.c:456:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vbe_104f07' at ./vgasrc/vbe.c:316:33,
    inlined from 'handle_104f' at ./vgasrc/vbe.c:455:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vbe_104f06' at ./vgasrc/vbe.c:286:33,
    inlined from 'handle_104f' at ./vgasrc/vbe.c:454:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'vbe_104f03',
    inlined from 'handle_104f' at ./vgasrc/vbe.c:451:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vbe.c:227:16: note: in expansion of macro 'GET_BDA_EXT'
  227 |     regs->bx = GET_BDA_EXT(vbe_mode);
      |                ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_read_char' at ./vgasrc/vgafb.c:650:33,
    inlined from 'handle_1008' at ./vgasrc/vgabios.c:431:25,
    inlined from 'handle_10' at ./vgasrc/vgabios.c:1112:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'set_active_page' at ./vgasrc/vgabios.c:117:33,
    inlined from 'handle_1005' at ./vgasrc/vgabios.c:387:5,
    inlined from 'handle_10' at ./vgasrc/vgabios.c:1109:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
  Fixup VGA rom assembler
  Compiling to assembler build/vgabios-qxl/src/asm-offsets.s
  Generating offset file build/vgabios-qxl/asm-offsets.h
  Compiling (16bit) build/vgabios-qxl/vgaentry.o
  Precompiling build/vgabios-qxl/vgasrc/vgalayout.lds
  Linking build/vgabios-qxl/vgarom.o
Version: 1.16.2-debian-1.16.2-1
ld: warning: build/vgabios-qxl/vgaentry.o: missing .note.GNU-stack section implies executable stack
ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
ld: warning: build/vgabios-qxl/vgarom.o has a LOAD segment with RWX permissions
  Extracting binary build/vgabios-qxl/vgabios.bin.raw
  Finalizing rom build/vgabios-qxl/vgabios.bin
make[1]: Leaving directory '/build/seabios-1.16.2'
rm -f build/vgabios-qxl.bin
ln build/vgabios-qxl/vgabios.bin build/vgabios-qxl.bin

=== Building vgabios-isavga.bin ===

set -e; if [ ! -e build/vgabios-isavga/.config.old ]; then rm -rf build/vgabios-isavga; mkdir -p build/vgabios-isavga; for x in BUILD_VGABIOS=y VGA_BOCHS=y VGA_PCI=n; do echo CONFIG_$x; done > build/vgabios-isavga/.config; /usr/bin/make PYTHON="python3 -B" KCONFIG_CONFIG=/build/seabios-1.16.2/build/vgabios-isavga/.config OUT=build/vgabios-isavga/ oldnoconfig; fi
make[1]: Entering directory '/build/seabios-1.16.2'
scripts/kconfig/conf --olddefconfig /build/seabios-1.16.2/src/Kconfig
#
# configuration written to /build/seabios-1.16.2/build/vgabios-isavga/.config
#
make[1]: Leaving directory '/build/seabios-1.16.2'
/usr/bin/make PYTHON="python3 -B" $(cat build/env) KCONFIG_CONFIG=/build/seabios-1.16.2/build/vgabios-isavga/.config OUT=build/vgabios-isavga/ build/vgabios-isavga/vgabios.bin
make[1]: Entering directory '/build/seabios-1.16.2'
  Build Kconfig config file
  Compile checking build/vgabios-isavga/src/output.o
In file included from src/output.c:9:
src/output.c: In function 'screenc':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
src/output.c:77:25: note: in expansion of macro 'GET_IVT'
   77 |     if (!MODESEGMENT && GET_IVT(0x10).segoff == FUNC16(entry_10).segoff)
      |                         ^~~~~~~
  Compile checking build/vgabios-isavga/src/string.o
  Compile checking build/vgabios-isavga/src/hw/pci.o
  Compile checking build/vgabios-isavga/src/hw/serialio.o
  Compile checking build/vgabios-isavga/vgasrc/vgainit.o
In file included from vgasrc/vgainit.c:8:
In function 'set_equipment_flags',
    inlined from 'init_bios_area' at vgasrc/vgainit.c:141:5,
    inlined from 'vga_post' at vgasrc/vgainit.c:182:5:
src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
In file included from src/biosvar.h:10:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'init_bios_area',
    inlined from 'vga_post' at vgasrc/vgainit.c:182:5:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgainit.c:144:5: note: in expansion of macro 'SET_BDA'
  144 |     SET_BDA(modeset_ctl, 0x51);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgainit.c:146:5: note: in expansion of macro 'SET_BDA'
  146 |     SET_BDA(dcc_index, CONFIG_VGA_STDVGA_PORTS ? 0x08 : 0xff);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgainit.c:149:5: note: in expansion of macro 'SET_BDA'
  149 |     SET_BDA(video_msr, 0x00); // Unavailable on vanilla vga, but...
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgainit.c:150:5: note: in expansion of macro 'SET_BDA'
  150 |     SET_BDA(video_pal, 0x00); // Unavailable on vanilla vga, but...
      |     ^~~~~~~
vgasrc/vgainit.c: In function 'vga_post':
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgainit.c:188:5: note: in expansion of macro 'SET_IVT'
  188 |     SET_IVT(0x10, SEGOFF(get_global_seg(), (u32)entry_10));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgainit.c:188:5: note: in expansion of macro 'SET_IVT'
  188 |     SET_IVT(0x10, SEGOFF(get_global_seg(), (u32)entry_10));
      |     ^~~~~~~
In function 'allocate_extra_stack',
    inlined from 'vga_post' at vgasrc/vgainit.c:190:5:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgainit.c:97:5: note: in expansion of macro 'SET_IVT'
   97 |     SET_IVT(0x10, SEGOFF(get_global_seg(), (u32)entry_10_extrastack));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgainit.c:97:5: note: in expansion of macro 'SET_IVT'
   97 |     SET_IVT(0x10, SEGOFF(get_global_seg(), (u32)entry_10_extrastack));
      |     ^~~~~~~
  Compile checking build/vgabios-isavga/vgasrc/vgabios.o
In file included from src/biosvar.h:10,
                 from vgasrc/vgabios.c:8:
vgasrc/vgabios.c: In function 'set_cursor_pos':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:91:20: note: in expansion of macro 'GET_BDA'
   91 |     if (cp.page == GET_BDA(video_page)) {
      |                    ^~~~~~~
vgasrc/vgabios.c: In function 'verify_scroll':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:395:18: note: in expansion of macro 'GET_BDA'
  395 |     u16 nbrows = GET_BDA(video_rows) + 1;
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:398:18: note: in expansion of macro 'GET_BDA'
  398 |     u16 nbcols = GET_BDA(video_cols);
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:410:39: note: in expansion of macro 'GET_BDA'
  410 |     struct cursorpos win = {ulx, uly, GET_BDA(video_page)};
      |                                       ^~~~~~~
vgasrc/vgabios.c: In function 'write_char':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:164:19: note: in expansion of macro 'GET_BDA'
  164 |     if (pcp->x == GET_BDA(video_cols)) {
      |                   ^~~~~~~
vgasrc/vgabios.c: In function 'write_teletype':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:195:18: note: in expansion of macro 'GET_BDA'
  195 |     u16 nbrows = GET_BDA(video_rows);
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:200:37: note: in expansion of macro 'GET_BDA'
  200 |         struct cursorpos winsize = {GET_BDA(video_cols), nbrows+1};
      |                                     ^~~~~~~
vgasrc/vgabios.c: In function 'get_cursor_shape':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:59:23: note: in expansion of macro 'GET_BDA'
   59 |     u16 cursor_type = GET_BDA(cursor_type);
      |                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:60:26: note: in expansion of macro 'GET_BDA'
   60 |     u8 emulate_cursor = (GET_BDA(video_ctl) & 1) == 0;
      |                          ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:65:19: note: in expansion of macro 'GET_BDA'
   65 |     u16 cheight = GET_BDA(char_height);
      |                   ^~~~~~~
vgasrc/vgabios.c: In function 'set_cursor_shape':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:79:5: note: in expansion of macro 'SET_BDA'
   79 |     SET_BDA(cursor_type, cursor_type);
      |     ^~~~~~~
vgasrc/vgabios.c: In function 'set_scan_lines':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:140:5: note: in expansion of macro 'SET_BDA'
  140 |     SET_BDA(char_height, lines);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:143:5: note: in expansion of macro 'SET_BDA'
  143 |     SET_BDA(video_rows, rows - 1);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:144:16: note: in expansion of macro 'GET_BDA'
  144 |     u16 cols = GET_BDA(video_cols);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:145:5: note: in expansion of macro 'SET_BDA'
  145 |     SET_BDA(video_pagesize, calc_page_size(MM_TEXT, cols, rows));
      |     ^~~~~~~
vgasrc/vgabios.c: In function 'handle_100e.isra':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:510:42: note: in expansion of macro 'GET_BDA'
  510 |     struct cursorpos cp = get_cursor_pos(GET_BDA(video_page));
      |                                          ^~~~~~~
vgasrc/vgabios.c: In function 'bda_save_restore':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |      ^
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:230:41: note: in expansion of macro 'GET_BDA_EXT'
  230 |         SET_FARVAR(seg, info->vbe_mode, GET_BDA_EXT(vbe_mode));
      |                                         ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |      ^
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgabios.c:231:38: note: in expansion of macro 'GET_IVT'
  231 |         SET_FARVAR(seg, info->font0, GET_IVT(0x1f));
      |                                      ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |      ^
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgabios.c:232:38: note: in expansion of macro 'GET_IVT'
  232 |         SET_FARVAR(seg, info->font1, GET_IVT(0x43));
      |                                      ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:240:9: note: in expansion of macro 'SET_BDA_EXT'
  240 |         SET_BDA_EXT(vbe_mode, vbe_mode);
      |         ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:242:9: note: in expansion of macro 'SET_BDA_EXT'
  242 |         SET_BDA_EXT(vgamode_offset, (u32)vmode_g);
      |         ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:243:9: note: in expansion of macro 'SET_IVT'
  243 |         SET_IVT(0x1f, GET_FARVAR(seg, info->font0));
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:244:9: note: in expansion of macro 'SET_IVT'
  244 |         SET_IVT(0x43, GET_FARVAR(seg, info->font1));
      |         ^~~~~~~
vgasrc/vgabios.c: In function 'get_current_mode':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
vgasrc/vgabios.c: In function 'vga_set_mode':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:281:9: note: in expansion of macro 'SET_BDA'
  281 |         SET_BDA(video_mode, 0xff);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:279:9: note: in expansion of macro 'SET_BDA'
  279 |         SET_BDA(video_mode, mode);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:282:5: note: in expansion of macro 'SET_BDA_EXT'
  282 |     SET_BDA_EXT(vbe_mode, mode | (flags & MF_VBEFLAGS));
      |     ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:283:5: note: in expansion of macro 'SET_BDA_EXT'
  283 |     SET_BDA_EXT(vgamode_offset, (u32)vmode_g);
      |     ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:23: note: in expansion of macro 'GET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |                       ^~~~~~~~~~~
vgasrc/vgabios.c:288:9: note: in expansion of macro 'MASK_BDA_EXT'
  288 |         MASK_BDA_EXT(flags, BF_EXTRA_STACK
      |         ^~~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/vgabios.c:288:9: note: in expansion of macro 'MASK_BDA_EXT'
  288 |         MASK_BDA_EXT(flags, BF_EXTRA_STACK
      |         ^~~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:296:9: note: in expansion of macro 'SET_BDA'
  296 |         SET_BDA(video_cols, width / cwidth);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:297:9: note: in expansion of macro 'SET_BDA'
  297 |         SET_BDA(video_rows, (height / cheight) - 1);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:298:9: note: in expansion of macro 'SET_BDA'
  298 |         SET_BDA(cursor_type, vga_emulate_text() ? 0x0607 : 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:291:9: note: in expansion of macro 'SET_BDA'
  291 |         SET_BDA(video_cols, width);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:292:9: note: in expansion of macro 'SET_BDA'
  292 |         SET_BDA(video_rows, height-1);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:293:9: note: in expansion of macro 'SET_BDA'
  293 |         SET_BDA(cursor_type, 0x0607);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:300:5: note: in expansion of macro 'SET_BDA'
  300 |     SET_BDA(video_pagesize, calc_page_size(memmodel, width, height));
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:301:5: note: in expansion of macro 'SET_BDA'
  301 |     SET_BDA(crtc_address, CONFIG_VGA_STDVGA_PORTS ? stdvga_get_crtc() : 0);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:302:5: note: in expansion of macro 'SET_BDA'
  302 |     SET_BDA(char_height, cheight);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:303:5: note: in expansion of macro 'SET_BDA'
  303 |     SET_BDA(video_ctl, 0x60 | (flags & MF_NOCLEARMEM ? 0x80 : 0x00));
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:304:5: note: in expansion of macro 'SET_BDA'
  304 |     SET_BDA(video_switches, 0xF9);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.c:305:5: note: in expansion of macro 'SET_BDA'
  305 |     SET_BDA(modeset_ctl, GET_BDA(modeset_ctl) & 0x7f);
      |     ^~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:305:26: note: in expansion of macro 'GET_BDA'
  305 |     SET_BDA(modeset_ctl, GET_BDA(modeset_ctl) & 0x7f);
      |                          ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:305:5: note: in expansion of macro 'SET_BDA'
  305 |     SET_BDA(modeset_ctl, GET_BDA(modeset_ctl) & 0x7f);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:309:5: note: in expansion of macro 'SET_BDA'
  309 |     SET_BDA(video_pagestart, 0x0000);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:310:5: note: in expansion of macro 'SET_BDA'
  310 |     SET_BDA(video_page, 0x00);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:313:5: note: in expansion of macro 'SET_IVT'
  313 |     SET_IVT(0x1f, SEGOFF(get_global_seg(), (u32)&vgafont8[128 * 8]));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:313:5: note: in expansion of macro 'SET_IVT'
  313 |     SET_IVT(0x1f, SEGOFF(get_global_seg(), (u32)&vgafont8[128 * 8]));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:323:9: note: in expansion of macro 'SET_IVT'
  323 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont16));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:323:9: note: in expansion of macro 'SET_IVT'
  323 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont16));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:320:9: note: in expansion of macro 'SET_IVT'
  320 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont14));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:320:9: note: in expansion of macro 'SET_IVT'
  320 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont14));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:317:9: note: in expansion of macro 'SET_IVT'
  317 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont8));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:317:9: note: in expansion of macro 'SET_IVT'
  317 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont8));
      |         ^~~~~~~
vgasrc/vgabios.c: In function 'load_gfx_font':
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:735:5: note: in expansion of macro 'SET_IVT'
  735 |     SET_IVT(0x43, SEGOFF(seg, off));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:735:5: note: in expansion of macro 'SET_IVT'
  735 |     SET_IVT(0x43, SEGOFF(seg, off));
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:751:5: note: in expansion of macro 'SET_BDA'
  751 |     SET_BDA(video_rows, rows - 1);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:752:5: note: in expansion of macro 'SET_BDA'
  752 |     SET_BDA(char_height, height);
      |     ^~~~~~~
In function 'handle_101b',
    inlined from 'handle_10' at vgasrc/vgabios.c:1125:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |      ^
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:1062:38: note: in expansion of macro 'GET_BDA'
 1062 |     SET_FARVAR(seg, info->dcc_index, GET_BDA(dcc_index));
      |                                      ^~~~~~~
In function 'handle_101a01',
    inlined from 'handle_101a' at vgasrc/vgabios.c:1032:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1124:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:1016:5: note: in expansion of macro 'SET_BDA'
 1016 |     SET_BDA(dcc_index, regs->bl);
      |     ^~~~~~~
In function 'handle_101a00',
    inlined from 'handle_101a' at vgasrc/vgabios.c:1031:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1124:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:1009:16: note: in expansion of macro 'GET_BDA'
 1009 |     regs->bx = GET_BDA(dcc_index);
      |                ^~~~~~~
In function 'handle_101234',
    inlined from 'handle_1012' at vgasrc/vgabios.c:973:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.c:935:5: note: in expansion of macro 'SET_BDA'
  935 |     SET_BDA(video_ctl, (GET_BDA(video_ctl) & ~0x01) | (regs->al & 0x01));
      |     ^~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:935:25: note: in expansion of macro 'GET_BDA'
  935 |     SET_BDA(video_ctl, (GET_BDA(video_ctl) & ~0x01) | (regs->al & 0x01));
      |                         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:935:5: note: in expansion of macro 'SET_BDA'
  935 |     SET_BDA(video_ctl, (GET_BDA(video_ctl) & ~0x01) | (regs->al & 0x01));
      |     ^~~~~~~
In function 'handle_101233',
    inlined from 'handle_1012' at vgasrc/vgabios.c:972:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:927:13: note: in expansion of macro 'GET_BDA'
  927 |     u8 v2 = GET_BDA(modeset_ctl) & ~0x02;
      |             ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:928:5: note: in expansion of macro 'SET_BDA'
  928 |     SET_BDA(modeset_ctl, v | v2);
      |     ^~~~~~~
In function 'handle_101231',
    inlined from 'handle_1012' at vgasrc/vgabios.c:970:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:909:15: note: in expansion of macro 'GET_BDA'
  909 |     u8 mctl = GET_BDA(video_ctl) & ~0x08;
      |               ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:910:5: note: in expansion of macro 'SET_BDA'
  910 |     SET_BDA(video_ctl, mctl | v);
      |     ^~~~~~~
In function 'handle_101230',
    inlined from 'handle_1012' at vgasrc/vgabios.c:969:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
vgasrc/vgabios.c:878:8: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  878 |     u8 mctl = GET_BDA(modeset_ctl);
      |        ^~~~
vgasrc/vgabios.c:879:8: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  879 |     u8 vswt = GET_BDA(video_switches);
      |        ^~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:900:5: note: in expansion of macro 'SET_BDA'
  900 |     SET_BDA(modeset_ctl, mctl);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:901:5: note: in expansion of macro 'SET_BDA'
  901 |     SET_BDA(video_switches, vswt);
      |     ^~~~~~~
In function 'handle_101210',
    inlined from 'handle_1012' at vgasrc/vgabios.c:968:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
vgasrc/vgabios.c:867:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  867 |     u16 crtc_addr = GET_BDA(crtc_address);
      |         ^~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:872:16: note: in expansion of macro 'GET_BDA'
  872 |     regs->cx = GET_BDA(video_switches) & 0x0f;
      |                ^~~~~~~
In function 'handle_101130',
    inlined from 'handle_1011' at vgasrc/vgabios.c:853:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1121:16:
vgasrc/vgabios.c:790:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  790 |         struct segoff_s so = GET_IVT(0x43);
      |                         ^~
vgasrc/vgabios.c:790:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
vgasrc/vgabios.c:784:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  784 |         struct segoff_s so = GET_IVT(0x1f);
      |                         ^~
vgasrc/vgabios.c:784:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:824:16: note: in expansion of macro 'GET_BDA'
  824 |     regs->cx = GET_BDA(char_height) & 0xff;
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:827:16: note: in expansion of macro 'GET_BDA'
  827 |     regs->dl = GET_BDA(video_rows);
      |                ^~~~~~~
In function 'handle_101120',
    inlined from 'handle_1011' at vgasrc/vgabios.c:854:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1121:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:727:5: note: in expansion of macro 'SET_IVT'
  727 |     SET_IVT(0x1f, SEGOFF(regs->es, regs->bp));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:727:5: note: in expansion of macro 'SET_IVT'
  727 |     SET_IVT(0x1f, SEGOFF(regs->es, regs->bp));
      |     ^~~~~~~
In function 'handle_100f',
    inlined from 'handle_10' at vgasrc/vgabios.c:1119:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:518:16: note: in expansion of macro 'GET_BDA'
  518 |     regs->bh = GET_BDA(video_page);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:519:16: note: in expansion of macro 'GET_BDA'
  519 |     regs->al = GET_BDA(video_mode) | (GET_BDA(video_ctl) & 0x80);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:519:39: note: in expansion of macro 'GET_BDA'
  519 |     regs->al = GET_BDA(video_mode) | (GET_BDA(video_ctl) & 0x80);
      |                                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:520:16: note: in expansion of macro 'GET_BDA'
  520 |     regs->ah = GET_BDA(video_cols);
      |                ^~~~~~~
In function 'get_current_mode',
    inlined from 'set_active_page' at vgasrc/vgabios.c:117:33,
    inlined from 'handle_1005' at vgasrc/vgabios.c:387:5,
    inlined from 'handle_10' at vgasrc/vgabios.c:1109:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'set_active_page',
    inlined from 'handle_1005' at vgasrc/vgabios.c:387:5,
    inlined from 'handle_10' at vgasrc/vgabios.c:1109:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:127:5: note: in expansion of macro 'SET_BDA'
  127 |     SET_BDA(video_pagestart, address);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:128:5: note: in expansion of macro 'SET_BDA'
  128 |     SET_BDA(video_page, page);
      |     ^~~~~~~
In function 'handle_1003',
    inlined from 'handle_10' at vgasrc/vgabios.c:1107:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:370:16: note: in expansion of macro 'GET_BDA'
  370 |     regs->cx = GET_BDA(cursor_type);
      |                ^~~~~~~
In function 'handle_1000',
    inlined from 'handle_10' at vgasrc/vgabios.c:1104:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:339:30: note: in expansion of macro 'GET_BDA'
  339 |     int flags = MF_LEGACY | (GET_BDA(modeset_ctl) & (MF_NOPALETTE|MF_GRAYSUM));
      |                              ^~~~~~~
  Compile checking build/vgabios-isavga/vgasrc/vgafb.o
In file included from src/biosvar.h:10,
                 from vgasrc/vgafb.c:8:
vgasrc/vgafb.c: In function 'get_font_data':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:387:23: note: in expansion of macro 'GET_BDA'
  387 |     int char_height = GET_BDA(char_height);
      |                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgafb.c:390:16: note: in expansion of macro 'GET_IVT'
  390 |         font = GET_IVT(0x1f);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgafb.c:390:16: note: in expansion of macro 'GET_IVT'
  390 |         font = GET_IVT(0x1f);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgafb.c:393:16: note: in expansion of macro 'GET_IVT'
  393 |         font = GET_IVT(0x43);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgafb.c:393:16: note: in expansion of macro 'GET_IVT'
  393 |         font = GET_IVT(0x43);
      |                ^~~~~~~
vgasrc/vgafb.c: In function 'text_address':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:552:18: note: in expansion of macro 'GET_BDA'
  552 |     int stride = GET_BDA(video_cols) * 2;
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:553:22: note: in expansion of macro 'GET_BDA'
  553 |     u32 pageoffset = GET_BDA(video_pagesize) * cp.page;
      |                      ^~~~~~~
vgasrc/vgafb.c: In function 'vgafb_clear_chars.isra':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:590:18: note: in expansion of macro 'GET_BDA'
  590 |     int stride = GET_BDA(video_cols) * 2;
      |                  ^~~~~~~
In function 'gfx_clear_chars',
    inlined from 'vgafb_clear_chars.isra' at vgasrc/vgafb.c:586:9:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:373:19: note: in expansion of macro 'GET_BDA'
  373 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
vgasrc/vgafb.c: In function 'vgafb_move_chars.isra':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:570:18: note: in expansion of macro 'GET_BDA'
  570 |     int stride = GET_BDA(video_cols) * 2;
      |                  ^~~~~~~
In function 'gfx_move_chars',
    inlined from 'vgafb_move_chars.isra' at vgasrc/vgafb.c:566:9:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:356:19: note: in expansion of macro 'GET_BDA'
  356 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
In function 'gfx_write_char',
    inlined from 'vgafb_write_char' at vgasrc/vgafb.c:633:9:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:404:17: note: in expansion of macro 'GET_BDA'
  404 |     if (cp.x >= GET_BDA(video_cols))
      |                 ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:411:19: note: in expansion of macro 'GET_BDA'
  411 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
In function 'gfx_read_char',
    inlined from 'vgafb_read_char' at vgasrc/vgafb.c:655:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:456:19: note: in expansion of macro 'GET_BDA'
  456 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:457:17: note: in expansion of macro 'GET_BDA'
  457 |     if (cp.x >= GET_BDA(video_cols) || cheight > ARRAY_SIZE(lines))
      |                 ^~~~~~~
  Compile checking build/vgabios-isavga/vgasrc/swcursor.o
  Compile checking build/vgabios-isavga/vgasrc/vgafonts.o
  Compile checking build/vgabios-isavga/vgasrc/vbe.o
In file included from src/biosvar.h:10,
                 from vgasrc/vbe.c:9:
vgasrc/vbe.c: In function 'vbe_104f05':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vbe.c:257:9: note: in expansion of macro 'GET_BDA_EXT'
  257 |     if (GET_BDA_EXT(vbe_mode) & MF_LINEARFB) {
      |         ^~~~~~~~~~~
In function 'vbe_104f10',
    inlined from 'handle_104f' at vgasrc/vbe.c:458:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vbe.c:395:20: note: in expansion of macro 'GET_BDA_EXT'
  395 |         regs->bh = GET_BDA_EXT(flags) & BF_PM_MASK;
      |                    ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:23: note: in expansion of macro 'GET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |                       ^~~~~~~~~~~
vgasrc/vbe.c:392:9: note: in expansion of macro 'MASK_BDA_EXT'
  392 |         MASK_BDA_EXT(flags, BF_PM_MASK, regs->bh & BF_PM_MASK);
      |         ^~~~~~~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/vbe.c:392:9: note: in expansion of macro 'MASK_BDA_EXT'
  392 |         MASK_BDA_EXT(flags, BF_PM_MASK, regs->bh & BF_PM_MASK);
      |         ^~~~~~~~~~~~
In function 'vbe_104f03',
    inlined from 'handle_104f' at vgasrc/vbe.c:451:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vbe.c:227:16: note: in expansion of macro 'GET_BDA_EXT'
  227 |     regs->bx = GET_BDA_EXT(vbe_mode);
      |                ^~~~~~~~~~~
  Compile checking build/vgabios-isavga/vgasrc/stdvga.o
  Compile checking build/vgabios-isavga/vgasrc/stdvgamodes.o
In file included from src/biosvar.h:10,
                 from vgasrc/stdvgamodes.c:8:
vgasrc/stdvgamodes.c: In function 'stdvga_build_video_param':
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/stdvgamodes.c:360:5: note: in expansion of macro 'SET_BDA'
  360 |     SET_BDA(video_savetable
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/stdvgamodes.c:360:5: note: in expansion of macro 'SET_BDA'
  360 |     SET_BDA(video_savetable
      |     ^~~~~~~
  Compile checking build/vgabios-isavga/vgasrc/stdvgaio.o
  Compile checking build/vgabios-isavga/vgasrc/clext.o
  Compile checking build/vgabios-isavga/vgasrc/svgamodes.o
  Compile checking build/vgabios-isavga/vgasrc/atiext.o
  Compile checking build/vgabios-isavga/vgasrc/bochsvga.o
  Compile checking build/vgabios-isavga/vgasrc/geodevga.o
  Compile checking build/vgabios-isavga/src/fw/coreboot.o
  Compile checking build/vgabios-isavga/vgasrc/cbvga.o
In file included from src/biosvar.h:10,
                 from vgasrc/cbvga.c:8:
vgasrc/cbvga.c: In function 'cbvga_set_mode':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/cbvga.c:139:22: note: in expansion of macro 'GET_BDA_EXT'
  139 |     u8 extra_stack = GET_BDA_EXT(flags) & BF_EXTRA_STACK;
      |                      ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/cbvga.c:139:22: note: in expansion of macro 'GET_BDA_EXT'
  139 |     u8 extra_stack = GET_BDA_EXT(flags) & BF_EXTRA_STACK;
      |                      ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/cbvga.c:140:5: note: in expansion of macro 'MASK_BDA_EXT'
  140 |     MASK_BDA_EXT(flags, BF_EMULATE_TEXT, emul ? BF_EMULATE_TEXT : 0);
      |     ^~~~~~~~~~~~
  Compile checking build/vgabios-isavga/vgasrc/bochsdisplay.o
  Compile checking build/vgabios-isavga/vgasrc/ramfb.o
  Compiling whole program build/vgabios-isavga/vgaccode16.raw.s
In file included from ./src/output.c:9,
                 from build/vgabios-isavga/vgaccode16.raw.s.tmp.c:1:
In function 'get_current_mode',
    inlined from 'vgafb_write_pixel' at ./vgasrc/vgafb.c:505:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_read_pixel' at ./vgasrc/vgafb.c:529:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_write_char' at ./vgasrc/vgafb.c:628:33,
    inlined from 'write_char.isra' at ./vgasrc/vgabios.c:161:5:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_clear_chars.constprop.isra' at ./vgasrc/vgafb.c:581:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_move_chars.isra' at ./vgasrc/vgafb.c:561:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'bda_save_restore',
    inlined from 'stdvga_save_restore' at ./vgasrc/stdvga.c:453:12,
    inlined from 'bochsvga_save_restore' at ./vgasrc/bochsvga.c:230:15:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:113:34: note: in definition of macro '__SET_FARVAR'
  113 |         typeof(var) __sfv_val = (val);          \
      |                                  ^~~
./vgasrc/vgabios.c:230:9: note: in expansion of macro 'SET_FARVAR'
  230 |         SET_FARVAR(seg, info->vbe_mode, GET_BDA_EXT(vbe_mode));
      |         ^~~~~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:230:41: note: in expansion of macro 'GET_BDA_EXT'
  230 |         SET_FARVAR(seg, info->vbe_mode, GET_BDA_EXT(vbe_mode));
      |                                         ^~~~~~~~~~~
./src/farptr.h:37:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   37 |     __asm__(prefix "movw %w1, %%" #SEG ":%0" : "=m"(var)        \
      |     ^~~~~~~
./src/farptr.h:73:13: note: in expansion of macro 'WRITE16_SEG'
   73 |             WRITE16_SEG(prefix, seg, var, (val));       \
      |             ^~~~~~~~~~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:240:9: note: in expansion of macro 'SET_BDA_EXT'
  240 |         SET_BDA_EXT(vbe_mode, vbe_mode);
      |         ^~~~~~~~~~~
./src/farptr.h:37:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   37 |     __asm__(prefix "movw %w1, %%" #SEG ":%0" : "=m"(var)        \
      |     ^~~~~~~
./src/farptr.h:73:13: note: in expansion of macro 'WRITE16_SEG'
   73 |             WRITE16_SEG(prefix, seg, var, (val));       \
      |             ^~~~~~~~~~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:242:9: note: in expansion of macro 'SET_BDA_EXT'
  242 |         SET_BDA_EXT(vgamode_offset, (u32)vmode_g);
      |         ^~~~~~~~~~~
./vgasrc/vgabios.c: In function 'vga_set_mode':
./vgasrc/vgabios.h:63:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |                                                             ^~
./src/farptr.h:37:53: note: in definition of macro 'WRITE16_SEG'
   37 |     __asm__(prefix "movw %w1, %%" #SEG ":%0" : "=m"(var)        \
      |                                                     ^~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:282:5: note: in expansion of macro 'SET_BDA_EXT'
  282 |     SET_BDA_EXT(vbe_mode, mode | (flags & MF_VBEFLAGS));
      |     ^~~~~~~~~~~
./vgasrc/vgabios.h:63:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |                                                             ^~
./src/farptr.h:37:53: note: in definition of macro 'WRITE16_SEG'
   37 |     __asm__(prefix "movw %w1, %%" #SEG ":%0" : "=m"(var)        \
      |                                                     ^~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:283:5: note: in expansion of macro 'SET_BDA_EXT'
  283 |     SET_BDA_EXT(vgamode_offset, (u32)vmode_g);
      |     ^~~~~~~~~~~
./vgasrc/vgabios.h:61:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |                                                             ^~
./src/farptr.h:113:34: note: in definition of macro '__SET_FARVAR'
  113 |         typeof(var) __sfv_val = (val);          \
      |                                  ^~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./src/farptr.h:58:9: note: in expansion of macro 'READ8_SEG'
   58 |         READ8_SEG(prefix, seg, __val, var);     \
      |         ^~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:23: note: in expansion of macro 'GET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |                       ^~~~~~~~~~~
./vgasrc/vgabios.c:288:9: note: in expansion of macro 'MASK_BDA_EXT'
  288 |         MASK_BDA_EXT(flags, BF_EXTRA_STACK
      |         ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |                                                             ^~
./src/farptr.h:34:53: note: in definition of macro 'WRITE8_SEG'
   34 |     __asm__(prefix "movb %b1, %%" #SEG ":%0" : "=m"(var)        \
      |                                                     ^~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./vgasrc/vgabios.c:288:9: note: in expansion of macro 'MASK_BDA_EXT'
  288 |         MASK_BDA_EXT(flags, BF_EXTRA_STACK
      |         ^~~~~~~~~~~~
./vgasrc/vbe.c: In function 'vbe_104f05':
./vgasrc/vgabios.h:61:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |                                                             ^~
./src/farptr.h:22:19: note: in definition of macro 'READ16_SEG'
   22 |             : "m"(var), "m"(__segment_ ## SEG))
      |                   ^~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vbe.c:257:9: note: in expansion of macro 'GET_BDA_EXT'
  257 |     if (GET_BDA_EXT(vbe_mode) & MF_LINEARFB) {
      |         ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vbe_104f05' at ./vgasrc/vbe.c:261:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'vbe_104f10',
    inlined from 'handle_104f' at ./vgasrc/vbe.c:458:16:
./src/farptr.h:18:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   18 |     __asm__(prefix "movb %%" #SEG ":%1, %b0" : "=Qi"(value)     \
      |     ^~~~~~~
./src/farptr.h:58:9: note: in expansion of macro 'READ8_SEG'
   58 |         READ8_SEG(prefix, seg, __val, var);     \
      |         ^~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vbe.c:395:20: note: in expansion of macro 'GET_BDA_EXT'
  395 |         regs->bh = GET_BDA_EXT(flags) & BF_PM_MASK;
      |                    ^~~~~~~~~~~
./src/farptr.h:18:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   18 |     __asm__(prefix "movb %%" #SEG ":%1, %b0" : "=Qi"(value)     \
      |     ^~~~~~~
./src/farptr.h:113:34: note: in definition of macro '__SET_FARVAR'
  113 |         typeof(var) __sfv_val = (val);          \
      |                                  ^~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./src/farptr.h:58:9: note: in expansion of macro 'READ8_SEG'
   58 |         READ8_SEG(prefix, seg, __val, var);     \
      |         ^~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:23: note: in expansion of macro 'GET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |                       ^~~~~~~~~~~
./vgasrc/vbe.c:392:9: note: in expansion of macro 'MASK_BDA_EXT'
  392 |         MASK_BDA_EXT(flags, BF_PM_MASK, regs->bh & BF_PM_MASK);
      |         ^~~~~~~~~~~~
./src/farptr.h:34:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   34 |     __asm__(prefix "movb %b1, %%" #SEG ":%0" : "=m"(var)        \
      |     ^~~~~~~
./src/farptr.h:71:13: note: in expansion of macro 'WRITE8_SEG'
   71 |             WRITE8_SEG(prefix, seg, var, (val));        \
      |             ^~~~~~~~~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./vgasrc/vbe.c:392:9: note: in expansion of macro 'MASK_BDA_EXT'
  392 |         MASK_BDA_EXT(flags, BF_PM_MASK, regs->bh & BF_PM_MASK);
      |         ^~~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vbe_104f08' at ./vgasrc/vbe.c:352:33,
    inlined from 'handle_104f' at ./vgasrc/vbe.c:456:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vbe_104f07' at ./vgasrc/vbe.c:316:33,
    inlined from 'handle_104f' at ./vgasrc/vbe.c:455:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vbe_104f06' at ./vgasrc/vbe.c:286:33,
    inlined from 'handle_104f' at ./vgasrc/vbe.c:454:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'vbe_104f03',
    inlined from 'handle_104f' at ./vgasrc/vbe.c:451:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vbe.c:227:16: note: in expansion of macro 'GET_BDA_EXT'
  227 |     regs->bx = GET_BDA_EXT(vbe_mode);
      |                ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_read_char' at ./vgasrc/vgafb.c:650:33,
    inlined from 'handle_1008' at ./vgasrc/vgabios.c:431:25,
    inlined from 'handle_10' at ./vgasrc/vgabios.c:1112:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'set_active_page' at ./vgasrc/vgabios.c:117:33,
    inlined from 'handle_1005' at ./vgasrc/vgabios.c:387:5,
    inlined from 'handle_10' at ./vgasrc/vgabios.c:1109:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
  Fixup VGA rom assembler
  Compiling to assembler build/vgabios-isavga/src/asm-offsets.s
  Generating offset file build/vgabios-isavga/asm-offsets.h
  Compiling (16bit) build/vgabios-isavga/vgaentry.o
  Precompiling build/vgabios-isavga/vgasrc/vgalayout.lds
  Linking build/vgabios-isavga/vgarom.o
Version: 1.16.2-debian-1.16.2-1
ld: warning: build/vgabios-isavga/vgaentry.o: missing .note.GNU-stack section implies executable stack
ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
ld: warning: build/vgabios-isavga/vgarom.o has a LOAD segment with RWX permissions
  Extracting binary build/vgabios-isavga/vgabios.bin.raw
  Finalizing rom build/vgabios-isavga/vgabios.bin
make[1]: Leaving directory '/build/seabios-1.16.2'
rm -f build/vgabios-isavga.bin
ln build/vgabios-isavga/vgabios.bin build/vgabios-isavga.bin

=== Building vgabios-ramfb.bin ===

set -e; if [ ! -e build/vgabios-ramfb/.config.old ]; then rm -rf build/vgabios-ramfb; mkdir -p build/vgabios-ramfb; for x in BUILD_VGABIOS=y VGA_RAMFB=y VGA_PCI=n; do echo CONFIG_$x; done > build/vgabios-ramfb/.config; /usr/bin/make PYTHON="python3 -B" KCONFIG_CONFIG=/build/seabios-1.16.2/build/vgabios-ramfb/.config OUT=build/vgabios-ramfb/ oldnoconfig; fi
make[1]: Entering directory '/build/seabios-1.16.2'
scripts/kconfig/conf --olddefconfig /build/seabios-1.16.2/src/Kconfig
#
# configuration written to /build/seabios-1.16.2/build/vgabios-ramfb/.config
#
make[1]: Leaving directory '/build/seabios-1.16.2'
/usr/bin/make PYTHON="python3 -B" $(cat build/env) KCONFIG_CONFIG=/build/seabios-1.16.2/build/vgabios-ramfb/.config OUT=build/vgabios-ramfb/ build/vgabios-ramfb/vgabios.bin
make[1]: Entering directory '/build/seabios-1.16.2'
  Build Kconfig config file
  Compile checking build/vgabios-ramfb/src/output.o
In file included from src/output.c:9:
src/output.c: In function 'screenc':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
src/output.c:77:25: note: in expansion of macro 'GET_IVT'
   77 |     if (!MODESEGMENT && GET_IVT(0x10).segoff == FUNC16(entry_10).segoff)
      |                         ^~~~~~~
  Compile checking build/vgabios-ramfb/src/string.o
  Compile checking build/vgabios-ramfb/src/hw/pci.o
  Compile checking build/vgabios-ramfb/src/hw/serialio.o
  Compile checking build/vgabios-ramfb/vgasrc/vgainit.o
In file included from vgasrc/vgainit.c:8:
In function 'set_equipment_flags',
    inlined from 'init_bios_area' at vgasrc/vgainit.c:141:5,
    inlined from 'vga_post' at vgasrc/vgainit.c:182:5:
src/biosvar.h:43:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
   43 |     u16 eqf = GET_BDA(equipment_list_flags);
      |         ^~~
In file included from src/biosvar.h:10:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
src/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'init_bios_area',
    inlined from 'vga_post' at vgasrc/vgainit.c:182:5:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgainit.c:144:5: note: in expansion of macro 'SET_BDA'
  144 |     SET_BDA(modeset_ctl, 0x51);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgainit.c:146:5: note: in expansion of macro 'SET_BDA'
  146 |     SET_BDA(dcc_index, CONFIG_VGA_STDVGA_PORTS ? 0x08 : 0xff);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgainit.c:149:5: note: in expansion of macro 'SET_BDA'
  149 |     SET_BDA(video_msr, 0x00); // Unavailable on vanilla vga, but...
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgainit.c:150:5: note: in expansion of macro 'SET_BDA'
  150 |     SET_BDA(video_pal, 0x00); // Unavailable on vanilla vga, but...
      |     ^~~~~~~
vgasrc/vgainit.c: In function 'vga_post':
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgainit.c:188:5: note: in expansion of macro 'SET_IVT'
  188 |     SET_IVT(0x10, SEGOFF(get_global_seg(), (u32)entry_10));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgainit.c:188:5: note: in expansion of macro 'SET_IVT'
  188 |     SET_IVT(0x10, SEGOFF(get_global_seg(), (u32)entry_10));
      |     ^~~~~~~
In function 'allocate_extra_stack',
    inlined from 'vga_post' at vgasrc/vgainit.c:190:5:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgainit.c:97:5: note: in expansion of macro 'SET_IVT'
   97 |     SET_IVT(0x10, SEGOFF(get_global_seg(), (u32)entry_10_extrastack));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgainit.c:97:5: note: in expansion of macro 'SET_IVT'
   97 |     SET_IVT(0x10, SEGOFF(get_global_seg(), (u32)entry_10_extrastack));
      |     ^~~~~~~
In function 'hook_timer_irq',
    inlined from 'vga_post' at vgasrc/vgainit.c:192:5:
vgasrc/vgainit.c:121:21: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  121 |     struct segoff_s oldirq = GET_IVT(0x08);
      |                     ^~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgainit.c:128:5: note: in expansion of macro 'SET_IVT'
  128 |     SET_IVT(0x08, newirq);
      |     ^~~~~~~
  Compile checking build/vgabios-ramfb/vgasrc/vgabios.o
In file included from src/biosvar.h:10,
                 from vgasrc/vgabios.c:8:
vgasrc/vgabios.c: In function 'verify_scroll':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:395:18: note: in expansion of macro 'GET_BDA'
  395 |     u16 nbrows = GET_BDA(video_rows) + 1;
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:398:18: note: in expansion of macro 'GET_BDA'
  398 |     u16 nbcols = GET_BDA(video_cols);
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:410:39: note: in expansion of macro 'GET_BDA'
  410 |     struct cursorpos win = {ulx, uly, GET_BDA(video_page)};
      |                                       ^~~~~~~
vgasrc/vgabios.c: In function 'write_char':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:164:19: note: in expansion of macro 'GET_BDA'
  164 |     if (pcp->x == GET_BDA(video_cols)) {
      |                   ^~~~~~~
vgasrc/vgabios.c: In function 'write_teletype':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:195:18: note: in expansion of macro 'GET_BDA'
  195 |     u16 nbrows = GET_BDA(video_rows);
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:200:37: note: in expansion of macro 'GET_BDA'
  200 |         struct cursorpos winsize = {GET_BDA(video_cols), nbrows+1};
      |                                     ^~~~~~~
vgasrc/vgabios.c: In function 'get_cursor_shape':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:59:23: note: in expansion of macro 'GET_BDA'
   59 |     u16 cursor_type = GET_BDA(cursor_type);
      |                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:60:26: note: in expansion of macro 'GET_BDA'
   60 |     u8 emulate_cursor = (GET_BDA(video_ctl) & 1) == 0;
      |                          ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:65:19: note: in expansion of macro 'GET_BDA'
   65 |     u16 cheight = GET_BDA(char_height);
      |                   ^~~~~~~
vgasrc/vgabios.c: In function 'handle_100e.isra':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:510:42: note: in expansion of macro 'GET_BDA'
  510 |     struct cursorpos cp = get_cursor_pos(GET_BDA(video_page));
      |                                          ^~~~~~~
vgasrc/vgabios.c: In function 'bda_save_restore':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |      ^
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:230:41: note: in expansion of macro 'GET_BDA_EXT'
  230 |         SET_FARVAR(seg, info->vbe_mode, GET_BDA_EXT(vbe_mode));
      |                                         ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |      ^
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgabios.c:231:38: note: in expansion of macro 'GET_IVT'
  231 |         SET_FARVAR(seg, info->font0, GET_IVT(0x1f));
      |                                      ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |      ^
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgabios.c:232:38: note: in expansion of macro 'GET_IVT'
  232 |         SET_FARVAR(seg, info->font1, GET_IVT(0x43));
      |                                      ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:240:9: note: in expansion of macro 'SET_BDA_EXT'
  240 |         SET_BDA_EXT(vbe_mode, vbe_mode);
      |         ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:242:9: note: in expansion of macro 'SET_BDA_EXT'
  242 |         SET_BDA_EXT(vgamode_offset, (u32)vmode_g);
      |         ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:243:9: note: in expansion of macro 'SET_IVT'
  243 |         SET_IVT(0x1f, GET_FARVAR(seg, info->font0));
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:244:9: note: in expansion of macro 'SET_IVT'
  244 |         SET_IVT(0x43, GET_FARVAR(seg, info->font1));
      |         ^~~~~~~
vgasrc/vgabios.c: In function 'get_current_mode':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
vgasrc/vgabios.c: In function 'vga_set_mode':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:281:9: note: in expansion of macro 'SET_BDA'
  281 |         SET_BDA(video_mode, 0xff);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:279:9: note: in expansion of macro 'SET_BDA'
  279 |         SET_BDA(video_mode, mode);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:282:5: note: in expansion of macro 'SET_BDA_EXT'
  282 |     SET_BDA_EXT(vbe_mode, mode | (flags & MF_VBEFLAGS));
      |     ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:283:5: note: in expansion of macro 'SET_BDA_EXT'
  283 |     SET_BDA_EXT(vgamode_offset, (u32)vmode_g);
      |     ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:23: note: in expansion of macro 'GET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |                       ^~~~~~~~~~~
vgasrc/vgabios.c:288:9: note: in expansion of macro 'MASK_BDA_EXT'
  288 |         MASK_BDA_EXT(flags, BF_EXTRA_STACK
      |         ^~~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/vgabios.c:288:9: note: in expansion of macro 'MASK_BDA_EXT'
  288 |         MASK_BDA_EXT(flags, BF_EXTRA_STACK
      |         ^~~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:296:9: note: in expansion of macro 'SET_BDA'
  296 |         SET_BDA(video_cols, width / cwidth);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:297:9: note: in expansion of macro 'SET_BDA'
  297 |         SET_BDA(video_rows, (height / cheight) - 1);
      |         ^~~~~~~
In function 'vga_emulate_text',
    inlined from 'vga_set_mode' at vgasrc/vgabios.c:298:9:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.h:68:39: note: in expansion of macro 'GET_BDA_EXT'
   68 |     return CONFIG_VGA_EMULATE_TEXT && GET_BDA_EXT(flags) & BF_EMULATE_TEXT;
      |                                       ^~~~~~~~~~~
vgasrc/vgabios.c: In function 'vga_set_mode':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:298:9: note: in expansion of macro 'SET_BDA'
  298 |         SET_BDA(cursor_type, vga_emulate_text() ? 0x0607 : 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:291:9: note: in expansion of macro 'SET_BDA'
  291 |         SET_BDA(video_cols, width);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:292:9: note: in expansion of macro 'SET_BDA'
  292 |         SET_BDA(video_rows, height-1);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:293:9: note: in expansion of macro 'SET_BDA'
  293 |         SET_BDA(cursor_type, 0x0607);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:300:5: note: in expansion of macro 'SET_BDA'
  300 |     SET_BDA(video_pagesize, calc_page_size(memmodel, width, height));
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:301:5: note: in expansion of macro 'SET_BDA'
  301 |     SET_BDA(crtc_address, CONFIG_VGA_STDVGA_PORTS ? stdvga_get_crtc() : 0);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:302:5: note: in expansion of macro 'SET_BDA'
  302 |     SET_BDA(char_height, cheight);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:303:5: note: in expansion of macro 'SET_BDA'
  303 |     SET_BDA(video_ctl, 0x60 | (flags & MF_NOCLEARMEM ? 0x80 : 0x00));
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:304:5: note: in expansion of macro 'SET_BDA'
  304 |     SET_BDA(video_switches, 0xF9);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.c:305:5: note: in expansion of macro 'SET_BDA'
  305 |     SET_BDA(modeset_ctl, GET_BDA(modeset_ctl) & 0x7f);
      |     ^~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:305:26: note: in expansion of macro 'GET_BDA'
  305 |     SET_BDA(modeset_ctl, GET_BDA(modeset_ctl) & 0x7f);
      |                          ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:305:5: note: in expansion of macro 'SET_BDA'
  305 |     SET_BDA(modeset_ctl, GET_BDA(modeset_ctl) & 0x7f);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:308:9: note: in expansion of macro 'SET_BDA'
  308 |         SET_BDA(cursor_pos[i], 0x0000);
      |         ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:309:5: note: in expansion of macro 'SET_BDA'
  309 |     SET_BDA(video_pagestart, 0x0000);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:310:5: note: in expansion of macro 'SET_BDA'
  310 |     SET_BDA(video_page, 0x00);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:313:5: note: in expansion of macro 'SET_IVT'
  313 |     SET_IVT(0x1f, SEGOFF(get_global_seg(), (u32)&vgafont8[128 * 8]));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:313:5: note: in expansion of macro 'SET_IVT'
  313 |     SET_IVT(0x1f, SEGOFF(get_global_seg(), (u32)&vgafont8[128 * 8]));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:323:9: note: in expansion of macro 'SET_IVT'
  323 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont16));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:323:9: note: in expansion of macro 'SET_IVT'
  323 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont16));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:320:9: note: in expansion of macro 'SET_IVT'
  320 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont14));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:320:9: note: in expansion of macro 'SET_IVT'
  320 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont14));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:317:9: note: in expansion of macro 'SET_IVT'
  317 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont8));
      |         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:317:9: note: in expansion of macro 'SET_IVT'
  317 |         SET_IVT(0x43, SEGOFF(get_global_seg(), (u32)vgafont8));
      |         ^~~~~~~
vgasrc/vgabios.c: In function 'load_gfx_font':
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:735:5: note: in expansion of macro 'SET_IVT'
  735 |     SET_IVT(0x43, SEGOFF(seg, off));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:735:5: note: in expansion of macro 'SET_IVT'
  735 |     SET_IVT(0x43, SEGOFF(seg, off));
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:751:5: note: in expansion of macro 'SET_BDA'
  751 |     SET_BDA(video_rows, rows - 1);
      |     ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:752:5: note: in expansion of macro 'SET_BDA'
  752 |     SET_BDA(char_height, height);
      |     ^~~~~~~
In function 'handle_101b',
    inlined from 'handle_10' at vgasrc/vgabios.c:1125:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |      ^
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:1062:38: note: in expansion of macro 'GET_BDA'
 1062 |     SET_FARVAR(seg, info->dcc_index, GET_BDA(dcc_index));
      |                                      ^~~~~~~
In function 'handle_101a01',
    inlined from 'handle_101a' at vgasrc/vgabios.c:1032:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1124:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:1016:5: note: in expansion of macro 'SET_BDA'
 1016 |     SET_BDA(dcc_index, regs->bl);
      |     ^~~~~~~
In function 'handle_101a00',
    inlined from 'handle_101a' at vgasrc/vgabios.c:1031:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1124:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:1009:16: note: in expansion of macro 'GET_BDA'
 1009 |     regs->bx = GET_BDA(dcc_index);
      |                ^~~~~~~
In function 'handle_101234',
    inlined from 'handle_1012' at vgasrc/vgabios.c:973:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.c:935:5: note: in expansion of macro 'SET_BDA'
  935 |     SET_BDA(video_ctl, (GET_BDA(video_ctl) & ~0x01) | (regs->al & 0x01));
      |     ^~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:935:25: note: in expansion of macro 'GET_BDA'
  935 |     SET_BDA(video_ctl, (GET_BDA(video_ctl) & ~0x01) | (regs->al & 0x01));
      |                         ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:935:5: note: in expansion of macro 'SET_BDA'
  935 |     SET_BDA(video_ctl, (GET_BDA(video_ctl) & ~0x01) | (regs->al & 0x01));
      |     ^~~~~~~
In function 'handle_101233',
    inlined from 'handle_1012' at vgasrc/vgabios.c:972:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:927:13: note: in expansion of macro 'GET_BDA'
  927 |     u8 v2 = GET_BDA(modeset_ctl) & ~0x02;
      |             ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:928:5: note: in expansion of macro 'SET_BDA'
  928 |     SET_BDA(modeset_ctl, v | v2);
      |     ^~~~~~~
In function 'handle_101231',
    inlined from 'handle_1012' at vgasrc/vgabios.c:970:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:909:15: note: in expansion of macro 'GET_BDA'
  909 |     u8 mctl = GET_BDA(video_ctl) & ~0x08;
      |               ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:910:5: note: in expansion of macro 'SET_BDA'
  910 |     SET_BDA(video_ctl, mctl | v);
      |     ^~~~~~~
In function 'handle_101230',
    inlined from 'handle_1012' at vgasrc/vgabios.c:969:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
vgasrc/vgabios.c:878:8: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  878 |     u8 mctl = GET_BDA(modeset_ctl);
      |        ^~~~
vgasrc/vgabios.c:879:8: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  879 |     u8 vswt = GET_BDA(video_switches);
      |        ^~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:900:5: note: in expansion of macro 'SET_BDA'
  900 |     SET_BDA(modeset_ctl, mctl);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:901:5: note: in expansion of macro 'SET_BDA'
  901 |     SET_BDA(video_switches, vswt);
      |     ^~~~~~~
In function 'handle_101210',
    inlined from 'handle_1012' at vgasrc/vgabios.c:968:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
vgasrc/vgabios.c:867:9: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  867 |     u16 crtc_addr = GET_BDA(crtc_address);
      |         ^~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:872:16: note: in expansion of macro 'GET_BDA'
  872 |     regs->cx = GET_BDA(video_switches) & 0x0f;
      |                ^~~~~~~
In function 'handle_101130',
    inlined from 'handle_1011' at vgasrc/vgabios.c:853:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1121:16:
vgasrc/vgabios.c:790:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  790 |         struct segoff_s so = GET_IVT(0x43);
      |                         ^~
vgasrc/vgabios.c:790:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
vgasrc/vgabios.c:784:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  784 |         struct segoff_s so = GET_IVT(0x1f);
      |                         ^~
vgasrc/vgabios.c:784:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:824:16: note: in expansion of macro 'GET_BDA'
  824 |     regs->cx = GET_BDA(char_height) & 0xff;
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:827:16: note: in expansion of macro 'GET_BDA'
  827 |     regs->dl = GET_BDA(video_rows);
      |                ^~~~~~~
In function 'handle_101120',
    inlined from 'handle_1011' at vgasrc/vgabios.c:854:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1121:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:727:5: note: in expansion of macro 'SET_IVT'
  727 |     SET_IVT(0x1f, SEGOFF(regs->es, regs->bp));
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:22:5: note: in expansion of macro 'SET_FARVAR'
   22 |     SET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector], segoff)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:727:5: note: in expansion of macro 'SET_IVT'
  727 |     SET_IVT(0x1f, SEGOFF(regs->es, regs->bp));
      |     ^~~~~~~
In function 'handle_100f',
    inlined from 'handle_10' at vgasrc/vgabios.c:1119:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:518:16: note: in expansion of macro 'GET_BDA'
  518 |     regs->bh = GET_BDA(video_page);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:519:16: note: in expansion of macro 'GET_BDA'
  519 |     regs->al = GET_BDA(video_mode) | (GET_BDA(video_ctl) & 0x80);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:519:39: note: in expansion of macro 'GET_BDA'
  519 |     regs->al = GET_BDA(video_mode) | (GET_BDA(video_ctl) & 0x80);
      |                                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:520:16: note: in expansion of macro 'GET_BDA'
  520 |     regs->ah = GET_BDA(video_cols);
      |                ^~~~~~~
In function 'get_current_mode',
    inlined from 'set_active_page' at vgasrc/vgabios.c:117:33,
    inlined from 'handle_1005' at vgasrc/vgabios.c:387:5,
    inlined from 'handle_10' at vgasrc/vgabios.c:1109:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'set_active_page',
    inlined from 'handle_1005' at vgasrc/vgabios.c:387:5,
    inlined from 'handle_10' at vgasrc/vgabios.c:1109:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:127:5: note: in expansion of macro 'SET_BDA'
  127 |     SET_BDA(video_pagestart, address);
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:128:5: note: in expansion of macro 'SET_BDA'
  128 |     SET_BDA(video_page, page);
      |     ^~~~~~~
In function 'handle_1003',
    inlined from 'handle_10' at vgasrc/vgabios.c:1107:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:370:16: note: in expansion of macro 'GET_BDA'
  370 |     regs->cx = GET_BDA(cursor_type);
      |                ^~~~~~~
In function 'set_cursor_shape',
    inlined from 'handle_1001' at vgasrc/vgabios.c:357:5,
    inlined from 'handle_10' at vgasrc/vgabios.c:1105:16:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.c:79:5: note: in expansion of macro 'SET_BDA'
   79 |     SET_BDA(cursor_type, cursor_type);
      |     ^~~~~~~
In function 'handle_1000',
    inlined from 'handle_10' at vgasrc/vgabios.c:1104:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:339:30: note: in expansion of macro 'GET_BDA'
  339 |     int flags = MF_LEGACY | (GET_BDA(modeset_ctl) & (MF_NOPALETTE|MF_GRAYSUM));
      |                              ^~~~~~~
  Compile checking build/vgabios-ramfb/vgasrc/vgafb.o
In file included from src/biosvar.h:10,
                 from vgasrc/vgafb.c:8:
vgasrc/vgafb.c: In function 'get_font_data':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:387:23: note: in expansion of macro 'GET_BDA'
  387 |     int char_height = GET_BDA(char_height);
      |                       ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgafb.c:390:16: note: in expansion of macro 'GET_IVT'
  390 |         font = GET_IVT(0x1f);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgafb.c:390:16: note: in expansion of macro 'GET_IVT'
  390 |         font = GET_IVT(0x1f);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgafb.c:393:16: note: in expansion of macro 'GET_IVT'
  393 |         font = GET_IVT(0x43);
      |                ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:20:5: note: in expansion of macro 'GET_FARVAR'
   20 |     GET_FARVAR(SEG_IVT, ((struct rmode_IVT *)0)->ivec[vector])
      |     ^~~~~~~~~~
vgasrc/vgafb.c:393:16: note: in expansion of macro 'GET_IVT'
  393 |         font = GET_IVT(0x43);
      |                ^~~~~~~
vgasrc/vgafb.c: In function 'text_address':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:552:18: note: in expansion of macro 'GET_BDA'
  552 |     int stride = GET_BDA(video_cols) * 2;
      |                  ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:553:22: note: in expansion of macro 'GET_BDA'
  553 |     u32 pageoffset = GET_BDA(video_pagesize) * cp.page;
      |                      ^~~~~~~
vgasrc/vgafb.c: In function 'vgafb_clear_chars.isra':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:590:18: note: in expansion of macro 'GET_BDA'
  590 |     int stride = GET_BDA(video_cols) * 2;
      |                  ^~~~~~~
In function 'gfx_clear_chars',
    inlined from 'vgafb_clear_chars.isra' at vgasrc/vgafb.c:586:9:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:373:19: note: in expansion of macro 'GET_BDA'
  373 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
In function 'vga_emulate_text',
    inlined from 'gfx_clear_chars' at vgasrc/vgafb.c:377:9,
    inlined from 'vgafb_clear_chars.isra' at vgasrc/vgafb.c:586:9:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.h:68:39: note: in expansion of macro 'GET_BDA_EXT'
   68 |     return CONFIG_VGA_EMULATE_TEXT && GET_BDA_EXT(flags) & BF_EMULATE_TEXT;
      |                                       ^~~~~~~~~~~
vgasrc/vgafb.c: In function 'vgafb_move_chars.isra':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:570:18: note: in expansion of macro 'GET_BDA'
  570 |     int stride = GET_BDA(video_cols) * 2;
      |                  ^~~~~~~
In function 'gfx_move_chars',
    inlined from 'vgafb_move_chars.isra' at vgasrc/vgafb.c:566:9:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:356:19: note: in expansion of macro 'GET_BDA'
  356 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
In function 'gfx_write_char',
    inlined from 'vgafb_write_char' at vgasrc/vgafb.c:633:9:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:404:17: note: in expansion of macro 'GET_BDA'
  404 |     if (cp.x >= GET_BDA(video_cols))
      |                 ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:411:19: note: in expansion of macro 'GET_BDA'
  411 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
In function 'vga_emulate_text',
    inlined from 'gfx_write_char' at vgasrc/vgafb.c:415:9,
    inlined from 'vgafb_write_char' at vgasrc/vgafb.c:633:9:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.h:68:39: note: in expansion of macro 'GET_BDA_EXT'
   68 |     return CONFIG_VGA_EMULATE_TEXT && GET_BDA_EXT(flags) & BF_EMULATE_TEXT;
      |                                       ^~~~~~~~~~~
In function 'gfx_read_char',
    inlined from 'vgafb_read_char' at vgasrc/vgafb.c:655:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:456:19: note: in expansion of macro 'GET_BDA'
  456 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/vgafb.c:457:17: note: in expansion of macro 'GET_BDA'
  457 |     if (cp.x >= GET_BDA(video_cols) || cheight > ARRAY_SIZE(lines))
      |                 ^~~~~~~
In function 'vga_emulate_text',
    inlined from 'gfx_read_char' at vgasrc/vgafb.c:468:9,
    inlined from 'vgafb_read_char' at vgasrc/vgafb.c:655:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.h:68:39: note: in expansion of macro 'GET_BDA_EXT'
   68 |     return CONFIG_VGA_EMULATE_TEXT && GET_BDA_EXT(flags) & BF_EMULATE_TEXT;
      |                                       ^~~~~~~~~~~
  Compile checking build/vgabios-ramfb/vgasrc/swcursor.o
In file included from src/biosvar.h:10,
                 from vgasrc/swcursor.c:7:
vgasrc/swcursor.c: In function 'set_swcursor':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/swcursor.c:41:16: note: in expansion of macro 'GET_BDA_EXT'
   41 |     u8 flags = GET_BDA_EXT(flags);
      |                ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/swcursor.c:48:42: note: in expansion of macro 'GET_BDA'
   48 |     struct cursorpos cp = get_cursor_pos(GET_BDA(video_page));
      |                                          ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/swcursor.c:49:17: note: in expansion of macro 'GET_BDA'
   49 |     if (cp.x >= GET_BDA(video_cols) || cp.y > GET_BDA(video_rows)
      |                 ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/swcursor.c:49:47: note: in expansion of macro 'GET_BDA'
   49 |     if (cp.x >= GET_BDA(video_cols) || cp.y > GET_BDA(video_rows)
      |                                               ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/swcursor.c:50:12: note: in expansion of macro 'GET_BDA'
   50 |         || GET_BDA(cursor_type) >= 0x2000)
      |            ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/swcursor.c:54:5: note: in expansion of macro 'SET_BDA_EXT'
   54 |     SET_BDA_EXT(flags, (flags & ~BF_SWCURSOR) | (enable ? BF_SWCURSOR : 0));
      |     ^~~~~~~~~~~
In function 'gfx_set_swcursor',
    inlined from 'set_swcursor' at vgasrc/swcursor.c:57:9:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/swcursor.c:22:19: note: in expansion of macro 'GET_BDA'
   22 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
In function 'vga_emulate_text',
    inlined from 'swcursor_pre_handle10' at vgasrc/swcursor.c:72:10:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.h:68:39: note: in expansion of macro 'GET_BDA_EXT'
   68 |     return CONFIG_VGA_EMULATE_TEXT && GET_BDA_EXT(flags) & BF_EMULATE_TEXT;
      |                                       ^~~~~~~~~~~
In function 'vga_emulate_text',
    inlined from 'swcursor_check_event' at vgasrc/swcursor.c:93:10:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.h:68:39: note: in expansion of macro 'GET_BDA_EXT'
   68 |     return CONFIG_VGA_EMULATE_TEXT && GET_BDA_EXT(flags) & BF_EMULATE_TEXT;
      |                                       ^~~~~~~~~~~
vgasrc/swcursor.c: In function 'swcursor_check_event':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u32[0]' {aka 'unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h:37:5: note: in expansion of macro 'GET_FARVAR'
   37 |     GET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var)
      |     ^~~~~~~~~~
vgasrc/swcursor.c:95:18: note: in expansion of macro 'GET_BDA'
   95 |     set_swcursor(GET_BDA(timer_counter) % 18 < 9);
      |                  ^~~~~~~
  Compile checking build/vgabios-ramfb/vgasrc/vgafonts.o
  Compile checking build/vgabios-ramfb/vgasrc/vbe.o
In file included from src/biosvar.h:10,
                 from vgasrc/vbe.c:9:
vgasrc/vbe.c: In function 'vbe_104f05':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vbe.c:257:9: note: in expansion of macro 'GET_BDA_EXT'
  257 |     if (GET_BDA_EXT(vbe_mode) & MF_LINEARFB) {
      |         ^~~~~~~~~~~
In function 'vbe_104f10',
    inlined from 'handle_104f' at vgasrc/vbe.c:458:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vbe.c:395:20: note: in expansion of macro 'GET_BDA_EXT'
  395 |         regs->bh = GET_BDA_EXT(flags) & BF_PM_MASK;
      |                    ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:38: note: in definition of macro 'SET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                      ^~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:23: note: in expansion of macro 'GET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |                       ^~~~~~~~~~~
vgasrc/vbe.c:392:9: note: in expansion of macro 'MASK_BDA_EXT'
  392 |         MASK_BDA_EXT(flags, BF_PM_MASK, regs->bh & BF_PM_MASK);
      |         ^~~~~~~~~~~~
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/vbe.c:392:9: note: in expansion of macro 'MASK_BDA_EXT'
  392 |         MASK_BDA_EXT(flags, BF_PM_MASK, regs->bh & BF_PM_MASK);
      |         ^~~~~~~~~~~~
In function 'vbe_104f03',
    inlined from 'handle_104f' at vgasrc/vbe.c:451:16:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/vbe.c:227:16: note: in expansion of macro 'GET_BDA_EXT'
  227 |     regs->bx = GET_BDA_EXT(vbe_mode);
      |                ^~~~~~~~~~~
  Compile checking build/vgabios-ramfb/vgasrc/stdvga.o
  Compile checking build/vgabios-ramfb/vgasrc/stdvgamodes.o
In file included from src/biosvar.h:10,
                 from vgasrc/stdvgamodes.c:8:
vgasrc/stdvgamodes.c: In function 'stdvga_build_video_param':
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/stdvgamodes.c:360:5: note: in expansion of macro 'SET_BDA'
  360 |     SET_BDA(video_savetable
      |     ^~~~~~~
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39:5: note: in expansion of macro 'SET_FARVAR'
   39 |     SET_FARVAR(SEG_BDA, ((struct bios_data_area_s *)0)->var, (val))
      |     ^~~~~~~~~~
vgasrc/stdvgamodes.c:360:5: note: in expansion of macro 'SET_BDA'
  360 |     SET_BDA(video_savetable
      |     ^~~~~~~
  Compile checking build/vgabios-ramfb/vgasrc/stdvgaio.o
  Compile checking build/vgabios-ramfb/vgasrc/clext.o
  Compile checking build/vgabios-ramfb/vgasrc/svgamodes.o
  Compile checking build/vgabios-ramfb/vgasrc/atiext.o
  Compile checking build/vgabios-ramfb/vgasrc/bochsvga.o
  Compile checking build/vgabios-ramfb/vgasrc/geodevga.o
  Compile checking build/vgabios-ramfb/src/fw/coreboot.o
  Compile checking build/vgabios-ramfb/vgasrc/cbvga.o
In file included from src/biosvar.h:10,
                 from vgasrc/cbvga.c:8:
vgasrc/cbvga.c: In function 'cbvga_set_mode':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/cbvga.c:139:22: note: in expansion of macro 'GET_BDA_EXT'
  139 |     u8 extra_stack = GET_BDA_EXT(flags) & BF_EXTRA_STACK;
      |                      ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
vgasrc/cbvga.c:139:22: note: in expansion of macro 'GET_BDA_EXT'
  139 |     u8 extra_stack = GET_BDA_EXT(flags) & BF_EXTRA_STACK;
      |                      ^~~~~~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
vgasrc/cbvga.c:140:5: note: in expansion of macro 'MASK_BDA_EXT'
  140 |     MASK_BDA_EXT(flags, BF_EMULATE_TEXT, emul ? BF_EMULATE_TEXT : 0);
      |     ^~~~~~~~~~~~
  Compile checking build/vgabios-ramfb/vgasrc/bochsdisplay.o
  Compile checking build/vgabios-ramfb/vgasrc/ramfb.o
  Compiling whole program build/vgabios-ramfb/vgaccode16.raw.s
In file included from ./src/output.c:9,
                 from build/vgabios-ramfb/vgaccode16.raw.s.tmp.c:1:
./vgasrc/vgabios.h: In function 'vga_emulate_text':
./vgasrc/vgabios.h:61:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |                                                             ^~
./src/farptr.h:19:19: note: in definition of macro 'READ8_SEG'
   19 |             : "m"(var), "m"(__segment_ ## SEG))
      |                   ^~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:68:39: note: in expansion of macro 'GET_BDA_EXT'
   68 |     return CONFIG_VGA_EMULATE_TEXT && GET_BDA_EXT(flags) & BF_EMULATE_TEXT;
      |                                       ^~~~~~~~~~~
./vgasrc/vgabios.c: In function 'bda_save_restore':
./vgasrc/vgabios.h:61:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |                                                             ^~
./src/farptr.h:113:34: note: in definition of macro '__SET_FARVAR'
  113 |         typeof(var) __sfv_val = (val);          \
      |                                  ^~~
./vgasrc/vgabios.c:230:9: note: in expansion of macro 'SET_FARVAR'
  230 |         SET_FARVAR(seg, info->vbe_mode, GET_BDA_EXT(vbe_mode));
      |         ^~~~~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:230:41: note: in expansion of macro 'GET_BDA_EXT'
  230 |         SET_FARVAR(seg, info->vbe_mode, GET_BDA_EXT(vbe_mode));
      |                                         ^~~~~~~~~~~
./vgasrc/vgabios.h:63:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |                                                             ^~
./src/farptr.h:37:53: note: in definition of macro 'WRITE16_SEG'
   37 |     __asm__(prefix "movw %w1, %%" #SEG ":%0" : "=m"(var)        \
      |                                                     ^~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:240:9: note: in expansion of macro 'SET_BDA_EXT'
  240 |         SET_BDA_EXT(vbe_mode, vbe_mode);
      |         ^~~~~~~~~~~
./vgasrc/vgabios.h:63:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |                                                             ^~
./src/farptr.h:37:53: note: in definition of macro 'WRITE16_SEG'
   37 |     __asm__(prefix "movw %w1, %%" #SEG ":%0" : "=m"(var)        \
      |                                                     ^~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:242:9: note: in expansion of macro 'SET_BDA_EXT'
  242 |         SET_BDA_EXT(vgamode_offset, (u32)vmode_g);
      |         ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_write_pixel' at ./vgasrc/vgafb.c:505:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_read_pixel' at ./vgasrc/vgafb.c:529:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
./vgasrc/cbvga.c: In function 'cbvga_set_mode':
./vgasrc/vgabios.h:61:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |                                                             ^~
./src/farptr.h:19:19: note: in definition of macro 'READ8_SEG'
   19 |             : "m"(var), "m"(__segment_ ## SEG))
      |                   ^~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/cbvga.c:139:22: note: in expansion of macro 'GET_BDA_EXT'
  139 |     u8 extra_stack = GET_BDA_EXT(flags) & BF_EXTRA_STACK;
      |                      ^~~~~~~~~~~
./vgasrc/vgabios.h:61:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |                                                             ^~
./src/farptr.h:113:34: note: in definition of macro '__SET_FARVAR'
  113 |         typeof(var) __sfv_val = (val);          \
      |                                  ^~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./src/farptr.h:58:9: note: in expansion of macro 'READ8_SEG'
   58 |         READ8_SEG(prefix, seg, __val, var);     \
      |         ^~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:23: note: in expansion of macro 'GET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |                       ^~~~~~~~~~~
./vgasrc/cbvga.c:140:5: note: in expansion of macro 'MASK_BDA_EXT'
  140 |     MASK_BDA_EXT(flags, BF_EMULATE_TEXT, emul ? BF_EMULATE_TEXT : 0);
      |     ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |                                                             ^~
./src/farptr.h:19:19: note: in definition of macro 'READ8_SEG'
   19 |             : "m"(var), "m"(__segment_ ## SEG))
      |                   ^~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/cbvga.c:139:22: note: in expansion of macro 'GET_BDA_EXT'
  139 |     u8 extra_stack = GET_BDA_EXT(flags) & BF_EXTRA_STACK;
      |                      ^~~~~~~~~~~
./vgasrc/vgabios.h:61:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |                                                             ^~
./src/farptr.h:113:34: note: in definition of macro '__SET_FARVAR'
  113 |         typeof(var) __sfv_val = (val);          \
      |                                  ^~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./src/farptr.h:58:9: note: in expansion of macro 'READ8_SEG'
   58 |         READ8_SEG(prefix, seg, __val, var);     \
      |         ^~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:23: note: in expansion of macro 'GET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |                       ^~~~~~~~~~~
./vgasrc/cbvga.c:140:5: note: in expansion of macro 'MASK_BDA_EXT'
  140 |     MASK_BDA_EXT(flags, BF_EMULATE_TEXT, emul ? BF_EMULATE_TEXT : 0);
      |     ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |                                                             ^~
./src/farptr.h:34:53: note: in definition of macro 'WRITE8_SEG'
   34 |     __asm__(prefix "movb %b1, %%" #SEG ":%0" : "=m"(var)        \
      |                                                     ^~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./vgasrc/cbvga.c:140:5: note: in expansion of macro 'MASK_BDA_EXT'
  140 |     MASK_BDA_EXT(flags, BF_EMULATE_TEXT, emul ? BF_EMULATE_TEXT : 0);
      |     ^~~~~~~~~~~~
./vgasrc/swcursor.c: In function 'set_swcursor':
./vgasrc/vgabios.h:61:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |                                                             ^~
./src/farptr.h:19:19: note: in definition of macro 'READ8_SEG'
   19 |             : "m"(var), "m"(__segment_ ## SEG))
      |                   ^~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/swcursor.c:41:16: note: in expansion of macro 'GET_BDA_EXT'
   41 |     u8 flags = GET_BDA_EXT(flags);
      |                ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'set_swcursor' at ./vgasrc/swcursor.c:45:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
./vgasrc/swcursor.c: In function 'set_swcursor':
./vgasrc/vgabios.h:63:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |                                                             ^~
./src/farptr.h:34:53: note: in definition of macro 'WRITE8_SEG'
   34 |     __asm__(prefix "movb %b1, %%" #SEG ":%0" : "=m"(var)        \
      |                                                     ^~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/swcursor.c:54:5: note: in expansion of macro 'SET_BDA_EXT'
   54 |     SET_BDA_EXT(flags, (flags & ~BF_SWCURSOR) | (enable ? BF_SWCURSOR : 0));
      |     ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_clear_chars.constprop.isra' at ./vgasrc/vgafb.c:581:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_move_chars.isra' at ./vgasrc/vgafb.c:561:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_write_char' at ./vgasrc/vgafb.c:628:33,
    inlined from 'write_char.isra' at ./vgasrc/vgabios.c:161:5:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
./vgasrc/vgabios.c: In function 'vga_set_mode':
./vgasrc/vgabios.h:63:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |                                                             ^~
./src/farptr.h:37:53: note: in definition of macro 'WRITE16_SEG'
   37 |     __asm__(prefix "movw %w1, %%" #SEG ":%0" : "=m"(var)        \
      |                                                     ^~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:282:5: note: in expansion of macro 'SET_BDA_EXT'
  282 |     SET_BDA_EXT(vbe_mode, mode | (flags & MF_VBEFLAGS));
      |     ^~~~~~~~~~~
./vgasrc/vgabios.h:63:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |                                                             ^~
./src/farptr.h:37:53: note: in definition of macro 'WRITE16_SEG'
   37 |     __asm__(prefix "movw %w1, %%" #SEG ":%0" : "=m"(var)        \
      |                                                     ^~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:283:5: note: in expansion of macro 'SET_BDA_EXT'
  283 |     SET_BDA_EXT(vgamode_offset, (u32)vmode_g);
      |     ^~~~~~~~~~~
./vgasrc/vgabios.h:61:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |                                                             ^~
./src/farptr.h:113:34: note: in definition of macro '__SET_FARVAR'
  113 |         typeof(var) __sfv_val = (val);          \
      |                                  ^~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./src/farptr.h:58:9: note: in expansion of macro 'READ8_SEG'
   58 |         READ8_SEG(prefix, seg, __val, var);     \
      |         ^~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:23: note: in expansion of macro 'GET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |                       ^~~~~~~~~~~
./vgasrc/vgabios.c:288:9: note: in expansion of macro 'MASK_BDA_EXT'
  288 |         MASK_BDA_EXT(flags, BF_EXTRA_STACK
      |         ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |                                                             ^~
./src/farptr.h:34:53: note: in definition of macro 'WRITE8_SEG'
   34 |     __asm__(prefix "movb %b1, %%" #SEG ":%0" : "=m"(var)        \
      |                                                     ^~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./vgasrc/vgabios.c:288:9: note: in expansion of macro 'MASK_BDA_EXT'
  288 |         MASK_BDA_EXT(flags, BF_EXTRA_STACK
      |         ^~~~~~~~~~~~
./vgasrc/vbe.c: In function 'vbe_104f05':
./vgasrc/vgabios.h:61:61: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |                                                             ^~
./src/farptr.h:22:19: note: in definition of macro 'READ16_SEG'
   22 |             : "m"(var), "m"(__segment_ ## SEG))
      |                   ^~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vbe.c:257:9: note: in expansion of macro 'GET_BDA_EXT'
  257 |     if (GET_BDA_EXT(vbe_mode) & MF_LINEARFB) {
      |         ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vbe_104f05' at ./vgasrc/vbe.c:261:33:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'vbe_104f10',
    inlined from 'handle_104f' at ./vgasrc/vbe.c:458:16:
./src/farptr.h:18:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   18 |     __asm__(prefix "movb %%" #SEG ":%1, %b0" : "=Qi"(value)     \
      |     ^~~~~~~
./src/farptr.h:58:9: note: in expansion of macro 'READ8_SEG'
   58 |         READ8_SEG(prefix, seg, __val, var);     \
      |         ^~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vbe.c:395:20: note: in expansion of macro 'GET_BDA_EXT'
  395 |         regs->bh = GET_BDA_EXT(flags) & BF_PM_MASK;
      |                    ^~~~~~~~~~~
./src/farptr.h:18:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   18 |     __asm__(prefix "movb %%" #SEG ":%1, %b0" : "=Qi"(value)     \
      |     ^~~~~~~
./src/farptr.h:113:34: note: in definition of macro '__SET_FARVAR'
  113 |         typeof(var) __sfv_val = (val);          \
      |                                  ^~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./src/farptr.h:58:9: note: in expansion of macro 'READ8_SEG'
   58 |         READ8_SEG(prefix, seg, __val, var);     \
      |         ^~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:23: note: in expansion of macro 'GET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |                       ^~~~~~~~~~~
./vgasrc/vbe.c:392:9: note: in expansion of macro 'MASK_BDA_EXT'
  392 |         MASK_BDA_EXT(flags, BF_PM_MASK, regs->bh & BF_PM_MASK);
      |         ^~~~~~~~~~~~
./src/farptr.h:34:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   34 |     __asm__(prefix "movb %b1, %%" #SEG ":%0" : "=m"(var)        \
      |     ^~~~~~~
./src/farptr.h:71:13: note: in expansion of macro 'WRITE8_SEG'
   71 |             WRITE8_SEG(prefix, seg, var, (val));        \
      |             ^~~~~~~~~~
./src/farptr.h:145:32: note: in expansion of macro '__SET_VAR'
  145 | #define SET_VAR(seg, var, val) __SET_VAR("", seg, (var), (val))
      |                                ^~~~~~~~~
./src/farptr.h:115:9: note: in expansion of macro 'SET_VAR'
  115 |         SET_VAR(ES, (var), __sfv_val);          \
      |         ^~~~~~~
./src/farptr.h:143:35: note: in expansion of macro '__SET_FARVAR'
  143 | #define SET_FARVAR(seg, var, val) __SET_FARVAR((seg), (var), (val))
      |                                   ^~~~~~~~~~~~
./vgasrc/vgabios.h:63:5: note: in expansion of macro 'SET_FARVAR'
   63 |     SET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var, (val))
      |     ^~~~~~~~~~
./vgasrc/vgabios.h:65:5: note: in expansion of macro 'SET_BDA_EXT'
   65 |     SET_BDA_EXT(var, (GET_BDA_EXT(var) & ~(off)) | (on))
      |     ^~~~~~~~~~~
./vgasrc/vbe.c:392:9: note: in expansion of macro 'MASK_BDA_EXT'
  392 |         MASK_BDA_EXT(flags, BF_PM_MASK, regs->bh & BF_PM_MASK);
      |         ^~~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vbe_104f08' at ./vgasrc/vbe.c:352:33,
    inlined from 'handle_104f' at ./vgasrc/vbe.c:456:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vbe_104f07' at ./vgasrc/vbe.c:316:33,
    inlined from 'handle_104f' at ./vgasrc/vbe.c:455:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vbe_104f06' at ./vgasrc/vbe.c:286:33,
    inlined from 'handle_104f' at ./vgasrc/vbe.c:454:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'vbe_104f03',
    inlined from 'handle_104f' at ./vgasrc/vbe.c:451:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vbe.c:227:16: note: in expansion of macro 'GET_BDA_EXT'
  227 |     regs->bx = GET_BDA_EXT(vbe_mode);
      |                ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'vgafb_read_char' at ./vgasrc/vgafb.c:650:33,
    inlined from 'handle_1008' at ./vgasrc/vgabios.c:431:25,
    inlined from 'handle_10' at ./vgasrc/vgabios.c:1112:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
In function 'get_current_mode',
    inlined from 'set_active_page' at ./vgasrc/vgabios.c:117:33,
    inlined from 'handle_1005' at ./vgasrc/vgabios.c:387:5,
    inlined from 'handle_10' at ./vgasrc/vgabios.c:1109:16:
./src/farptr.h:21:5: warning: array subscript 0 is outside array bounds of 'struct vga_bda_s[0]' [-Warray-bounds]
   21 |     __asm__(prefix "movw %%" #SEG ":%1, %w0" : "=ri"(value)     \
      |     ^~~~~~~
./src/farptr.h:60:9: note: in expansion of macro 'READ16_SEG'
   60 |         READ16_SEG(prefix, seg, __val, var);    \
      |         ^~~~~~~~~~
./src/farptr.h:144:27: note: in expansion of macro '__GET_VAR'
  144 | #define GET_VAR(seg, var) __GET_VAR("", seg, (var))
      |                           ^~~~~~~~~
./src/farptr.h:111:5: note: in expansion of macro 'GET_VAR'
  111 |     GET_VAR(ES, (var)); })
      |     ^~~~~~~
./src/farptr.h:142:30: note: in expansion of macro '__GET_FARVAR'
  142 | #define GET_FARVAR(seg, var) __GET_FARVAR((seg), (var))
      |                              ^~~~~~~~~~~~
./vgasrc/vgabios.h:61:5: note: in expansion of macro 'GET_FARVAR'
   61 |     GET_FARVAR(SEG_BDA, ((struct vga_bda_s *)VGA_CUSTOM_BDA)->var)
      |     ^~~~~~~~~~
./vgasrc/vgabios.c:257:20: note: in expansion of macro 'GET_BDA_EXT'
  257 |     return (void*)(GET_BDA_EXT(vgamode_offset)+0);
      |                    ^~~~~~~~~~~
  Fixup VGA rom assembler
  Compiling to assembler build/vgabios-ramfb/src/asm-offsets.s
  Generating offset file build/vgabios-ramfb/asm-offsets.h
  Compiling (16bit) build/vgabios-ramfb/vgaentry.o
  Precompiling build/vgabios-ramfb/vgasrc/vgalayout.lds
  Linking build/vgabios-ramfb/vgarom.o
Version: 1.16.2-debian-1.16.2-1
ld: warning: build/vgabios-ramfb/vgaentry.o: missing .note.GNU-stack section implies executable stack
ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
ld: warning: build/vgabios-ramfb/vgarom.o has a LOAD segment with RWX permissions
  Extracting binary build/vgabios-ramfb/vgabios.bin.raw
  Finalizing rom build/vgabios-ramfb/vgabios.bin
make[1]: Leaving directory '/build/seabios-1.16.2'
rm -f build/vgabios-ramfb.bin
ln build/vgabios-ramfb/vgabios.bin build/vgabios-ramfb.bin
dh_testdir
dh_testroot
dh_prep
dh_install build/*.bin build/src/fw/*dsdt.aml usr/share/seabios/
dh_link usr/share/seabios/vgabios-isavga.bin usr/share/seabios/vgabios.bin
dh_testdir
dh_testroot
dh_installdocs
dh_installman
dh_installchangelogs
dh_strip_nondeterminism
dh_compress
dh_fixperms
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
dpkg-deb: building package 'seabios' in '../seabios_1.16.2-1_all.deb'.
 dpkg-genbuildinfo --build=binary -O../seabios_1.16.2-1_i386.buildinfo
 dpkg-genchanges --build=binary -O../seabios_1.16.2-1_i386.changes
dpkg-genchanges: info: binary-only upload (no source code included)
 dpkg-source --after-build .
dpkg-buildpackage: info: binary-only upload (no source included)
dpkg-genchanges: info: including full source code in upload
I: copying local configuration
I: unmounting dev/ptmx filesystem
I: unmounting dev/pts filesystem
I: unmounting dev/shm filesystem
I: unmounting proc filesystem
I: unmounting sys filesystem
I: cleaning the build env 
I: removing directory /srv/workspace/pbuilder/123351 and its subdirectories
I: Current time: Mon May 20 01:42:16 -12 2024
I: pbuilder-time-stamp: 1716212536