Mock Version: 4.1
Mock Version: 4.1
Mock Version: 4.1
ENTER ['do_with_status'](['bash', '--login', '-c', '/usr/bin/rpmbuild -bs --noclean --target x86_64 --nodeps /builddir/build/SPECS/seabios.spec'], chrootPath='/var/lib/mock/dist-ocs23-build-102863-6116/root'env={'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;<mock-chroot>\\007"', 'PS1': '<mock-chroot> \\s-\\v\\$ ', 'LANG': 'C.UTF-8'}shell=Falselogger=<mockbuild.trace_decorator.getLog object at 0x7f12efa72bf0>timeout=86400uid=982gid=135user='mockbuild'nspawn_args=[]unshare_net=TrueprintOutput=False)
Executing command: ['bash', '--login', '-c', '/usr/bin/rpmbuild -bs --noclean --target x86_64 --nodeps /builddir/build/SPECS/seabios.spec'] with env {'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;<mock-chroot>\\007"', 'PS1': '<mock-chroot> \\s-\\v\\$ ', 'LANG': 'C.UTF-8'} and shell False
Building target platforms: x86_64
Building for target x86_64
Wrote: /builddir/build/SRPMS/seabios-1.16.2-2.ocs23.src.rpm
Child return code was: 0
ENTER ['do_with_status'](['bash', '--login', '-c', '/usr/bin/rpmbuild -bb --noclean --target x86_64 --nodeps /builddir/build/SPECS/seabios.spec'], chrootPath='/var/lib/mock/dist-ocs23-build-102863-6116/root'env={'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;<mock-chroot>\\007"', 'PS1': '<mock-chroot> \\s-\\v\\$ ', 'LANG': 'C.UTF-8'}shell=Falselogger=<mockbuild.trace_decorator.getLog object at 0x7f12efa72bf0>timeout=86400uid=982gid=135user='mockbuild'nspawn_args=[]unshare_net=TrueprintOutput=False)
Executing command: ['bash', '--login', '-c', '/usr/bin/rpmbuild -bb --noclean --target x86_64 --nodeps /builddir/build/SPECS/seabios.spec'] with env {'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;<mock-chroot>\\007"', 'PS1': '<mock-chroot> \\s-\\v\\$ ', 'LANG': 'C.UTF-8'} and shell False
Building target platforms: x86_64
Building for target x86_64
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.yc5rSd
+ umask 022
+ cd /builddir/build/BUILD
+ cd /builddir/build/BUILD
+ rm -rf seabios-1.16.2
+ /usr/lib/rpm/rpmuncompress -x /builddir/build/SOURCES/seabios-1.16.2.tar.gz
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd seabios-1.16.2
+ /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w .
+ /usr/lib/rpm/rpmuncompress /builddir/build/SOURCES/0001-Workaround-for-a-win8.1-32-S4-resume-bug.patch
+ /usr/bin/patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f
+ /usr/lib/rpm/rpmuncompress /builddir/build/SOURCES/0003-vgabios-Reorder-video-modes-to-work-around-a-Windows.patch
+ /usr/bin/patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f
+ RPM_EC=0
++ jobs -p
+ exit 0
Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.OpA5ZP
+ umask 022
+ cd /builddir/build/BUILD
+ CFLAGS='-O2  -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/OpenCloudOS/OpenCloudOS-hardened-cc1 -fstack-protector-strong  -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection'
+ export CFLAGS
+ CXXFLAGS='-O2  -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/OpenCloudOS/OpenCloudOS-hardened-cc1 -fstack-protector-strong  -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection'
+ export CXXFLAGS
+ FFLAGS='-O2  -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/OpenCloudOS/OpenCloudOS-hardened-cc1 -fstack-protector-strong  -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -I/usr/lib64/gfortran/modules'
+ export FFLAGS
+ FCFLAGS='-O2  -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/OpenCloudOS/OpenCloudOS-hardened-cc1 -fstack-protector-strong  -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -I/usr/lib64/gfortran/modules'
+ export FCFLAGS
+ LDFLAGS='-Wl,-z,relro -Wl,--as-needed  -Wl,-z,now -specs=/usr/lib/rpm/OpenCloudOS/OpenCloudOS-hardened-ld  -Wl,--build-id=sha1'
+ export LDFLAGS
+ LT_SYS_LIBRARY_PATH=/usr/lib64:
+ export LT_SYS_LIBRARY_PATH
+ CC=gcc
+ export CC
+ CXX=g++
+ export CXX
+ cd seabios-1.16.2
+ export 'CFLAGS=-O2  -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/OpenCloudOS/OpenCloudOS-hardened-cc1 -fstack-protector-strong  -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection'
+ CFLAGS='-O2  -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/OpenCloudOS/OpenCloudOS-hardened-cc1 -fstack-protector-strong  -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection'
+ mkdir binaries
+ build_bios /builddir/build/SOURCES/config.seabios-128k bios.bin bios.bin
+ make clean distclean
scripts/kconfig/conf --olddefconfig /builddir/build/BUILD/seabios-1.16.2/src/Kconfig
#
# configuration written to /builddir/build/BUILD/seabios-1.16.2/.config
#
+ cp /builddir/build/SOURCES/config.seabios-128k .config
+ echo CONFIG_DEBUG_LEVEL=1
+ make oldnoconfig V=1
mkdir -p out//scripts/kconfig/lxdialog
mkdir -p out//include/config
mkdir -p out/src out/src/hw out/src/fw out/vgasrc
make -C out/ -f /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/Makefile srctree=/builddir/build/BUILD/seabios-1.16.2 src=scripts/kconfig obj=scripts/kconfig Q= Kconfig=/builddir/build/BUILD/seabios-1.16.2/src/Kconfig  oldnoconfig
make[1]: Entering directory '/builddir/build/BUILD/seabios-1.16.2/out'
gcc -Iscripts/kconfig -I/builddir/build/BUILD/seabios-1.16.2/scripts/kconfig   -DCURSES_LOC="<curses.h>" -DLOCALE  -c -o scripts/kconfig/conf.o /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/conf.c
cat /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/zconf.tab.c_shipped > scripts/kconfig/zconf.tab.c
cat /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/zconf.lex.c_shipped > scripts/kconfig/zconf.lex.c
cat /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/zconf.hash.c_shipped > scripts/kconfig/zconf.hash.c
gcc -Iscripts/kconfig -I/builddir/build/BUILD/seabios-1.16.2/scripts/kconfig  -Iscripts/kconfig -DCURSES_LOC="<curses.h>" -DLOCALE  -c -o scripts/kconfig/zconf.tab.o scripts/kconfig/zconf.tab.c
gcc  -o scripts/kconfig/conf scripts/kconfig/conf.o scripts/kconfig/zconf.tab.o  
scripts/kconfig/conf --olddefconfig /builddir/build/BUILD/seabios-1.16.2/src/Kconfig
#
# configuration written to /builddir/build/BUILD/seabios-1.16.2/.config
#
make[1]: Leaving directory '/builddir/build/BUILD/seabios-1.16.2/out'
+ make V=1 EXTRAVERSION=-2.ocs23 PYTHON=python3
mkdir -p out//scripts/kconfig/lxdialog
mkdir -p out//include/config
mkdir -p out/src out/src/hw out/src/fw out/vgasrc
make -C out/ -f /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/Makefile srctree=/builddir/build/BUILD/seabios-1.16.2 src=scripts/kconfig obj=scripts/kconfig Q= Kconfig=/builddir/build/BUILD/seabios-1.16.2/src/Kconfig  silentoldconfig
make[1]: Entering directory '/builddir/build/BUILD/seabios-1.16.2/out'
  Build Kconfig config file
mkdir -p include/config include/generated
scripts/kconfig/conf --silentoldconfig /builddir/build/BUILD/seabios-1.16.2/src/Kconfig
make[1]: Leaving directory '/builddir/build/BUILD/seabios-1.16.2/out'
  Compile checking out/src/misc.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/misc.c -o out/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 out/src/stacks.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/stacks.c -o out/src/stacks.o
  Compile checking out/src/output.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/output.c -o out/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 out/src/string.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/string.c -o out/src/string.o
  Compile checking out/src/block.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/block.c -o out/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 out/src/cdrom.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/cdrom.c -o out/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 out/src/disk.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/disk.c -o out/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 out/src/mouse.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/mouse.c -o out/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 out/src/kbd.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/kbd.c -o out/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 out/src/system.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/system.c -o out/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 out/src/serial.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/serial.c -o out/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 out/src/sercon.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/sercon.c -o out/src/sercon.o
  Compile checking out/src/clock.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/clock.c -o out/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:389:11: note: in expansion of macro 'GET_BDA'
  389 |     if (!(GET_BDA(rtc_wait_flag) & RWS_WAIT_PENDING))
      |           ^~~~~~~
In function 'clear_usertimer',
    inlined from 'clear_usertimer' at src/clock.c:387: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:392:5: note: in expansion of macro 'SET_BDA'
  392 |     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 'handle_08':
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/clock.c:312:29: note: in expansion of macro 'GET_IVT'
  312 |     struct segoff_s isr1c = GET_IVT(0x1c);
      |                             ^~~~~~~
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:347:13: note: in expansion of macro 'GET_BDA'
  347 |     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:355:16: note: in expansion of macro 'GET_BDA'
  355 |         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:363:15: note: in expansion of macro 'GET_BDA'
  363 |     return (((GET_BDA(timer_counter) + TICKS_PER_DAY - end) % TICKS_PER_DAY)
      |               ^~~~~~~
In function 'set_usertimer',
    inlined from 'handle_1586' at src/clock.c:409: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:375:9: note: in expansion of macro 'GET_BDA'
  375 |     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:379:5: note: in expansion of macro 'SET_BDA'
  379 |     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:380:5: note: in expansion of macro 'SET_BDA'
  380 |     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:380:5: note: in expansion of macro 'SET_BDA'
  380 |     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:381:5: note: in expansion of macro 'SET_BDA'
  381 |     SET_BDA(user_wait_timeout, usecs);
      |     ^~~~~~~
In function 'set_usertimer',
    inlined from 'handle_158300' at src/clock.c:423:15,
    inlined from 'handle_1583' at src/clock.c:454: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:375:9: note: in expansion of macro 'GET_BDA'
  375 |     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:379:5: note: in expansion of macro 'SET_BDA'
  379 |     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:380:5: note: in expansion of macro 'SET_BDA'
  380 |     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:380:5: note: in expansion of macro 'SET_BDA'
  380 |     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:381:5: note: in expansion of macro 'SET_BDA'
  381 |     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:490:10: note: in expansion of macro 'GET_BDA'
  490 |     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:494:16: note: in expansion of macro 'GET_BDA'
  494 |     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:507:9: note: in expansion of macro 'SET_BDA'
  507 |         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:497:34: note: in expansion of macro 'GET_BDA'
  497 |         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:497:34: note: in expansion of macro 'GET_BDA'
  497 |         struct segoff_s segoff = GET_BDA(user_wait_complete_flag);
      |                                  ^~~~~~~
  Compile checking out/src/resume.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/resume.c -o out/src/resume.o
  Compile checking out/src/pnpbios.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/pnpbios.c -o out/src/pnpbios.o
  Compile checking out/src/vgahooks.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/vgahooks.c -o out/src/vgahooks.o
  Compile checking out/src/pcibios.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/pcibios.c -o out/src/pcibios.o
  Compile checking out/src/apm.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/apm.c -o out/src/apm.o
  Compile checking out/src/cp437.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/cp437.c -o out/src/cp437.o
  Compile checking out/src/hw/pci.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/pci.c -o out/src/hw/pci.o
  Compile checking out/src/hw/timer.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/timer.c -o out/src/hw/timer.o
  Compile checking out/src/hw/rtc.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/rtc.c -o out/src/hw/rtc.o
  Compile checking out/src/hw/dma.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/dma.c -o out/src/hw/dma.o
  Compile checking out/src/hw/pic.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/pic.c -o out/src/hw/pic.o
  Compile checking out/src/hw/ps2port.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/ps2port.c -o out/src/hw/ps2port.o
  Compile checking out/src/hw/serialio.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/serialio.c -o out/src/hw/serialio.o
  Compile checking out/src/hw/usb.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/usb.c -o out/src/hw/usb.o
  Compile checking out/src/hw/usb-uhci.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/usb-uhci.c -o out/src/hw/usb-uhci.o
  Compile checking out/src/hw/usb-ohci.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/usb-ohci.c -o out/src/hw/usb-ohci.o
  Compile checking out/src/hw/usb-ehci.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/usb-ehci.c -o out/src/hw/usb-ehci.o
  Compile checking out/src/hw/usb-hid.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/usb-hid.c -o out/src/hw/usb-hid.o
  Compile checking out/src/hw/usb-msc.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/usb-msc.c -o out/src/hw/usb-msc.o
  Compile checking out/src/hw/usb-uas.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/usb-uas.c -o out/src/hw/usb-uas.o
  Compile checking out/src/hw/blockcmd.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/blockcmd.c -o out/src/hw/blockcmd.o
  Compile checking out/src/hw/floppy.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/floppy.c -o out/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 out/src/hw/ata.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/ata.c -o out/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 out/src/hw/ramdisk.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/ramdisk.c -o out/src/hw/ramdisk.o
  Compile checking out/src/hw/lsi-scsi.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/lsi-scsi.c -o out/src/hw/lsi-scsi.o
  Compile checking out/src/hw/esp-scsi.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/esp-scsi.c -o out/src/hw/esp-scsi.o
  Compile checking out/src/hw/megasas.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/megasas.c -o out/src/hw/megasas.o
  Compile checking out/src/hw/mpt-scsi.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/mpt-scsi.c -o out/src/hw/mpt-scsi.o
  Compile checking out/src/post.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/post.c -o out/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 out/src/e820map.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/e820map.c -o out/src/e820map.o
  Compile checking out/src/malloc.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/malloc.c -o out/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 out/src/romfile.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/romfile.c -o out/src/romfile.o
  Compile checking out/src/x86.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/x86.c -o out/src/x86.o
  Compile checking out/src/optionroms.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/optionroms.c -o out/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 out/src/pmm.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/pmm.c -o out/src/pmm.o
  Compile checking out/src/font.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/font.c -o out/src/font.o
  Compile checking out/src/boot.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/boot.c -o out/src/boot.o
  Compile checking out/src/bootsplash.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/bootsplash.c -o out/src/bootsplash.o
  Compile checking out/src/jpeg.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/jpeg.c -o out/src/jpeg.o
  Compile checking out/src/bmp.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/bmp.c -o out/src/bmp.o
  Compile checking out/src/tcgbios.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/tcgbios.c -o out/src/tcgbios.o
  Compile checking out/src/sha1.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/sha1.c -o out/src/sha1.o
  Compile checking out/src/hw/pcidevice.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/pcidevice.c -o out/src/hw/pcidevice.o
  Compile checking out/src/hw/ahci.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/ahci.c -o out/src/hw/ahci.o
  Compile checking out/src/hw/pvscsi.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/pvscsi.c -o out/src/hw/pvscsi.o
  Compile checking out/src/hw/usb-xhci.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/usb-xhci.c -o out/src/hw/usb-xhci.o
  Compile checking out/src/hw/usb-hub.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/usb-hub.c -o out/src/hw/usb-hub.o
  Compile checking out/src/hw/sdcard.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/sdcard.c -o out/src/hw/sdcard.o
  Compile checking out/src/fw/coreboot.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/coreboot.c -o out/src/fw/coreboot.o
  Compile checking out/src/fw/lzmadecode.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/lzmadecode.c -o out/src/fw/lzmadecode.o
  Compile checking out/src/fw/multiboot.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/multiboot.c -o out/src/fw/multiboot.o
  Compile checking out/src/fw/csm.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/csm.c -o out/src/fw/csm.o
  Compile checking out/src/fw/biostables.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/biostables.c -o out/src/fw/biostables.o
  Compile checking out/src/fw/paravirt.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/paravirt.c -o out/src/fw/paravirt.o
  Compile checking out/src/fw/shadow.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/shadow.c -o out/src/fw/shadow.o
  Compile checking out/src/fw/pciinit.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/pciinit.c -o out/src/fw/pciinit.o
  Compile checking out/src/fw/smm.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/smm.c -o out/src/fw/smm.o
  Compile checking out/src/fw/smp.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/smp.c -o out/src/fw/smp.o
  Compile checking out/src/fw/mtrr.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/mtrr.c -o out/src/fw/mtrr.o
  Compile checking out/src/fw/xen.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/xen.c -o out/src/fw/xen.o
  Compile checking out/src/fw/acpi.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/acpi.c -o out/src/fw/acpi.o
  Compile checking out/src/fw/mptable.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/mptable.c -o out/src/fw/mptable.o
  Compile checking out/src/fw/pirtable.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/pirtable.c -o out/src/fw/pirtable.o
  Compile checking out/src/fw/smbios.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/smbios.c -o out/src/fw/smbios.o
  Compile checking out/src/fw/romfile_loader.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/romfile_loader.c -o out/src/fw/romfile_loader.o
  Compile checking out/src/fw/dsdt_parser.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/dsdt_parser.c -o out/src/fw/dsdt_parser.o
  Compile checking out/src/hw/virtio-ring.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/virtio-ring.c -o out/src/hw/virtio-ring.o
  Compile checking out/src/hw/virtio-pci.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/virtio-pci.c -o out/src/hw/virtio-pci.o
  Compile checking out/src/hw/virtio-mmio.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/virtio-mmio.c -o out/src/hw/virtio-mmio.o
  Compile checking out/src/hw/virtio-blk.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/virtio-blk.c -o out/src/hw/virtio-blk.o
  Compile checking out/src/hw/virtio-scsi.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/virtio-scsi.c -o out/src/hw/virtio-scsi.o
  Compile checking out/src/hw/tpm_drivers.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/tpm_drivers.c -o out/src/hw/tpm_drivers.o
  Compile checking out/src/hw/nvme.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/nvme.c -o out/src/hw/nvme.o
  Compile checking out/src/sha256.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/sha256.c -o out/src/sha256.o
  Compile checking out/src/sha512.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/sha512.c -o out/src/sha512.o
  Compiling whole program out/ccode32flat.o
printf '#include "src/misc.c"\n #include "src/stacks.c"\n #include "src/output.c"\n #include "src/string.c"\n #include "src/block.c"\n #include "src/cdrom.c"\n #include "src/disk.c"\n #include "src/mouse.c"\n #include "src/kbd.c"\n #include "src/system.c"\n #include "src/serial.c"\n #include "src/sercon.c"\n #include "src/clock.c"\n #include "src/resume.c"\n #include "src/pnpbios.c"\n #include "src/vgahooks.c"\n #include "src/pcibios.c"\n #include "src/apm.c"\n #include "src/cp437.c"\n #include "src/hw/pci.c"\n #include "src/hw/timer.c"\n #include "src/hw/rtc.c"\n #include "src/hw/dma.c"\n #include "src/hw/pic.c"\n #include "src/hw/ps2port.c"\n #include "src/hw/serialio.c"\n #include "src/hw/usb.c"\n #include "src/hw/usb-uhci.c"\n #include "src/hw/usb-ohci.c"\n #include "src/hw/usb-ehci.c"\n #include "src/hw/usb-hid.c"\n #include "src/hw/usb-msc.c"\n #include "src/hw/usb-uas.c"\n #include "src/hw/blockcmd.c"\n #include "src/hw/floppy.c"\n #include "src/hw/ata.c"\n #include "src/hw/ramdisk.c"\n #include "src/hw/lsi-scsi.c"\n #include "src/hw/esp-scsi.c"\n #include "src/hw/megasas.c"\n #include "src/hw/mpt-scsi.c"\n #include "src/post.c"\n #include "src/e820map.c"\n #include "src/malloc.c"\n #include "src/romfile.c"\n #include "src/x86.c"\n #include "src/optionroms.c"\n #include "src/pmm.c"\n #include "src/font.c"\n #include "src/boot.c"\n #include "src/bootsplash.c"\n #include "src/jpeg.c"\n #include "src/bmp.c"\n #include "src/tcgbios.c"\n #include "src/sha1.c"\n #include "src/hw/pcidevice.c"\n #include "src/hw/ahci.c"\n #include "src/hw/pvscsi.c"\n #include "src/hw/usb-xhci.c"\n #include "src/hw/usb-hub.c"\n #include "src/hw/sdcard.c"\n #include "src/fw/coreboot.c"\n #include "src/fw/lzmadecode.c"\n #include "src/fw/multiboot.c"\n #include "src/fw/csm.c"\n #include "src/fw/biostables.c"\n #include "src/fw/paravirt.c"\n #include "src/fw/shadow.c"\n #include "src/fw/pciinit.c"\n #include "src/fw/smm.c"\n #include "src/fw/smp.c"\n #include "src/fw/mtrr.c"\n #include "src/fw/xen.c"\n #include "src/fw/acpi.c"\n #include "src/fw/mptable.c"\n #include "src/fw/pirtable.c"\n #include "src/fw/smbios.c"\n #include "src/fw/romfile_loader.c"\n #include "src/fw/dsdt_parser.c"\n #include "src/hw/virtio-ring.c"\n #include "src/hw/virtio-pci.c"\n #include "src/hw/virtio-mmio.c"\n #include "src/hw/virtio-blk.c"\n #include "src/hw/virtio-scsi.c"\n #include "src/hw/tpm_drivers.c"\n #include "src/hw/nvme.c"\n #include "src/sha256.c"\n #include "src/sha512.c"\n' > out/ccode32flat.o.tmp.c
gcc -I.  -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -fwhole-program -DWHOLE_PROGRAM -c out/ccode32flat.o.tmp.c -o out/ccode32flat.o
In file included from ./src/biosvar.h:10,
                 from ./src/misc.c:8,
                 from out/ccode32flat.o.tmp.c:1:
In function 'irqtimer_calc_ticks',
    inlined from 'irqtimer_calc' at ./src/clock.c:356:12,
    inlined from 'irqtimer_calc' at ./src/clock.c:352: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:347:13: note: in expansion of macro 'GET_BDA'
  347 |     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:355:16: note: in expansion of macro 'GET_BDA'
  355 |         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:363:15: note: in expansion of macro 'GET_BDA'
  363 |     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:363:15: note: in expansion of macro 'GET_BDA'
  363 |     return (((GET_BDA(timer_counter) + TICKS_PER_DAY - end) % TICKS_PER_DAY)
      |               ^~~~~~~
In file included from out/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 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:363:15: note: in expansion of macro 'GET_BDA'
  363 |     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 out/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 out/code32seg.o
printf '#include "src/string.c"\n #include "src/output.c"\n #include "src/pcibios.c"\n #include "src/apm.c"\n #include "src/stacks.c"\n #include "src/hw/pci.c"\n #include "src/hw/serialio.c"\n' > out/code32seg.o.tmp.c
gcc -I.  -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=0 -fwhole-program -DWHOLE_PROGRAM -c out/code32seg.o.tmp.c -o out/code32seg.o
  Compiling whole program out/ccode16.o
printf '#include "src/misc.c"\n #include "src/stacks.c"\n #include "src/output.c"\n #include "src/string.c"\n #include "src/block.c"\n #include "src/cdrom.c"\n #include "src/disk.c"\n #include "src/mouse.c"\n #include "src/kbd.c"\n #include "src/system.c"\n #include "src/serial.c"\n #include "src/sercon.c"\n #include "src/clock.c"\n #include "src/resume.c"\n #include "src/pnpbios.c"\n #include "src/vgahooks.c"\n #include "src/pcibios.c"\n #include "src/apm.c"\n #include "src/cp437.c"\n #include "src/hw/pci.c"\n #include "src/hw/timer.c"\n #include "src/hw/rtc.c"\n #include "src/hw/dma.c"\n #include "src/hw/pic.c"\n #include "src/hw/ps2port.c"\n #include "src/hw/serialio.c"\n #include "src/hw/usb.c"\n #include "src/hw/usb-uhci.c"\n #include "src/hw/usb-ohci.c"\n #include "src/hw/usb-ehci.c"\n #include "src/hw/usb-hid.c"\n #include "src/hw/usb-msc.c"\n #include "src/hw/usb-uas.c"\n #include "src/hw/blockcmd.c"\n #include "src/hw/floppy.c"\n #include "src/hw/ata.c"\n #include "src/hw/ramdisk.c"\n #include "src/hw/lsi-scsi.c"\n #include "src/hw/esp-scsi.c"\n #include "src/hw/megasas.c"\n #include "src/hw/mpt-scsi.c"\n' > out/ccode16.o.tmp.c
gcc -I.  -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -fwhole-program -DWHOLE_PROGRAM -c out/ccode16.o.tmp.c -o out/ccode16.o
  Compiling to assembler out/src/asm-offsets.s
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -S -c src/asm-offsets.c -o out/src/asm-offsets.s
  Generating offset file out/asm-offsets.h
./scripts/gen-offsets.sh out/src/asm-offsets.s out/asm-offsets.h
  Compiling (16bit) out/romlayout.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -c -D__ASSEMBLY__ src/romlayout.S -o out/romlayout.o
  Building ld scripts
python3 ./scripts/buildversion.py -e "-2.ocs23" -t "gcc;as;ld;objcopy;objdump;strip" out/autoversion.h
Version: 1.16.2-2.ocs23
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/version.c -o out/version.o
ld -melf_i386 -r out/ccode32flat.o out/version.o -o out/code32flat.o
ld -melf_i386 -r out/ccode16.o out/romlayout.o -o out/code16.o
ld: warning: out/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
objdump -thr out/code32flat.o > out/code32flat.o.objdump
objdump -thr out/code32seg.o > out/code32seg.o.objdump
objdump -thr out/code16.o > out/code16.o.objdump
python3 ./scripts/layoutrom.py out/code16.o.objdump out/code32seg.o.objdump out/code32flat.o.objdump out/autoconf.h out/romlayout16.lds out/romlayout32seg.lds out/romlayout32flat.lds
Fixed space: 0xe05b-0x10000  total: 8101  slack: 15  Percent slack: 0.2%
16bit size:           31328
32bit segmented size: 2297
32bit flat size:      28039
32bit flat init size: 53664
Lowmem size:          2176
f-segment var size:   1216
  Linking out/rom16.o
ld -T out/romlayout16.lds out/code16.o -o out/rom16.o
ld: warning: out/code16.o: requires executable stack (because the .note.GNU-stack section is executable)
ld: warning: out/rom16.o has a LOAD segment with RWX permissions
  Stripping out/rom16.noexec.o
strip out/rom16.o -o out/rom16.o.strip.o
python3 ./scripts/ldnoexec.py out/rom16.o.strip.o out/rom16.noexec.o
  Linking out/rom32seg.o
ld -T out/romlayout32seg.lds out/code32seg.o -o out/rom32seg.o
  Stripping out/rom32seg.noexec.o
strip out/rom32seg.o -o out/rom32seg.o.strip.o
python3 ./scripts/ldnoexec.py out/rom32seg.o.strip.o out/rom32seg.noexec.o
  Linking out/rom.o
ld -N -T out/romlayout32flat.lds out/rom16.noexec.o out/rom32seg.noexec.o out/code32flat.o -o out/rom.o
ld: warning: out/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: out/rom.o has a LOAD segment with RWX permissions
  Prepping out/bios.bin.prep
rm -f out/bios.bin out/Csm16.bin out/bios.bin.elf
objdump -thr out/rom.o > out/rom.o.objdump
objcopy -O binary out/rom.o out/bios.bin.raw
python3 ./scripts/checkrom.py out/rom.o.objdump 128 out/bios.bin.raw out/bios.bin.prep
Total size: 122976  Fixed: 62880  Free: 8096 (used 93.8% of 128KiB rom)
  Creating out/bios.bin
cp out/bios.bin.prep out/bios.bin
+ cp out/bios.bin binaries/bios.bin
+ build_bios /builddir/build/SOURCES/config.seabios-256k bios.bin bios-256k.bin
+ make clean distclean
+ cp /builddir/build/SOURCES/config.seabios-256k .config
+ echo CONFIG_DEBUG_LEVEL=1
+ make oldnoconfig V=1
mkdir -p out//scripts/kconfig/lxdialog
mkdir -p out//include/config
mkdir -p out/src out/src/hw out/src/fw out/vgasrc
make -C out/ -f /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/Makefile srctree=/builddir/build/BUILD/seabios-1.16.2 src=scripts/kconfig obj=scripts/kconfig Q= Kconfig=/builddir/build/BUILD/seabios-1.16.2/src/Kconfig  oldnoconfig
make[1]: Entering directory '/builddir/build/BUILD/seabios-1.16.2/out'
gcc -Iscripts/kconfig -I/builddir/build/BUILD/seabios-1.16.2/scripts/kconfig   -DCURSES_LOC="<curses.h>" -DLOCALE  -c -o scripts/kconfig/conf.o /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/conf.c
cat /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/zconf.tab.c_shipped > scripts/kconfig/zconf.tab.c
cat /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/zconf.lex.c_shipped > scripts/kconfig/zconf.lex.c
cat /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/zconf.hash.c_shipped > scripts/kconfig/zconf.hash.c
gcc -Iscripts/kconfig -I/builddir/build/BUILD/seabios-1.16.2/scripts/kconfig  -Iscripts/kconfig -DCURSES_LOC="<curses.h>" -DLOCALE  -c -o scripts/kconfig/zconf.tab.o scripts/kconfig/zconf.tab.c
gcc  -o scripts/kconfig/conf scripts/kconfig/conf.o scripts/kconfig/zconf.tab.o  
scripts/kconfig/conf --olddefconfig /builddir/build/BUILD/seabios-1.16.2/src/Kconfig
#
# configuration written to /builddir/build/BUILD/seabios-1.16.2/.config
#
make[1]: Leaving directory '/builddir/build/BUILD/seabios-1.16.2/out'
+ make V=1 EXTRAVERSION=-2.ocs23 PYTHON=python3
mkdir -p out//scripts/kconfig/lxdialog
mkdir -p out//include/config
mkdir -p out/src out/src/hw out/src/fw out/vgasrc
make -C out/ -f /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/Makefile srctree=/builddir/build/BUILD/seabios-1.16.2 src=scripts/kconfig obj=scripts/kconfig Q= Kconfig=/builddir/build/BUILD/seabios-1.16.2/src/Kconfig  silentoldconfig
make[1]: Entering directory '/builddir/build/BUILD/seabios-1.16.2/out'
  Build Kconfig config file
mkdir -p include/config include/generated
scripts/kconfig/conf --silentoldconfig /builddir/build/BUILD/seabios-1.16.2/src/Kconfig
make[1]: Leaving directory '/builddir/build/BUILD/seabios-1.16.2/out'
  Compile checking out/src/misc.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/misc.c -o out/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 out/src/stacks.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/stacks.c -o out/src/stacks.o
  Compile checking out/src/output.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/output.c -o out/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 out/src/string.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/string.c -o out/src/string.o
  Compile checking out/src/block.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/block.c -o out/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 out/src/cdrom.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/cdrom.c -o out/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 out/src/disk.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/disk.c -o out/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 out/src/mouse.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/mouse.c -o out/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 out/src/kbd.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/kbd.c -o out/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 out/src/system.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/system.c -o out/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 out/src/serial.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/serial.c -o out/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 out/src/sercon.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/sercon.c -o out/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 out/src/clock.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/clock.c -o out/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:389:11: note: in expansion of macro 'GET_BDA'
  389 |     if (!(GET_BDA(rtc_wait_flag) & RWS_WAIT_PENDING))
      |           ^~~~~~~
In function 'clear_usertimer',
    inlined from 'clear_usertimer' at src/clock.c:387: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:392:5: note: in expansion of macro 'SET_BDA'
  392 |     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 'handle_08':
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/clock.c:312:29: note: in expansion of macro 'GET_IVT'
  312 |     struct segoff_s isr1c = GET_IVT(0x1c);
      |                             ^~~~~~~
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:347:13: note: in expansion of macro 'GET_BDA'
  347 |     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:355:16: note: in expansion of macro 'GET_BDA'
  355 |         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:363:15: note: in expansion of macro 'GET_BDA'
  363 |     return (((GET_BDA(timer_counter) + TICKS_PER_DAY - end) % TICKS_PER_DAY)
      |               ^~~~~~~
In function 'set_usertimer',
    inlined from 'handle_1586' at src/clock.c:409: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:375:9: note: in expansion of macro 'GET_BDA'
  375 |     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:379:5: note: in expansion of macro 'SET_BDA'
  379 |     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:380:5: note: in expansion of macro 'SET_BDA'
  380 |     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:380:5: note: in expansion of macro 'SET_BDA'
  380 |     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:381:5: note: in expansion of macro 'SET_BDA'
  381 |     SET_BDA(user_wait_timeout, usecs);
      |     ^~~~~~~
In function 'set_usertimer',
    inlined from 'handle_158300' at src/clock.c:423:15,
    inlined from 'handle_1583' at src/clock.c:454: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:375:9: note: in expansion of macro 'GET_BDA'
  375 |     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:379:5: note: in expansion of macro 'SET_BDA'
  379 |     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:380:5: note: in expansion of macro 'SET_BDA'
  380 |     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:380:5: note: in expansion of macro 'SET_BDA'
  380 |     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:381:5: note: in expansion of macro 'SET_BDA'
  381 |     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:490:10: note: in expansion of macro 'GET_BDA'
  490 |     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:494:16: note: in expansion of macro 'GET_BDA'
  494 |     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:507:9: note: in expansion of macro 'SET_BDA'
  507 |         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:497:34: note: in expansion of macro 'GET_BDA'
  497 |         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:497:34: note: in expansion of macro 'GET_BDA'
  497 |         struct segoff_s segoff = GET_BDA(user_wait_complete_flag);
      |                                  ^~~~~~~
  Compile checking out/src/resume.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/resume.c -o out/src/resume.o
  Compile checking out/src/pnpbios.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/pnpbios.c -o out/src/pnpbios.o
  Compile checking out/src/vgahooks.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/vgahooks.c -o out/src/vgahooks.o
  Compile checking out/src/pcibios.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/pcibios.c -o out/src/pcibios.o
  Compile checking out/src/apm.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/apm.c -o out/src/apm.o
  Compile checking out/src/cp437.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/cp437.c -o out/src/cp437.o
  Compile checking out/src/hw/pci.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/pci.c -o out/src/hw/pci.o
  Compile checking out/src/hw/timer.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/timer.c -o out/src/hw/timer.o
  Compile checking out/src/hw/rtc.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/rtc.c -o out/src/hw/rtc.o
  Compile checking out/src/hw/dma.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/dma.c -o out/src/hw/dma.o
  Compile checking out/src/hw/pic.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/pic.c -o out/src/hw/pic.o
  Compile checking out/src/hw/ps2port.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/ps2port.c -o out/src/hw/ps2port.o
  Compile checking out/src/hw/serialio.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/serialio.c -o out/src/hw/serialio.o
  Compile checking out/src/hw/usb.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/usb.c -o out/src/hw/usb.o
  Compile checking out/src/hw/usb-uhci.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/usb-uhci.c -o out/src/hw/usb-uhci.o
  Compile checking out/src/hw/usb-ohci.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/usb-ohci.c -o out/src/hw/usb-ohci.o
  Compile checking out/src/hw/usb-ehci.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/usb-ehci.c -o out/src/hw/usb-ehci.o
  Compile checking out/src/hw/usb-hid.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/usb-hid.c -o out/src/hw/usb-hid.o
  Compile checking out/src/hw/usb-msc.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/usb-msc.c -o out/src/hw/usb-msc.o
  Compile checking out/src/hw/usb-uas.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/usb-uas.c -o out/src/hw/usb-uas.o
  Compile checking out/src/hw/blockcmd.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/blockcmd.c -o out/src/hw/blockcmd.o
  Compile checking out/src/hw/floppy.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/floppy.c -o out/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 out/src/hw/ata.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/ata.c -o out/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 out/src/hw/ramdisk.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/ramdisk.c -o out/src/hw/ramdisk.o
  Compile checking out/src/hw/lsi-scsi.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/lsi-scsi.c -o out/src/hw/lsi-scsi.o
  Compile checking out/src/hw/esp-scsi.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/esp-scsi.c -o out/src/hw/esp-scsi.o
  Compile checking out/src/hw/megasas.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/megasas.c -o out/src/hw/megasas.o
  Compile checking out/src/hw/mpt-scsi.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/mpt-scsi.c -o out/src/hw/mpt-scsi.o
  Compile checking out/src/post.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/post.c -o out/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 out/src/e820map.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/e820map.c -o out/src/e820map.o
  Compile checking out/src/malloc.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/malloc.c -o out/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 out/src/romfile.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/romfile.c -o out/src/romfile.o
  Compile checking out/src/x86.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/x86.c -o out/src/x86.o
  Compile checking out/src/optionroms.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/optionroms.c -o out/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 out/src/pmm.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/pmm.c -o out/src/pmm.o
  Compile checking out/src/font.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/font.c -o out/src/font.o
  Compile checking out/src/boot.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/boot.c -o out/src/boot.o
  Compile checking out/src/bootsplash.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/bootsplash.c -o out/src/bootsplash.o
  Compile checking out/src/jpeg.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/jpeg.c -o out/src/jpeg.o
  Compile checking out/src/bmp.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/bmp.c -o out/src/bmp.o
  Compile checking out/src/tcgbios.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/tcgbios.c -o out/src/tcgbios.o
  Compile checking out/src/sha1.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/sha1.c -o out/src/sha1.o
  Compile checking out/src/hw/pcidevice.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/pcidevice.c -o out/src/hw/pcidevice.o
  Compile checking out/src/hw/ahci.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/ahci.c -o out/src/hw/ahci.o
  Compile checking out/src/hw/pvscsi.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/pvscsi.c -o out/src/hw/pvscsi.o
  Compile checking out/src/hw/usb-xhci.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/usb-xhci.c -o out/src/hw/usb-xhci.o
  Compile checking out/src/hw/usb-hub.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/usb-hub.c -o out/src/hw/usb-hub.o
  Compile checking out/src/hw/sdcard.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/sdcard.c -o out/src/hw/sdcard.o
  Compile checking out/src/fw/coreboot.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/coreboot.c -o out/src/fw/coreboot.o
  Compile checking out/src/fw/lzmadecode.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/lzmadecode.c -o out/src/fw/lzmadecode.o
  Compile checking out/src/fw/multiboot.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/multiboot.c -o out/src/fw/multiboot.o
  Compile checking out/src/fw/csm.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/csm.c -o out/src/fw/csm.o
  Compile checking out/src/fw/biostables.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/biostables.c -o out/src/fw/biostables.o
  Compile checking out/src/fw/paravirt.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/paravirt.c -o out/src/fw/paravirt.o
  Compile checking out/src/fw/shadow.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/shadow.c -o out/src/fw/shadow.o
  Compile checking out/src/fw/pciinit.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/pciinit.c -o out/src/fw/pciinit.o
  Compile checking out/src/fw/smm.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/smm.c -o out/src/fw/smm.o
  Compile checking out/src/fw/smp.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/smp.c -o out/src/fw/smp.o
  Compile checking out/src/fw/mtrr.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/mtrr.c -o out/src/fw/mtrr.o
  Compile checking out/src/fw/xen.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/xen.c -o out/src/fw/xen.o
  Compile checking out/src/fw/acpi.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/acpi.c -o out/src/fw/acpi.o
  Compile checking out/src/fw/mptable.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/mptable.c -o out/src/fw/mptable.o
  Compile checking out/src/fw/pirtable.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/pirtable.c -o out/src/fw/pirtable.o
  Compile checking out/src/fw/smbios.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/smbios.c -o out/src/fw/smbios.o
  Compile checking out/src/fw/romfile_loader.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/romfile_loader.c -o out/src/fw/romfile_loader.o
  Compile checking out/src/fw/dsdt_parser.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/dsdt_parser.c -o out/src/fw/dsdt_parser.o
  Compile checking out/src/hw/virtio-ring.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/virtio-ring.c -o out/src/hw/virtio-ring.o
  Compile checking out/src/hw/virtio-pci.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/virtio-pci.c -o out/src/hw/virtio-pci.o
  Compile checking out/src/hw/virtio-mmio.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/virtio-mmio.c -o out/src/hw/virtio-mmio.o
  Compile checking out/src/hw/virtio-blk.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/virtio-blk.c -o out/src/hw/virtio-blk.o
  Compile checking out/src/hw/virtio-scsi.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/virtio-scsi.c -o out/src/hw/virtio-scsi.o
  Compile checking out/src/hw/tpm_drivers.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/tpm_drivers.c -o out/src/hw/tpm_drivers.o
  Compile checking out/src/hw/nvme.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/nvme.c -o out/src/hw/nvme.o
  Compile checking out/src/sha256.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/sha256.c -o out/src/sha256.o
  Compile checking out/src/sha512.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/sha512.c -o out/src/sha512.o
  Compiling whole program out/ccode32flat.o
printf '#include "src/misc.c"\n #include "src/stacks.c"\n #include "src/output.c"\n #include "src/string.c"\n #include "src/block.c"\n #include "src/cdrom.c"\n #include "src/disk.c"\n #include "src/mouse.c"\n #include "src/kbd.c"\n #include "src/system.c"\n #include "src/serial.c"\n #include "src/sercon.c"\n #include "src/clock.c"\n #include "src/resume.c"\n #include "src/pnpbios.c"\n #include "src/vgahooks.c"\n #include "src/pcibios.c"\n #include "src/apm.c"\n #include "src/cp437.c"\n #include "src/hw/pci.c"\n #include "src/hw/timer.c"\n #include "src/hw/rtc.c"\n #include "src/hw/dma.c"\n #include "src/hw/pic.c"\n #include "src/hw/ps2port.c"\n #include "src/hw/serialio.c"\n #include "src/hw/usb.c"\n #include "src/hw/usb-uhci.c"\n #include "src/hw/usb-ohci.c"\n #include "src/hw/usb-ehci.c"\n #include "src/hw/usb-hid.c"\n #include "src/hw/usb-msc.c"\n #include "src/hw/usb-uas.c"\n #include "src/hw/blockcmd.c"\n #include "src/hw/floppy.c"\n #include "src/hw/ata.c"\n #include "src/hw/ramdisk.c"\n #include "src/hw/lsi-scsi.c"\n #include "src/hw/esp-scsi.c"\n #include "src/hw/megasas.c"\n #include "src/hw/mpt-scsi.c"\n #include "src/post.c"\n #include "src/e820map.c"\n #include "src/malloc.c"\n #include "src/romfile.c"\n #include "src/x86.c"\n #include "src/optionroms.c"\n #include "src/pmm.c"\n #include "src/font.c"\n #include "src/boot.c"\n #include "src/bootsplash.c"\n #include "src/jpeg.c"\n #include "src/bmp.c"\n #include "src/tcgbios.c"\n #include "src/sha1.c"\n #include "src/hw/pcidevice.c"\n #include "src/hw/ahci.c"\n #include "src/hw/pvscsi.c"\n #include "src/hw/usb-xhci.c"\n #include "src/hw/usb-hub.c"\n #include "src/hw/sdcard.c"\n #include "src/fw/coreboot.c"\n #include "src/fw/lzmadecode.c"\n #include "src/fw/multiboot.c"\n #include "src/fw/csm.c"\n #include "src/fw/biostables.c"\n #include "src/fw/paravirt.c"\n #include "src/fw/shadow.c"\n #include "src/fw/pciinit.c"\n #include "src/fw/smm.c"\n #include "src/fw/smp.c"\n #include "src/fw/mtrr.c"\n #include "src/fw/xen.c"\n #include "src/fw/acpi.c"\n #include "src/fw/mptable.c"\n #include "src/fw/pirtable.c"\n #include "src/fw/smbios.c"\n #include "src/fw/romfile_loader.c"\n #include "src/fw/dsdt_parser.c"\n #include "src/hw/virtio-ring.c"\n #include "src/hw/virtio-pci.c"\n #include "src/hw/virtio-mmio.c"\n #include "src/hw/virtio-blk.c"\n #include "src/hw/virtio-scsi.c"\n #include "src/hw/tpm_drivers.c"\n #include "src/hw/nvme.c"\n #include "src/sha256.c"\n #include "src/sha512.c"\n' > out/ccode32flat.o.tmp.c
gcc -I.  -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -fwhole-program -DWHOLE_PROGRAM -c out/ccode32flat.o.tmp.c -o out/ccode32flat.o
In file included from ./src/biosvar.h:10,
                 from ./src/misc.c:8,
                 from out/ccode32flat.o.tmp.c:1:
In function 'irqtimer_calc_ticks',
    inlined from 'irqtimer_calc' at ./src/clock.c:356:12,
    inlined from 'irqtimer_calc' at ./src/clock.c:352: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:347:13: note: in expansion of macro 'GET_BDA'
  347 |     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:355:16: note: in expansion of macro 'GET_BDA'
  355 |         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:363:15: note: in expansion of macro 'GET_BDA'
  363 |     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:363:15: note: in expansion of macro 'GET_BDA'
  363 |     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 out/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 out/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:363:15: note: in expansion of macro 'GET_BDA'
  363 |     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 out/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 out/code32seg.o
printf '#include "src/string.c"\n #include "src/output.c"\n #include "src/pcibios.c"\n #include "src/apm.c"\n #include "src/stacks.c"\n #include "src/hw/pci.c"\n #include "src/hw/serialio.c"\n' > out/code32seg.o.tmp.c
gcc -I.  -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=0 -fwhole-program -DWHOLE_PROGRAM -c out/code32seg.o.tmp.c -o out/code32seg.o
  Compiling whole program out/ccode16.o
printf '#include "src/misc.c"\n #include "src/stacks.c"\n #include "src/output.c"\n #include "src/string.c"\n #include "src/block.c"\n #include "src/cdrom.c"\n #include "src/disk.c"\n #include "src/mouse.c"\n #include "src/kbd.c"\n #include "src/system.c"\n #include "src/serial.c"\n #include "src/sercon.c"\n #include "src/clock.c"\n #include "src/resume.c"\n #include "src/pnpbios.c"\n #include "src/vgahooks.c"\n #include "src/pcibios.c"\n #include "src/apm.c"\n #include "src/cp437.c"\n #include "src/hw/pci.c"\n #include "src/hw/timer.c"\n #include "src/hw/rtc.c"\n #include "src/hw/dma.c"\n #include "src/hw/pic.c"\n #include "src/hw/ps2port.c"\n #include "src/hw/serialio.c"\n #include "src/hw/usb.c"\n #include "src/hw/usb-uhci.c"\n #include "src/hw/usb-ohci.c"\n #include "src/hw/usb-ehci.c"\n #include "src/hw/usb-hid.c"\n #include "src/hw/usb-msc.c"\n #include "src/hw/usb-uas.c"\n #include "src/hw/blockcmd.c"\n #include "src/hw/floppy.c"\n #include "src/hw/ata.c"\n #include "src/hw/ramdisk.c"\n #include "src/hw/lsi-scsi.c"\n #include "src/hw/esp-scsi.c"\n #include "src/hw/megasas.c"\n #include "src/hw/mpt-scsi.c"\n' > out/ccode16.o.tmp.c
gcc -I.  -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -fwhole-program -DWHOLE_PROGRAM -c out/ccode16.o.tmp.c -o out/ccode16.o
  Compiling to assembler out/src/asm-offsets.s
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -S -c src/asm-offsets.c -o out/src/asm-offsets.s
  Generating offset file out/asm-offsets.h
./scripts/gen-offsets.sh out/src/asm-offsets.s out/asm-offsets.h
  Compiling (16bit) out/romlayout.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -c -D__ASSEMBLY__ src/romlayout.S -o out/romlayout.o
  Building ld scripts
python3 ./scripts/buildversion.py -e "-2.ocs23" -t "gcc;as;ld;objcopy;objdump;strip" out/autoversion.h
Version: 1.16.2-2.ocs23
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/version.c -o out/version.o
ld -melf_i386 -r out/ccode32flat.o out/version.o -o out/code32flat.o
ld -melf_i386 -r out/ccode16.o out/romlayout.o -o out/code16.o
ld: warning: out/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
objdump -thr out/code32flat.o > out/code32flat.o.objdump
objdump -thr out/code32seg.o > out/code32seg.o.objdump
objdump -thr out/code16.o > out/code16.o.objdump
python3 ./scripts/layoutrom.py out/code16.o.objdump out/code32seg.o.objdump out/code32flat.o.objdump out/autoconf.h out/romlayout16.lds out/romlayout32seg.lds out/romlayout32flat.lds
Fixed space: 0xe05b-0x10000  total: 8101  slack: 16  Percent slack: 0.2%
16bit size:           38176
32bit segmented size: 2297
32bit flat size:      51095
32bit flat init size: 85024
Lowmem size:          2240
f-segment var size:   1232
  Linking out/rom16.o
ld -T out/romlayout16.lds out/code16.o -o out/rom16.o
ld: warning: out/code16.o: requires executable stack (because the .note.GNU-stack section is executable)
ld: warning: out/rom16.o has a LOAD segment with RWX permissions
  Stripping out/rom16.noexec.o
strip out/rom16.o -o out/rom16.o.strip.o
python3 ./scripts/ldnoexec.py out/rom16.o.strip.o out/rom16.noexec.o
  Linking out/rom32seg.o
ld -T out/romlayout32seg.lds out/code32seg.o -o out/rom32seg.o
  Stripping out/rom32seg.noexec.o
strip out/rom32seg.o -o out/rom32seg.o.strip.o
python3 ./scripts/ldnoexec.py out/rom32seg.o.strip.o out/rom32seg.noexec.o
  Linking out/rom.o
ld -N -T out/romlayout32flat.lds out/rom16.noexec.o out/rom32seg.noexec.o out/code32flat.o -o out/rom.o
ld: warning: out/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: out/rom.o has a LOAD segment with RWX permissions
  Prepping out/bios.bin.prep
rm -f out/bios.bin out/Csm16.bin out/bios.bin.elf
objdump -thr out/rom.o > out/rom.o.objdump
objcopy -O binary out/rom.o out/bios.bin.raw
python3 ./scripts/checkrom.py out/rom.o.objdump 256 out/bios.bin.raw out/bios.bin.prep
Total size: 186432  Fixed: 92800  Free: 75712 (used 71.1% of 256KiB rom)
  Creating out/bios.bin
cp out/bios.bin.prep out/bios.bin
+ cp out/bios.bin binaries/bios-256k.bin
+ for config in bochs-display cirrus isavga qxl stdvga ramfb vmware virtio ati
+ build_bios /builddir/build/SOURCES/config.vga-bochs-display vgabios.bin vgabios-bochs-display.bin out/vgabios.bin
+ make clean distclean
+ cp /builddir/build/SOURCES/config.vga-bochs-display .config
+ echo CONFIG_DEBUG_LEVEL=1
+ make oldnoconfig V=1
mkdir -p out//scripts/kconfig/lxdialog
mkdir -p out//include/config
mkdir -p out/src out/src/hw out/src/fw out/vgasrc
make -C out/ -f /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/Makefile srctree=/builddir/build/BUILD/seabios-1.16.2 src=scripts/kconfig obj=scripts/kconfig Q= Kconfig=/builddir/build/BUILD/seabios-1.16.2/src/Kconfig  oldnoconfig
make[1]: Entering directory '/builddir/build/BUILD/seabios-1.16.2/out'
gcc -Iscripts/kconfig -I/builddir/build/BUILD/seabios-1.16.2/scripts/kconfig   -DCURSES_LOC="<curses.h>" -DLOCALE  -c -o scripts/kconfig/conf.o /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/conf.c
cat /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/zconf.tab.c_shipped > scripts/kconfig/zconf.tab.c
cat /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/zconf.lex.c_shipped > scripts/kconfig/zconf.lex.c
cat /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/zconf.hash.c_shipped > scripts/kconfig/zconf.hash.c
gcc -Iscripts/kconfig -I/builddir/build/BUILD/seabios-1.16.2/scripts/kconfig  -Iscripts/kconfig -DCURSES_LOC="<curses.h>" -DLOCALE  -c -o scripts/kconfig/zconf.tab.o scripts/kconfig/zconf.tab.c
gcc  -o scripts/kconfig/conf scripts/kconfig/conf.o scripts/kconfig/zconf.tab.o  
scripts/kconfig/conf --olddefconfig /builddir/build/BUILD/seabios-1.16.2/src/Kconfig
#
# configuration written to /builddir/build/BUILD/seabios-1.16.2/.config
#
make[1]: Leaving directory '/builddir/build/BUILD/seabios-1.16.2/out'
+ make V=1 EXTRAVERSION=-2.ocs23 PYTHON=python3 out/vgabios.bin
mkdir -p out//scripts/kconfig/lxdialog
mkdir -p out//include/config
mkdir -p out/src out/src/hw out/src/fw out/vgasrc
make -C out/ -f /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/Makefile srctree=/builddir/build/BUILD/seabios-1.16.2 src=scripts/kconfig obj=scripts/kconfig Q= Kconfig=/builddir/build/BUILD/seabios-1.16.2/src/Kconfig  silentoldconfig
make[1]: Entering directory '/builddir/build/BUILD/seabios-1.16.2/out'
  Build Kconfig config file
mkdir -p include/config include/generated
scripts/kconfig/conf --silentoldconfig /builddir/build/BUILD/seabios-1.16.2/src/Kconfig
make[1]: Leaving directory '/builddir/build/BUILD/seabios-1.16.2/out'
  Compile checking out/src/output.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/output.c -o out/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 out/src/string.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/string.c -o out/src/string.o
  Compile checking out/src/hw/pci.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/pci.c -o out/src/hw/pci.o
  Compile checking out/src/hw/serialio.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/serialio.c -o out/src/hw/serialio.o
  Compile checking out/vgasrc/vgainit.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vgainit.c -o out/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 out/vgasrc/vgabios.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vgabios.c -o out/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 out/vgasrc/vgafb.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vgafb.c -o out/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 out/vgasrc/swcursor.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/swcursor.c -o out/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 out/vgasrc/vgafonts.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vgafonts.c -o out/vgasrc/vgafonts.o
  Compile checking out/vgasrc/vbe.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vbe.c -o out/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 out/vgasrc/stdvga.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/stdvga.c -o out/vgasrc/stdvga.o
  Compile checking out/vgasrc/stdvgamodes.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/stdvgamodes.c -o out/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 out/vgasrc/stdvgaio.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/stdvgaio.c -o out/vgasrc/stdvgaio.o
  Compile checking out/vgasrc/clext.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/clext.c -o out/vgasrc/clext.o
  Compile checking out/vgasrc/svgamodes.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/svgamodes.c -o out/vgasrc/svgamodes.o
  Compile checking out/vgasrc/atiext.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/atiext.c -o out/vgasrc/atiext.o
  Compile checking out/vgasrc/bochsvga.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/bochsvga.c -o out/vgasrc/bochsvga.o
  Compile checking out/vgasrc/geodevga.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/geodevga.c -o out/vgasrc/geodevga.o
  Compile checking out/src/fw/coreboot.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/coreboot.c -o out/src/fw/coreboot.o
  Compile checking out/vgasrc/cbvga.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/cbvga.c -o out/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 out/vgasrc/bochsdisplay.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/bochsdisplay.c -o out/vgasrc/bochsdisplay.o
  Compile checking out/vgasrc/ramfb.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/ramfb.c -o out/vgasrc/ramfb.o
  Compiling whole program out/vgaccode16.raw.s
printf '#include "src/output.c"\n #include "src/string.c"\n #include "src/hw/pci.c"\n #include "src/hw/serialio.c"\n #include "vgasrc/vgainit.c"\n #include "vgasrc/vgabios.c"\n #include "vgasrc/vgafb.c"\n #include "vgasrc/swcursor.c"\n #include "vgasrc/vgafonts.c"\n #include "vgasrc/vbe.c"\n #include "vgasrc/stdvga.c"\n #include "vgasrc/stdvgamodes.c"\n #include "vgasrc/stdvgaio.c"\n #include "vgasrc/clext.c"\n #include "vgasrc/svgamodes.c"\n #include "vgasrc/atiext.c"\n #include "vgasrc/bochsvga.c"\n #include "vgasrc/geodevga.c"\n #include "src/fw/coreboot.c"\n #include "vgasrc/cbvga.c"\n #include "vgasrc/bochsdisplay.c"\n #include "vgasrc/ramfb.c"\n' > out/vgaccode16.raw.s.tmp.c
gcc -I.  -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -fno-omit-frame-pointer -S -Isrc -fwhole-program -DWHOLE_PROGRAM -c out/vgaccode16.raw.s.tmp.c -o out/vgaccode16.raw.s
In file included from ./src/output.c:9,
                 from out/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
python3 ./scripts/vgafixup.py out/vgaccode16.raw.s out/vgaccode16.s
as --32 src/code16gcc.s out/vgaccode16.s -o out/vgaccode16.o
  Compiling to assembler out/src/asm-offsets.s
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -S -c src/asm-offsets.c -o out/src/asm-offsets.s
  Generating offset file out/asm-offsets.h
./scripts/gen-offsets.sh out/src/asm-offsets.s out/asm-offsets.h
  Compiling (16bit) out/vgaentry.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -c -D__ASSEMBLY__ vgasrc/vgaentry.S -o out/vgaentry.o
  Precompiling out/vgasrc/vgalayout.lds
cpp -P -MD -MT out/vgasrc/vgalayout.lds -D__ASSEMBLY__ vgasrc/vgalayout.lds.S -o out/vgasrc/vgalayout.lds
  Linking out/vgarom.o
python3 ./scripts/buildversion.py -e "-2.ocs23" -t "gcc;as;ld;objcopy;objdump;strip" out/autovgaversion.h
Version: 1.16.2-2.ocs23
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -c vgasrc/vgaversion.c -o out/vgaversion.o
ld --gc-sections -T out/vgasrc/vgalayout.lds out/vgaccode16.o out/vgaentry.o out/vgaversion.o -o out/vgarom.o
ld: warning: out/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: out/vgarom.o has a LOAD segment with RWX permissions
  Extracting binary out/vgabios.bin.raw
objcopy -O binary out/vgarom.o out/vgabios.bin.raw
  Finalizing rom out/vgabios.bin
python3 ./scripts/buildrom.py out/vgabios.bin.raw out/vgabios.bin
+ cp out/vgabios.bin binaries/vgabios-bochs-display.bin
+ for config in bochs-display cirrus isavga qxl stdvga ramfb vmware virtio ati
+ build_bios /builddir/build/SOURCES/config.vga-cirrus vgabios.bin vgabios-cirrus.bin out/vgabios.bin
+ make clean distclean
+ cp /builddir/build/SOURCES/config.vga-cirrus .config
+ echo CONFIG_DEBUG_LEVEL=1
+ make oldnoconfig V=1
mkdir -p out//scripts/kconfig/lxdialog
mkdir -p out//include/config
mkdir -p out/src out/src/hw out/src/fw out/vgasrc
make -C out/ -f /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/Makefile srctree=/builddir/build/BUILD/seabios-1.16.2 src=scripts/kconfig obj=scripts/kconfig Q= Kconfig=/builddir/build/BUILD/seabios-1.16.2/src/Kconfig  oldnoconfig
make[1]: Entering directory '/builddir/build/BUILD/seabios-1.16.2/out'
gcc -Iscripts/kconfig -I/builddir/build/BUILD/seabios-1.16.2/scripts/kconfig   -DCURSES_LOC="<curses.h>" -DLOCALE  -c -o scripts/kconfig/conf.o /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/conf.c
cat /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/zconf.tab.c_shipped > scripts/kconfig/zconf.tab.c
cat /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/zconf.lex.c_shipped > scripts/kconfig/zconf.lex.c
cat /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/zconf.hash.c_shipped > scripts/kconfig/zconf.hash.c
gcc -Iscripts/kconfig -I/builddir/build/BUILD/seabios-1.16.2/scripts/kconfig  -Iscripts/kconfig -DCURSES_LOC="<curses.h>" -DLOCALE  -c -o scripts/kconfig/zconf.tab.o scripts/kconfig/zconf.tab.c
gcc  -o scripts/kconfig/conf scripts/kconfig/conf.o scripts/kconfig/zconf.tab.o  
scripts/kconfig/conf --olddefconfig /builddir/build/BUILD/seabios-1.16.2/src/Kconfig
#
# configuration written to /builddir/build/BUILD/seabios-1.16.2/.config
#
make[1]: Leaving directory '/builddir/build/BUILD/seabios-1.16.2/out'
+ make V=1 EXTRAVERSION=-2.ocs23 PYTHON=python3 out/vgabios.bin
mkdir -p out//scripts/kconfig/lxdialog
mkdir -p out//include/config
mkdir -p out/src out/src/hw out/src/fw out/vgasrc
make -C out/ -f /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/Makefile srctree=/builddir/build/BUILD/seabios-1.16.2 src=scripts/kconfig obj=scripts/kconfig Q= Kconfig=/builddir/build/BUILD/seabios-1.16.2/src/Kconfig  silentoldconfig
make[1]: Entering directory '/builddir/build/BUILD/seabios-1.16.2/out'
  Build Kconfig config file
mkdir -p include/config include/generated
scripts/kconfig/conf --silentoldconfig /builddir/build/BUILD/seabios-1.16.2/src/Kconfig
make[1]: Leaving directory '/builddir/build/BUILD/seabios-1.16.2/out'
  Compile checking out/src/output.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/output.c -o out/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 out/src/string.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/string.c -o out/src/string.o
  Compile checking out/src/hw/pci.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/pci.c -o out/src/hw/pci.o
  Compile checking out/src/hw/serialio.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/serialio.c -o out/src/hw/serialio.o
  Compile checking out/vgasrc/vgainit.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vgainit.c -o out/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 out/vgasrc/vgabios.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vgabios.c -o out/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 out/vgasrc/vgafb.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vgafb.c -o out/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 out/vgasrc/swcursor.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/swcursor.c -o out/vgasrc/swcursor.o
  Compile checking out/vgasrc/vgafonts.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vgafonts.c -o out/vgasrc/vgafonts.o
  Compile checking out/vgasrc/vbe.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vbe.c -o out/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 out/vgasrc/stdvga.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/stdvga.c -o out/vgasrc/stdvga.o
  Compile checking out/vgasrc/stdvgamodes.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/stdvgamodes.c -o out/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 out/vgasrc/stdvgaio.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/stdvgaio.c -o out/vgasrc/stdvgaio.o
  Compile checking out/vgasrc/clext.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/clext.c -o out/vgasrc/clext.o
  Compile checking out/vgasrc/svgamodes.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/svgamodes.c -o out/vgasrc/svgamodes.o
  Compile checking out/vgasrc/atiext.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/atiext.c -o out/vgasrc/atiext.o
  Compile checking out/vgasrc/bochsvga.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/bochsvga.c -o out/vgasrc/bochsvga.o
  Compile checking out/vgasrc/geodevga.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/geodevga.c -o out/vgasrc/geodevga.o
  Compile checking out/src/fw/coreboot.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/coreboot.c -o out/src/fw/coreboot.o
  Compile checking out/vgasrc/cbvga.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/cbvga.c -o out/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 out/vgasrc/bochsdisplay.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/bochsdisplay.c -o out/vgasrc/bochsdisplay.o
  Compile checking out/vgasrc/ramfb.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/ramfb.c -o out/vgasrc/ramfb.o
  Compiling whole program out/vgaccode16.raw.s
printf '#include "src/output.c"\n #include "src/string.c"\n #include "src/hw/pci.c"\n #include "src/hw/serialio.c"\n #include "vgasrc/vgainit.c"\n #include "vgasrc/vgabios.c"\n #include "vgasrc/vgafb.c"\n #include "vgasrc/swcursor.c"\n #include "vgasrc/vgafonts.c"\n #include "vgasrc/vbe.c"\n #include "vgasrc/stdvga.c"\n #include "vgasrc/stdvgamodes.c"\n #include "vgasrc/stdvgaio.c"\n #include "vgasrc/clext.c"\n #include "vgasrc/svgamodes.c"\n #include "vgasrc/atiext.c"\n #include "vgasrc/bochsvga.c"\n #include "vgasrc/geodevga.c"\n #include "src/fw/coreboot.c"\n #include "vgasrc/cbvga.c"\n #include "vgasrc/bochsdisplay.c"\n #include "vgasrc/ramfb.c"\n' > out/vgaccode16.raw.s.tmp.c
gcc -I.  -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -fno-omit-frame-pointer -S -Isrc -fwhole-program -DWHOLE_PROGRAM -c out/vgaccode16.raw.s.tmp.c -o out/vgaccode16.raw.s
In file included from ./src/output.c:9,
                 from out/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
python3 ./scripts/vgafixup.py out/vgaccode16.raw.s out/vgaccode16.s
as --32 src/code16gcc.s out/vgaccode16.s -o out/vgaccode16.o
  Compiling to assembler out/src/asm-offsets.s
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -S -c src/asm-offsets.c -o out/src/asm-offsets.s
  Generating offset file out/asm-offsets.h
./scripts/gen-offsets.sh out/src/asm-offsets.s out/asm-offsets.h
  Compiling (16bit) out/vgaentry.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -c -D__ASSEMBLY__ vgasrc/vgaentry.S -o out/vgaentry.o
  Precompiling out/vgasrc/vgalayout.lds
cpp -P -MD -MT out/vgasrc/vgalayout.lds -D__ASSEMBLY__ vgasrc/vgalayout.lds.S -o out/vgasrc/vgalayout.lds
  Linking out/vgarom.o
python3 ./scripts/buildversion.py -e "-2.ocs23" -t "gcc;as;ld;objcopy;objdump;strip" out/autovgaversion.h
Version: 1.16.2-2.ocs23
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -c vgasrc/vgaversion.c -o out/vgaversion.o
ld --gc-sections -T out/vgasrc/vgalayout.lds out/vgaccode16.o out/vgaentry.o out/vgaversion.o -o out/vgarom.o
ld: warning: out/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: out/vgarom.o has a LOAD segment with RWX permissions
  Extracting binary out/vgabios.bin.raw
objcopy -O binary out/vgarom.o out/vgabios.bin.raw
  Finalizing rom out/vgabios.bin
python3 ./scripts/buildrom.py out/vgabios.bin.raw out/vgabios.bin
+ cp out/vgabios.bin binaries/vgabios-cirrus.bin
+ for config in bochs-display cirrus isavga qxl stdvga ramfb vmware virtio ati
+ build_bios /builddir/build/SOURCES/config.vga-isavga vgabios.bin vgabios-isavga.bin out/vgabios.bin
+ make clean distclean
+ cp /builddir/build/SOURCES/config.vga-isavga .config
+ echo CONFIG_DEBUG_LEVEL=1
+ make oldnoconfig V=1
mkdir -p out//scripts/kconfig/lxdialog
mkdir -p out//include/config
mkdir -p out/src out/src/hw out/src/fw out/vgasrc
make -C out/ -f /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/Makefile srctree=/builddir/build/BUILD/seabios-1.16.2 src=scripts/kconfig obj=scripts/kconfig Q= Kconfig=/builddir/build/BUILD/seabios-1.16.2/src/Kconfig  oldnoconfig
make[1]: Entering directory '/builddir/build/BUILD/seabios-1.16.2/out'
gcc -Iscripts/kconfig -I/builddir/build/BUILD/seabios-1.16.2/scripts/kconfig   -DCURSES_LOC="<curses.h>" -DLOCALE  -c -o scripts/kconfig/conf.o /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/conf.c
cat /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/zconf.tab.c_shipped > scripts/kconfig/zconf.tab.c
cat /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/zconf.lex.c_shipped > scripts/kconfig/zconf.lex.c
cat /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/zconf.hash.c_shipped > scripts/kconfig/zconf.hash.c
gcc -Iscripts/kconfig -I/builddir/build/BUILD/seabios-1.16.2/scripts/kconfig  -Iscripts/kconfig -DCURSES_LOC="<curses.h>" -DLOCALE  -c -o scripts/kconfig/zconf.tab.o scripts/kconfig/zconf.tab.c
gcc  -o scripts/kconfig/conf scripts/kconfig/conf.o scripts/kconfig/zconf.tab.o  
scripts/kconfig/conf --olddefconfig /builddir/build/BUILD/seabios-1.16.2/src/Kconfig
#
# configuration written to /builddir/build/BUILD/seabios-1.16.2/.config
#
make[1]: Leaving directory '/builddir/build/BUILD/seabios-1.16.2/out'
+ make V=1 EXTRAVERSION=-2.ocs23 PYTHON=python3 out/vgabios.bin
mkdir -p out//scripts/kconfig/lxdialog
mkdir -p out//include/config
mkdir -p out/src out/src/hw out/src/fw out/vgasrc
make -C out/ -f /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/Makefile srctree=/builddir/build/BUILD/seabios-1.16.2 src=scripts/kconfig obj=scripts/kconfig Q= Kconfig=/builddir/build/BUILD/seabios-1.16.2/src/Kconfig  silentoldconfig
make[1]: Entering directory '/builddir/build/BUILD/seabios-1.16.2/out'
  Build Kconfig config file
mkdir -p include/config include/generated
scripts/kconfig/conf --silentoldconfig /builddir/build/BUILD/seabios-1.16.2/src/Kconfig
make[1]: Leaving directory '/builddir/build/BUILD/seabios-1.16.2/out'
  Compile checking out/src/output.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/output.c -o out/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 out/src/string.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/string.c -o out/src/string.o
  Compile checking out/src/hw/pci.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/pci.c -o out/src/hw/pci.o
  Compile checking out/src/hw/serialio.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/serialio.c -o out/src/hw/serialio.o
  Compile checking out/vgasrc/vgainit.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vgainit.c -o out/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 out/vgasrc/vgabios.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vgabios.c -o out/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 out/vgasrc/vgafb.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vgafb.c -o out/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 out/vgasrc/swcursor.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/swcursor.c -o out/vgasrc/swcursor.o
  Compile checking out/vgasrc/vgafonts.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vgafonts.c -o out/vgasrc/vgafonts.o
  Compile checking out/vgasrc/vbe.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vbe.c -o out/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 out/vgasrc/stdvga.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/stdvga.c -o out/vgasrc/stdvga.o
  Compile checking out/vgasrc/stdvgamodes.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/stdvgamodes.c -o out/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 out/vgasrc/stdvgaio.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/stdvgaio.c -o out/vgasrc/stdvgaio.o
  Compile checking out/vgasrc/clext.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/clext.c -o out/vgasrc/clext.o
  Compile checking out/vgasrc/svgamodes.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/svgamodes.c -o out/vgasrc/svgamodes.o
  Compile checking out/vgasrc/atiext.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/atiext.c -o out/vgasrc/atiext.o
  Compile checking out/vgasrc/bochsvga.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/bochsvga.c -o out/vgasrc/bochsvga.o
  Compile checking out/vgasrc/geodevga.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/geodevga.c -o out/vgasrc/geodevga.o
  Compile checking out/src/fw/coreboot.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/coreboot.c -o out/src/fw/coreboot.o
  Compile checking out/vgasrc/cbvga.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/cbvga.c -o out/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 out/vgasrc/bochsdisplay.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/bochsdisplay.c -o out/vgasrc/bochsdisplay.o
  Compile checking out/vgasrc/ramfb.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/ramfb.c -o out/vgasrc/ramfb.o
  Compiling whole program out/vgaccode16.raw.s
printf '#include "src/output.c"\n #include "src/string.c"\n #include "src/hw/pci.c"\n #include "src/hw/serialio.c"\n #include "vgasrc/vgainit.c"\n #include "vgasrc/vgabios.c"\n #include "vgasrc/vgafb.c"\n #include "vgasrc/swcursor.c"\n #include "vgasrc/vgafonts.c"\n #include "vgasrc/vbe.c"\n #include "vgasrc/stdvga.c"\n #include "vgasrc/stdvgamodes.c"\n #include "vgasrc/stdvgaio.c"\n #include "vgasrc/clext.c"\n #include "vgasrc/svgamodes.c"\n #include "vgasrc/atiext.c"\n #include "vgasrc/bochsvga.c"\n #include "vgasrc/geodevga.c"\n #include "src/fw/coreboot.c"\n #include "vgasrc/cbvga.c"\n #include "vgasrc/bochsdisplay.c"\n #include "vgasrc/ramfb.c"\n' > out/vgaccode16.raw.s.tmp.c
gcc -I.  -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -fno-omit-frame-pointer -S -Isrc -fwhole-program -DWHOLE_PROGRAM -c out/vgaccode16.raw.s.tmp.c -o out/vgaccode16.raw.s
In file included from ./src/output.c:9,
                 from out/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
python3 ./scripts/vgafixup.py out/vgaccode16.raw.s out/vgaccode16.s
as --32 src/code16gcc.s out/vgaccode16.s -o out/vgaccode16.o
  Compiling to assembler out/src/asm-offsets.s
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -S -c src/asm-offsets.c -o out/src/asm-offsets.s
  Generating offset file out/asm-offsets.h
./scripts/gen-offsets.sh out/src/asm-offsets.s out/asm-offsets.h
  Compiling (16bit) out/vgaentry.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -c -D__ASSEMBLY__ vgasrc/vgaentry.S -o out/vgaentry.o
  Precompiling out/vgasrc/vgalayout.lds
cpp -P -MD -MT out/vgasrc/vgalayout.lds -D__ASSEMBLY__ vgasrc/vgalayout.lds.S -o out/vgasrc/vgalayout.lds
  Linking out/vgarom.o
python3 ./scripts/buildversion.py -e "-2.ocs23" -t "gcc;as;ld;objcopy;objdump;strip" out/autovgaversion.h
Version: 1.16.2-2.ocs23
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -c vgasrc/vgaversion.c -o out/vgaversion.o
ld --gc-sections -T out/vgasrc/vgalayout.lds out/vgaccode16.o out/vgaentry.o out/vgaversion.o -o out/vgarom.o
ld: warning: out/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: out/vgarom.o has a LOAD segment with RWX permissions
  Extracting binary out/vgabios.bin.raw
objcopy -O binary out/vgarom.o out/vgabios.bin.raw
  Finalizing rom out/vgabios.bin
python3 ./scripts/buildrom.py out/vgabios.bin.raw out/vgabios.bin
+ cp out/vgabios.bin binaries/vgabios-isavga.bin
+ for config in bochs-display cirrus isavga qxl stdvga ramfb vmware virtio ati
+ build_bios /builddir/build/SOURCES/config.vga-qxl vgabios.bin vgabios-qxl.bin out/vgabios.bin
+ make clean distclean
+ cp /builddir/build/SOURCES/config.vga-qxl .config
+ echo CONFIG_DEBUG_LEVEL=1
+ make oldnoconfig V=1
mkdir -p out//scripts/kconfig/lxdialog
mkdir -p out//include/config
mkdir -p out/src out/src/hw out/src/fw out/vgasrc
make -C out/ -f /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/Makefile srctree=/builddir/build/BUILD/seabios-1.16.2 src=scripts/kconfig obj=scripts/kconfig Q= Kconfig=/builddir/build/BUILD/seabios-1.16.2/src/Kconfig  oldnoconfig
make[1]: Entering directory '/builddir/build/BUILD/seabios-1.16.2/out'
gcc -Iscripts/kconfig -I/builddir/build/BUILD/seabios-1.16.2/scripts/kconfig   -DCURSES_LOC="<curses.h>" -DLOCALE  -c -o scripts/kconfig/conf.o /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/conf.c
cat /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/zconf.tab.c_shipped > scripts/kconfig/zconf.tab.c
cat /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/zconf.lex.c_shipped > scripts/kconfig/zconf.lex.c
cat /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/zconf.hash.c_shipped > scripts/kconfig/zconf.hash.c
gcc -Iscripts/kconfig -I/builddir/build/BUILD/seabios-1.16.2/scripts/kconfig  -Iscripts/kconfig -DCURSES_LOC="<curses.h>" -DLOCALE  -c -o scripts/kconfig/zconf.tab.o scripts/kconfig/zconf.tab.c
gcc  -o scripts/kconfig/conf scripts/kconfig/conf.o scripts/kconfig/zconf.tab.o  
scripts/kconfig/conf --olddefconfig /builddir/build/BUILD/seabios-1.16.2/src/Kconfig
#
# configuration written to /builddir/build/BUILD/seabios-1.16.2/.config
#
make[1]: Leaving directory '/builddir/build/BUILD/seabios-1.16.2/out'
+ make V=1 EXTRAVERSION=-2.ocs23 PYTHON=python3 out/vgabios.bin
mkdir -p out//scripts/kconfig/lxdialog
mkdir -p out//include/config
mkdir -p out/src out/src/hw out/src/fw out/vgasrc
make -C out/ -f /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/Makefile srctree=/builddir/build/BUILD/seabios-1.16.2 src=scripts/kconfig obj=scripts/kconfig Q= Kconfig=/builddir/build/BUILD/seabios-1.16.2/src/Kconfig  silentoldconfig
make[1]: Entering directory '/builddir/build/BUILD/seabios-1.16.2/out'
  Build Kconfig config file
mkdir -p include/config include/generated
scripts/kconfig/conf --silentoldconfig /builddir/build/BUILD/seabios-1.16.2/src/Kconfig
make[1]: Leaving directory '/builddir/build/BUILD/seabios-1.16.2/out'
  Compile checking out/src/output.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/output.c -o out/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 out/src/string.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/string.c -o out/src/string.o
  Compile checking out/src/hw/pci.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/pci.c -o out/src/hw/pci.o
  Compile checking out/src/hw/serialio.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/serialio.c -o out/src/hw/serialio.o
  Compile checking out/vgasrc/vgainit.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vgainit.c -o out/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 out/vgasrc/vgabios.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vgabios.c -o out/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 out/vgasrc/vgafb.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vgafb.c -o out/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 out/vgasrc/swcursor.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/swcursor.c -o out/vgasrc/swcursor.o
  Compile checking out/vgasrc/vgafonts.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vgafonts.c -o out/vgasrc/vgafonts.o
  Compile checking out/vgasrc/vbe.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vbe.c -o out/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 out/vgasrc/stdvga.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/stdvga.c -o out/vgasrc/stdvga.o
  Compile checking out/vgasrc/stdvgamodes.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/stdvgamodes.c -o out/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 out/vgasrc/stdvgaio.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/stdvgaio.c -o out/vgasrc/stdvgaio.o
  Compile checking out/vgasrc/clext.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/clext.c -o out/vgasrc/clext.o
  Compile checking out/vgasrc/svgamodes.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/svgamodes.c -o out/vgasrc/svgamodes.o
  Compile checking out/vgasrc/atiext.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/atiext.c -o out/vgasrc/atiext.o
  Compile checking out/vgasrc/bochsvga.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/bochsvga.c -o out/vgasrc/bochsvga.o
  Compile checking out/vgasrc/geodevga.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/geodevga.c -o out/vgasrc/geodevga.o
  Compile checking out/src/fw/coreboot.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/coreboot.c -o out/src/fw/coreboot.o
  Compile checking out/vgasrc/cbvga.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/cbvga.c -o out/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 out/vgasrc/bochsdisplay.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/bochsdisplay.c -o out/vgasrc/bochsdisplay.o
  Compile checking out/vgasrc/ramfb.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/ramfb.c -o out/vgasrc/ramfb.o
  Compiling whole program out/vgaccode16.raw.s
printf '#include "src/output.c"\n #include "src/string.c"\n #include "src/hw/pci.c"\n #include "src/hw/serialio.c"\n #include "vgasrc/vgainit.c"\n #include "vgasrc/vgabios.c"\n #include "vgasrc/vgafb.c"\n #include "vgasrc/swcursor.c"\n #include "vgasrc/vgafonts.c"\n #include "vgasrc/vbe.c"\n #include "vgasrc/stdvga.c"\n #include "vgasrc/stdvgamodes.c"\n #include "vgasrc/stdvgaio.c"\n #include "vgasrc/clext.c"\n #include "vgasrc/svgamodes.c"\n #include "vgasrc/atiext.c"\n #include "vgasrc/bochsvga.c"\n #include "vgasrc/geodevga.c"\n #include "src/fw/coreboot.c"\n #include "vgasrc/cbvga.c"\n #include "vgasrc/bochsdisplay.c"\n #include "vgasrc/ramfb.c"\n' > out/vgaccode16.raw.s.tmp.c
gcc -I.  -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -fno-omit-frame-pointer -S -Isrc -fwhole-program -DWHOLE_PROGRAM -c out/vgaccode16.raw.s.tmp.c -o out/vgaccode16.raw.s
In file included from ./src/output.c:9,
                 from out/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
python3 ./scripts/vgafixup.py out/vgaccode16.raw.s out/vgaccode16.s
as --32 src/code16gcc.s out/vgaccode16.s -o out/vgaccode16.o
  Compiling to assembler out/src/asm-offsets.s
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -S -c src/asm-offsets.c -o out/src/asm-offsets.s
  Generating offset file out/asm-offsets.h
./scripts/gen-offsets.sh out/src/asm-offsets.s out/asm-offsets.h
  Compiling (16bit) out/vgaentry.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -c -D__ASSEMBLY__ vgasrc/vgaentry.S -o out/vgaentry.o
  Precompiling out/vgasrc/vgalayout.lds
cpp -P -MD -MT out/vgasrc/vgalayout.lds -D__ASSEMBLY__ vgasrc/vgalayout.lds.S -o out/vgasrc/vgalayout.lds
  Linking out/vgarom.o
python3 ./scripts/buildversion.py -e "-2.ocs23" -t "gcc;as;ld;objcopy;objdump;strip" out/autovgaversion.h
Version: 1.16.2-2.ocs23
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -c vgasrc/vgaversion.c -o out/vgaversion.o
ld --gc-sections -T out/vgasrc/vgalayout.lds out/vgaccode16.o out/vgaentry.o out/vgaversion.o -o out/vgarom.o
ld: warning: out/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: out/vgarom.o has a LOAD segment with RWX permissions
  Extracting binary out/vgabios.bin.raw
objcopy -O binary out/vgarom.o out/vgabios.bin.raw
  Finalizing rom out/vgabios.bin
python3 ./scripts/buildrom.py out/vgabios.bin.raw out/vgabios.bin
+ cp out/vgabios.bin binaries/vgabios-qxl.bin
+ for config in bochs-display cirrus isavga qxl stdvga ramfb vmware virtio ati
+ build_bios /builddir/build/SOURCES/config.vga-stdvga vgabios.bin vgabios-stdvga.bin out/vgabios.bin
+ make clean distclean
+ cp /builddir/build/SOURCES/config.vga-stdvga .config
+ echo CONFIG_DEBUG_LEVEL=1
+ make oldnoconfig V=1
mkdir -p out//scripts/kconfig/lxdialog
mkdir -p out//include/config
mkdir -p out/src out/src/hw out/src/fw out/vgasrc
make -C out/ -f /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/Makefile srctree=/builddir/build/BUILD/seabios-1.16.2 src=scripts/kconfig obj=scripts/kconfig Q= Kconfig=/builddir/build/BUILD/seabios-1.16.2/src/Kconfig  oldnoconfig
make[1]: Entering directory '/builddir/build/BUILD/seabios-1.16.2/out'
gcc -Iscripts/kconfig -I/builddir/build/BUILD/seabios-1.16.2/scripts/kconfig   -DCURSES_LOC="<curses.h>" -DLOCALE  -c -o scripts/kconfig/conf.o /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/conf.c
cat /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/zconf.tab.c_shipped > scripts/kconfig/zconf.tab.c
cat /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/zconf.lex.c_shipped > scripts/kconfig/zconf.lex.c
cat /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/zconf.hash.c_shipped > scripts/kconfig/zconf.hash.c
gcc -Iscripts/kconfig -I/builddir/build/BUILD/seabios-1.16.2/scripts/kconfig  -Iscripts/kconfig -DCURSES_LOC="<curses.h>" -DLOCALE  -c -o scripts/kconfig/zconf.tab.o scripts/kconfig/zconf.tab.c
gcc  -o scripts/kconfig/conf scripts/kconfig/conf.o scripts/kconfig/zconf.tab.o  
scripts/kconfig/conf --olddefconfig /builddir/build/BUILD/seabios-1.16.2/src/Kconfig
#
# configuration written to /builddir/build/BUILD/seabios-1.16.2/.config
#
make[1]: Leaving directory '/builddir/build/BUILD/seabios-1.16.2/out'
+ make V=1 EXTRAVERSION=-2.ocs23 PYTHON=python3 out/vgabios.bin
mkdir -p out//scripts/kconfig/lxdialog
mkdir -p out//include/config
mkdir -p out/src out/src/hw out/src/fw out/vgasrc
make -C out/ -f /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/Makefile srctree=/builddir/build/BUILD/seabios-1.16.2 src=scripts/kconfig obj=scripts/kconfig Q= Kconfig=/builddir/build/BUILD/seabios-1.16.2/src/Kconfig  silentoldconfig
make[1]: Entering directory '/builddir/build/BUILD/seabios-1.16.2/out'
  Build Kconfig config file
mkdir -p include/config include/generated
scripts/kconfig/conf --silentoldconfig /builddir/build/BUILD/seabios-1.16.2/src/Kconfig
make[1]: Leaving directory '/builddir/build/BUILD/seabios-1.16.2/out'
  Compile checking out/src/output.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/output.c -o out/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 out/src/string.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/string.c -o out/src/string.o
  Compile checking out/src/hw/pci.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/pci.c -o out/src/hw/pci.o
  Compile checking out/src/hw/serialio.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/serialio.c -o out/src/hw/serialio.o
  Compile checking out/vgasrc/vgainit.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vgainit.c -o out/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 out/vgasrc/vgabios.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vgabios.c -o out/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 out/vgasrc/vgafb.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vgafb.c -o out/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 out/vgasrc/swcursor.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/swcursor.c -o out/vgasrc/swcursor.o
  Compile checking out/vgasrc/vgafonts.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vgafonts.c -o out/vgasrc/vgafonts.o
  Compile checking out/vgasrc/vbe.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vbe.c -o out/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 out/vgasrc/stdvga.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/stdvga.c -o out/vgasrc/stdvga.o
  Compile checking out/vgasrc/stdvgamodes.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/stdvgamodes.c -o out/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 out/vgasrc/stdvgaio.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/stdvgaio.c -o out/vgasrc/stdvgaio.o
  Compile checking out/vgasrc/clext.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/clext.c -o out/vgasrc/clext.o
  Compile checking out/vgasrc/svgamodes.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/svgamodes.c -o out/vgasrc/svgamodes.o
  Compile checking out/vgasrc/atiext.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/atiext.c -o out/vgasrc/atiext.o
  Compile checking out/vgasrc/bochsvga.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/bochsvga.c -o out/vgasrc/bochsvga.o
  Compile checking out/vgasrc/geodevga.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/geodevga.c -o out/vgasrc/geodevga.o
  Compile checking out/src/fw/coreboot.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/coreboot.c -o out/src/fw/coreboot.o
  Compile checking out/vgasrc/cbvga.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/cbvga.c -o out/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 out/vgasrc/bochsdisplay.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/bochsdisplay.c -o out/vgasrc/bochsdisplay.o
  Compile checking out/vgasrc/ramfb.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/ramfb.c -o out/vgasrc/ramfb.o
  Compiling whole program out/vgaccode16.raw.s
printf '#include "src/output.c"\n #include "src/string.c"\n #include "src/hw/pci.c"\n #include "src/hw/serialio.c"\n #include "vgasrc/vgainit.c"\n #include "vgasrc/vgabios.c"\n #include "vgasrc/vgafb.c"\n #include "vgasrc/swcursor.c"\n #include "vgasrc/vgafonts.c"\n #include "vgasrc/vbe.c"\n #include "vgasrc/stdvga.c"\n #include "vgasrc/stdvgamodes.c"\n #include "vgasrc/stdvgaio.c"\n #include "vgasrc/clext.c"\n #include "vgasrc/svgamodes.c"\n #include "vgasrc/atiext.c"\n #include "vgasrc/bochsvga.c"\n #include "vgasrc/geodevga.c"\n #include "src/fw/coreboot.c"\n #include "vgasrc/cbvga.c"\n #include "vgasrc/bochsdisplay.c"\n #include "vgasrc/ramfb.c"\n' > out/vgaccode16.raw.s.tmp.c
gcc -I.  -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -fno-omit-frame-pointer -S -Isrc -fwhole-program -DWHOLE_PROGRAM -c out/vgaccode16.raw.s.tmp.c -o out/vgaccode16.raw.s
In file included from ./src/output.c:9,
                 from out/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
python3 ./scripts/vgafixup.py out/vgaccode16.raw.s out/vgaccode16.s
as --32 src/code16gcc.s out/vgaccode16.s -o out/vgaccode16.o
  Compiling to assembler out/src/asm-offsets.s
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -S -c src/asm-offsets.c -o out/src/asm-offsets.s
  Generating offset file out/asm-offsets.h
./scripts/gen-offsets.sh out/src/asm-offsets.s out/asm-offsets.h
  Compiling (16bit) out/vgaentry.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -c -D__ASSEMBLY__ vgasrc/vgaentry.S -o out/vgaentry.o
  Precompiling out/vgasrc/vgalayout.lds
cpp -P -MD -MT out/vgasrc/vgalayout.lds -D__ASSEMBLY__ vgasrc/vgalayout.lds.S -o out/vgasrc/vgalayout.lds
  Linking out/vgarom.o
python3 ./scripts/buildversion.py -e "-2.ocs23" -t "gcc;as;ld;objcopy;objdump;strip" out/autovgaversion.h
Version: 1.16.2-2.ocs23
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -c vgasrc/vgaversion.c -o out/vgaversion.o
ld --gc-sections -T out/vgasrc/vgalayout.lds out/vgaccode16.o out/vgaentry.o out/vgaversion.o -o out/vgarom.o
ld: warning: out/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: out/vgarom.o has a LOAD segment with RWX permissions
  Extracting binary out/vgabios.bin.raw
objcopy -O binary out/vgarom.o out/vgabios.bin.raw
  Finalizing rom out/vgabios.bin
python3 ./scripts/buildrom.py out/vgabios.bin.raw out/vgabios.bin
+ cp out/vgabios.bin binaries/vgabios-stdvga.bin
+ for config in bochs-display cirrus isavga qxl stdvga ramfb vmware virtio ati
+ build_bios /builddir/build/SOURCES/config.vga-ramfb vgabios.bin vgabios-ramfb.bin out/vgabios.bin
+ make clean distclean
+ cp /builddir/build/SOURCES/config.vga-ramfb .config
+ echo CONFIG_DEBUG_LEVEL=1
+ make oldnoconfig V=1
mkdir -p out//scripts/kconfig/lxdialog
mkdir -p out//include/config
mkdir -p out/src out/src/hw out/src/fw out/vgasrc
make -C out/ -f /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/Makefile srctree=/builddir/build/BUILD/seabios-1.16.2 src=scripts/kconfig obj=scripts/kconfig Q= Kconfig=/builddir/build/BUILD/seabios-1.16.2/src/Kconfig  oldnoconfig
make[1]: Entering directory '/builddir/build/BUILD/seabios-1.16.2/out'
gcc -Iscripts/kconfig -I/builddir/build/BUILD/seabios-1.16.2/scripts/kconfig   -DCURSES_LOC="<curses.h>" -DLOCALE  -c -o scripts/kconfig/conf.o /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/conf.c
cat /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/zconf.tab.c_shipped > scripts/kconfig/zconf.tab.c
cat /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/zconf.lex.c_shipped > scripts/kconfig/zconf.lex.c
cat /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/zconf.hash.c_shipped > scripts/kconfig/zconf.hash.c
gcc -Iscripts/kconfig -I/builddir/build/BUILD/seabios-1.16.2/scripts/kconfig  -Iscripts/kconfig -DCURSES_LOC="<curses.h>" -DLOCALE  -c -o scripts/kconfig/zconf.tab.o scripts/kconfig/zconf.tab.c
gcc  -o scripts/kconfig/conf scripts/kconfig/conf.o scripts/kconfig/zconf.tab.o  
scripts/kconfig/conf --olddefconfig /builddir/build/BUILD/seabios-1.16.2/src/Kconfig
#
# configuration written to /builddir/build/BUILD/seabios-1.16.2/.config
#
make[1]: Leaving directory '/builddir/build/BUILD/seabios-1.16.2/out'
+ make V=1 EXTRAVERSION=-2.ocs23 PYTHON=python3 out/vgabios.bin
mkdir -p out//scripts/kconfig/lxdialog
mkdir -p out//include/config
mkdir -p out/src out/src/hw out/src/fw out/vgasrc
make -C out/ -f /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/Makefile srctree=/builddir/build/BUILD/seabios-1.16.2 src=scripts/kconfig obj=scripts/kconfig Q= Kconfig=/builddir/build/BUILD/seabios-1.16.2/src/Kconfig  silentoldconfig
make[1]: Entering directory '/builddir/build/BUILD/seabios-1.16.2/out'
  Build Kconfig config file
mkdir -p include/config include/generated
scripts/kconfig/conf --silentoldconfig /builddir/build/BUILD/seabios-1.16.2/src/Kconfig
make[1]: Leaving directory '/builddir/build/BUILD/seabios-1.16.2/out'
  Compile checking out/src/output.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/output.c -o out/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 out/src/string.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/string.c -o out/src/string.o
  Compile checking out/src/hw/pci.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/pci.c -o out/src/hw/pci.o
  Compile checking out/src/hw/serialio.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/serialio.c -o out/src/hw/serialio.o
  Compile checking out/vgasrc/vgainit.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vgainit.c -o out/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 out/vgasrc/vgabios.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vgabios.c -o out/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 out/vgasrc/vgafb.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vgafb.c -o out/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 out/vgasrc/swcursor.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/swcursor.c -o out/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 out/vgasrc/vgafonts.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vgafonts.c -o out/vgasrc/vgafonts.o
  Compile checking out/vgasrc/vbe.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vbe.c -o out/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 out/vgasrc/stdvga.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/stdvga.c -o out/vgasrc/stdvga.o
  Compile checking out/vgasrc/stdvgamodes.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/stdvgamodes.c -o out/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 out/vgasrc/stdvgaio.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/stdvgaio.c -o out/vgasrc/stdvgaio.o
  Compile checking out/vgasrc/clext.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/clext.c -o out/vgasrc/clext.o
  Compile checking out/vgasrc/svgamodes.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/svgamodes.c -o out/vgasrc/svgamodes.o
  Compile checking out/vgasrc/atiext.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/atiext.c -o out/vgasrc/atiext.o
  Compile checking out/vgasrc/bochsvga.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/bochsvga.c -o out/vgasrc/bochsvga.o
  Compile checking out/vgasrc/geodevga.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/geodevga.c -o out/vgasrc/geodevga.o
  Compile checking out/src/fw/coreboot.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/coreboot.c -o out/src/fw/coreboot.o
  Compile checking out/vgasrc/cbvga.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/cbvga.c -o out/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 out/vgasrc/bochsdisplay.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/bochsdisplay.c -o out/vgasrc/bochsdisplay.o
  Compile checking out/vgasrc/ramfb.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/ramfb.c -o out/vgasrc/ramfb.o
  Compiling whole program out/vgaccode16.raw.s
printf '#include "src/output.c"\n #include "src/string.c"\n #include "src/hw/pci.c"\n #include "src/hw/serialio.c"\n #include "vgasrc/vgainit.c"\n #include "vgasrc/vgabios.c"\n #include "vgasrc/vgafb.c"\n #include "vgasrc/swcursor.c"\n #include "vgasrc/vgafonts.c"\n #include "vgasrc/vbe.c"\n #include "vgasrc/stdvga.c"\n #include "vgasrc/stdvgamodes.c"\n #include "vgasrc/stdvgaio.c"\n #include "vgasrc/clext.c"\n #include "vgasrc/svgamodes.c"\n #include "vgasrc/atiext.c"\n #include "vgasrc/bochsvga.c"\n #include "vgasrc/geodevga.c"\n #include "src/fw/coreboot.c"\n #include "vgasrc/cbvga.c"\n #include "vgasrc/bochsdisplay.c"\n #include "vgasrc/ramfb.c"\n' > out/vgaccode16.raw.s.tmp.c
gcc -I.  -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -fno-omit-frame-pointer -S -Isrc -fwhole-program -DWHOLE_PROGRAM -c out/vgaccode16.raw.s.tmp.c -o out/vgaccode16.raw.s
In file included from ./src/output.c:9,
                 from out/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
python3 ./scripts/vgafixup.py out/vgaccode16.raw.s out/vgaccode16.s
as --32 src/code16gcc.s out/vgaccode16.s -o out/vgaccode16.o
  Compiling to assembler out/src/asm-offsets.s
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -S -c src/asm-offsets.c -o out/src/asm-offsets.s
  Generating offset file out/asm-offsets.h
./scripts/gen-offsets.sh out/src/asm-offsets.s out/asm-offsets.h
  Compiling (16bit) out/vgaentry.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -c -D__ASSEMBLY__ vgasrc/vgaentry.S -o out/vgaentry.o
  Precompiling out/vgasrc/vgalayout.lds
cpp -P -MD -MT out/vgasrc/vgalayout.lds -D__ASSEMBLY__ vgasrc/vgalayout.lds.S -o out/vgasrc/vgalayout.lds
  Linking out/vgarom.o
python3 ./scripts/buildversion.py -e "-2.ocs23" -t "gcc;as;ld;objcopy;objdump;strip" out/autovgaversion.h
Version: 1.16.2-2.ocs23
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -c vgasrc/vgaversion.c -o out/vgaversion.o
ld --gc-sections -T out/vgasrc/vgalayout.lds out/vgaccode16.o out/vgaentry.o out/vgaversion.o -o out/vgarom.o
ld: warning: out/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: out/vgarom.o has a LOAD segment with RWX permissions
  Extracting binary out/vgabios.bin.raw
objcopy -O binary out/vgarom.o out/vgabios.bin.raw
  Finalizing rom out/vgabios.bin
python3 ./scripts/buildrom.py out/vgabios.bin.raw out/vgabios.bin
+ cp out/vgabios.bin binaries/vgabios-ramfb.bin
+ for config in bochs-display cirrus isavga qxl stdvga ramfb vmware virtio ati
+ build_bios /builddir/build/SOURCES/config.vga-vmware vgabios.bin vgabios-vmware.bin out/vgabios.bin
+ make clean distclean
+ cp /builddir/build/SOURCES/config.vga-vmware .config
+ echo CONFIG_DEBUG_LEVEL=1
+ make oldnoconfig V=1
mkdir -p out//scripts/kconfig/lxdialog
mkdir -p out//include/config
mkdir -p out/src out/src/hw out/src/fw out/vgasrc
make -C out/ -f /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/Makefile srctree=/builddir/build/BUILD/seabios-1.16.2 src=scripts/kconfig obj=scripts/kconfig Q= Kconfig=/builddir/build/BUILD/seabios-1.16.2/src/Kconfig  oldnoconfig
make[1]: Entering directory '/builddir/build/BUILD/seabios-1.16.2/out'
gcc -Iscripts/kconfig -I/builddir/build/BUILD/seabios-1.16.2/scripts/kconfig   -DCURSES_LOC="<curses.h>" -DLOCALE  -c -o scripts/kconfig/conf.o /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/conf.c
cat /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/zconf.tab.c_shipped > scripts/kconfig/zconf.tab.c
cat /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/zconf.lex.c_shipped > scripts/kconfig/zconf.lex.c
cat /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/zconf.hash.c_shipped > scripts/kconfig/zconf.hash.c
gcc -Iscripts/kconfig -I/builddir/build/BUILD/seabios-1.16.2/scripts/kconfig  -Iscripts/kconfig -DCURSES_LOC="<curses.h>" -DLOCALE  -c -o scripts/kconfig/zconf.tab.o scripts/kconfig/zconf.tab.c
gcc  -o scripts/kconfig/conf scripts/kconfig/conf.o scripts/kconfig/zconf.tab.o  
scripts/kconfig/conf --olddefconfig /builddir/build/BUILD/seabios-1.16.2/src/Kconfig
#
# configuration written to /builddir/build/BUILD/seabios-1.16.2/.config
#
make[1]: Leaving directory '/builddir/build/BUILD/seabios-1.16.2/out'
+ make V=1 EXTRAVERSION=-2.ocs23 PYTHON=python3 out/vgabios.bin
mkdir -p out//scripts/kconfig/lxdialog
mkdir -p out//include/config
mkdir -p out/src out/src/hw out/src/fw out/vgasrc
make -C out/ -f /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/Makefile srctree=/builddir/build/BUILD/seabios-1.16.2 src=scripts/kconfig obj=scripts/kconfig Q= Kconfig=/builddir/build/BUILD/seabios-1.16.2/src/Kconfig  silentoldconfig
make[1]: Entering directory '/builddir/build/BUILD/seabios-1.16.2/out'
  Build Kconfig config file
mkdir -p include/config include/generated
scripts/kconfig/conf --silentoldconfig /builddir/build/BUILD/seabios-1.16.2/src/Kconfig
make[1]: Leaving directory '/builddir/build/BUILD/seabios-1.16.2/out'
  Compile checking out/src/output.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/output.c -o out/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 out/src/string.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/string.c -o out/src/string.o
  Compile checking out/src/hw/pci.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/pci.c -o out/src/hw/pci.o
  Compile checking out/src/hw/serialio.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/serialio.c -o out/src/hw/serialio.o
  Compile checking out/vgasrc/vgainit.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vgainit.c -o out/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 out/vgasrc/vgabios.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vgabios.c -o out/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 out/vgasrc/vgafb.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vgafb.c -o out/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 out/vgasrc/swcursor.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/swcursor.c -o out/vgasrc/swcursor.o
  Compile checking out/vgasrc/vgafonts.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vgafonts.c -o out/vgasrc/vgafonts.o
  Compile checking out/vgasrc/vbe.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vbe.c -o out/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 out/vgasrc/stdvga.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/stdvga.c -o out/vgasrc/stdvga.o
  Compile checking out/vgasrc/stdvgamodes.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/stdvgamodes.c -o out/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 out/vgasrc/stdvgaio.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/stdvgaio.c -o out/vgasrc/stdvgaio.o
  Compile checking out/vgasrc/clext.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/clext.c -o out/vgasrc/clext.o
  Compile checking out/vgasrc/svgamodes.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/svgamodes.c -o out/vgasrc/svgamodes.o
  Compile checking out/vgasrc/atiext.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/atiext.c -o out/vgasrc/atiext.o
  Compile checking out/vgasrc/bochsvga.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/bochsvga.c -o out/vgasrc/bochsvga.o
  Compile checking out/vgasrc/geodevga.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/geodevga.c -o out/vgasrc/geodevga.o
  Compile checking out/src/fw/coreboot.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/coreboot.c -o out/src/fw/coreboot.o
  Compile checking out/vgasrc/cbvga.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/cbvga.c -o out/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 out/vgasrc/bochsdisplay.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/bochsdisplay.c -o out/vgasrc/bochsdisplay.o
  Compile checking out/vgasrc/ramfb.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/ramfb.c -o out/vgasrc/ramfb.o
  Compiling whole program out/vgaccode16.raw.s
printf '#include "src/output.c"\n #include "src/string.c"\n #include "src/hw/pci.c"\n #include "src/hw/serialio.c"\n #include "vgasrc/vgainit.c"\n #include "vgasrc/vgabios.c"\n #include "vgasrc/vgafb.c"\n #include "vgasrc/swcursor.c"\n #include "vgasrc/vgafonts.c"\n #include "vgasrc/vbe.c"\n #include "vgasrc/stdvga.c"\n #include "vgasrc/stdvgamodes.c"\n #include "vgasrc/stdvgaio.c"\n #include "vgasrc/clext.c"\n #include "vgasrc/svgamodes.c"\n #include "vgasrc/atiext.c"\n #include "vgasrc/bochsvga.c"\n #include "vgasrc/geodevga.c"\n #include "src/fw/coreboot.c"\n #include "vgasrc/cbvga.c"\n #include "vgasrc/bochsdisplay.c"\n #include "vgasrc/ramfb.c"\n' > out/vgaccode16.raw.s.tmp.c
gcc -I.  -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -fno-omit-frame-pointer -S -Isrc -fwhole-program -DWHOLE_PROGRAM -c out/vgaccode16.raw.s.tmp.c -o out/vgaccode16.raw.s
In file included from ./src/output.c:9,
                 from out/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
python3 ./scripts/vgafixup.py out/vgaccode16.raw.s out/vgaccode16.s
as --32 src/code16gcc.s out/vgaccode16.s -o out/vgaccode16.o
  Compiling to assembler out/src/asm-offsets.s
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -S -c src/asm-offsets.c -o out/src/asm-offsets.s
  Generating offset file out/asm-offsets.h
./scripts/gen-offsets.sh out/src/asm-offsets.s out/asm-offsets.h
  Compiling (16bit) out/vgaentry.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -c -D__ASSEMBLY__ vgasrc/vgaentry.S -o out/vgaentry.o
  Precompiling out/vgasrc/vgalayout.lds
cpp -P -MD -MT out/vgasrc/vgalayout.lds -D__ASSEMBLY__ vgasrc/vgalayout.lds.S -o out/vgasrc/vgalayout.lds
  Linking out/vgarom.o
python3 ./scripts/buildversion.py -e "-2.ocs23" -t "gcc;as;ld;objcopy;objdump;strip" out/autovgaversion.h
Version: 1.16.2-2.ocs23
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -c vgasrc/vgaversion.c -o out/vgaversion.o
ld --gc-sections -T out/vgasrc/vgalayout.lds out/vgaccode16.o out/vgaentry.o out/vgaversion.o -o out/vgarom.o
ld: warning: out/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: out/vgarom.o has a LOAD segment with RWX permissions
  Extracting binary out/vgabios.bin.raw
objcopy -O binary out/vgarom.o out/vgabios.bin.raw
  Finalizing rom out/vgabios.bin
python3 ./scripts/buildrom.py out/vgabios.bin.raw out/vgabios.bin
+ cp out/vgabios.bin binaries/vgabios-vmware.bin
+ for config in bochs-display cirrus isavga qxl stdvga ramfb vmware virtio ati
+ build_bios /builddir/build/SOURCES/config.vga-virtio vgabios.bin vgabios-virtio.bin out/vgabios.bin
+ make clean distclean
+ cp /builddir/build/SOURCES/config.vga-virtio .config
+ echo CONFIG_DEBUG_LEVEL=1
+ make oldnoconfig V=1
mkdir -p out//scripts/kconfig/lxdialog
mkdir -p out//include/config
mkdir -p out/src out/src/hw out/src/fw out/vgasrc
make -C out/ -f /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/Makefile srctree=/builddir/build/BUILD/seabios-1.16.2 src=scripts/kconfig obj=scripts/kconfig Q= Kconfig=/builddir/build/BUILD/seabios-1.16.2/src/Kconfig  oldnoconfig
make[1]: Entering directory '/builddir/build/BUILD/seabios-1.16.2/out'
gcc -Iscripts/kconfig -I/builddir/build/BUILD/seabios-1.16.2/scripts/kconfig   -DCURSES_LOC="<curses.h>" -DLOCALE  -c -o scripts/kconfig/conf.o /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/conf.c
cat /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/zconf.tab.c_shipped > scripts/kconfig/zconf.tab.c
cat /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/zconf.lex.c_shipped > scripts/kconfig/zconf.lex.c
cat /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/zconf.hash.c_shipped > scripts/kconfig/zconf.hash.c
gcc -Iscripts/kconfig -I/builddir/build/BUILD/seabios-1.16.2/scripts/kconfig  -Iscripts/kconfig -DCURSES_LOC="<curses.h>" -DLOCALE  -c -o scripts/kconfig/zconf.tab.o scripts/kconfig/zconf.tab.c
gcc  -o scripts/kconfig/conf scripts/kconfig/conf.o scripts/kconfig/zconf.tab.o  
scripts/kconfig/conf --olddefconfig /builddir/build/BUILD/seabios-1.16.2/src/Kconfig
#
# configuration written to /builddir/build/BUILD/seabios-1.16.2/.config
#
make[1]: Leaving directory '/builddir/build/BUILD/seabios-1.16.2/out'
+ make V=1 EXTRAVERSION=-2.ocs23 PYTHON=python3 out/vgabios.bin
mkdir -p out//scripts/kconfig/lxdialog
mkdir -p out//include/config
mkdir -p out/src out/src/hw out/src/fw out/vgasrc
make -C out/ -f /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/Makefile srctree=/builddir/build/BUILD/seabios-1.16.2 src=scripts/kconfig obj=scripts/kconfig Q= Kconfig=/builddir/build/BUILD/seabios-1.16.2/src/Kconfig  silentoldconfig
make[1]: Entering directory '/builddir/build/BUILD/seabios-1.16.2/out'
  Build Kconfig config file
mkdir -p include/config include/generated
scripts/kconfig/conf --silentoldconfig /builddir/build/BUILD/seabios-1.16.2/src/Kconfig
make[1]: Leaving directory '/builddir/build/BUILD/seabios-1.16.2/out'
  Compile checking out/src/output.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/output.c -o out/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 out/src/string.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/string.c -o out/src/string.o
  Compile checking out/src/hw/pci.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/pci.c -o out/src/hw/pci.o
  Compile checking out/src/hw/serialio.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/serialio.c -o out/src/hw/serialio.o
  Compile checking out/vgasrc/vgainit.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vgainit.c -o out/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 out/vgasrc/vgabios.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vgabios.c -o out/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 out/vgasrc/vgafb.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vgafb.c -o out/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 out/vgasrc/swcursor.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/swcursor.c -o out/vgasrc/swcursor.o
  Compile checking out/vgasrc/vgafonts.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vgafonts.c -o out/vgasrc/vgafonts.o
  Compile checking out/vgasrc/vbe.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vbe.c -o out/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 out/vgasrc/stdvga.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/stdvga.c -o out/vgasrc/stdvga.o
  Compile checking out/vgasrc/stdvgamodes.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/stdvgamodes.c -o out/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 out/vgasrc/stdvgaio.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/stdvgaio.c -o out/vgasrc/stdvgaio.o
  Compile checking out/vgasrc/clext.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/clext.c -o out/vgasrc/clext.o
  Compile checking out/vgasrc/svgamodes.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/svgamodes.c -o out/vgasrc/svgamodes.o
  Compile checking out/vgasrc/atiext.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/atiext.c -o out/vgasrc/atiext.o
  Compile checking out/vgasrc/bochsvga.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/bochsvga.c -o out/vgasrc/bochsvga.o
  Compile checking out/vgasrc/geodevga.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/geodevga.c -o out/vgasrc/geodevga.o
  Compile checking out/src/fw/coreboot.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/coreboot.c -o out/src/fw/coreboot.o
  Compile checking out/vgasrc/cbvga.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/cbvga.c -o out/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 out/vgasrc/bochsdisplay.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/bochsdisplay.c -o out/vgasrc/bochsdisplay.o
  Compile checking out/vgasrc/ramfb.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/ramfb.c -o out/vgasrc/ramfb.o
  Compiling whole program out/vgaccode16.raw.s
printf '#include "src/output.c"\n #include "src/string.c"\n #include "src/hw/pci.c"\n #include "src/hw/serialio.c"\n #include "vgasrc/vgainit.c"\n #include "vgasrc/vgabios.c"\n #include "vgasrc/vgafb.c"\n #include "vgasrc/swcursor.c"\n #include "vgasrc/vgafonts.c"\n #include "vgasrc/vbe.c"\n #include "vgasrc/stdvga.c"\n #include "vgasrc/stdvgamodes.c"\n #include "vgasrc/stdvgaio.c"\n #include "vgasrc/clext.c"\n #include "vgasrc/svgamodes.c"\n #include "vgasrc/atiext.c"\n #include "vgasrc/bochsvga.c"\n #include "vgasrc/geodevga.c"\n #include "src/fw/coreboot.c"\n #include "vgasrc/cbvga.c"\n #include "vgasrc/bochsdisplay.c"\n #include "vgasrc/ramfb.c"\n' > out/vgaccode16.raw.s.tmp.c
gcc -I.  -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -fno-omit-frame-pointer -S -Isrc -fwhole-program -DWHOLE_PROGRAM -c out/vgaccode16.raw.s.tmp.c -o out/vgaccode16.raw.s
In file included from ./src/output.c:9,
                 from out/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
python3 ./scripts/vgafixup.py out/vgaccode16.raw.s out/vgaccode16.s
as --32 src/code16gcc.s out/vgaccode16.s -o out/vgaccode16.o
  Compiling to assembler out/src/asm-offsets.s
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -S -c src/asm-offsets.c -o out/src/asm-offsets.s
  Generating offset file out/asm-offsets.h
./scripts/gen-offsets.sh out/src/asm-offsets.s out/asm-offsets.h
  Compiling (16bit) out/vgaentry.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -c -D__ASSEMBLY__ vgasrc/vgaentry.S -o out/vgaentry.o
  Precompiling out/vgasrc/vgalayout.lds
cpp -P -MD -MT out/vgasrc/vgalayout.lds -D__ASSEMBLY__ vgasrc/vgalayout.lds.S -o out/vgasrc/vgalayout.lds
  Linking out/vgarom.o
python3 ./scripts/buildversion.py -e "-2.ocs23" -t "gcc;as;ld;objcopy;objdump;strip" out/autovgaversion.h
Version: 1.16.2-2.ocs23
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -c vgasrc/vgaversion.c -o out/vgaversion.o
ld --gc-sections -T out/vgasrc/vgalayout.lds out/vgaccode16.o out/vgaentry.o out/vgaversion.o -o out/vgarom.o
ld: warning: out/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: out/vgarom.o has a LOAD segment with RWX permissions
  Extracting binary out/vgabios.bin.raw
objcopy -O binary out/vgarom.o out/vgabios.bin.raw
  Finalizing rom out/vgabios.bin
python3 ./scripts/buildrom.py out/vgabios.bin.raw out/vgabios.bin
+ cp out/vgabios.bin binaries/vgabios-virtio.bin
+ for config in bochs-display cirrus isavga qxl stdvga ramfb vmware virtio ati
+ build_bios /builddir/build/SOURCES/config.vga-ati vgabios.bin vgabios-ati.bin out/vgabios.bin
+ make clean distclean
+ cp /builddir/build/SOURCES/config.vga-ati .config
+ echo CONFIG_DEBUG_LEVEL=1
+ make oldnoconfig V=1
mkdir -p out//scripts/kconfig/lxdialog
mkdir -p out//include/config
mkdir -p out/src out/src/hw out/src/fw out/vgasrc
make -C out/ -f /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/Makefile srctree=/builddir/build/BUILD/seabios-1.16.2 src=scripts/kconfig obj=scripts/kconfig Q= Kconfig=/builddir/build/BUILD/seabios-1.16.2/src/Kconfig  oldnoconfig
make[1]: Entering directory '/builddir/build/BUILD/seabios-1.16.2/out'
gcc -Iscripts/kconfig -I/builddir/build/BUILD/seabios-1.16.2/scripts/kconfig   -DCURSES_LOC="<curses.h>" -DLOCALE  -c -o scripts/kconfig/conf.o /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/conf.c
cat /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/zconf.tab.c_shipped > scripts/kconfig/zconf.tab.c
cat /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/zconf.lex.c_shipped > scripts/kconfig/zconf.lex.c
cat /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/zconf.hash.c_shipped > scripts/kconfig/zconf.hash.c
gcc -Iscripts/kconfig -I/builddir/build/BUILD/seabios-1.16.2/scripts/kconfig  -Iscripts/kconfig -DCURSES_LOC="<curses.h>" -DLOCALE  -c -o scripts/kconfig/zconf.tab.o scripts/kconfig/zconf.tab.c
gcc  -o scripts/kconfig/conf scripts/kconfig/conf.o scripts/kconfig/zconf.tab.o  
scripts/kconfig/conf --olddefconfig /builddir/build/BUILD/seabios-1.16.2/src/Kconfig
#
# configuration written to /builddir/build/BUILD/seabios-1.16.2/.config
#
make[1]: Leaving directory '/builddir/build/BUILD/seabios-1.16.2/out'
+ make V=1 EXTRAVERSION=-2.ocs23 PYTHON=python3 out/vgabios.bin
mkdir -p out//scripts/kconfig/lxdialog
mkdir -p out//include/config
mkdir -p out/src out/src/hw out/src/fw out/vgasrc
make -C out/ -f /builddir/build/BUILD/seabios-1.16.2/scripts/kconfig/Makefile srctree=/builddir/build/BUILD/seabios-1.16.2 src=scripts/kconfig obj=scripts/kconfig Q= Kconfig=/builddir/build/BUILD/seabios-1.16.2/src/Kconfig  silentoldconfig
make[1]: Entering directory '/builddir/build/BUILD/seabios-1.16.2/out'
  Build Kconfig config file
mkdir -p include/config include/generated
scripts/kconfig/conf --silentoldconfig /builddir/build/BUILD/seabios-1.16.2/src/Kconfig
make[1]: Leaving directory '/builddir/build/BUILD/seabios-1.16.2/out'
  Compile checking out/src/output.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/output.c -o out/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 out/src/string.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/string.c -o out/src/string.o
  Compile checking out/src/hw/pci.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/pci.c -o out/src/hw/pci.o
  Compile checking out/src/hw/serialio.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/hw/serialio.c -o out/src/hw/serialio.o
  Compile checking out/vgasrc/vgainit.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vgainit.c -o out/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 out/vgasrc/vgabios.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vgabios.c -o out/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 out/vgasrc/vgafb.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vgafb.c -o out/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 out/vgasrc/swcursor.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/swcursor.c -o out/vgasrc/swcursor.o
  Compile checking out/vgasrc/vgafonts.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vgafonts.c -o out/vgasrc/vgafonts.o
  Compile checking out/vgasrc/vbe.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/vbe.c -o out/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 out/vgasrc/stdvga.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/stdvga.c -o out/vgasrc/stdvga.o
  Compile checking out/vgasrc/stdvgamodes.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/stdvgamodes.c -o out/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 out/vgasrc/stdvgaio.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/stdvgaio.c -o out/vgasrc/stdvgaio.o
  Compile checking out/vgasrc/clext.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/clext.c -o out/vgasrc/clext.o
  Compile checking out/vgasrc/svgamodes.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/svgamodes.c -o out/vgasrc/svgamodes.o
  Compile checking out/vgasrc/atiext.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/atiext.c -o out/vgasrc/atiext.o
  Compile checking out/vgasrc/bochsvga.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/bochsvga.c -o out/vgasrc/bochsvga.o
  Compile checking out/vgasrc/geodevga.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/geodevga.c -o out/vgasrc/geodevga.o
  Compile checking out/src/fw/coreboot.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c src/fw/coreboot.c -o out/src/fw/coreboot.o
  Compile checking out/vgasrc/cbvga.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/cbvga.c -o out/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 out/vgasrc/bochsdisplay.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/bochsdisplay.c -o out/vgasrc/bochsdisplay.o
  Compile checking out/vgasrc/ramfb.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODE16=0 -DMODESEGMENT=0 -c vgasrc/ramfb.c -o out/vgasrc/ramfb.o
  Compiling whole program out/vgaccode16.raw.s
printf '#include "src/output.c"\n #include "src/string.c"\n #include "src/hw/pci.c"\n #include "src/hw/serialio.c"\n #include "vgasrc/vgainit.c"\n #include "vgasrc/vgabios.c"\n #include "vgasrc/vgafb.c"\n #include "vgasrc/swcursor.c"\n #include "vgasrc/vgafonts.c"\n #include "vgasrc/vbe.c"\n #include "vgasrc/stdvga.c"\n #include "vgasrc/stdvgamodes.c"\n #include "vgasrc/stdvgaio.c"\n #include "vgasrc/clext.c"\n #include "vgasrc/svgamodes.c"\n #include "vgasrc/atiext.c"\n #include "vgasrc/bochsvga.c"\n #include "vgasrc/geodevga.c"\n #include "src/fw/coreboot.c"\n #include "vgasrc/cbvga.c"\n #include "vgasrc/bochsdisplay.c"\n #include "vgasrc/ramfb.c"\n' > out/vgaccode16.raw.s.tmp.c
gcc -I.  -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -fno-omit-frame-pointer -S -Isrc -fwhole-program -DWHOLE_PROGRAM -c out/vgaccode16.raw.s.tmp.c -o out/vgaccode16.raw.s
In file included from ./src/output.c:9,
                 from out/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
python3 ./scripts/vgafixup.py out/vgaccode16.raw.s out/vgaccode16.s
as --32 src/code16gcc.s out/vgaccode16.s -o out/vgaccode16.o
  Compiling to assembler out/src/asm-offsets.s
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -S -c src/asm-offsets.c -o out/src/asm-offsets.s
  Generating offset file out/asm-offsets.h
./scripts/gen-offsets.sh out/src/asm-offsets.s out/asm-offsets.h
  Compiling (16bit) out/vgaentry.o
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -c -D__ASSEMBLY__ vgasrc/vgaentry.S -o out/vgaentry.o
  Precompiling out/vgasrc/vgalayout.lds
cpp -P -MD -MT out/vgasrc/vgalayout.lds -D__ASSEMBLY__ vgasrc/vgalayout.lds.S -o out/vgasrc/vgalayout.lds
  Linking out/vgarom.o
python3 ./scripts/buildversion.py -e "-2.ocs23" -t "gcc;as;ld;objcopy;objdump;strip" out/autovgaversion.h
Version: 1.16.2-2.ocs23
gcc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-pie -fno-stack-protector -fstack-check=no -Wno-address-of-packed-member -fcf-protection=none -DMODESEGMENT=1 -fno-defer-pop -fno-jump-tables -fno-tree-switch-conversion -DMODE16=1 -m16 --param large-stack-frame=4 -c vgasrc/vgaversion.c -o out/vgaversion.o
ld --gc-sections -T out/vgasrc/vgalayout.lds out/vgaccode16.o out/vgaentry.o out/vgaversion.o -o out/vgarom.o
ld: warning: out/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: out/vgarom.o has a LOAD segment with RWX permissions
  Extracting binary out/vgabios.bin.raw
objcopy -O binary out/vgarom.o out/vgabios.bin.raw
  Finalizing rom out/vgabios.bin
python3 ./scripts/buildrom.py out/vgabios.bin.raw out/vgabios.bin
+ cp out/vgabios.bin binaries/vgabios-ati.bin
+ RPM_EC=0
++ jobs -p
+ exit 0
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.l8Undl
+ umask 022
+ cd /builddir/build/BUILD
+ '[' /builddir/build/BUILDROOT/seabios-1.16.2-2.ocs23.x86_64 '!=' / ']'
+ rm -rf /builddir/build/BUILDROOT/seabios-1.16.2-2.ocs23.x86_64
++ dirname /builddir/build/BUILDROOT/seabios-1.16.2-2.ocs23.x86_64
+ mkdir -p /builddir/build/BUILDROOT
+ mkdir /builddir/build/BUILDROOT/seabios-1.16.2-2.ocs23.x86_64
+ cd seabios-1.16.2
+ mkdir -p /builddir/build/BUILDROOT/seabios-1.16.2-2.ocs23.x86_64/usr/share/seabios
+ mkdir -p /builddir/build/BUILDROOT/seabios-1.16.2-2.ocs23.x86_64/usr/share/seavgabios
+ install -m 0644 binaries/bios.bin /builddir/build/BUILDROOT/seabios-1.16.2-2.ocs23.x86_64/usr/share/seabios/bios.bin
+ install -m 0644 binaries/bios-256k.bin /builddir/build/BUILDROOT/seabios-1.16.2-2.ocs23.x86_64/usr/share/seabios/bios-256k.bin
+ install -m 0644 binaries/vgabios-ati.bin binaries/vgabios-bochs-display.bin binaries/vgabios-cirrus.bin binaries/vgabios-isavga.bin binaries/vgabios-qxl.bin binaries/vgabios-ramfb.bin binaries/vgabios-stdvga.bin binaries/vgabios-virtio.bin binaries/vgabios-vmware.bin /builddir/build/BUILDROOT/seabios-1.16.2-2.ocs23.x86_64/usr/share/seavgabios
+ /usr/lib/rpm/check-buildroot
+ /usr/lib/rpm/OpenCloudOS/brp-ldconfig
+ /usr/lib/rpm/brp-compress
+ /usr/lib/rpm/brp-strip /usr/bin/strip
+ /usr/lib/rpm/brp-strip-comment-note /usr/bin/strip /usr/bin/objdump
+ /usr/lib/rpm/OpenCloudOS/brp-strip-lto /usr/bin/strip
+ /usr/lib/rpm/brp-strip-static-archive /usr/bin/strip
+ /usr/lib/rpm/check-rpaths
+ /usr/lib/rpm/OpenCloudOS/brp-mangle-shebangs
+ /usr/lib/rpm/OpenCloudOS/brp-python-bytecompile '' 1 0
+ /usr/lib/rpm/OpenCloudOS/brp-python-hardlink
Processing files: seabios-1.16.2-2.ocs23.x86_64
Executing(%doc): /bin/sh -e /var/tmp/rpm-tmp.ptZTYX
+ umask 022
+ cd /builddir/build/BUILD
+ cd seabios-1.16.2
+ DOCDIR=/builddir/build/BUILDROOT/seabios-1.16.2-2.ocs23.x86_64/usr/share/doc/seabios
+ export LC_ALL=C
+ LC_ALL=C
+ export DOCDIR
+ /usr/bin/mkdir -p /builddir/build/BUILDROOT/seabios-1.16.2-2.ocs23.x86_64/usr/share/doc/seabios
+ cp -pr README /builddir/build/BUILDROOT/seabios-1.16.2-2.ocs23.x86_64/usr/share/doc/seabios
+ RPM_EC=0
++ jobs -p
+ exit 0
Executing(%license): /bin/sh -e /var/tmp/rpm-tmp.0mhG4W
+ umask 022
+ cd /builddir/build/BUILD
+ cd seabios-1.16.2
+ LICENSEDIR=/builddir/build/BUILDROOT/seabios-1.16.2-2.ocs23.x86_64/usr/share/licenses/seabios
+ export LC_ALL=C
+ LC_ALL=C
+ export LICENSEDIR
+ /usr/bin/mkdir -p /builddir/build/BUILDROOT/seabios-1.16.2-2.ocs23.x86_64/usr/share/licenses/seabios
+ cp -pr COPYING /builddir/build/BUILDROOT/seabios-1.16.2-2.ocs23.x86_64/usr/share/licenses/seabios
+ cp -pr COPYING.LESSER /builddir/build/BUILDROOT/seabios-1.16.2-2.ocs23.x86_64/usr/share/licenses/seabios
+ RPM_EC=0
++ jobs -p
+ exit 0
Provides: seabios = 1.16.2-2.ocs23 seabios(x86-64) = 1.16.2-2.ocs23
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Processing files: seabios-bin-1.16.2-2.ocs23.noarch
Provides: seabios-bin = 1.16.2-2.ocs23
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Processing files: seavgabios-bin-1.16.2-2.ocs23.noarch
Provides: seavgabios-bin = 1.16.2-2.ocs23
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Checking for unpackaged file(s): /usr/lib/rpm/check-files /builddir/build/BUILDROOT/seabios-1.16.2-2.ocs23.x86_64
Wrote: /builddir/build/RPMS/seabios-1.16.2-2.ocs23.x86_64.rpm
Wrote: /builddir/build/RPMS/seavgabios-bin-1.16.2-2.ocs23.noarch.rpm
Wrote: /builddir/build/RPMS/seabios-bin-1.16.2-2.ocs23.noarch.rpm
Child return code was: 0