>>> seabios: Building main/seabios 1.16.2-r0 (using abuild 3.12.0-r0) started Sun, 22 Oct 2023 00:41:12 +0000
>>> seabios: Checking sanity of /home/buildozer/aports/main/seabios/APKBUILD...
>>> seabios: Analyzing dependencies...
>>> seabios: Installing for build: build-base python3 iasl
(1/14) Installing libbz2 (1.0.8-r6)
(2/14) Installing libffi (3.4.4-r3)
(3/14) Installing gdbm (1.23-r1)
(4/14) Installing xz-libs (5.4.4-r0)
(5/14) Installing mpdecimal (2.5.1-r2)
(6/14) Installing libpanelw (6.4_p20231007-r0)
(7/14) Installing readline (8.2.1-r2)
(8/14) Installing sqlite-libs (3.43.2-r0)
(9/14) Installing python3 (3.11.6-r1)
(10/14) Installing python3-pycache-pyc0 (3.11.6-r1)
(11/14) Installing pyc (3.11.6-r1)
(12/14) Installing python3-pyc (3.11.6-r1)
(13/14) Installing iasl (20230628-r0)
(14/14) Installing .makedepends-seabios (20231022.004115)
Executing busybox-1.36.1-r13.trigger
OK: 417 MiB in 115 packages
>>> seabios: Cleaning up srcdir
>>> seabios: Cleaning up pkgdir
>>> seabios: Cleaning up tmpdir
>>> seabios: Fetching https://distfiles.alpinelinux.org/distfiles/v3.19/seabios-1.16.2.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
  0   146    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
curl: (22) The requested URL returned error: 404
>>> seabios: Fetching https://www.seabios.org/downloads/seabios-1.16.2.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100  621k  100  621k    0     0  3307k      0 --:--:-- --:--:-- --:--:-- 3320k
>>> seabios: Fetching https://distfiles.alpinelinux.org/distfiles/v3.19/seabios-1.16.2.tar.gz
>>> seabios: Checking sha512sums...
seabios-1.16.2.tar.gz: OK
0001-Workaround-for-a-win8.1-32-S4-resume-bug.patch: OK
0002-reserve-more-memory-on-fseg.patch: OK
config.coreboot: OK
config.csm: OK
config.seabios-128k: OK
config.seabios-256k: OK
config.vga.cirrus: OK
config.vga.isavga: OK
config.vga.qxl: OK
config.vga.stdvga: OK
config.vga.virtio: OK
config.vga.vmware: OK
>>> seabios: Unpacking /var/cache/distfiles/v3.19/seabios-1.16.2.tar.gz...
>>> seabios: 0001-Workaround-for-a-win8.1-32-S4-resume-bug.patch
patching file src/clock.c
>>> seabios: 0002-reserve-more-memory-on-fseg.patch
patching file scripts/layoutrom.py
>>> seabios: building bios-csm.bin
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'check_stdin':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:77:17: warning: format not a string literal and no format arguments [-Wformat-security]
   77 |                 printf(_("aborted!\n\n"));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:78:17: warning: format not a string literal and no format arguments [-Wformat-security]
   78 |                 printf(_("Console input/output is redirected. "));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:79:17: warning: format not a string literal and no format arguments [-Wformat-security]
   79 |                 printf(_("Run 'make oldconfig' to update configuration.\n\n"));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'conf_askvalue':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:89:17: warning: format not a string literal and no format arguments [-Wformat-security]
   89 |                 printf(_("(NEW) "));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'conf_choice':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:290:33: warning: format not a string literal and no format arguments [-Wformat-security]
  290 |                                 printf(_(" (NEW)"));
      |                                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'check_conf':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:438:41: warning: format not a string literal and no format arguments [-Wformat-security]
  438 |                                         printf(_("*\n* Restart config...\n*\n"));
      |                                         ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'main':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:636:41: warning: format not a string literal and no format arguments [-Wformat-security]
  636 |                                         _("\n*** The configuration requires explicit update.\n\n"));
      |                                         ^
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:689:25: warning: format not a string literal and no format arguments [-Wformat-security]
  689 |                         fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n"));
      |                         ^~~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:693:25: warning: format not a string literal and no format arguments [-Wformat-security]
  693 |                         fprintf(stderr, _("\n*** Error during update of the configuration.\n\n"));
      |                         ^~~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:704:25: warning: format not a string literal and no format arguments [-Wformat-security]
  704 |                         fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n"));
      |                         ^~~~~~~
scripts/kconfig/conf --olddefconfig /home/buildozer/aports/main/seabios/src/seabios-1.16.2/src/Kconfig
#
# configuration written to /home/buildozer/aports/main/seabios/src/seabios-1.16.2/.config
#
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'check_stdin':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:77:17: warning: format not a string literal and no format arguments [-Wformat-security]
   77 |                 printf(_("aborted!\n\n"));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:78:17: warning: format not a string literal and no format arguments [-Wformat-security]
   78 |                 printf(_("Console input/output is redirected. "));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:79:17: warning: format not a string literal and no format arguments [-Wformat-security]
   79 |                 printf(_("Run 'make oldconfig' to update configuration.\n\n"));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'conf_askvalue':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:89:17: warning: format not a string literal and no format arguments [-Wformat-security]
   89 |                 printf(_("(NEW) "));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'conf_choice':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:290:33: warning: format not a string literal and no format arguments [-Wformat-security]
  290 |                                 printf(_(" (NEW)"));
      |                                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'check_conf':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:438:41: warning: format not a string literal and no format arguments [-Wformat-security]
  438 |                                         printf(_("*\n* Restart config...\n*\n"));
      |                                         ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'main':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:636:41: warning: format not a string literal and no format arguments [-Wformat-security]
  636 |                                         _("\n*** The configuration requires explicit update.\n\n"));
      |                                         ^
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:689:25: warning: format not a string literal and no format arguments [-Wformat-security]
  689 |                         fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n"));
      |                         ^~~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:693:25: warning: format not a string literal and no format arguments [-Wformat-security]
  693 |                         fprintf(stderr, _("\n*** Error during update of the configuration.\n\n"));
      |                         ^~~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:704:25: warning: format not a string literal and no format arguments [-Wformat-security]
  704 |                         fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n"));
      |                         ^~~~~~~
scripts/kconfig/conf --olddefconfig /home/buildozer/aports/main/seabios/src/seabios-1.16.2/src/Kconfig
#
# configuration written to /home/buildozer/aports/main/seabios/src/seabios-1.16.2/.config
#
  Compiling to assembler out/src/asm-offsets.s
  Build Kconfig config file
  Compile checking out/src/misc.o
  Compile checking out/src/stacks.o
  Compile checking out/src/output.o
  Compile checking out/src/string.o
  Compile checking out/src/block.o
  Compile checking out/src/cdrom.o
  Compile checking out/src/disk.o
  Compile checking out/src/mouse.o
  Compile checking out/src/kbd.o
  Compile checking out/src/system.o
  Compile checking out/src/serial.o
  Compile checking out/src/sercon.o
  Compile checking out/src/clock.o
  Compile checking out/src/resume.o
  Compile checking out/src/pnpbios.o
  Compile checking out/src/vgahooks.o
  Compile checking out/src/pcibios.o
  Compile checking out/src/apm.o
  Compile checking out/src/cp437.o
  Compile checking out/src/hw/pci.o
  Compile checking out/src/hw/timer.o
  Compile checking out/src/hw/rtc.o
  Compile checking out/src/hw/dma.o
  Compile checking out/src/hw/pic.o
  Compile checking out/src/hw/ps2port.o
  Compile checking out/src/hw/serialio.o
  Compile checking out/src/hw/usb.o
  Compile checking out/src/hw/usb-uhci.o
  Compile checking out/src/hw/usb-ohci.o
  Compile checking out/src/hw/usb-ehci.o
  Compile checking out/src/hw/usb-hid.o
  Compile checking out/src/hw/usb-msc.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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |         ^~~
In function 'mathcp_setup':
cc1: note: source object is likely at address zero
In function 'set_equipment_flags',
    inlined from 'mathcp_setup' at src/misc.c:66: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/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'mathcp_setup':
cc1: note: source object is likely at address zero
  Compile checking out/src/hw/usb-uas.o
  Compile checking out/src/hw/blockcmd.o
  Compile checking out/src/hw/floppy.o
  Compile checking out/src/hw/ata.o
  Compile checking out/src/hw/ramdisk.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 function 'mouse_init':
cc1: note: source object is likely at address zero
In file included from src/biosvar.h:10:
In function 'set_equipment_flags',
    inlined from 'mouse_init' at src/mouse.c:23: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/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'mouse_init':
cc1: note: source object is likely at address zero
  Compile checking out/src/hw/lsi-scsi.o
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 'handle_15c2':
cc1: note: source object is likely at address zero
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 'handle_15c2':
cc1: note: source object is likely at address zero
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 'handle_15c2':
cc1: note: source object is likely at address zero
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))
      |           ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'clear_usertimer':
cc1: note: source object is likely at address zero
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);
      |            ^~~~~~~
In function 'handle_15':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
  Compile checking out/src/hw/esp-scsi.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 function 'serial_setup':
cc1: note: source object is likely at address zero
In file included from src/biosvar.h:10:
In function 'set_equipment_flags',
    inlined from 'serial_setup' at src/serial.c:56: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/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'serial_setup':
cc1: note: source object is likely at address zero
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);
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |                 ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
  Compile checking out/src/hw/megasas.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);
      |                          ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |         ^~~
In function 'cdrom_boot':
cc1: note: source object is likely at address zero
In function 'set_equipment_flags',
    inlined from 'cdrom_boot' at src/cdrom.c:242: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/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'cdrom_boot':
cc1: note: source object is likely at address zero
  Compile checking out/src/hw/mpt-scsi.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 'sercon_cursor_pos_set':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'handle_1a':
cc1: note: source object is likely at address zero
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 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.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_1a':
cc1: note: source object is likely at address zero
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);
      |         ^~~~~
In function 'handle_1a':
cc1: note: source object is likely at address zero
In function 'handle_1a00',
    inlined from 'handle_1a' at src/clock.c:267: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:76:16: note: in expansion of macro 'GET_BDA'
   76 |     regs->al = GET_BDA(timer_rollover);
      |                ^~~~~~~
In function 'handle_1a':
cc1: note: source object is likely at address zero
In function 'handle_1a00',
    inlined from 'handle_1a' at src/clock.c:267: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/clock.c:77:5: note: in expansion of macro 'SET_BDA'
   77 |     SET_BDA(timer_rollover, 0); // reset flag
      |     ^~~~~~~
In function 'handle_1a':
cc1: note: source object is likely at address zero
In file included from src/biosvar.h:10,
                 from src/disk.c:8:
src/disk.c: In function '__disk_ret_unimplemented':
src/kbd.c: In function 'set_leds':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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;
      |                       ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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 'sercon_lazy_lf':
cc1: note: source object is likely at address zero
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 'sercon_lazy_lf':
cc1: note: source object is likely at address zero
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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |            ^~~~~~~
In function 'process_mouse':
cc1: note: source object is likely at address zero
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);
      |                       ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |                       ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |                        ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |                        ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'lpt_setup':
cc1: note: source object is likely at address zero
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 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.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 'lpt_setup':
cc1: note: source object is likely at address zero
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);
      |         ^~~
In function 'lpt_setup':
cc1: note: source object is likely at address zero
In function 'set_equipment_flags',
    inlined from 'lpt_setup' at src/serial.c:217: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/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'lpt_setup':
cc1: note: source object is likely at address zero
  Compile checking out/src/post.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)
      |                         ^~~~~~~
cc1: note: source object is likely at address zero
  Compile checking out/src/e820map.o
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);
      |                 ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |         ^~~~~~~
In function 'handle_08':
cc1: note: source object is likely at address zero
In function 'clock_update',
    inlined from 'handle_08' at src/clock.c:306:5:
src/farptr.h:180:6: warning: array subscript 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);
      |                                 ^~~~~~~
In function 'handle_08':
cc1: note: source object is likely at address zero
In function 'clock_update',
    inlined from 'handle_08' at src/clock.c:306: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/clock.c:290:9: note: in expansion of macro 'SET_BDA'
  290 |         SET_BDA(timer_rollover, GET_BDA(timer_rollover) + 1);
      |         ^~~~~~~
In function 'handle_08':
cc1: note: source object is likely at address zero
In function 'clock_update',
    inlined from 'handle_08' at src/clock.c:306: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:292:5: note: in expansion of macro 'SET_BDA'
  292 |     SET_BDA(timer_counter, counter);
      |     ^~~~~~~
In function 'handle_08':
src/kbd.c: In function 'kbd_init':
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                             ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/kbd.c: In function 'enqueue_key':
  Compile checking out/src/malloc.o
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |                        ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |                        ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |                       ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |                       ^~~~~~~
cc1: note: source object is likely at address zero
  Compile checking out/src/romfile.o
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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;
      |             ^~~~~~~
cc1: note: source object is likely at address zero
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))
      |                  ^~~~~~~
In function 'handle_16':
cc1: note: source object is likely at address zero
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 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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_16':
cc1: note: source object is likely at address zero
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 'handle_16':
cc1: note: source object is likely at address zero
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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
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)
      |               ^~~~~~~
cc1: note: source object is likely at address zero
  Compile checking out/src/x86.o
  Compile checking out/src/optionroms.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;
      |                   ^~
cc1: note: source object is likely at address zero
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:
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 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |            ^~~~~~~
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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)
      |         ^~~~~~~
In function 'map_hd_drive':
In function 'handle_1586':
cc1: note: source object is likely at address zero
cc1: note: source object is likely at address zero
In function 'set_usertimer',
    inlined from 'handle_1586' at src/clock.c:409:15:
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 'map_hd_drive':
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.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.
      |     ^~~~~~~
cc1: note: source object is likely at address zero
In function 'handle_1586':
cc1: note: source object is likely at address zero
In function 'fill_fdpt',
    inlined from 'map_hd_drive' at src/block.c:269:5:
In function 'set_usertimer',
    inlined from 'handle_1586' at src/clock.c:409:15:
src/farptr.h:182:35: warning: array subscript 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));
      |     ^~~~~~~
In function 'handle_1586':
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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 'set_usertimer',
    inlined from 'handle_1586' at src/clock.c:409:15:
In function 'map_hd_drive':
cc1: note: source object is likely at address zero
In function 'fill_fdpt',
    inlined from 'map_hd_drive' at src/block.c:269:5:
src/farptr.h:182:35: warning: array subscript 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));
      |     ^~~~~~~
In function 'handle_1586':
cc1: note: source object is likely at address zero
In function 'set_usertimer',
    inlined from 'handle_1586' at src/clock.c:409:15:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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 'map_hd_drive':
cc1: note: source object is likely at address zero
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: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 'handle_1586':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |            ^~~~~~~
cc1: note: source object is likely at address zero
In function 'map_hd_drive':
cc1: note: source object is likely at address zero
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(
      |         ^~~~~~~
In function 'map_hd_drive':
cc1: note: source object is likely at address zero
In function 'fill_fdpt',
    inlined from 'map_hd_drive' at src/block.c:269:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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 'map_hd_drive':
cc1: note: source object is likely at address zero
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 'sercon_lazy_flush':
cc1: note: source object is likely at address zero
  Compile checking out/src/pmm.o
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)
      |         ^~~~~~~
In function 'handle_1583':
cc1: note: source object is likely at address zero
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:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.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.
      |     ^~~~~~~
In function 'handle_1583':
cc1: note: source object is likely at address zero
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:182:35: warning: array subscript 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));
      |     ^~~~~~~
In function 'handle_1583':
cc1: note: source object is likely at address zero
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:182:35: warning: array subscript 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));
      |     ^~~~~~~
In function 'handle_1583':
cc1: note: source object is likely at address zero
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: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 'handle_1583':
cc1: note: source object is likely at address zero
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 'sercon_lazy_putchar':
cc1: note: source object is likely at address zero
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 'sercon_lazy_putchar':
cc1: note: source object is likely at address zero
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_lazy_putchar':
cc1: note: source object is likely at address zero
  Compile checking out/src/font.o
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))
      |          ^~~~~~~
cc1: note: source object is likely at address zero
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.
      |                ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                                  ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                                  ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |        ^~~~~~
In function 'process_key':
cc1: note: source object is likely at address zero
In function '__process_key',
    inlined from 'process_key' at src/kbd.c:598: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:473:9: note: in expansion of macro 'SET_BDA'
  473 |         SET_BDA(kbd_flag1, flags1 & ~(KF1_LAST_E0|KF1_LAST_E1));
      |         ^~~~~~~
In function 'process_key':
cc1: note: source object is likely at address zero
In function '__process_key',
    inlined from 'process_key' at src/kbd.c:598:5:
  Compile checking out/src/boot.o
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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))
      |              ^~~~~~~
In function 'process_key':
cc1: note: source object is likely at address zero
In function '__process_key',
    inlined from 'process_key' at src/kbd.c:598: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/kbd.c:532:13: note: in expansion of macro 'SET_BDA'
  532 |             SET_BDA(soft_reset_flag, 0x1234);
      |             ^~~~~~~
In function 'process_key':
cc1: note: source object is likely at address zero
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);
      |         ^~~~~~~~~~~~
In function 'process_key':
cc1: note: source object is likely at address zero
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/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);
      |     ^~~~~~~
In function 'process_key':
cc1: note: source object is likely at address zero
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/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);
      |     ^~~~~~~
In function 'process_key':
cc1: note: source object is likely at address zero
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/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.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':
cc1: note: source object is likely at address zero
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);
      |         ^~~~~~
In function 'process_key':
cc1: note: source object is likely at address zero
In function '__process_key',
    inlined from 'process_key' at src/kbd.c:598: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:463:9: note: in expansion of macro 'SET_BDA'
  463 |         SET_BDA(kbd_flag1, flags1 | eflag);
      |         ^~~~~~~
In function 'process_key':
cc1: note: source object is likely at address zero
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);
      |              ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |               ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                ^~~~~~~
In function 'handle_sercon':
cc1: note: source object is likely at address zero
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 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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 'handle_sercon':
cc1: note: source object is likely at address zero
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 'handle_sercon':
cc1: note: source object is likely at address zero
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 'handle_sercon':
cc1: note: source object is likely at address zero
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 'handle_sercon':
cc1: note: source object is likely at address zero
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 'handle_sercon':
cc1: note: source object is likely at address zero
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 'handle_sercon':
cc1: note: source object is likely at address zero
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 'handle_sercon':
cc1: note: source object is likely at address zero
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 'handle_sercon':
cc1: note: source object is likely at address zero
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 'handle_sercon':
cc1: note: source object is likely at address zero
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 'handle_sercon':
cc1: note: source object is likely at address zero
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 'handle_sercon':
cc1: note: source object is likely at address zero
  Compile checking out/src/bootsplash.o
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 'handle_sercon':
cc1: note: source object is likely at address zero
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]);
      |         ^~~
src/disk.c: In function 'disk_13':
  Compile checking out/src/jpeg.o
In function 'handle_sercon':
cc1: note: source object is likely at address zero
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 'handle_sercon':
cc1: note: source object is likely at address zero
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 'handle_sercon':
cc1: note: source object is likely at address zero
In function 'sercon_1000',
    inlined from 'handle_sercon' at src/sercon.c:497: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:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.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);
      |         ^~~~~~~
In function 'handle_sercon':
cc1: note: source object is likely at address zero
In function 'disk_1301',
    inlined from 'disk_13' at src/disk.c:630:16:
In function 'sercon_1000',
    inlined from 'handle_sercon' at src/sercon.c:497: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);
In function 'disk_13':
cc1: note: source object is likely at address zero
In function 'disk_1301',
    inlined from 'disk_13' at src/disk.c:630: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:337:9: note: in expansion of macro 'SET_BDA'
  337 |         SET_BDA(video_cols, cols);
      |         ^~~~~~~
In function 'handle_sercon':
cc1: note: source object is likely at address zero
In function 'sercon_1000',
    inlined from 'handle_sercon' at src/sercon.c:497:16:
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);
In function 'disk_13':
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.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);
      |         ^~~~~~~
In function 'handle_sercon':
cc1: note: source object is likely at address zero
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 '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);
      |         ^~~~~~~
In function 'handle_sercon':
cc1: note: source object is likely at address zero
  Compile checking out/src/bmp.o
  Compile checking out/src/tcgbios.o
  Compile checking out/src/sha1.o
  Compile checking out/src/hw/pcidevice.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:
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);
      |         ^~~
In function 'map_floppy_drive':
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'set_equipment_flags',
    inlined from 'map_floppy_drive' at src/block.c:296:9:
In function 'interface_init':
cc1: note: source object is likely at address zero
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 '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':
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:50:5: note: in expansion of macro 'SET_IVT'
   50 |     SET_IVT(0x05, FUNC16(entry_05));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
cc1: note: source object is likely at address zero
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 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'map_floppy_drive':
In function 'interface_init':
cc1: note: source object is likely at address zero
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
In function 'set_equipment_flags',
    inlined from 'map_floppy_drive' at src/block.c:292:9:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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 '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 'interface_init':
In function 'map_floppy_drive':
cc1: note: source object is likely at address zero
cc1: note: source object is likely at address zero
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:52:5: note: in expansion of macro 'SET_IVT'
   52 |     SET_IVT(0x11, FUNC16(entry_11));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:54:5: note: in expansion of macro 'SET_IVT'
   54 |     SET_IVT(0x13, FUNC16(entry_13_official));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:55:5: note: in expansion of macro 'SET_IVT'
   55 |     SET_IVT(0x14, FUNC16(entry_14));
      |     ^~~~~~~
  Compile checking out/src/hw/ahci.o
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:56:5: note: in expansion of macro 'SET_IVT'
   56 |     SET_IVT(0x15, FUNC16(entry_15_official));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:57:5: note: in expansion of macro 'SET_IVT'
   57 |     SET_IVT(0x16, FUNC16(entry_16));
      |     ^~~~~~~
  Compile checking out/src/hw/pvscsi.o
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:58:5: note: in expansion of macro 'SET_IVT'
   58 |     SET_IVT(0x17, FUNC16(entry_17));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:59:5: note: in expansion of macro 'SET_IVT'
   59 |     SET_IVT(0x18, FUNC16(entry_18));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:60:5: note: in expansion of macro 'SET_IVT'
   60 |     SET_IVT(0x19, FUNC16(entry_19_official));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:61:5: note: in expansion of macro 'SET_IVT'
   61 |     SET_IVT(0x1a, FUNC16(entry_1a_official));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:62:5: note: in expansion of macro 'SET_IVT'
   62 |     SET_IVT(0x40, FUNC16(entry_40));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:70:5: note: in expansion of macro 'SET_IVT'
   70 |     SET_IVT(0x79, SEGOFF(0, 0));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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 'interface_init':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:88:5: note: in expansion of macro 'SET_BDA'
   88 |     SET_BDA(mem_size_kb, ebda_seg / (1024/16));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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 'interface_init':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |               ^~~~~~~
cc1: note: source object is likely at address zero
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);
cc1: note: source object is likely at address zero
src/sercon.c:528:13: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
  Compile checking out/src/hw/usb-xhci.o
  Compile checking out/src/hw/usb-hub.o
  Compile checking out/src/hw/sdcard.o
  Compile checking out/src/fw/coreboot.o
  Compile checking out/src/fw/lzmadecode.o
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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
  Compile checking out/src/fw/multiboot.o
  Compile checking out/src/fw/csm.o
  Compile checking out/src/fw/biostables.o
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)) ||
      |           ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |        ^~~
In function 'floppy_prep':
cc1: note: source object is likely at address zero
In function 'floppy_drive_recal',
    inlined from 'floppy_prep' at src/hw/floppy.c:497:19:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.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_prep':
cc1: note: source object is likely at address zero
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));
      |     ^~~~~~~
In function 'floppy_prep':
cc1: note: source object is likely at address zero
  Compile checking out/src/fw/paravirt.o
  Compile checking out/src/fw/shadow.o
  Compile checking out/src/fw/pciinit.o
  Compile checking out/src/fw/smm.o
  Compile checking out/src/fw/smp.o
  Compile checking out/src/fw/mtrr.o
  Compile checking out/src/fw/xen.o
  Compile checking out/src/fw/acpi.o
  Compile checking out/src/fw/mptable.o
  Compile checking out/src/fw/pirtable.o
  Compile checking out/src/fw/smbios.o
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
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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
      |     ^~~~~~~
cc1: note: source object is likely at address zero
  Compile checking out/src/fw/romfile_loader.o
  Compile checking out/src/fw/dsdt_parser.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 'init_pcirom':
cc1: note: source object is likely at address zero
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 'init_pcirom':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'init_pcirom':
cc1: note: source object is likely at address zero
In function 'boot_irq_restore',
    inlined from 'init_pcirom' at src/optionroms.c:354:9:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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 'init_pcirom':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'floppy_process_op':
cc1: note: source object is likely at address zero
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:595:5: note: in expansion of macro 'SET_BDA'
  595 |     SET_BDA(floppy_media_state[0], 0);
      |     ^~~~~~~
In function 'floppy_process_op':
cc1: note: source object is likely at address zero
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:596:5: note: in expansion of macro 'SET_BDA'
  596 |     SET_BDA(floppy_media_state[1], 0);
      |     ^~~~~~~
In function 'floppy_process_op':
cc1: note: source object is likely at address zero
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:597:5: note: in expansion of macro 'SET_BDA'
  597 |     SET_BDA(floppy_track[0], 0);
      |     ^~~~~~~
In function 'floppy_process_op':
cc1: note: source object is likely at address zero
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:598:5: note: in expansion of macro 'SET_BDA'
  598 |     SET_BDA(floppy_track[1], 0);
      |     ^~~~~~~
In function 'floppy_process_op':
cc1: note: source object is likely at address zero
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:599:5: note: in expansion of macro 'SET_BDA'
  599 |     SET_BDA(floppy_last_data_rate, 0);
      |     ^~~~~~~
In function 'floppy_process_op':
cc1: note: source object is likely at address zero
  Compile checking out/src/hw/virtio-ring.o
In function 'handle_csm_0002',
    inlined from 'handle_csm' at src/fw/csm.c:309:16:
src/fw/csm.c:185:18: warning: array subscript 0 is outside array bounds of 'struct bios_data_area_s[0]' [-Warray-bounds=]
  185 |     bda->hdcount = 0;
      |     ~~~~~~~~~~~~~^~~
In function 'handle_csm':
cc1: note: source object is likely at address zero
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);
      |              ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
  Compile checking out/src/hw/virtio-pci.o
  Compile checking out/src/hw/virtio-mmio.o
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);
      |                 ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
  Compile checking out/src/hw/virtio-blk.o
  Compile checking out/src/hw/virtio-scsi.o
  Compile checking out/src/hw/tpm_drivers.o
  Compile checking out/src/hw/nvme.o
  Compile checking out/src/sha512.o
  Compile checking out/src/sha256.o
  Compiling whole program out/code32seg.o
  Generating offset file out/asm-offsets.h
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;
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
  Compiling (16bit) out/romlayout.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
  Compiling whole program out/ccode16.o
  Compiling whole program out/ccode32flat.o
In file included from out/ccode32flat.o.tmp.c:52:
./src/jpeg.c:42: warning: "__LITTLE_ENDIAN" redefined
   42 | #define __LITTLE_ENDIAN
      | 
In file included from /usr/include/stdarg.h:10,
                 from ./src/output.c:7,
                 from out/ccode32flat.o.tmp.c:3:
/usr/include/bits/alltypes.h:68: note: this is the location of the previous definition
   68 | #define __LITTLE_ENDIAN 1234
      | 
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;
      |             ^~~~~~~
In function 'irqtimer_calc':
cc1: note: source object is likely at address zero
./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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
./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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
./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)
      |                         ^~~~~~~
cc1: note: source object is likely at address zero
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 'get_keystroke_full':
cc1: note: source object is likely at address zero
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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:50:5: note: in expansion of macro 'SET_IVT'
   50 |     SET_IVT(0x05, FUNC16(entry_05));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:51:5: note: in expansion of macro 'SET_IVT'
   51 |     SET_IVT(0x10, FUNC16(entry_10));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:52:5: note: in expansion of macro 'SET_IVT'
   52 |     SET_IVT(0x11, FUNC16(entry_11));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:53:5: note: in expansion of macro 'SET_IVT'
   53 |     SET_IVT(0x12, FUNC16(entry_12));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:54:5: note: in expansion of macro 'SET_IVT'
   54 |     SET_IVT(0x13, FUNC16(entry_13_official));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:55:5: note: in expansion of macro 'SET_IVT'
   55 |     SET_IVT(0x14, FUNC16(entry_14));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:56:5: note: in expansion of macro 'SET_IVT'
   56 |     SET_IVT(0x15, FUNC16(entry_15_official));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:57:5: note: in expansion of macro 'SET_IVT'
   57 |     SET_IVT(0x16, FUNC16(entry_16));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:58:5: note: in expansion of macro 'SET_IVT'
   58 |     SET_IVT(0x17, FUNC16(entry_17));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:59:5: note: in expansion of macro 'SET_IVT'
   59 |     SET_IVT(0x18, FUNC16(entry_18));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:60:5: note: in expansion of macro 'SET_IVT'
   60 |     SET_IVT(0x19, FUNC16(entry_19_official));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:61:5: note: in expansion of macro 'SET_IVT'
   61 |     SET_IVT(0x1a, FUNC16(entry_1a_official));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:62:5: note: in expansion of macro 'SET_IVT'
   62 |     SET_IVT(0x40, FUNC16(entry_40));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:70:5: note: in expansion of macro 'SET_IVT'
   70 |     SET_IVT(0x79, SEGOFF(0, 0));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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 'interface_init':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:88:5: note: in expansion of macro 'SET_BDA'
   88 |     SET_BDA(mem_size_kb, ebda_seg / (1024/16));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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 'interface_init':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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 '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);
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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 '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);
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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 '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);
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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 '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 'interface_init':
cc1: note: source object is likely at address zero
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);
      |         ^~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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/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 'interface_init':
cc1: note: source object is likely at address zero
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 'boot_fail':
cc1: note: source object is likely at address zero
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 'init_pcirom':
cc1: note: source object is likely at address zero
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 'init_pcirom':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'init_pcirom':
cc1: note: source object is likely at address zero
In function 'boot_irq_restore',
    inlined from 'init_pcirom' at ./src/optionroms.c:354:9:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/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 'init_pcirom':
cc1: note: source object is likely at address zero
In function 'irqtimer_check',
    inlined from 'interactive_bootmenu' at ./src/boot.c:755:37:
./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 'interactive_bootmenu':
cc1: note: source object is likely at address zero
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
      |     ^~~~~~~
In function 'device_hardware_setup':
cc1: note: source object is likely at address zero
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 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/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 'device_hardware_setup':
cc1: note: source object is likely at address zero
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 'device_hardware_setup':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'device_hardware_setup':
cc1: note: source object is likely at address zero
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 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.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 'device_hardware_setup':
cc1: note: source object is likely at address zero
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);
      |         ^~~
In function 'device_hardware_setup':
cc1: note: source object is likely at address zero
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/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 'device_hardware_setup':
cc1: note: source object is likely at address zero
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);
      |         ^~~
In function 'device_hardware_setup':
cc1: note: source object is likely at address zero
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/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 'device_hardware_setup':
cc1: note: source object is likely at address zero
In function 'malloc_prepboot',
    inlined from 'prepareboot' at ./src/post.c:172: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 function 'prepareboot':
cc1: note: source object is likely at address zero
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:
./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 'prepareboot':
cc1: note: source object is likely at address zero
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:
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/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 'prepareboot':
cc1: note: source object is likely at address zero
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:
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/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 'prepareboot':
cc1: note: source object is likely at address zero
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:
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/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 'prepareboot':
cc1: note: source object is likely at address zero
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:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/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 'prepareboot':
cc1: note: source object is likely at address zero
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:
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/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 'prepareboot':
cc1: note: source object is likely at address zero
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:
./src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/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 'prepareboot':
cc1: note: source object is likely at address zero
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:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/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 'prepareboot':
cc1: note: source object is likely at address zero
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:
./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 function 'prepareboot':
cc1: note: source object is likely at address zero
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:
./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 'prepareboot':
cc1: note: source object is likely at address zero
In function 'map_floppy_drive',
    inlined from 'bcv_prepboot' at ./src/boot.c:836:13,
    inlined from 'prepareboot' at ./src/post.c:167: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 'prepareboot':
cc1: note: source object is likely at address zero
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:
./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 function 'prepareboot':
cc1: note: source object is likely at address zero
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:
./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 'prepareboot':
cc1: note: source object is likely at address zero
In function 'map_floppy_drive',
    inlined from 'bcv_prepboot' at ./src/boot.c:836:13,
    inlined from 'prepareboot' at ./src/post.c:167: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);
      |         ^~~~~~~
In function 'prepareboot':
cc1: note: source object is likely at address zero
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);
      |         ^~~
In function 'mathcp_setup':
cc1: note: source object is likely at address zero
In function 'set_equipment_flags',
    inlined from 'mathcp_setup' at ./src/misc.c:66: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/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'mathcp_setup':
cc1: note: source object is likely at address zero
./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);
      |                          ^~~~~~~
cc1: note: source object is likely at address zero
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
./src/biosvar.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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |         ^~~
In function 'cdrom_boot':
cc1: note: source object is likely at address zero
In function 'set_equipment_flags',
    inlined from 'cdrom_boot' at ./src/cdrom.c:242: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/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'cdrom_boot':
cc1: note: source object is likely at address zero
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);
In function 'maininit':
cc1: note: source object is likely at address zero
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=]
In function 'maininit':
cc1: note: source object is likely at address zero
In function 'sercon_setup',
    inlined from 'maininit' at ./src/post.c:211:5:
./src/sercon.c:528:13: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
In function 'maininit':
cc1: note: source object is likely at address zero
In function 'sercon_setup',
    inlined from 'maininit' at ./src/post.c:211: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/sercon.c:541:5: note: in expansion of macro 'SET_IVT'
  541 |     SET_IVT(0x10, FUNC16(entry_sercon));
      |     ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
In function 'sercon_setup',
    inlined from 'maininit' at ./src/post.c:211:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/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 'maininit':
cc1: note: source object is likely at address zero
In file included from out/ccode32flat.o.tmp.c:65:
In function 'handle_csm_0002',
    inlined from 'handle_csm' at ./src/fw/csm.c:309:16:
./src/fw/csm.c:185:18: warning: array subscript 0 is outside array bounds of 'struct bios_data_area_s[0]' [-Warray-bounds=]
  185 |     bda->hdcount = 0;
      |     ~~~~~~~~~~~~~^~~
In function 'handle_csm':
cc1: note: source object is likely at address zero
  Building ld scripts
Version: 1.16.2-20231022_004128-build-3-19-x86
Fixed space: 0xe05b-0x10000  total: 8101  slack: 17  Percent slack: 0.2%
16bit size:           36672
32bit segmented size: 2289
32bit flat size:      43535
32bit flat init size: 55328
Lowmem size:          2224
f-segment var size:   1408
  Linking out/rom16.o
  Linking out/rom32seg.o
  Stripping out/rom32seg.noexec.o
ld: warning: out/rom16.o has a LOAD segment with RWX permissions
  Stripping out/rom16.noexec.o
  Linking out/rom.o
ld: warning: out/rom.o has a LOAD segment with RWX permissions
  Prepping out/bios.bin.prep
Total size: 145472  Fixed: 83904  Free: 116672 (used 55.5% of 256KiB rom)
  Creating out/Csm16.bin
>>> seabios: building bios-coreboot.bin
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'check_stdin':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:77:17: warning: format not a string literal and no format arguments [-Wformat-security]
   77 |                 printf(_("aborted!\n\n"));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:78:17: warning: format not a string literal and no format arguments [-Wformat-security]
   78 |                 printf(_("Console input/output is redirected. "));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:79:17: warning: format not a string literal and no format arguments [-Wformat-security]
   79 |                 printf(_("Run 'make oldconfig' to update configuration.\n\n"));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'conf_askvalue':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:89:17: warning: format not a string literal and no format arguments [-Wformat-security]
   89 |                 printf(_("(NEW) "));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'conf_choice':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:290:33: warning: format not a string literal and no format arguments [-Wformat-security]
  290 |                                 printf(_(" (NEW)"));
      |                                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'check_conf':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:438:41: warning: format not a string literal and no format arguments [-Wformat-security]
  438 |                                         printf(_("*\n* Restart config...\n*\n"));
      |                                         ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'main':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:636:41: warning: format not a string literal and no format arguments [-Wformat-security]
  636 |                                         _("\n*** The configuration requires explicit update.\n\n"));
      |                                         ^
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:689:25: warning: format not a string literal and no format arguments [-Wformat-security]
  689 |                         fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n"));
      |                         ^~~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:693:25: warning: format not a string literal and no format arguments [-Wformat-security]
  693 |                         fprintf(stderr, _("\n*** Error during update of the configuration.\n\n"));
      |                         ^~~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:704:25: warning: format not a string literal and no format arguments [-Wformat-security]
  704 |                         fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n"));
      |                         ^~~~~~~
scripts/kconfig/conf --olddefconfig /home/buildozer/aports/main/seabios/src/seabios-1.16.2/src/Kconfig
#
# configuration written to /home/buildozer/aports/main/seabios/src/seabios-1.16.2/.config
#
  Compiling to assembler out/src/asm-offsets.s
  Build Kconfig config file
  Compile checking out/src/misc.o
  Compile checking out/src/stacks.o
  Compile checking out/src/output.o
  Compile checking out/src/string.o
  Compile checking out/src/block.o
  Compile checking out/src/cdrom.o
  Compile checking out/src/disk.o
  Compile checking out/src/mouse.o
  Compile checking out/src/kbd.o
  Compile checking out/src/system.o
  Compile checking out/src/serial.o
  Compile checking out/src/sercon.o
  Compile checking out/src/clock.o
  Compile checking out/src/resume.o
  Compile checking out/src/pnpbios.o
  Compile checking out/src/vgahooks.o
  Compile checking out/src/pcibios.o
  Compile checking out/src/apm.o
  Compile checking out/src/cp437.o
  Compile checking out/src/hw/pci.o
  Compile checking out/src/hw/timer.o
  Compile checking out/src/hw/rtc.o
  Compile checking out/src/hw/dma.o
  Compile checking out/src/hw/pic.o
  Compile checking out/src/hw/ps2port.o
  Compile checking out/src/hw/serialio.o
  Compile checking out/src/hw/usb.o
  Compile checking out/src/hw/usb-uhci.o
  Compile checking out/src/hw/usb-ohci.o
  Compile checking out/src/hw/usb-ehci.o
  Compile checking out/src/hw/usb-hid.o
  Compile checking out/src/hw/usb-msc.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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |         ^~~
In function 'mathcp_setup':
cc1: note: source object is likely at address zero
In function 'set_equipment_flags',
    inlined from 'mathcp_setup' at src/misc.c:66: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/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'mathcp_setup':
cc1: note: source object is likely at address zero
  Compile checking out/src/hw/usb-uas.o
  Compile checking out/src/hw/blockcmd.o
  Compile checking out/src/hw/floppy.o
  Compile checking out/src/hw/ata.o
  Compile checking out/src/hw/ramdisk.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 function 'mouse_init':
cc1: note: source object is likely at address zero
In file included from src/biosvar.h:10:
In function 'set_equipment_flags',
    inlined from 'mouse_init' at src/mouse.c:23: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/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'mouse_init':
cc1: note: source object is likely at address zero
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);
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |                 ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |            ^~~~~~~
In function 'handle_15':
cc1: note: source object is likely at address zero
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))
      |           ^~~~~~~
cc1: note: source object is likely at address zero
In function 'clear_usertimer',
    inlined from 'clear_usertimer' at src/clock.c:387:1:
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:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.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);
      |     ^~~~~~~
In function 'clear_usertimer':
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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 'handle_15c2':
cc1: note: source object is likely at address zero
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 'handle_15c2':
cc1: note: source object is likely at address zero
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 'handle_15c2':
cc1: note: source object is likely at address zero
  Compile checking out/src/hw/lsi-scsi.o
  Compile checking out/src/hw/esp-scsi.o
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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
  Compile checking out/src/hw/megasas.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 function 'serial_setup':
cc1: note: source object is likely at address zero
In file included from src/biosvar.h:10:
In function 'set_equipment_flags',
    inlined from 'serial_setup' at src/serial.c:56: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/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'serial_setup':
cc1: note: source object is likely at address zero
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);
      |                          ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |         ^~~
In function 'cdrom_boot':
cc1: note: source object is likely at address zero
In function 'set_equipment_flags',
    inlined from 'cdrom_boot' at src/cdrom.c:242: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/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'cdrom_boot':
cc1: note: source object is likely at address zero
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;
      |                       ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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 'sercon_cursor_pos_set':
cc1: note: source object is likely at address zero
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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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 'sercon_lazy_lf':
cc1: note: source object is likely at address zero
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 'sercon_lazy_lf':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'handle_1a':
cc1: note: source object is likely at address zero
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 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.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_1a':
cc1: note: source object is likely at address zero
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);
      |         ^~~~~
In function 'handle_1a':
cc1: note: source object is likely at address zero
In function 'handle_1a00',
    inlined from 'handle_1a' at src/clock.c:267: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:76:16: note: in expansion of macro 'GET_BDA'
   76 |     regs->al = GET_BDA(timer_rollover);
      |                ^~~~~~~
In function 'handle_1a':
cc1: note: source object is likely at address zero
In function 'handle_1a00',
    inlined from 'handle_1a' at src/clock.c:267: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/clock.c:77:5: note: in expansion of macro 'SET_BDA'
   77 |     SET_BDA(timer_rollover, 0); // reset flag
      |     ^~~~~~~
In function 'handle_1a':
cc1: note: source object is likely at address zero
  Compile checking out/src/hw/mpt-scsi.o
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);
      |                       ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |                       ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |                        ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |                        ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |            ^~~~~~~
In function 'process_mouse':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'lpt_setup':
cc1: note: source object is likely at address zero
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 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.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 'lpt_setup':
  Compile checking out/src/post.o
cc1: note: source object is likely at address zero
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);
      |         ^~~
In function 'lpt_setup':
cc1: note: source object is likely at address zero
In function 'set_equipment_flags',
    inlined from 'lpt_setup' at src/serial.c:217: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/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'lpt_setup':
cc1: note: source object is likely at address zero
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);
      |                        ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |                        ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |                       ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |                       ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                 ^~~~~~~
cc1: note: source object is likely at address zero
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)
      |                         ^~~~~~~
cc1: note: source object is likely at address zero
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))
      |                  ^~~~~~~
In function 'handle_16':
cc1: note: source object is likely at address zero
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 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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_16':
cc1: note: source object is likely at address zero
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 'handle_16':
cc1: note: source object is likely at address zero
  Compile checking out/src/e820map.o
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);
      |         ^~~~~~~
In function 'handle_08':
cc1: note: source object is likely at address zero
In function 'clock_update',
    inlined from 'handle_08' at src/clock.c:306:5:
src/farptr.h:180:6: warning: array subscript 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);
      |                                 ^~~~~~~
In function 'handle_08':
cc1: note: source object is likely at address zero
In function 'clock_update',
    inlined from 'handle_08' at src/clock.c:306: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/clock.c:290:9: note: in expansion of macro 'SET_BDA'
  290 |         SET_BDA(timer_rollover, GET_BDA(timer_rollover) + 1);
      |         ^~~~~~~
In function 'handle_08':
cc1: note: source object is likely at address zero
In function 'clock_update',
    inlined from 'handle_08' at src/clock.c:306: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:292:5: note: in expansion of macro 'SET_BDA'
  292 |     SET_BDA(timer_counter, counter);
      |     ^~~~~~~
In function 'handle_08':
cc1: note: source object is likely at address zero
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);
      |                             ^~~~~~~
cc1: note: source object is likely at address zero
  Compile checking out/src/malloc.o
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;
      |             ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
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;
      |                   ^~
cc1: note: source object is likely at address zero
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 'map_hd_drive':
cc1: note: source object is likely at address zero
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:
  Compile checking out/src/romfile.o
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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 'map_hd_drive':
cc1: note: source object is likely at address zero
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(
      |         ^~~~~~~
In function 'map_hd_drive':
cc1: note: source object is likely at address zero
In function 'fill_fdpt',
    inlined from 'map_hd_drive' at src/block.c:269:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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 'map_hd_drive':
cc1: note: source object is likely at address zero
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:
  Compile checking out/src/x86.o
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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 'map_hd_drive':
cc1: note: source object is likely at address zero
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(
      |         ^~~~~~~
In function 'map_hd_drive':
cc1: note: source object is likely at address zero
In function 'fill_fdpt',
    inlined from 'map_hd_drive' at src/block.c:269:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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 'map_hd_drive':
cc1: note: source object is likely at address zero
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)
      |               ^~~~~~~
cc1: note: source object is likely at address zero
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 'sercon_lazy_flush':
cc1: note: source object is likely at address zero
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)
      |         ^~~~~~~
In function 'handle_1586':
cc1: note: source object is likely at address zero
In function 'set_usertimer',
    inlined from 'handle_1586' at src/clock.c:409: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/clock.c:379:5: note: in expansion of macro 'SET_BDA'
  379 |     SET_BDA(rtc_wait_flag, RWS_WAIT_PENDING);  // Set status byte.
      |     ^~~~~~~
In function 'handle_1586':
cc1: note: source object is likely at address zero
In function 'set_usertimer',
    inlined from 'handle_1586' at src/clock.c:409:15:
src/farptr.h:182:35: warning: array subscript 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));
      |     ^~~~~~~
In function 'handle_1586':
cc1: note: source object is likely at address zero
In function 'set_usertimer',
    inlined from 'handle_1586' at src/clock.c:409:15:
src/farptr.h:182:35: warning: array subscript 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));
      |     ^~~~~~~
In function 'handle_1586':
cc1: note: source object is likely at address zero
In function 'set_usertimer',
    inlined from 'handle_1586' at src/clock.c:409:15:
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 'handle_1586':
cc1: note: source object is likely at address zero
  Compile checking out/src/optionroms.o
  Compile checking out/src/pmm.o
  Compile checking out/src/font.o
  Compile checking out/src/boot.o
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)
      |         ^~~~~~~
In function 'handle_1583':
cc1: note: source object is likely at address zero
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:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.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.
      |     ^~~~~~~
In function 'handle_1583':
cc1: note: source object is likely at address zero
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:182:35: warning: array subscript 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));
      |     ^~~~~~~
In function 'handle_1583':
cc1: note: source object is likely at address zero
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:182:35: warning: array subscript 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));
      |     ^~~~~~~
In function 'handle_1583':
cc1: note: source object is likely at address zero
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: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 'handle_1583':
cc1: note: source object is likely at address zero
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);
      |        ^~~~~~
In function 'process_key':
cc1: note: source object is likely at address zero
In function '__process_key',
    inlined from 'process_key' at src/kbd.c:598: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:473:9: note: in expansion of macro 'SET_BDA'
  473 |         SET_BDA(kbd_flag1, flags1 & ~(KF1_LAST_E0|KF1_LAST_E1));
      |         ^~~~~~~
In function 'process_key':
cc1: note: source object is likely at address zero
In function '__process_key',
    inlined from 'process_key' at src/kbd.c:598: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/kbd.c:529:14: note: in expansion of macro 'GET_BDA'
  529 |         if ((GET_BDA(kbd_flag0) & (KF0_CTRLACTIVE|KF0_ALTACTIVE))
      |              ^~~~~~~
In function 'process_key':
cc1: note: source object is likely at address zero
In function '__process_key',
    inlined from 'process_key' at src/kbd.c:598: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/kbd.c:532:13: note: in expansion of macro 'SET_BDA'
  532 |             SET_BDA(soft_reset_flag, 0x1234);
      |             ^~~~~~~
In function 'process_key':
cc1: note: source object is likely at address zero
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);
      |         ^~~~~~~~~~~~
In function 'process_key':
cc1: note: source object is likely at address zero
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/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);
      |     ^~~~~~~
In function 'process_key':
cc1: note: source object is likely at address zero
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/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);
      |     ^~~~~~~
In function 'process_key':
cc1: note: source object is likely at address zero
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/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.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':
cc1: note: source object is likely at address zero
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);
      |         ^~~~~~
In function 'process_key':
cc1: note: source object is likely at address zero
In function '__process_key',
    inlined from 'process_key' at src/kbd.c:598:5:
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 'sercon_lazy_putchar':
cc1: note: source object is likely at address zero
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 'sercon_lazy_putchar':
cc1: note: source object is likely at address zero
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_lazy_putchar':
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.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);
      |         ^~~~~~~
In function 'process_key':
cc1: note: source object is likely at address zero
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))
      |          ^~~~~~~
cc1: note: source object is likely at address zero
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.
      |                ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                                  ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                                  ^~~~~~~
cc1: note: source object is likely at address zero
  Compile checking out/src/bootsplash.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);
      |              ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |               ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                ^~~~~~~
In function 'handle_sercon':
cc1: note: source object is likely at address zero
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 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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 'handle_sercon':
cc1: note: source object is likely at address zero
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 'handle_sercon':
cc1: note: source object is likely at address zero
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 'handle_sercon':
cc1: note: source object is likely at address zero
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 'handle_sercon':
cc1: note: source object is likely at address zero
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 'handle_sercon':
cc1: note: source object is likely at address zero
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 'handle_sercon':
cc1: note: source object is likely at address zero
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 'handle_sercon':
cc1: note: source object is likely at address zero
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 'handle_sercon':
cc1: note: source object is likely at address zero
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 'handle_sercon':
cc1: note: source object is likely at address zero
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 'handle_sercon':
cc1: note: source object is likely at address zero
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 'handle_sercon':
cc1: note: source object is likely at address zero
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 'handle_sercon':
cc1: note: source object is likely at address zero
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 'handle_sercon':
cc1: note: source object is likely at address zero
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 'handle_sercon':
cc1: note: source object is likely at address zero
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 'handle_sercon':
cc1: note: source object is likely at address zero
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);
      |         ^~~~~~~
In function 'handle_sercon':
cc1: note: source object is likely at address zero
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 '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);
      |         ^~~~~~~
In function 'handle_sercon':
cc1: note: source object is likely at address zero
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:338:9: note: in expansion of macro 'SET_BDA'
  338 |         SET_BDA(video_rows, rows-1);
      |         ^~~~~~~
In function 'handle_sercon':
cc1: note: source object is likely at address zero
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 '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);
      |         ^~~~~~~
In function 'handle_sercon':
cc1: note: source object is likely at address zero
  Compile checking out/src/jpeg.o
src/disk.c: In function 'disk_13':
  Compile checking out/src/bmp.o
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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);
In function 'disk_13':
cc1: note: source object is likely at address zero
In function 'disk_1301',
    inlined from 'disk_13' at src/disk.c:630:16:
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);
In function 'disk_13':
cc1: note: source object is likely at address zero
  Compile checking out/src/tcgbios.o
  Compile checking out/src/sha1.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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:50:5: note: in expansion of macro 'SET_IVT'
   50 |     SET_IVT(0x05, FUNC16(entry_05));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:51:5: note: in expansion of macro 'SET_IVT'
   51 |     SET_IVT(0x10, FUNC16(entry_10));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:52:5: note: in expansion of macro 'SET_IVT'
   52 |     SET_IVT(0x11, FUNC16(entry_11));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:53:5: note: in expansion of macro 'SET_IVT'
   53 |     SET_IVT(0x12, FUNC16(entry_12));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:54:5: note: in expansion of macro 'SET_IVT'
   54 |     SET_IVT(0x13, FUNC16(entry_13_official));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:55:5: note: in expansion of macro 'SET_IVT'
   55 |     SET_IVT(0x14, FUNC16(entry_14));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:56:5: note: in expansion of macro 'SET_IVT'
   56 |     SET_IVT(0x15, FUNC16(entry_15_official));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:57:5: note: in expansion of macro 'SET_IVT'
   57 |     SET_IVT(0x16, FUNC16(entry_16));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:58:5: note: in expansion of macro 'SET_IVT'
   58 |     SET_IVT(0x17, FUNC16(entry_17));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:59:5: note: in expansion of macro 'SET_IVT'
   59 |     SET_IVT(0x18, FUNC16(entry_18));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:60:5: note: in expansion of macro 'SET_IVT'
   60 |     SET_IVT(0x19, FUNC16(entry_19_official));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
  Compile checking out/src/hw/pcidevice.o
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:62:5: note: in expansion of macro 'SET_IVT'
   62 |     SET_IVT(0x40, FUNC16(entry_40));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
In function 'set_equipment_flags',
    inlined from 'map_floppy_drive' at src/block.c:296: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/post.c:70:5: note: in expansion of macro 'SET_IVT'
   70 |     SET_IVT(0x79, SEGOFF(0, 0));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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 function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
In function 'map_floppy_drive':
cc1: note: source object is likely at address zero
  Compile checking out/src/hw/ahci.o
In function 'set_equipment_flags',
    inlined from 'map_floppy_drive' at src/block.c:296:9:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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 'interface_init':
cc1: note: source object is likely at address zero
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':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:88:5: note: in expansion of macro 'SET_BDA'
   88 |     SET_BDA(mem_size_kb, ebda_seg / (1024/16));
      |     ^~~~~~~
In function 'interface_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/block.c:297:9: note: in expansion of macro 'SET_BDA'
  297 |         SET_BDA(floppy_harddisk_info, 0x77);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
cc1: note: source object is likely at address zero
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:
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);
      |         ^~~
In function 'map_floppy_drive':
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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 'interface_init':
cc1: note: source object is likely at address zero
In function 'set_equipment_flags',
    inlined from 'map_floppy_drive' at src/block.c:292: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/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':
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
  Compile checking out/src/hw/pvscsi.o
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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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
      |     ^~~~~~~
cc1: note: source object is likely at address zero
  Compile checking out/src/hw/usb-xhci.o
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);
      |               ^~~~~~~
cc1: note: source object is likely at address zero
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);
cc1: note: source object is likely at address zero
src/sercon.c:528:13: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
  Compile checking out/src/hw/usb-hub.o
  Compile checking out/src/hw/sdcard.o
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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
  Compile checking out/src/fw/coreboot.o
  Compile checking out/src/fw/lzmadecode.o
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)) ||
      |           ^~~~~~~
  Compile checking out/src/fw/multiboot.o
cc1: note: source object is likely at address zero
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);
      |        ^~~
In function 'floppy_prep':
cc1: note: source object is likely at address zero
In function 'floppy_drive_recal',
    inlined from 'floppy_prep' at src/hw/floppy.c:497:19:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.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_prep':
cc1: note: source object is likely at address zero
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));
      |     ^~~~~~~
In function 'floppy_prep':
cc1: note: source object is likely at address zero
  Compile checking out/src/fw/csm.o
  Compile checking out/src/fw/biostables.o
  Compile checking out/src/fw/paravirt.o
  Compile checking out/src/fw/shadow.o
  Compile checking out/src/fw/pciinit.o
  Compile checking out/src/fw/smm.o
  Compile checking out/src/fw/smp.o
  Compile checking out/src/fw/mtrr.o
  Compile checking out/src/fw/xen.o
  Compile checking out/src/fw/acpi.o
  Compile checking out/src/fw/mptable.o
  Compile checking out/src/fw/pirtable.o
  Compile checking out/src/fw/smbios.o
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
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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 'init_pcirom':
cc1: note: source object is likely at address zero
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 'init_pcirom':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'init_pcirom':
cc1: note: source object is likely at address zero
In function 'boot_irq_restore',
    inlined from 'init_pcirom' at src/optionroms.c:354:9:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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 'init_pcirom':
cc1: note: source object is likely at address zero
  Compile checking out/src/fw/romfile_loader.o
  Compile checking out/src/fw/dsdt_parser.o
In function 'floppy_reset',
    inlined from 'floppy_process_op' at src/hw/floppy.c:691:16:
  Compile checking out/src/hw/virtio-ring.o
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.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);
      |     ^~~~~~~
In function 'floppy_process_op':
cc1: note: source object is likely at address zero
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:595:5: note: in expansion of macro 'SET_BDA'
  595 |     SET_BDA(floppy_media_state[0], 0);
      |     ^~~~~~~
In function 'floppy_process_op':
cc1: note: source object is likely at address zero
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:596:5: note: in expansion of macro 'SET_BDA'
  596 |     SET_BDA(floppy_media_state[1], 0);
      |     ^~~~~~~
In function 'floppy_process_op':
cc1: note: source object is likely at address zero
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:597:5: note: in expansion of macro 'SET_BDA'
  597 |     SET_BDA(floppy_track[0], 0);
      |     ^~~~~~~
In function 'floppy_process_op':
cc1: note: source object is likely at address zero
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:598:5: note: in expansion of macro 'SET_BDA'
  598 |     SET_BDA(floppy_track[1], 0);
      |     ^~~~~~~
In function 'floppy_process_op':
cc1: note: source object is likely at address zero
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:599:5: note: in expansion of macro 'SET_BDA'
  599 |     SET_BDA(floppy_last_data_rate, 0);
      |     ^~~~~~~
In function 'floppy_process_op':
cc1: note: source object is likely at address zero
  Compile checking out/src/hw/virtio-pci.o
  Compile checking out/src/hw/virtio-mmio.o
  Compile checking out/src/hw/virtio-blk.o
  Compile checking out/src/hw/virtio-scsi.o
  Compile checking out/src/hw/tpm_drivers.o
  Compile checking out/src/hw/nvme.o
  Compile checking out/src/sha256.o
  Compile checking out/src/sha512.o
  Compiling whole program out/code32seg.o
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);
      |              ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
  Generating offset file out/asm-offsets.h
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);
      |                 ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
  Compiling (16bit) out/romlayout.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;
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
  Compiling whole program out/ccode16.o
  Compiling whole program out/ccode32flat.o
In file included from out/ccode32flat.o.tmp.c:52:
./src/jpeg.c:42: warning: "__LITTLE_ENDIAN" redefined
   42 | #define __LITTLE_ENDIAN
      | 
In file included from /usr/include/stdarg.h:10,
                 from ./src/output.c:7,
                 from out/ccode32flat.o.tmp.c:3:
/usr/include/bits/alltypes.h:68: note: this is the location of the previous definition
   68 | #define __LITTLE_ENDIAN 1234
      | 
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;
      |             ^~~~~~~
In function 'irqtimer_calc':
cc1: note: source object is likely at address zero
./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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
./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)
      |                         ^~~~~~~
cc1: note: source object is likely at address zero
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 'get_keystroke_full':
cc1: note: source object is likely at address zero
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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:50:5: note: in expansion of macro 'SET_IVT'
   50 |     SET_IVT(0x05, FUNC16(entry_05));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:51:5: note: in expansion of macro 'SET_IVT'
   51 |     SET_IVT(0x10, FUNC16(entry_10));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:52:5: note: in expansion of macro 'SET_IVT'
   52 |     SET_IVT(0x11, FUNC16(entry_11));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:53:5: note: in expansion of macro 'SET_IVT'
   53 |     SET_IVT(0x12, FUNC16(entry_12));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:54:5: note: in expansion of macro 'SET_IVT'
   54 |     SET_IVT(0x13, FUNC16(entry_13_official));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:55:5: note: in expansion of macro 'SET_IVT'
   55 |     SET_IVT(0x14, FUNC16(entry_14));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:56:5: note: in expansion of macro 'SET_IVT'
   56 |     SET_IVT(0x15, FUNC16(entry_15_official));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:57:5: note: in expansion of macro 'SET_IVT'
   57 |     SET_IVT(0x16, FUNC16(entry_16));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:58:5: note: in expansion of macro 'SET_IVT'
   58 |     SET_IVT(0x17, FUNC16(entry_17));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:59:5: note: in expansion of macro 'SET_IVT'
   59 |     SET_IVT(0x18, FUNC16(entry_18));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:60:5: note: in expansion of macro 'SET_IVT'
   60 |     SET_IVT(0x19, FUNC16(entry_19_official));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:61:5: note: in expansion of macro 'SET_IVT'
   61 |     SET_IVT(0x1a, FUNC16(entry_1a_official));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:62:5: note: in expansion of macro 'SET_IVT'
   62 |     SET_IVT(0x40, FUNC16(entry_40));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:70:5: note: in expansion of macro 'SET_IVT'
   70 |     SET_IVT(0x79, SEGOFF(0, 0));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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 'interface_init':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:88:5: note: in expansion of macro 'SET_BDA'
   88 |     SET_BDA(mem_size_kb, ebda_seg / (1024/16));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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 'interface_init':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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 '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);
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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 '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);
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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 '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);
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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 '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 'interface_init':
cc1: note: source object is likely at address zero
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);
      |         ^~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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/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 'interface_init':
cc1: note: source object is likely at address zero
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 'boot_fail':
cc1: note: source object is likely at address zero
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 'init_pcirom':
cc1: note: source object is likely at address zero
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 'init_pcirom':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'init_pcirom':
cc1: note: source object is likely at address zero
In function 'boot_irq_restore',
    inlined from 'init_pcirom' at ./src/optionroms.c:354:9:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/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 'init_pcirom':
cc1: note: source object is likely at address zero
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
      |     ^~~~~~~
In function 'device_hardware_setup':
cc1: note: source object is likely at address zero
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 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/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 'device_hardware_setup':
cc1: note: source object is likely at address zero
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 'device_hardware_setup':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'device_hardware_setup':
cc1: note: source object is likely at address zero
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 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.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 'device_hardware_setup':
cc1: note: source object is likely at address zero
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);
      |         ^~~
In function 'device_hardware_setup':
cc1: note: source object is likely at address zero
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/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 'device_hardware_setup':
cc1: note: source object is likely at address zero
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);
      |         ^~~
In function 'device_hardware_setup':
cc1: note: source object is likely at address zero
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/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 'device_hardware_setup':
cc1: note: source object is likely at address zero
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);
      |         ^~~
In function 'platform_hardware_setup':
cc1: note: source object is likely at address zero
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/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 'platform_hardware_setup':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'platform_hardware_setup':
cc1: note: source object is likely at address zero
./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);
      |                          ^~~~~~~
cc1: note: source object is likely at address zero
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
./src/biosvar.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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |         ^~~
In function 'cdrom_boot':
cc1: note: source object is likely at address zero
In function 'set_equipment_flags',
    inlined from 'cdrom_boot' at ./src/cdrom.c:242: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/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'cdrom_boot':
cc1: note: source object is likely at address zero
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);
In function 'maininit':
cc1: note: source object is likely at address zero
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=]
In function 'maininit':
cc1: note: source object is likely at address zero
In function 'sercon_setup',
    inlined from 'maininit' at ./src/post.c:211:5:
./src/sercon.c:528:13: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
In function 'maininit':
cc1: note: source object is likely at address zero
In function 'sercon_setup',
    inlined from 'maininit' at ./src/post.c:211: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/sercon.c:541:5: note: in expansion of macro 'SET_IVT'
  541 |     SET_IVT(0x10, FUNC16(entry_sercon));
      |     ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
In function 'sercon_setup',
    inlined from 'maininit' at ./src/post.c:211:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/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 'maininit':
cc1: note: source object is likely at address zero
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 'maininit':
cc1: note: source object is likely at address zero
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 function 'maininit':
cc1: note: source object is likely at address zero
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 'maininit':
cc1: note: source object is likely at address zero
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 'maininit':
cc1: note: source object is likely at address zero
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 'maininit':
cc1: note: source object is likely at address zero
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(
      |         ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/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 'maininit':
cc1: note: source object is likely at address zero
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 'maininit':
cc1: note: source object is likely at address zero
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(
      |         ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/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 'maininit':
cc1: note: source object is likely at address zero
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);
      |         ^~~
In function 'maininit':
cc1: note: source object is likely at address zero
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/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 'maininit':
cc1: note: source object is likely at address zero
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 'maininit':
cc1: note: source object is likely at address zero
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);
      |         ^~~
In function 'maininit':
cc1: note: source object is likely at address zero
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/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 'maininit':
cc1: note: source object is likely at address zero
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);
      |         ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
  Building ld scripts
Version: 1.16.2-20231022_004141-build-3-19-x86
Fixed space: 0xe05b-0x10000  total: 8101  slack: 16  Percent slack: 0.2%
16bit size:           38048
32bit segmented size: 2289
32bit flat size:      47439
32bit flat init size: 61568
Lowmem size:          2240
f-segment var size:   1248
  Linking out/rom16.o
  Linking out/rom32seg.o
  Stripping out/rom32seg.noexec.o
ld: warning: out/rom16.o has a LOAD segment with RWX permissions
  Stripping out/rom16.noexec.o
  Linking out/rom.o
ld: warning: out/rom.o has a LOAD segment with RWX permissions
  Prepping out/bios.bin.prep
Total size: 157408  Fixed: 89024  Free: 104736 (used 60.0% of 256KiB rom)
  Creating out/bios.bin.elf
>>> seabios: building bios.bin
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'check_stdin':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:77:17: warning: format not a string literal and no format arguments [-Wformat-security]
   77 |                 printf(_("aborted!\n\n"));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:78:17: warning: format not a string literal and no format arguments [-Wformat-security]
   78 |                 printf(_("Console input/output is redirected. "));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:79:17: warning: format not a string literal and no format arguments [-Wformat-security]
   79 |                 printf(_("Run 'make oldconfig' to update configuration.\n\n"));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'conf_askvalue':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:89:17: warning: format not a string literal and no format arguments [-Wformat-security]
   89 |                 printf(_("(NEW) "));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'conf_choice':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:290:33: warning: format not a string literal and no format arguments [-Wformat-security]
  290 |                                 printf(_(" (NEW)"));
      |                                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'check_conf':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:438:41: warning: format not a string literal and no format arguments [-Wformat-security]
  438 |                                         printf(_("*\n* Restart config...\n*\n"));
      |                                         ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'main':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:636:41: warning: format not a string literal and no format arguments [-Wformat-security]
  636 |                                         _("\n*** The configuration requires explicit update.\n\n"));
      |                                         ^
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:689:25: warning: format not a string literal and no format arguments [-Wformat-security]
  689 |                         fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n"));
      |                         ^~~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:693:25: warning: format not a string literal and no format arguments [-Wformat-security]
  693 |                         fprintf(stderr, _("\n*** Error during update of the configuration.\n\n"));
      |                         ^~~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:704:25: warning: format not a string literal and no format arguments [-Wformat-security]
  704 |                         fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n"));
      |                         ^~~~~~~
scripts/kconfig/conf --olddefconfig /home/buildozer/aports/main/seabios/src/seabios-1.16.2/src/Kconfig
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/.config:9:warning: override: reassigning to symbol USB_OHCI
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/.config:16:warning: override: reassigning to symbol NVME
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/.config:17:warning: override: reassigning to symbol VGAHOOKS
#
# configuration written to /home/buildozer/aports/main/seabios/src/seabios-1.16.2/.config
#
  Compiling to assembler out/src/asm-offsets.s
  Build Kconfig config file
  Compile checking out/src/misc.o
  Compile checking out/src/stacks.o
  Compile checking out/src/output.o
  Compile checking out/src/string.o
  Compile checking out/src/block.o
  Compile checking out/src/cdrom.o
  Compile checking out/src/disk.o
  Compile checking out/src/mouse.o
  Compile checking out/src/kbd.o
  Compile checking out/src/system.o
  Compile checking out/src/serial.o
  Compile checking out/src/sercon.o
  Compile checking out/src/clock.o
  Compile checking out/src/resume.o
  Compile checking out/src/pnpbios.o
  Compile checking out/src/vgahooks.o
  Compile checking out/src/pcibios.o
  Compile checking out/src/apm.o
  Compile checking out/src/cp437.o
  Compile checking out/src/hw/pci.o
  Compile checking out/src/hw/timer.o
  Compile checking out/src/hw/rtc.o
  Compile checking out/src/hw/dma.o
  Compile checking out/src/hw/pic.o
  Compile checking out/src/hw/ps2port.o
  Compile checking out/src/hw/serialio.o
  Compile checking out/src/hw/usb.o
  Compile checking out/src/hw/usb-uhci.o
  Compile checking out/src/hw/usb-ohci.o
  Compile checking out/src/hw/usb-ehci.o
  Compile checking out/src/hw/usb-hid.o
  Compile checking out/src/hw/usb-msc.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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |         ^~~
In function 'mathcp_setup':
cc1: note: source object is likely at address zero
In function 'set_equipment_flags',
    inlined from 'mathcp_setup' at src/misc.c:66: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/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'mathcp_setup':
cc1: note: source object is likely at address zero
  Compile checking out/src/hw/usb-uas.o
  Compile checking out/src/hw/blockcmd.o
  Compile checking out/src/hw/floppy.o
  Compile checking out/src/hw/ramdisk.o
  Compile checking out/src/hw/ata.o
  Compile checking out/src/hw/esp-scsi.o
  Compile checking out/src/hw/lsi-scsi.o
  Compile checking out/src/hw/megasas.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 function 'mouse_init':
cc1: note: source object is likely at address zero
In file included from src/biosvar.h:10:
In function 'set_equipment_flags',
    inlined from 'mouse_init' at src/mouse.c:23: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/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'mouse_init':
cc1: note: source object is likely at address zero
  Compile checking out/src/hw/mpt-scsi.o
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 'handle_15c2':
cc1: note: source object is likely at address zero
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 'handle_15c2':
cc1: note: source object is likely at address zero
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 'handle_15c2':
cc1: note: source object is likely at address zero
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);
      |            ^~~~~~~
In function 'handle_15':
cc1: note: source object is likely at address zero
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 function 'serial_setup':
cc1: note: source object is likely at address zero
In file included from src/biosvar.h:10:
In function 'set_equipment_flags',
    inlined from 'serial_setup' at src/serial.c:56:5:
In file included from src/biosvar.h:10,
                 from src/kbd.c:8:
src/kbd.c: In function 'kbd_set_flag':
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 'serial_setup':
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |                 ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
In file included from src/biosvar.h:10,
                 from src/clock.c:8:
src/clock.c: In function 'clear_usertimer':
  Compile checking out/src/post.o
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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))
      |           ^~~~~~~
cc1: note: source object is likely at address zero
In function 'clear_usertimer',
    inlined from 'clear_usertimer' at src/clock.c:387:1:
In file included from src/biosvar.h:10,
                 from src/cdrom.c:8:
src/cdrom.c: In function 'cdrom_boot':
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.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);
      |     ^~~~~~~
In function 'clear_usertimer':
cc1: note: source object is likely at address zero
  Compile checking out/src/e820map.o
src/farptr.h:180:6: warning: array subscript 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);
      |                          ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |         ^~~
In function 'cdrom_boot':
cc1: note: source object is likely at address zero
In function 'set_equipment_flags',
    inlined from 'cdrom_boot' at src/cdrom.c:242: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/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'cdrom_boot':
cc1: note: source object is likely at address zero
  Compile checking out/src/malloc.o
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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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;
      |                       ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'handle_1a':
cc1: note: source object is likely at address zero
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 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.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_1a':
cc1: note: source object is likely at address zero
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);
      |         ^~~~~
In function 'handle_1a':
cc1: note: source object is likely at address zero
In function 'handle_1a00',
    inlined from 'handle_1a' at src/clock.c:267: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:76:16: note: in expansion of macro 'GET_BDA'
   76 |     regs->al = GET_BDA(timer_rollover);
      |                ^~~~~~~
In function 'handle_1a':
cc1: note: source object is likely at address zero
In function 'handle_1a00',
    inlined from 'handle_1a' at src/clock.c:267: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/clock.c:77:5: note: in expansion of macro 'SET_BDA'
   77 |     SET_BDA(timer_rollover, 0); // reset flag
      |     ^~~~~~~
In function 'handle_1a':
cc1: note: source object is likely at address zero
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);
      |                       ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |                       ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |                        ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |                        ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |            ^~~~~~~
In function 'process_mouse':
cc1: note: source object is likely at address zero
  Compile checking out/src/romfile.o
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);
      |     ^~~~~~~
In function 'lpt_setup':
cc1: note: source object is likely at address zero
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 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.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 'lpt_setup':
cc1: note: source object is likely at address zero
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);
      |         ^~~
In function 'lpt_setup':
cc1: note: source object is likely at address zero
In function 'set_equipment_flags',
    inlined from 'lpt_setup' at src/serial.c:217: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/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'lpt_setup':
cc1: note: source object is likely at address zero
  Compile checking out/src/x86.o
  Compile checking out/src/optionroms.o
  Compile checking out/src/pmm.o
In file included from src/output.c:9:
src/output.c: In function 'screenc':
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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
  Compile checking out/src/font.o
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)
      |                         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                 ^~~~~~~
cc1: note: source object is likely at address zero
  Compile checking out/src/boot.o
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);
      |                        ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |                        ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |                       ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |                       ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
  Compile checking out/src/bootsplash.o
In function 'handle_1612',
    inlined from 'handle_16' at src/kbd.c:264:16:
  Compile checking out/src/jpeg.o
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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))
      |                  ^~~~~~~
In function 'handle_16':
cc1: note: source object is likely at address zero
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 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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_16':
cc1: note: source object is likely at address zero
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 'handle_16':
cc1: note: source object is likely at address zero
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);
      |         ^~~~~~~
In function 'handle_08':
cc1: note: source object is likely at address zero
In function 'clock_update',
    inlined from 'handle_08' at src/clock.c:306:5:
src/farptr.h:180:6: warning: array subscript 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);
      |                                 ^~~~~~~
In function 'handle_08':
cc1: note: source object is likely at address zero
In function 'clock_update',
    inlined from 'handle_08' at src/clock.c:306: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/clock.c:290:9: note: in expansion of macro 'SET_BDA'
  290 |         SET_BDA(timer_rollover, GET_BDA(timer_rollover) + 1);
      |         ^~~~~~~
In function 'handle_08':
cc1: note: source object is likely at address zero
In function 'clock_update',
    inlined from 'handle_08' at src/clock.c:306: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:292:5: note: in expansion of macro 'SET_BDA'
  292 |     SET_BDA(timer_counter, counter);
      |     ^~~~~~~
In function 'handle_08':
cc1: note: source object is likely at address zero
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);
      |                             ^~~~~~~
cc1: note: source object is likely at address zero
  Compile checking out/src/bmp.o
  Compile checking out/src/tcgbios.o
  Compile checking out/src/sha1.o
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;
      |             ^~~~~~~
cc1: note: source object is likely at address zero
  Compile checking out/src/hw/pcidevice.o
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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
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;
      |                   ^~
cc1: note: source object is likely at address zero
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 'map_hd_drive':
cc1: note: source object is likely at address zero
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 'map_hd_drive':
cc1: note: source object is likely at address zero
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(
      |         ^~~~~~~
In function 'map_hd_drive':
cc1: note: source object is likely at address zero
In function 'fill_fdpt',
    inlined from 'map_hd_drive' at src/block.c:269:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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 'map_hd_drive':
cc1: note: source object is likely at address zero
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/clock.c: In function 'irqtimer_check':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |            ^~~~~~~
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 'map_hd_drive':
cc1: note: source object is likely at address zero
cc1: note: source object is likely at address zero
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(
      |         ^~~~~~~
In function 'map_hd_drive':
cc1: note: source object is likely at address zero
In function 'fill_fdpt',
    inlined from 'map_hd_drive' at src/block.c:269:5:
  Compile checking out/src/hw/ahci.o
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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 'map_hd_drive':
cc1: note: source object is likely at address zero
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)
      |         ^~~~~~~
In function 'handle_1586':
cc1: note: source object is likely at address zero
In function 'set_usertimer',
    inlined from 'handle_1586' at src/clock.c:409: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/clock.c:379:5: note: in expansion of macro 'SET_BDA'
  379 |     SET_BDA(rtc_wait_flag, RWS_WAIT_PENDING);  // Set status byte.
      |     ^~~~~~~
In function 'handle_1586':
cc1: note: source object is likely at address zero
In function 'set_usertimer',
    inlined from 'handle_1586' at src/clock.c:409:15:
src/farptr.h:182:35: warning: array subscript 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));
      |     ^~~~~~~
In function 'handle_1586':
cc1: note: source object is likely at address zero
In function 'set_usertimer',
    inlined from 'handle_1586' at src/clock.c:409:15:
src/farptr.h:182:35: warning: array subscript 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));
      |     ^~~~~~~
In function 'handle_1586':
cc1: note: source object is likely at address zero
In function 'set_usertimer',
    inlined from 'handle_1586' at src/clock.c:409:15:
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 'handle_1586':
cc1: note: source object is likely at address zero
  Compile checking out/src/hw/pvscsi.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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:50:5: note: in expansion of macro 'SET_IVT'
   50 |     SET_IVT(0x05, FUNC16(entry_05));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:51:5: note: in expansion of macro 'SET_IVT'
   51 |     SET_IVT(0x10, FUNC16(entry_10));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:52:5: note: in expansion of macro 'SET_IVT'
   52 |     SET_IVT(0x11, FUNC16(entry_11));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:53:5: note: in expansion of macro 'SET_IVT'
   53 |     SET_IVT(0x12, FUNC16(entry_12));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:54:5: note: in expansion of macro 'SET_IVT'
   54 |     SET_IVT(0x13, FUNC16(entry_13_official));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:55:5: note: in expansion of macro 'SET_IVT'
   55 |     SET_IVT(0x14, FUNC16(entry_14));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:56:5: note: in expansion of macro 'SET_IVT'
   56 |     SET_IVT(0x15, FUNC16(entry_15_official));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:57:5: note: in expansion of macro 'SET_IVT'
   57 |     SET_IVT(0x16, FUNC16(entry_16));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:58:5: note: in expansion of macro 'SET_IVT'
   58 |     SET_IVT(0x17, FUNC16(entry_17));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:59:5: note: in expansion of macro 'SET_IVT'
   59 |     SET_IVT(0x18, FUNC16(entry_18));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:60:5: note: in expansion of macro 'SET_IVT'
   60 |     SET_IVT(0x19, FUNC16(entry_19_official));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:61:5: note: in expansion of macro 'SET_IVT'
   61 |     SET_IVT(0x1a, FUNC16(entry_1a_official));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:62:5: note: in expansion of macro 'SET_IVT'
   62 |     SET_IVT(0x40, FUNC16(entry_40));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:70:5: note: in expansion of macro 'SET_IVT'
   70 |     SET_IVT(0x79, SEGOFF(0, 0));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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 'interface_init':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:88:5: note: in expansion of macro 'SET_BDA'
   88 |     SET_BDA(mem_size_kb, ebda_seg / (1024/16));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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 'interface_init':
cc1: note: source object is likely at address zero
  Compile checking out/src/hw/usb-xhci.o
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)
      |         ^~~~~~~
In function 'handle_1583':
cc1: note: source object is likely at address zero
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:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.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.
      |     ^~~~~~~
In function 'handle_1583':
cc1: note: source object is likely at address zero
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:182:35: warning: array subscript 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));
      |     ^~~~~~~
In function 'handle_1583':
cc1: note: source object is likely at address zero
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:182:35: warning: array subscript 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));
      |     ^~~~~~~
In function 'handle_1583':
cc1: note: source object is likely at address zero
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: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 'handle_1583':
cc1: note: source object is likely at address zero
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);
      |        ^~~~~~
In function 'process_key':
cc1: note: source object is likely at address zero
In function '__process_key',
    inlined from 'process_key' at src/kbd.c:598: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:473:9: note: in expansion of macro 'SET_BDA'
  473 |         SET_BDA(kbd_flag1, flags1 & ~(KF1_LAST_E0|KF1_LAST_E1));
      |         ^~~~~~~
In function 'process_key':
cc1: note: source object is likely at address zero
In function '__process_key',
    inlined from 'process_key' at src/kbd.c:598: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/kbd.c:529:14: note: in expansion of macro 'GET_BDA'
  529 |         if ((GET_BDA(kbd_flag0) & (KF0_CTRLACTIVE|KF0_ALTACTIVE))
      |              ^~~~~~~
In function 'process_key':
cc1: note: source object is likely at address zero
In function '__process_key',
    inlined from 'process_key' at src/kbd.c:598: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/kbd.c:532:13: note: in expansion of macro 'SET_BDA'
  532 |             SET_BDA(soft_reset_flag, 0x1234);
      |             ^~~~~~~
In function 'process_key':
cc1: note: source object is likely at address zero
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);
      |         ^~~~~~~~~~~~
In function 'process_key':
cc1: note: source object is likely at address zero
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/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);
      |     ^~~~~~~
In function 'process_key':
cc1: note: source object is likely at address zero
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/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);
      |     ^~~~~~~
In function 'process_key':
cc1: note: source object is likely at address zero
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/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.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':
cc1: note: source object is likely at address zero
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);
      |         ^~~~~~
In function 'process_key':
cc1: note: source object is likely at address zero
In function '__process_key',
    inlined from 'process_key' at src/kbd.c:598: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:463:9: note: in expansion of macro 'SET_BDA'
  463 |         SET_BDA(kbd_flag1, flags1 | eflag);
      |         ^~~~~~~
In function 'process_key':
cc1: note: source object is likely at address zero
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);
      |              ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |               ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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))
      |          ^~~~~~~
cc1: note: source object is likely at address zero
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.
      |                ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                                  ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                                  ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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);
In function 'disk_13':
cc1: note: source object is likely at address zero
In function 'disk_1301',
    inlined from 'disk_13' at src/disk.c:630:16:
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);
In function 'disk_13':
cc1: note: source object is likely at address zero
  Compile checking out/src/hw/usb-hub.o
  Compile checking out/src/hw/sdcard.o
  Compile checking out/src/fw/coreboot.o
  Compile checking out/src/fw/lzmadecode.o
  Compile checking out/src/fw/multiboot.o
  Compile checking out/src/fw/csm.o
  Compile checking out/src/fw/biostables.o
  Compile checking out/src/fw/paravirt.o
  Compile checking out/src/fw/shadow.o
  Compile checking out/src/fw/pciinit.o
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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |         ^~~
In function 'map_floppy_drive':
cc1: note: source object is likely at address zero
In function 'set_equipment_flags',
    inlined from 'map_floppy_drive' at src/block.c:296: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/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':
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |         ^~~
In function 'map_floppy_drive':
cc1: note: source object is likely at address zero
In function 'set_equipment_flags',
    inlined from 'map_floppy_drive' at src/block.c:292: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/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':
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
  Compile checking out/src/fw/smm.o
  Compile checking out/src/fw/smp.o
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)) ||
      |           ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |        ^~~
In function 'floppy_prep':
cc1: note: source object is likely at address zero
In function 'floppy_drive_recal',
    inlined from 'floppy_prep' at src/hw/floppy.c:497:19:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.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_prep':
cc1: note: source object is likely at address zero
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));
      |     ^~~~~~~
In function 'floppy_prep':
cc1: note: source object is likely at address zero
src/disk.c: In function 'handle_76':
  Compile checking out/src/fw/mtrr.o
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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/fw/xen.o
cc1: note: source object is likely at address zero
  Compile checking out/src/fw/acpi.o
  Compile checking out/src/fw/mptable.o
  Compile checking out/src/fw/pirtable.o
  Compile checking out/src/fw/smbios.o
  Compile checking out/src/fw/romfile_loader.o
  Compile checking out/src/fw/dsdt_parser.o
  Compile checking out/src/hw/virtio-ring.o
  Compile checking out/src/hw/virtio-pci.o
  Compile checking out/src/hw/virtio-mmio.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 'init_pcirom':
cc1: note: source object is likely at address zero
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 'init_pcirom':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'init_pcirom':
cc1: note: source object is likely at address zero
In function 'boot_irq_restore',
    inlined from 'init_pcirom' at src/optionroms.c:354:9:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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 'init_pcirom':
cc1: note: source object is likely at address zero
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
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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
      |     ^~~~~~~
cc1: note: source object is likely at address zero
  Compile checking out/src/hw/virtio-blk.o
  Compile checking out/src/hw/virtio-scsi.o
  Compile checking out/src/hw/tpm_drivers.o
  Compile checking out/src/hw/nvme.o
  Compile checking out/src/sha256.o
  Compile checking out/src/sha512.o
  Compiling whole program out/code32seg.o
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);
      |     ^~~~~~~
In function 'floppy_process_op':
cc1: note: source object is likely at address zero
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:595:5: note: in expansion of macro 'SET_BDA'
  595 |     SET_BDA(floppy_media_state[0], 0);
      |     ^~~~~~~
In function 'floppy_process_op':
cc1: note: source object is likely at address zero
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:596:5: note: in expansion of macro 'SET_BDA'
  596 |     SET_BDA(floppy_media_state[1], 0);
      |     ^~~~~~~
In function 'floppy_process_op':
cc1: note: source object is likely at address zero
In function 'floppy_reset',
    inlined from 'floppy_process_op' at src/hw/floppy.c:691:16:
  Generating offset file out/asm-offsets.h
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.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);
      |     ^~~~~~~
In function 'floppy_process_op':
cc1: note: source object is likely at address zero
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:598:5: note: in expansion of macro 'SET_BDA'
  598 |     SET_BDA(floppy_track[1], 0);
      |     ^~~~~~~
In function 'floppy_process_op':
cc1: note: source object is likely at address zero
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:599:5: note: in expansion of macro 'SET_BDA'
  599 |     SET_BDA(floppy_last_data_rate, 0);
      |     ^~~~~~~
In function 'floppy_process_op':
cc1: note: source object is likely at address zero
  Compiling (16bit) out/romlayout.o
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);
      |              ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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;
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                 ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
  Compiling whole program out/ccode16.o
  Compiling whole program out/ccode32flat.o
In file included from out/ccode32flat.o.tmp.c:52:
./src/jpeg.c:42: warning: "__LITTLE_ENDIAN" redefined
   42 | #define __LITTLE_ENDIAN
      | 
In file included from /usr/include/stdarg.h:10,
                 from ./src/output.c:7,
                 from out/ccode32flat.o.tmp.c:3:
/usr/include/bits/alltypes.h:68: note: this is the location of the previous definition
   68 | #define __LITTLE_ENDIAN 1234
      | 
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;
      |             ^~~~~~~
In function 'irqtimer_calc':
cc1: note: source object is likely at address zero
./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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
./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)
      |                         ^~~~~~~
cc1: note: source object is likely at address zero
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 'get_keystroke_full':
cc1: note: source object is likely at address zero
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 'boot_fail':
cc1: note: source object is likely at address zero
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 'init_pcirom':
cc1: note: source object is likely at address zero
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 'init_pcirom':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'init_pcirom':
cc1: note: source object is likely at address zero
In function 'boot_irq_restore',
    inlined from 'init_pcirom' at ./src/optionroms.c:354:9:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/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 'init_pcirom':
cc1: note: source object is likely at address zero
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
      |     ^~~~~~~
In function 'device_hardware_setup':
cc1: note: source object is likely at address zero
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 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/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 'device_hardware_setup':
cc1: note: source object is likely at address zero
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 'device_hardware_setup':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'device_hardware_setup':
cc1: note: source object is likely at address zero
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 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.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 'device_hardware_setup':
cc1: note: source object is likely at address zero
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);
      |         ^~~
In function 'device_hardware_setup':
cc1: note: source object is likely at address zero
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/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 'device_hardware_setup':
cc1: note: source object is likely at address zero
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);
      |         ^~~
In function 'device_hardware_setup':
cc1: note: source object is likely at address zero
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/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 'device_hardware_setup':
cc1: note: source object is likely at address zero
./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);
      |                          ^~~~~~~
cc1: note: source object is likely at address zero
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
./src/biosvar.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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |         ^~~
In function 'cdrom_boot':
cc1: note: source object is likely at address zero
In function 'set_equipment_flags',
    inlined from 'cdrom_boot' at ./src/cdrom.c:242: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/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'cdrom_boot':
cc1: note: source object is likely at address zero
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));
      |     ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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:50:5: note: in expansion of macro 'SET_IVT'
   50 |     SET_IVT(0x05, FUNC16(entry_05));
      |     ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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:51:5: note: in expansion of macro 'SET_IVT'
   51 |     SET_IVT(0x10, FUNC16(entry_10));
      |     ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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:52:5: note: in expansion of macro 'SET_IVT'
   52 |     SET_IVT(0x11, FUNC16(entry_11));
      |     ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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:53:5: note: in expansion of macro 'SET_IVT'
   53 |     SET_IVT(0x12, FUNC16(entry_12));
      |     ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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:54:5: note: in expansion of macro 'SET_IVT'
   54 |     SET_IVT(0x13, FUNC16(entry_13_official));
      |     ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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:55:5: note: in expansion of macro 'SET_IVT'
   55 |     SET_IVT(0x14, FUNC16(entry_14));
      |     ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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:56:5: note: in expansion of macro 'SET_IVT'
   56 |     SET_IVT(0x15, FUNC16(entry_15_official));
      |     ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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:57:5: note: in expansion of macro 'SET_IVT'
   57 |     SET_IVT(0x16, FUNC16(entry_16));
      |     ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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:58:5: note: in expansion of macro 'SET_IVT'
   58 |     SET_IVT(0x17, FUNC16(entry_17));
      |     ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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:59:5: note: in expansion of macro 'SET_IVT'
   59 |     SET_IVT(0x18, FUNC16(entry_18));
      |     ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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:60:5: note: in expansion of macro 'SET_IVT'
   60 |     SET_IVT(0x19, FUNC16(entry_19_official));
      |     ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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:61:5: note: in expansion of macro 'SET_IVT'
   61 |     SET_IVT(0x1a, FUNC16(entry_1a_official));
      |     ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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:62:5: note: in expansion of macro 'SET_IVT'
   62 |     SET_IVT(0x40, FUNC16(entry_40));
      |     ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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:70:5: note: in expansion of macro 'SET_IVT'
   70 |     SET_IVT(0x79, SEGOFF(0, 0));
      |     ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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 'maininit':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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:88:5: note: in expansion of macro 'SET_BDA'
   88 |     SET_BDA(mem_size_kb, ebda_seg / (1024/16));
      |     ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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 'maininit':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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 '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);
      |     ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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 '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);
      |     ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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 '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);
      |     ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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 '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 'maininit':
cc1: note: source object is likely at address zero
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);
      |         ^~~
In function 'maininit':
cc1: note: source object is likely at address zero
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/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 'maininit':
cc1: note: source object is likely at address zero
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);
      |         ^~~
In function 'maininit':
cc1: note: source object is likely at address zero
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/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 'maininit':
cc1: note: source object is likely at address zero
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 'maininit':
cc1: note: source object is likely at address zero
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 'maininit':
cc1: note: source object is likely at address zero
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 function 'maininit':
cc1: note: source object is likely at address zero
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 'maininit':
cc1: note: source object is likely at address zero
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 'maininit':
cc1: note: source object is likely at address zero
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 'maininit':
cc1: note: source object is likely at address zero
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(
      |         ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/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 'maininit':
cc1: note: source object is likely at address zero
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 'maininit':
cc1: note: source object is likely at address zero
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(
      |         ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/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 'maininit':
cc1: note: source object is likely at address zero
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);
      |         ^~~
In function 'maininit':
cc1: note: source object is likely at address zero
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/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 'maininit':
cc1: note: source object is likely at address zero
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 'maininit':
cc1: note: source object is likely at address zero
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);
      |         ^~~
In function 'maininit':
cc1: note: source object is likely at address zero
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/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 'maininit':
cc1: note: source object is likely at address zero
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);
      |         ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
  Building ld scripts
Version: 1.16.2-20231022_004151-build-3-19-x86
Fixed space: 0xe05b-0x10000  total: 8101  slack: 19  Percent slack: 0.2%
16bit size:           30688
32bit segmented size: 2277
32bit flat size:      35819
32bit flat init size: 53376
Lowmem size:          2176
f-segment var size:   1200
  Linking out/rom16.o
  Linking out/rom32seg.o
  Stripping out/rom32seg.noexec.o
ld: warning: out/rom16.o has a LOAD segment with RWX permissions
  Stripping out/rom16.noexec.o
  Linking out/rom.o
ld: warning: out/rom.o has a LOAD segment with RWX permissions
  Prepping out/bios.bin.prep
Total size: 129792  Fixed: 69984  Free: 1280 (used 99.0% of 128KiB rom)
  Creating out/bios.bin
>>> seabios: building bios-256k.bin
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'check_stdin':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:77:17: warning: format not a string literal and no format arguments [-Wformat-security]
   77 |                 printf(_("aborted!\n\n"));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:78:17: warning: format not a string literal and no format arguments [-Wformat-security]
   78 |                 printf(_("Console input/output is redirected. "));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:79:17: warning: format not a string literal and no format arguments [-Wformat-security]
   79 |                 printf(_("Run 'make oldconfig' to update configuration.\n\n"));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'conf_askvalue':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:89:17: warning: format not a string literal and no format arguments [-Wformat-security]
   89 |                 printf(_("(NEW) "));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'conf_choice':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:290:33: warning: format not a string literal and no format arguments [-Wformat-security]
  290 |                                 printf(_(" (NEW)"));
      |                                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'check_conf':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:438:41: warning: format not a string literal and no format arguments [-Wformat-security]
  438 |                                         printf(_("*\n* Restart config...\n*\n"));
      |                                         ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'main':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:636:41: warning: format not a string literal and no format arguments [-Wformat-security]
  636 |                                         _("\n*** The configuration requires explicit update.\n\n"));
      |                                         ^
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:689:25: warning: format not a string literal and no format arguments [-Wformat-security]
  689 |                         fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n"));
      |                         ^~~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:693:25: warning: format not a string literal and no format arguments [-Wformat-security]
  693 |                         fprintf(stderr, _("\n*** Error during update of the configuration.\n\n"));
      |                         ^~~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:704:25: warning: format not a string literal and no format arguments [-Wformat-security]
  704 |                         fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n"));
      |                         ^~~~~~~
scripts/kconfig/conf --olddefconfig /home/buildozer/aports/main/seabios/src/seabios-1.16.2/src/Kconfig
#
# configuration written to /home/buildozer/aports/main/seabios/src/seabios-1.16.2/.config
#
  Compiling to assembler out/src/asm-offsets.s
  Build Kconfig config file
  Compile checking out/src/misc.o
  Compile checking out/src/stacks.o
  Compile checking out/src/output.o
  Compile checking out/src/string.o
  Compile checking out/src/block.o
  Compile checking out/src/cdrom.o
  Compile checking out/src/disk.o
  Compile checking out/src/mouse.o
  Compile checking out/src/kbd.o
  Compile checking out/src/system.o
  Compile checking out/src/serial.o
  Compile checking out/src/sercon.o
  Compile checking out/src/clock.o
  Compile checking out/src/resume.o
  Compile checking out/src/pnpbios.o
  Compile checking out/src/vgahooks.o
  Compile checking out/src/pcibios.o
  Compile checking out/src/apm.o
  Compile checking out/src/cp437.o
  Compile checking out/src/hw/pci.o
  Compile checking out/src/hw/timer.o
  Compile checking out/src/hw/rtc.o
  Compile checking out/src/hw/dma.o
  Compile checking out/src/hw/pic.o
  Compile checking out/src/hw/ps2port.o
  Compile checking out/src/hw/serialio.o
  Compile checking out/src/hw/usb.o
  Compile checking out/src/hw/usb-uhci.o
  Compile checking out/src/hw/usb-ohci.o
  Compile checking out/src/hw/usb-ehci.o
  Compile checking out/src/hw/usb-hid.o
  Compile checking out/src/hw/usb-msc.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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
  Compile checking out/src/hw/usb-uas.o
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);
      |         ^~~
In function 'mathcp_setup':
cc1: note: source object is likely at address zero
In function 'set_equipment_flags',
    inlined from 'mathcp_setup' at src/misc.c:66: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/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'mathcp_setup':
cc1: note: source object is likely at address zero
  Compile checking out/src/hw/blockcmd.o
  Compile checking out/src/hw/floppy.o
  Compile checking out/src/hw/ata.o
  Compile checking out/src/hw/ramdisk.o
  Compile checking out/src/hw/lsi-scsi.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 function 'mouse_init':
cc1: note: source object is likely at address zero
In file included from src/biosvar.h:10:
In function 'set_equipment_flags',
    inlined from 'mouse_init' at src/mouse.c:23: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/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'mouse_init':
cc1: note: source object is likely at address zero
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))
      |           ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'clear_usertimer':
cc1: note: source object is likely at address zero
  Compile checking out/src/hw/esp-scsi.o
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 'handle_15c2':
cc1: note: source object is likely at address zero
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:
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);
      |            ^~~~~~~
In function 'handle_15c2':
cc1: note: source object is likely at address zero
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 'handle_15c2':
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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 'handle_15':
cc1: note: source object is likely at address zero
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 function 'serial_setup':
cc1: note: source object is likely at address zero
In file included from src/biosvar.h:10:
In function 'set_equipment_flags',
    inlined from 'serial_setup' at src/serial.c:56: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/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'serial_setup':
cc1: note: source object is likely at address zero
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);
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |                 ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                          ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |         ^~~
In function 'cdrom_boot':
cc1: note: source object is likely at address zero
In function 'set_equipment_flags',
    inlined from 'cdrom_boot' at src/cdrom.c:242: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/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'cdrom_boot':
cc1: note: source object is likely at address zero
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 'sercon_cursor_pos_set':
cc1: note: source object is likely at address zero
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;
      |                       ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
  Compile checking out/src/hw/megasas.o
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 'sercon_lazy_lf':
cc1: note: source object is likely at address zero
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 'sercon_lazy_lf':
cc1: note: source object is likely at address zero
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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
In function 'handle_1a01',
    inlined from 'handle_1a' at src/clock.c:268: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:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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/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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
In function 'handle_1a':
cc1: note: source object is likely at address zero
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 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.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_1a':
cc1: note: source object is likely at address zero
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);
      |         ^~~~~
In function 'handle_1a':
cc1: note: source object is likely at address zero
In function 'handle_1a00',
    inlined from 'handle_1a' at src/clock.c:267: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:76:16: note: in expansion of macro 'GET_BDA'
   76 |     regs->al = GET_BDA(timer_rollover);
      |                ^~~~~~~
In function 'handle_1a':
cc1: note: source object is likely at address zero
In function 'handle_1a00',
    inlined from 'handle_1a' at src/clock.c:267: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/clock.c:77:5: note: in expansion of macro 'SET_BDA'
   77 |     SET_BDA(timer_rollover, 0); // reset flag
      |     ^~~~~~~
In function 'handle_1a':
cc1: note: source object is likely at address zero
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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                       ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |                       ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |                        ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |                        ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
  Compile checking out/src/hw/mpt-scsi.o
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);
      |            ^~~~~~~
In function 'process_mouse':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'lpt_setup':
cc1: note: source object is likely at address zero
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 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.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 'lpt_setup':
cc1: note: source object is likely at address zero
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);
      |         ^~~
In function 'lpt_setup':
cc1: note: source object is likely at address zero
In function 'set_equipment_flags',
    inlined from 'lpt_setup' at src/serial.c:217: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/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'lpt_setup':
cc1: note: source object is likely at address zero
  Compile checking out/src/post.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)
      |                         ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                 ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                        ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |                        ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |                       ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |                       ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |         ^~~~~~~
In function 'handle_08':
cc1: note: source object is likely at address zero
In function 'clock_update',
    inlined from 'handle_08' at src/clock.c:306:5:
src/farptr.h:180:6: warning: array subscript 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);
      |                                 ^~~~~~~
In function 'handle_08':
cc1: note: source object is likely at address zero
In function 'clock_update',
    inlined from 'handle_08' at src/clock.c:306: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/clock.c:290:9: note: in expansion of macro 'SET_BDA'
  290 |         SET_BDA(timer_rollover, GET_BDA(timer_rollover) + 1);
      |         ^~~~~~~
In function 'handle_08':
cc1: note: source object is likely at address zero
In function 'clock_update',
    inlined from 'handle_08' at src/clock.c:306: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:292:5: note: in expansion of macro 'SET_BDA'
  292 |     SET_BDA(timer_counter, counter);
      |     ^~~~~~~
In function 'handle_08':
cc1: note: source object is likely at address zero
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);
      |                             ^~~~~~~
cc1: note: source object is likely at address zero
  Compile checking out/src/e820map.o
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))
      |                  ^~~~~~~
In function 'handle_16':
cc1: note: source object is likely at address zero
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 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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_16':
cc1: note: source object is likely at address zero
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 'handle_16':
cc1: note: source object is likely at address zero
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;
      |             ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
  Compile checking out/src/malloc.o
  Compile checking out/src/romfile.o
  Compile checking out/src/x86.o
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)
      |               ^~~~~~~
cc1: note: source object is likely at address zero
  Compile checking out/src/optionroms.o
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 'sercon_lazy_flush':
cc1: note: source object is likely at address zero
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)
      |         ^~~~~~~
In function 'handle_1586':
cc1: note: source object is likely at address zero
In function 'set_usertimer',
    inlined from 'handle_1586' at src/clock.c:409:15:
src/block.c: In function 'map_hd_drive':
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.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.
      |     ^~~~~~~
In function 'handle_1586':
cc1: note: source object is likely at address zero
In function 'set_usertimer',
    inlined from 'handle_1586' at src/clock.c:409:15:
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;
      |                   ^~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 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));
      |     ^~~~~~~
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:
In function 'handle_1586':
cc1: note: source object is likely at address zero
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 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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 'map_hd_drive':
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 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));
      |     ^~~~~~~
In function 'handle_1586':
cc1: note: source object is likely at address zero
In function 'set_usertimer',
    inlined from 'handle_1586' at src/clock.c:409:15:
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 'map_hd_drive':
cc1: note: source object is likely at address zero
  Compile checking out/src/pmm.o
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 '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 'handle_1586':
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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 'map_hd_drive':
cc1: note: source object is likely at address zero
In function 'fill_fdpt',
    inlined from 'map_hd_drive' at src/block.c:269:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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 'map_hd_drive':
cc1: note: source object is likely at address zero
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 'map_hd_drive':
cc1: note: source object is likely at address zero
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(
      |         ^~~~~~~
In function 'map_hd_drive':
cc1: note: source object is likely at address zero
In function 'fill_fdpt',
    inlined from 'map_hd_drive' at src/block.c:269:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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 'map_hd_drive':
cc1: note: source object is likely at address zero
  Compile checking out/src/font.o
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)
      |         ^~~~~~~
In function 'handle_1583':
cc1: note: source object is likely at address zero
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:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.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.
      |     ^~~~~~~
In function 'handle_1583':
cc1: note: source object is likely at address zero
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:182:35: warning: array subscript 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));
      |     ^~~~~~~
In function 'handle_1583':
cc1: note: source object is likely at address zero
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:182:35: warning: array subscript 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));
      |     ^~~~~~~
In function 'handle_1583':
cc1: note: source object is likely at address zero
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: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 'handle_1583':
cc1: note: source object is likely at address zero
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 'sercon_lazy_putchar':
cc1: note: source object is likely at address zero
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 'sercon_lazy_putchar':
cc1: note: source object is likely at address zero
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_lazy_putchar':
cc1: note: source object is likely at address zero
  Compile checking out/src/boot.o
  Compile checking out/src/bootsplash.o
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);
      |        ^~~~~~
In function 'process_key':
cc1: note: source object is likely at address zero
In function '__process_key',
    inlined from 'process_key' at src/kbd.c:598: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:473:9: note: in expansion of macro 'SET_BDA'
  473 |         SET_BDA(kbd_flag1, flags1 & ~(KF1_LAST_E0|KF1_LAST_E1));
      |         ^~~~~~~
In function 'process_key':
cc1: note: source object is likely at address zero
In function '__process_key',
    inlined from 'process_key' at src/kbd.c:598: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/kbd.c:529:14: note: in expansion of macro 'GET_BDA'
  529 |         if ((GET_BDA(kbd_flag0) & (KF0_CTRLACTIVE|KF0_ALTACTIVE))
      |              ^~~~~~~
In function 'process_key':
cc1: note: source object is likely at address zero
In function '__process_key',
    inlined from 'process_key' at src/kbd.c:598: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/kbd.c:532:13: note: in expansion of macro 'SET_BDA'
  532 |             SET_BDA(soft_reset_flag, 0x1234);
      |             ^~~~~~~
In function 'process_key':
cc1: note: source object is likely at address zero
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);
      |         ^~~~~~~~~~~~
In function 'process_key':
cc1: note: source object is likely at address zero
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/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: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
In function 'process_key':
cc1: note: source object is likely at address zero
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/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.
      |                ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'process_key':
cc1: note: source object is likely at address zero
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/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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                                  ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.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':
cc1: note: source object is likely at address zero
In function '__process_key',
    inlined from 'process_key' at src/kbd.c:598:5:
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);
      |                                  ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |         ^~~~~~
In function 'process_key':
cc1: note: source object is likely at address zero
In function '__process_key',
    inlined from 'process_key' at src/kbd.c:598: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:463:9: note: in expansion of macro 'SET_BDA'
  463 |         SET_BDA(kbd_flag1, flags1 | eflag);
      |         ^~~~~~~
In function 'process_key':
cc1: note: source object is likely at address zero
  Compile checking out/src/jpeg.o
  Compile checking out/src/bmp.o
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);
      |                ^~~~~~~
In function 'handle_sercon':
cc1: note: source object is likely at address zero
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 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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 'handle_sercon':
cc1: note: source object is likely at address zero
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 'handle_sercon':
cc1: note: source object is likely at address zero
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 'handle_sercon':
cc1: note: source object is likely at address zero
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 'handle_sercon':
cc1: note: source object is likely at address zero
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 'handle_sercon':
cc1: note: source object is likely at address zero
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 'handle_sercon':
cc1: note: source object is likely at address zero
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 'handle_sercon':
cc1: note: source object is likely at address zero
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 'handle_sercon':
cc1: note: source object is likely at address zero
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 'handle_sercon':
cc1: note: source object is likely at address zero
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 'handle_sercon':
cc1: note: source object is likely at address zero
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 'handle_sercon':
cc1: note: source object is likely at address zero
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 'handle_sercon':
cc1: note: source object is likely at address zero
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 'handle_sercon':
cc1: note: source object is likely at address zero
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 'handle_sercon':
cc1: note: source object is likely at address zero
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 'handle_sercon':
cc1: note: source object is likely at address zero
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);
      |         ^~~~~~~
In function 'handle_sercon':
cc1: note: source object is likely at address zero
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 '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);
      |         ^~~~~~~
In function 'handle_sercon':
cc1: note: source object is likely at address zero
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:338:9: note: in expansion of macro 'SET_BDA'
  338 |         SET_BDA(video_rows, rows-1);
      |         ^~~~~~~
In function 'handle_sercon':
cc1: note: source object is likely at address zero
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 '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);
      |         ^~~~~~~
In function 'handle_sercon':
cc1: note: source object is likely at address zero
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);
      |              ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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);
      |               ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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);
In function 'disk_13':
cc1: note: source object is likely at address zero
In function 'disk_1301',
    inlined from 'disk_13' at src/disk.c:630:16:
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);
In function 'disk_13':
cc1: note: source object is likely at address zero
  Compile checking out/src/tcgbios.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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
  Compile checking out/src/sha1.o
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
  Compile checking out/src/hw/pcidevice.o
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:52:5: note: in expansion of macro 'SET_IVT'
   52 |     SET_IVT(0x11, FUNC16(entry_11));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:53:5: note: in expansion of macro 'SET_IVT'
   53 |     SET_IVT(0x12, FUNC16(entry_12));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:54:5: note: in expansion of macro 'SET_IVT'
   54 |     SET_IVT(0x13, FUNC16(entry_13_official));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:55:5: note: in expansion of macro 'SET_IVT'
   55 |     SET_IVT(0x14, FUNC16(entry_14));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:56:5: note: in expansion of macro 'SET_IVT'
   56 |     SET_IVT(0x15, FUNC16(entry_15_official));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:57:5: note: in expansion of macro 'SET_IVT'
   57 |     SET_IVT(0x16, FUNC16(entry_16));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:58:5: note: in expansion of macro 'SET_IVT'
   58 |     SET_IVT(0x17, FUNC16(entry_17));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:59:5: note: in expansion of macro 'SET_IVT'
   59 |     SET_IVT(0x18, FUNC16(entry_18));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:60:5: note: in expansion of macro 'SET_IVT'
   60 |     SET_IVT(0x19, FUNC16(entry_19_official));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:61:5: note: in expansion of macro 'SET_IVT'
   61 |     SET_IVT(0x1a, FUNC16(entry_1a_official));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:62:5: note: in expansion of macro 'SET_IVT'
   62 |     SET_IVT(0x40, FUNC16(entry_40));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:70:5: note: in expansion of macro 'SET_IVT'
   70 |     SET_IVT(0x79, SEGOFF(0, 0));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at src/post.c:113:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h: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 'interface_init':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:88:5: note: in expansion of macro 'SET_BDA'
   88 |     SET_BDA(mem_size_kb, ebda_seg / (1024/16));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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 'interface_init':
cc1: note: source object is likely at address zero
  Compile checking out/src/hw/ahci.o
  Compile checking out/src/hw/pvscsi.o
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);
      |         ^~~
In function 'map_floppy_drive':
cc1: note: source object is likely at address zero
In function 'set_equipment_flags',
    inlined from 'map_floppy_drive' at src/block.c:296: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/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':
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |         ^~~
In function 'map_floppy_drive':
cc1: note: source object is likely at address zero
In function 'set_equipment_flags',
    inlined from 'map_floppy_drive' at src/block.c:292: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/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':
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |               ^~~~~~~
cc1: note: source object is likely at address zero
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);
cc1: note: source object is likely at address zero
src/sercon.c:528:13: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
  Compile checking out/src/hw/usb-xhci.o
  Compile checking out/src/hw/usb-hub.o
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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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
      |     ^~~~~~~
cc1: note: source object is likely at address zero
  Compile checking out/src/hw/sdcard.o
  Compile checking out/src/fw/coreboot.o
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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
  Compile checking out/src/fw/lzmadecode.o
  Compile checking out/src/fw/multiboot.o
  Compile checking out/src/fw/csm.o
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)) ||
      |           ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |        ^~~
In function 'floppy_prep':
cc1: note: source object is likely at address zero
In function 'floppy_drive_recal',
    inlined from 'floppy_prep' at src/hw/floppy.c:497:19:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.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_prep':
cc1: note: source object is likely at address zero
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));
      |     ^~~~~~~
In function 'floppy_prep':
cc1: note: source object is likely at address zero
  Compile checking out/src/fw/biostables.o
  Compile checking out/src/fw/paravirt.o
  Compile checking out/src/fw/shadow.o
  Compile checking out/src/fw/pciinit.o
  Compile checking out/src/fw/smm.o
  Compile checking out/src/fw/smp.o
  Compile checking out/src/fw/mtrr.o
  Compile checking out/src/fw/xen.o
  Compile checking out/src/fw/acpi.o
  Compile checking out/src/fw/mptable.o
  Compile checking out/src/fw/pirtable.o
  Compile checking out/src/fw/smbios.o
  Compile checking out/src/fw/romfile_loader.o
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
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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
      |     ^~~~~~~
cc1: note: source object is likely at address zero
  Compile checking out/src/fw/dsdt_parser.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 'init_pcirom':
cc1: note: source object is likely at address zero
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 'init_pcirom':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'init_pcirom':
cc1: note: source object is likely at address zero
In function 'boot_irq_restore',
    inlined from 'init_pcirom' at src/optionroms.c:354:9:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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 'init_pcirom':
cc1: note: source object is likely at address zero
  Compile checking out/src/hw/virtio-ring.o
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);
      |     ^~~~~~~
In function 'floppy_process_op':
cc1: note: source object is likely at address zero
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:595:5: note: in expansion of macro 'SET_BDA'
  595 |     SET_BDA(floppy_media_state[0], 0);
      |     ^~~~~~~
In function 'floppy_process_op':
cc1: note: source object is likely at address zero
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:596:5: note: in expansion of macro 'SET_BDA'
  596 |     SET_BDA(floppy_media_state[1], 0);
      |     ^~~~~~~
In function 'floppy_process_op':
cc1: note: source object is likely at address zero
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:597:5: note: in expansion of macro 'SET_BDA'
  597 |     SET_BDA(floppy_track[0], 0);
      |     ^~~~~~~
In function 'floppy_process_op':
cc1: note: source object is likely at address zero
In function 'floppy_reset',
    inlined from 'floppy_process_op' at src/hw/floppy.c:691:16:
  Compile checking out/src/hw/virtio-pci.o
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.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);
      |     ^~~~~~~
In function 'floppy_process_op':
cc1: note: source object is likely at address zero
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:599:5: note: in expansion of macro 'SET_BDA'
  599 |     SET_BDA(floppy_last_data_rate, 0);
      |     ^~~~~~~
In function 'floppy_process_op':
cc1: note: source object is likely at address zero
  Compile checking out/src/hw/virtio-mmio.o
  Compile checking out/src/hw/virtio-blk.o
  Compile checking out/src/hw/virtio-scsi.o
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);
      |              ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                 ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
  Compile checking out/src/hw/tpm_drivers.o
  Compile checking out/src/hw/nvme.o
  Compile checking out/src/sha256.o
  Compile checking out/src/sha512.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;
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
  Compiling whole program out/code32seg.o
  Generating offset file out/asm-offsets.h
  Compiling (16bit) out/romlayout.o
  Compiling whole program out/ccode16.o
  Compiling whole program out/ccode32flat.o
In file included from out/ccode32flat.o.tmp.c:52:
./src/jpeg.c:42: warning: "__LITTLE_ENDIAN" redefined
   42 | #define __LITTLE_ENDIAN
      | 
In file included from /usr/include/stdarg.h:10,
                 from ./src/output.c:7,
                 from out/ccode32flat.o.tmp.c:3:
/usr/include/bits/alltypes.h:68: note: this is the location of the previous definition
   68 | #define __LITTLE_ENDIAN 1234
      | 
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;
      |             ^~~~~~~
In function 'irqtimer_calc':
cc1: note: source object is likely at address zero
./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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
./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)
      |                         ^~~~~~~
cc1: note: source object is likely at address zero
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 'get_keystroke_full':
cc1: note: source object is likely at address zero
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 'boot_fail':
cc1: note: source object is likely at address zero
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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:50:5: note: in expansion of macro 'SET_IVT'
   50 |     SET_IVT(0x05, FUNC16(entry_05));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:51:5: note: in expansion of macro 'SET_IVT'
   51 |     SET_IVT(0x10, FUNC16(entry_10));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:52:5: note: in expansion of macro 'SET_IVT'
   52 |     SET_IVT(0x11, FUNC16(entry_11));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:53:5: note: in expansion of macro 'SET_IVT'
   53 |     SET_IVT(0x12, FUNC16(entry_12));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:54:5: note: in expansion of macro 'SET_IVT'
   54 |     SET_IVT(0x13, FUNC16(entry_13_official));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:55:5: note: in expansion of macro 'SET_IVT'
   55 |     SET_IVT(0x14, FUNC16(entry_14));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:56:5: note: in expansion of macro 'SET_IVT'
   56 |     SET_IVT(0x15, FUNC16(entry_15_official));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:57:5: note: in expansion of macro 'SET_IVT'
   57 |     SET_IVT(0x16, FUNC16(entry_16));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:58:5: note: in expansion of macro 'SET_IVT'
   58 |     SET_IVT(0x17, FUNC16(entry_17));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:59:5: note: in expansion of macro 'SET_IVT'
   59 |     SET_IVT(0x18, FUNC16(entry_18));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:60:5: note: in expansion of macro 'SET_IVT'
   60 |     SET_IVT(0x19, FUNC16(entry_19_official));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:61:5: note: in expansion of macro 'SET_IVT'
   61 |     SET_IVT(0x1a, FUNC16(entry_1a_official));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:62:5: note: in expansion of macro 'SET_IVT'
   62 |     SET_IVT(0x40, FUNC16(entry_40));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:70:5: note: in expansion of macro 'SET_IVT'
   70 |     SET_IVT(0x79, SEGOFF(0, 0));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
In function 'ivt_init',
    inlined from 'interface_init' at ./src/post.c:113:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.h: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 'interface_init':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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:88:5: note: in expansion of macro 'SET_BDA'
   88 |     SET_BDA(mem_size_kb, ebda_seg / (1024/16));
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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 'interface_init':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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 '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);
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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 '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);
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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 '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);
      |     ^~~~~~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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 '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 'interface_init':
cc1: note: source object is likely at address zero
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);
      |         ^~~
In function 'interface_init':
cc1: note: source object is likely at address zero
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/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 'interface_init':
cc1: note: source object is likely at address zero
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 'init_pcirom':
cc1: note: source object is likely at address zero
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 'init_pcirom':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'init_pcirom':
cc1: note: source object is likely at address zero
In function 'boot_irq_restore',
    inlined from 'init_pcirom' at ./src/optionroms.c:354:9:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/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 'init_pcirom':
cc1: note: source object is likely at address zero
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
      |     ^~~~~~~
In function 'device_hardware_setup':
cc1: note: source object is likely at address zero
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 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/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 'device_hardware_setup':
cc1: note: source object is likely at address zero
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 'device_hardware_setup':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'device_hardware_setup':
cc1: note: source object is likely at address zero
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 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/biosvar.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 'device_hardware_setup':
cc1: note: source object is likely at address zero
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);
      |         ^~~
In function 'device_hardware_setup':
cc1: note: source object is likely at address zero
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/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 'device_hardware_setup':
cc1: note: source object is likely at address zero
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);
      |         ^~~
In function 'device_hardware_setup':
cc1: note: source object is likely at address zero
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/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 'device_hardware_setup':
cc1: note: source object is likely at address zero
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);
      |         ^~~
In function 'platform_hardware_setup':
cc1: note: source object is likely at address zero
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/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 'platform_hardware_setup':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'platform_hardware_setup':
cc1: note: source object is likely at address zero
./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);
      |                          ^~~~~~~
cc1: note: source object is likely at address zero
./src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
./src/biosvar.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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |         ^~~
In function 'cdrom_boot':
cc1: note: source object is likely at address zero
In function 'set_equipment_flags',
    inlined from 'cdrom_boot' at ./src/cdrom.c:242: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/biosvar.h:44:5: note: in expansion of macro 'SET_BDA'
   44 |     SET_BDA(equipment_list_flags, (eqf & ~clear) | set);
      |     ^~~~~~~
In function 'cdrom_boot':
cc1: note: source object is likely at address zero
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);
In function 'maininit':
cc1: note: source object is likely at address zero
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=]
In function 'maininit':
cc1: note: source object is likely at address zero
In function 'sercon_setup',
    inlined from 'maininit' at ./src/post.c:211:5:
./src/sercon.c:528:13: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
In function 'maininit':
cc1: note: source object is likely at address zero
In function 'sercon_setup',
    inlined from 'maininit' at ./src/post.c:211: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/sercon.c:541:5: note: in expansion of macro 'SET_IVT'
  541 |     SET_IVT(0x10, FUNC16(entry_sercon));
      |     ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
In function 'sercon_setup',
    inlined from 'maininit' at ./src/post.c:211:5:
./src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/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 'maininit':
cc1: note: source object is likely at address zero
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 'maininit':
cc1: note: source object is likely at address zero
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 function 'maininit':
cc1: note: source object is likely at address zero
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 'maininit':
cc1: note: source object is likely at address zero
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 'maininit':
cc1: note: source object is likely at address zero
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 'maininit':
cc1: note: source object is likely at address zero
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(
      |         ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/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 'maininit':
cc1: note: source object is likely at address zero
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 'maininit':
cc1: note: source object is likely at address zero
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(
      |         ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
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 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
./src/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 'maininit':
cc1: note: source object is likely at address zero
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);
      |         ^~~
In function 'maininit':
cc1: note: source object is likely at address zero
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/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 'maininit':
cc1: note: source object is likely at address zero
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 'maininit':
cc1: note: source object is likely at address zero
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);
      |         ^~~
In function 'maininit':
cc1: note: source object is likely at address zero
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/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 'maininit':
cc1: note: source object is likely at address zero
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);
      |         ^~~~~~~
In function 'maininit':
cc1: note: source object is likely at address zero
  Building ld scripts
Version: 1.16.2-20231022_004204-build-3-19-x86
Fixed space: 0xe05b-0x10000  total: 8101  slack: 16  Percent slack: 0.2%
16bit size:           38080
32bit segmented size: 2277
32bit flat size:      56907
32bit flat init size: 84384
Lowmem size:          2240
f-segment var size:   1232
  Linking out/rom16.o
  Linking out/rom32seg.o
ld: warning: out/rom16.o has a LOAD segment with RWX permissions
  Stripping out/rom32seg.noexec.o
  Stripping out/rom16.noexec.o
  Linking out/rom.o
ld: warning: out/rom.o has a LOAD segment with RWX permissions
  Prepping out/bios.bin.prep
Total size: 191488  Fixed: 98496  Free: 70656 (used 73.0% of 256KiB rom)
  Creating out/bios.bin
cp: can't stat 'out/src/fw/*dsdt*.aml': No such file or directory
>>> seabios: building vgabios-cirrus.bin
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'check_stdin':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:77:17: warning: format not a string literal and no format arguments [-Wformat-security]
   77 |                 printf(_("aborted!\n\n"));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:78:17: warning: format not a string literal and no format arguments [-Wformat-security]
   78 |                 printf(_("Console input/output is redirected. "));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:79:17: warning: format not a string literal and no format arguments [-Wformat-security]
   79 |                 printf(_("Run 'make oldconfig' to update configuration.\n\n"));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'conf_askvalue':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:89:17: warning: format not a string literal and no format arguments [-Wformat-security]
   89 |                 printf(_("(NEW) "));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'conf_choice':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:290:33: warning: format not a string literal and no format arguments [-Wformat-security]
  290 |                                 printf(_(" (NEW)"));
      |                                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'check_conf':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:438:41: warning: format not a string literal and no format arguments [-Wformat-security]
  438 |                                         printf(_("*\n* Restart config...\n*\n"));
      |                                         ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'main':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:636:41: warning: format not a string literal and no format arguments [-Wformat-security]
  636 |                                         _("\n*** The configuration requires explicit update.\n\n"));
      |                                         ^
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:689:25: warning: format not a string literal and no format arguments [-Wformat-security]
  689 |                         fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n"));
      |                         ^~~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:693:25: warning: format not a string literal and no format arguments [-Wformat-security]
  693 |                         fprintf(stderr, _("\n*** Error during update of the configuration.\n\n"));
      |                         ^~~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:704:25: warning: format not a string literal and no format arguments [-Wformat-security]
  704 |                         fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n"));
      |                         ^~~~~~~
scripts/kconfig/conf --olddefconfig /home/buildozer/aports/main/seabios/src/seabios-1.16.2/src/Kconfig
#
# configuration written to /home/buildozer/aports/main/seabios/src/seabios-1.16.2/.config
#
  Compiling to assembler out/src/asm-offsets.s
  Precompiling out/vgasrc/vgalayout.lds
  Build Kconfig config file
  Compile checking out/src/output.o
  Compile checking out/src/string.o
  Compile checking out/src/hw/pci.o
  Compile checking out/src/hw/serialio.o
  Compile checking out/vgasrc/vgainit.o
  Compile checking out/vgasrc/vgabios.o
  Compile checking out/vgasrc/vgafb.o
  Compile checking out/vgasrc/swcursor.o
  Compile checking out/vgasrc/vgafonts.o
  Compile checking out/vgasrc/vbe.o
  Compile checking out/vgasrc/stdvga.o
  Compile checking out/vgasrc/stdvgamodes.o
  Compile checking out/vgasrc/stdvgaio.o
  Compile checking out/vgasrc/clext.o
  Compile checking out/vgasrc/svgamodes.o
  Compile checking out/vgasrc/atiext.o
  Compile checking out/vgasrc/bochsvga.o
  Compile checking out/vgasrc/geodevga.o
  Compile checking out/src/fw/coreboot.o
  Compile checking out/vgasrc/cbvga.o
  Compile checking out/vgasrc/bochsdisplay.o
  Compile checking out/vgasrc/ramfb.o
  Generating offset file out/asm-offsets.h
  Compiling (16bit) out/vgaentry.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 function 'vga_post':
cc1: note: source object is likely at address zero
In file included from src/biosvar.h:10:
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/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 'vga_post':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'vga_post':
cc1: note: source object is likely at address zero
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:146:5: note: in expansion of macro 'SET_BDA'
  146 |     SET_BDA(dcc_index, CONFIG_VGA_STDVGA_PORTS ? 0x08 : 0xff);
      |     ^~~~~~~
In function 'vga_post':
cc1: note: source object is likely at address zero
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:149:5: note: in expansion of macro 'SET_BDA'
  149 |     SET_BDA(video_msr, 0x00); // Unavailable on vanilla vga, but...
      |     ^~~~~~~
In function 'vga_post':
cc1: note: source object is likely at address zero
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:150:5: note: in expansion of macro 'SET_BDA'
  150 |     SET_BDA(video_pal, 0x00); // Unavailable on vanilla vga, but...
      |     ^~~~~~~
In function 'vga_post':
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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));
      |     ^~~~~~~
In function 'vga_post':
cc1: note: source object is likely at address zero
In function 'allocate_extra_stack',
    inlined from 'vga_post' at vgasrc/vgainit.c:190:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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 'vga_post':
cc1: note: source object is likely at address zero
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
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 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
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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) {
      |         ^~~~~~~~~~~
cc1: note: source object is likely at address zero
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)) {
      |                    ^~~~~~~
cc1: note: source object is likely at address zero
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;
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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);
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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)};
      |                                       ^~~~~~~
cc1: note: source object is likely at address zero
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;
      |                    ^~~~~~~~~~~
In function 'handle_104f':
cc1: note: source object is likely at address zero
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))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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);
      |         ^~~~~~~~~~~~
In function 'handle_104f':
cc1: note: source object is likely at address zero
In function 'vbe_104f10',
    inlined from 'handle_104f' at vgasrc/vbe.c:458: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)
      |                                   ^
vgasrc/vgabios.h:63: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 'handle_104f':
cc1: note: source object is likely at address zero
In file included from src/output.c:9:
src/output.c: In function 'screenc':
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 '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)
      |                         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: 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);
      |                ^~~~~~~~~~~
In function 'handle_104f':
cc1: note: source object is likely at address zero
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)) {
      |                   ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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};
      |                                     ^~~~~~~
cc1: note: source object is likely at address zero
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;
      |                      ^~~~~~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_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);
      |     ^~~~~~~~~~~~
cc1: note: source object is likely at address zero
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);
      |                       ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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;
      |                          ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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);
      |                   ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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));
      |                                          ^~~~~~~
cc1: note: source object is likely at address zero
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));
      |                                         ^~~~~~~~~~~
cc1: note: source object is likely at address zero
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));
      |                                      ^~~~~~~
cc1: note: source object is likely at address zero
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));
      |                                      ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_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);
      |         ^~~~~~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_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);
      |         ^~~~~~~~~~~
cc1: note: source object is likely at address zero
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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                    ^~~~~~~~~~~
cc1: note: source object is likely at address zero
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);
      |                       ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_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));
      |     ^~~~~~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_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);
      |     ^~~~~~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 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
      |         ^~~~~~~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_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
      |         ^~~~~~~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 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);
      |                          ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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]));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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]));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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;
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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;
      |                      ^~~~~~~
cc1: note: source object is likely at address zero
vgasrc/vgafb.c: In function 'vgafb_clear_chars.isra':
vgasrc/vgabios.c: In function 'load_gfx_font':
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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;
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
In function 'gfx_clear_chars',
    inlined from 'vgafb_clear_chars.isra' at vgasrc/vgafb.c:586: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)
      |     ^~~~~~~~~~
vgasrc/vgabios.c:735:5: note: in expansion of macro 'SET_IVT'
  735 |     SET_IVT(0x43, SEGOFF(seg, off));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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 'vgafb_clear_chars.isra':
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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;
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
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 'vgafb_move_chars.isra':
cc1: note: source object is likely at address zero
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_10':
cc1: note: source object is likely at address zero
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_10':
cc1: note: source object is likely at address zero
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_10':
cc1: note: source object is likely at address zero
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));
      |                         ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39: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_10':
cc1: note: source object is likely at address zero
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;
      |             ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39: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_10':
cc1: note: source object is likely at address zero
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;
      |               ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39: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_10':
cc1: note: source object is likely at address zero
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);
      |        ^~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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: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);
      |        ^~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
In function 'handle_101230',
    inlined from 'handle_1012' at vgasrc/vgabios.c:969:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122: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:900:5: note: in expansion of macro 'SET_BDA'
  900 |     SET_BDA(modeset_ctl, mctl);
      |     ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
In function 'handle_101230',
    inlined from 'handle_1012' at vgasrc/vgabios.c:969:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122: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:901:5: note: in expansion of macro 'SET_BDA'
  901 |     SET_BDA(video_switches, vswt);
      |     ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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);
      |         ^~~~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
In function 'handle_101210',
    inlined from 'handle_1012' at vgasrc/vgabios.c:968: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:872:16: note: in expansion of macro 'GET_BDA'
  872 |     regs->cx = GET_BDA(video_switches) & 0x0f;
      |                ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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);
      |                         ^~
In function 'handle_10':
cc1: note: source object is likely at address zero
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=]
In function 'handle_10':
cc1: note: source object is likely at address zero
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: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);
      |                         ^~
In function 'handle_10':
cc1: note: source object is likely at address zero
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:784:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
In function 'handle_10':
cc1: note: source object is likely at address zero
In function 'handle_101130',
    inlined from 'handle_1011' at vgasrc/vgabios.c:853:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1121: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:824:16: note: in expansion of macro 'GET_BDA'
  824 |     regs->cx = GET_BDA(char_height) & 0xff;
      |                ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
In function 'handle_101130',
    inlined from 'handle_1011' at vgasrc/vgabios.c:853:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1121: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:827:16: note: in expansion of macro 'GET_BDA'
  827 |     regs->dl = GET_BDA(video_rows);
      |                ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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));
      |     ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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_10':
cc1: note: source object is likely at address zero
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);
      |                ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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:519:16: note: in expansion of macro 'GET_BDA'
  519 |     regs->al = GET_BDA(video_mode) | (GET_BDA(video_ctl) & 0x80);
      |                ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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:519:39: note: in expansion of macro 'GET_BDA'
  519 |     regs->al = GET_BDA(video_mode) | (GET_BDA(video_ctl) & 0x80);
      |                                       ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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 'handle_10':
cc1: note: source object is likely at address zero
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 'handle_10':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39: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_10':
cc1: note: source object is likely at address zero
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_10':
cc1: note: source object is likely at address zero
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));
      |                              ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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))
      |                 ^~~~~~~
In function 'vgafb_write_char':
cc1: note: source object is likely at address zero
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:411:19: note: in expansion of macro 'GET_BDA'
  411 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
In function 'vgafb_write_char':
cc1: note: source object is likely at address zero
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);
      |                   ^~~~~~~
In function 'vgafb_read_char':
cc1: note: source object is likely at address zero
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:457:17: note: in expansion of macro 'GET_BDA'
  457 |     if (cp.x >= GET_BDA(video_cols) || cheight > ARRAY_SIZE(lines))
      |                 ^~~~~~~
In function 'vgafb_read_char':
cc1: note: source object is likely at address zero
  Compiling whole program 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));
      |                                         ^~~~~~~~~~~
In function 'stdvga_save_restore':
cc1: note: source object is likely at address zero
In function 'bda_save_restore',
    inlined from 'stdvga_save_restore' at ./vgasrc/stdvga.c:453:12:
./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);
      |         ^~~~~~~~~~~
In function 'stdvga_save_restore':
cc1: note: source object is likely at address zero
In function 'bda_save_restore',
    inlined from 'stdvga_save_restore' at ./vgasrc/stdvga.c:453:12:
./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 'stdvga_save_restore':
cc1: note: source object is likely at address zero
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 'vgafb_write_pixel':
cc1: note: source object is likely at address zero
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 'vgafb_read_pixel':
cc1: note: source object is likely at address zero
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 'write_char.isra':
cc1: note: source object is likely at address zero
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 'vgafb_clear_chars.constprop.isra':
cc1: note: source object is likely at address zero
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 'vgafb_move_chars.isra':
cc1: note: source object is likely at address zero
./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));
      |     ^~~~~~~~~~~
cc1: note: source object is likely at address zero
./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);
      |     ^~~~~~~~~~~
cc1: note: source object is likely at address zero
./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
      |         ^~~~~~~~~~~~
cc1: note: source object is likely at address zero
./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
      |         ^~~~~~~~~~~~
cc1: note: source object is likely at address zero
./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) {
      |         ^~~~~~~~~~~
cc1: note: source object is likely at address zero
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_104f05':
cc1: note: source object is likely at address zero
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;
      |                    ^~~~~~~~~~~
In function 'handle_104f':
cc1: note: source object is likely at address zero
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: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);
      |         ^~~~~~~~~~~~
In function 'handle_104f':
cc1: note: source object is likely at address zero
In function 'vbe_104f10',
    inlined from 'handle_104f' at ./vgasrc/vbe.c:458:16:
./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 'handle_104f':
cc1: note: source object is likely at address zero
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 'handle_104f':
cc1: note: source object is likely at address zero
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 'handle_104f':
cc1: note: source object is likely at address zero
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 'handle_104f':
cc1: note: source object is likely at address zero
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 'handle_104f':
cc1: note: source object is likely at address zero
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 'handle_10':
cc1: note: source object is likely at address zero
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);
      |                    ^~~~~~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
  Fixup VGA rom assembler
  Linking out/vgarom.o
Version: 1.16.2-20231022_004208-build-3-19-x86
ld: warning: out/vgarom.o has a LOAD segment with RWX permissions
  Extracting binary out/vgabios.bin.raw
  Finalizing rom out/vgabios.bin
>>> seabios: building vgabios-isavga.bin
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'check_stdin':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:77:17: warning: format not a string literal and no format arguments [-Wformat-security]
   77 |                 printf(_("aborted!\n\n"));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:78:17: warning: format not a string literal and no format arguments [-Wformat-security]
   78 |                 printf(_("Console input/output is redirected. "));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:79:17: warning: format not a string literal and no format arguments [-Wformat-security]
   79 |                 printf(_("Run 'make oldconfig' to update configuration.\n\n"));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'conf_askvalue':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:89:17: warning: format not a string literal and no format arguments [-Wformat-security]
   89 |                 printf(_("(NEW) "));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'conf_choice':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:290:33: warning: format not a string literal and no format arguments [-Wformat-security]
  290 |                                 printf(_(" (NEW)"));
      |                                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'check_conf':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:438:41: warning: format not a string literal and no format arguments [-Wformat-security]
  438 |                                         printf(_("*\n* Restart config...\n*\n"));
      |                                         ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'main':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:636:41: warning: format not a string literal and no format arguments [-Wformat-security]
  636 |                                         _("\n*** The configuration requires explicit update.\n\n"));
      |                                         ^
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:689:25: warning: format not a string literal and no format arguments [-Wformat-security]
  689 |                         fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n"));
      |                         ^~~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:693:25: warning: format not a string literal and no format arguments [-Wformat-security]
  693 |                         fprintf(stderr, _("\n*** Error during update of the configuration.\n\n"));
      |                         ^~~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:704:25: warning: format not a string literal and no format arguments [-Wformat-security]
  704 |                         fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n"));
      |                         ^~~~~~~
scripts/kconfig/conf --olddefconfig /home/buildozer/aports/main/seabios/src/seabios-1.16.2/src/Kconfig
#
# configuration written to /home/buildozer/aports/main/seabios/src/seabios-1.16.2/.config
#
  Compiling to assembler out/src/asm-offsets.s
  Precompiling out/vgasrc/vgalayout.lds
  Build Kconfig config file
  Compile checking out/src/output.o
  Compile checking out/src/string.o
  Compile checking out/src/hw/pci.o
  Compile checking out/src/hw/serialio.o
  Compile checking out/vgasrc/vgainit.o
  Compile checking out/vgasrc/vgabios.o
  Compile checking out/vgasrc/vgafb.o
  Compile checking out/vgasrc/swcursor.o
  Compile checking out/vgasrc/vgafonts.o
  Compile checking out/vgasrc/vbe.o
  Compile checking out/vgasrc/stdvga.o
  Compile checking out/vgasrc/stdvgamodes.o
  Compile checking out/vgasrc/stdvgaio.o
  Compile checking out/vgasrc/clext.o
  Compile checking out/vgasrc/svgamodes.o
  Compile checking out/vgasrc/atiext.o
  Compile checking out/vgasrc/bochsvga.o
  Compile checking out/vgasrc/geodevga.o
  Compile checking out/src/fw/coreboot.o
  Compile checking out/vgasrc/cbvga.o
  Compile checking out/vgasrc/bochsdisplay.o
  Compile checking out/vgasrc/ramfb.o
  Generating offset file out/asm-offsets.h
  Compiling (16bit) out/vgaentry.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 function 'vga_post':
cc1: note: source object is likely at address zero
In file included from src/biosvar.h:10:
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/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 'vga_post':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'vga_post':
cc1: note: source object is likely at address zero
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:146:5: note: in expansion of macro 'SET_BDA'
  146 |     SET_BDA(dcc_index, CONFIG_VGA_STDVGA_PORTS ? 0x08 : 0xff);
      |     ^~~~~~~
In function 'vga_post':
cc1: note: source object is likely at address zero
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:149:5: note: in expansion of macro 'SET_BDA'
  149 |     SET_BDA(video_msr, 0x00); // Unavailable on vanilla vga, but...
      |     ^~~~~~~
In function 'vga_post':
cc1: note: source object is likely at address zero
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:150:5: note: in expansion of macro 'SET_BDA'
  150 |     SET_BDA(video_pal, 0x00); // Unavailable on vanilla vga, but...
      |     ^~~~~~~
In function 'vga_post':
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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));
      |     ^~~~~~~
In function 'vga_post':
cc1: note: source object is likely at address zero
In function 'allocate_extra_stack',
    inlined from 'vga_post' at vgasrc/vgainit.c:190:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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 'vga_post':
cc1: note: source object is likely at address zero
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) {
      |         ^~~~~~~~~~~
cc1: note: source object is likely at address zero
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
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 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
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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)
      |                         ^~~~~~~
cc1: note: source object is likely at address zero
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;
      |                    ^~~~~~~~~~~
In function 'handle_104f':
cc1: note: source object is likely at address zero
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))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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);
      |         ^~~~~~~~~~~~
In function 'handle_104f':
cc1: note: source object is likely at address zero
In function 'vbe_104f10',
    inlined from 'handle_104f' at vgasrc/vbe.c:458: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)
      |                                   ^
vgasrc/vgabios.h:63: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 'handle_104f':
cc1: note: source object is likely at address zero
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);
      |                ^~~~~~~~~~~
In function 'handle_104f':
cc1: note: source object is likely at address zero
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)) {
      |                    ^~~~~~~
cc1: note: source object is likely at address zero
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;
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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);
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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)};
      |                                       ^~~~~~~
cc1: note: source object is likely at address zero
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;
      |                      ^~~~~~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_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);
      |     ^~~~~~~~~~~~
cc1: note: source object is likely at address zero
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)) {
      |                   ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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};
      |                                     ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                       ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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;
      |                          ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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);
      |                   ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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));
      |                                          ^~~~~~~
cc1: note: source object is likely at address zero
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));
      |                                         ^~~~~~~~~~~
cc1: note: source object is likely at address zero
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));
      |                                      ^~~~~~~
cc1: note: source object is likely at address zero
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));
      |                                      ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_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);
      |         ^~~~~~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_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);
      |         ^~~~~~~~~~~
cc1: note: source object is likely at address zero
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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                    ^~~~~~~~~~~
cc1: note: source object is likely at address zero
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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_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));
      |     ^~~~~~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_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);
      |     ^~~~~~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 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
      |         ^~~~~~~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_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
      |         ^~~~~~~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 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);
      |                          ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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]));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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]));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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_10':
cc1: note: source object is likely at address zero
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_10':
cc1: note: source object is likely at address zero
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_10':
cc1: note: source object is likely at address zero
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));
      |                         ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39: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_10':
cc1: note: source object is likely at address zero
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;
      |             ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39: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_10':
cc1: note: source object is likely at address zero
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;
      |               ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39: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_10':
cc1: note: source object is likely at address zero
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);
      |        ^~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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: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);
      |        ^~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
In function 'handle_101230',
    inlined from 'handle_1012' at vgasrc/vgabios.c:969:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122: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:900:5: note: in expansion of macro 'SET_BDA'
  900 |     SET_BDA(modeset_ctl, mctl);
      |     ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
In function 'handle_101230',
    inlined from 'handle_1012' at vgasrc/vgabios.c:969:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122: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:901:5: note: in expansion of macro 'SET_BDA'
  901 |     SET_BDA(video_switches, vswt);
      |     ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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);
      |         ^~~~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
In function 'handle_101210',
    inlined from 'handle_1012' at vgasrc/vgabios.c:968: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:872:16: note: in expansion of macro 'GET_BDA'
  872 |     regs->cx = GET_BDA(video_switches) & 0x0f;
      |                ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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);
      |                         ^~
In function 'handle_10':
cc1: note: source object is likely at address zero
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=]
In function 'handle_10':
cc1: note: source object is likely at address zero
In function 'handle_101130',
    inlined from 'handle_1011' at vgasrc/vgabios.c:853:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1121:16:
In file included from src/biosvar.h:10,
                 from vgasrc/vgafb.c:8:
vgasrc/vgafb.c: In function 'get_font_data':
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);
      |                         ^~
In function 'handle_10':
cc1: note: source object is likely at address zero
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:784:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
In function 'handle_10':
cc1: note: source object is likely at address zero
In function 'handle_101130',
    inlined from 'handle_1011' at vgasrc/vgabios.c:853:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1121: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:387:23: note: in expansion of macro 'GET_BDA'
  387 |     int char_height = GET_BDA(char_height);
      |                       ^~~~~~~
cc1: note: source object is likely at address zero
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 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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;
      |                ^~~~~~~
cc1: note: source object is likely at address zero
In function 'handle_10':
cc1: note: source object is likely at address zero
In function 'handle_101130',
    inlined from 'handle_1011' at vgasrc/vgabios.c:853:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1121:16:
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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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_10':
cc1: note: source object is likely at address zero
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: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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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_10':
cc1: note: source object is likely at address zero
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 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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_10':
cc1: note: source object is likely at address zero
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);
      |                ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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:519:16: note: in expansion of macro 'GET_BDA'
  519 |     regs->al = GET_BDA(video_mode) | (GET_BDA(video_ctl) & 0x80);
      |                ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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:519:39: note: in expansion of macro 'GET_BDA'
  519 |     regs->al = GET_BDA(video_mode) | (GET_BDA(video_ctl) & 0x80);
      |                                       ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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 'handle_10':
cc1: note: source object is likely at address zero
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 'handle_10':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39: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_10':
cc1: note: source object is likely at address zero
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_10':
cc1: note: source object is likely at address zero
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));
      |                              ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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;
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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;
      |                      ^~~~~~~
cc1: note: source object is likely at address zero
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;
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
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 'vgafb_clear_chars.isra':
cc1: note: source object is likely at address zero
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;
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
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 'vgafb_move_chars.isra':
cc1: note: source object is likely at address zero
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))
      |                 ^~~~~~~
In function 'vgafb_write_char':
cc1: note: source object is likely at address zero
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:411:19: note: in expansion of macro 'GET_BDA'
  411 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
In function 'vgafb_write_char':
cc1: note: source object is likely at address zero
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);
      |                   ^~~~~~~
In function 'vgafb_read_char':
cc1: note: source object is likely at address zero
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:457:17: note: in expansion of macro 'GET_BDA'
  457 |     if (cp.x >= GET_BDA(video_cols) || cheight > ARRAY_SIZE(lines))
      |                 ^~~~~~~
In function 'vgafb_read_char':
cc1: note: source object is likely at address zero
  Compiling whole program 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 'vgafb_write_pixel':
cc1: note: source object is likely at address zero
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 'vgafb_read_pixel':
cc1: note: source object is likely at address zero
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 'write_char.isra':
cc1: note: source object is likely at address zero
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 'vgafb_clear_chars.constprop.isra':
cc1: note: source object is likely at address zero
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 'vgafb_move_chars.isra':
cc1: note: source object is likely at address zero
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));
      |                                         ^~~~~~~~~~~
In function 'bochsvga_save_restore':
cc1: note: source object is likely at address zero
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: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);
      |         ^~~~~~~~~~~
In function 'bochsvga_save_restore':
cc1: note: source object is likely at address zero
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: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 'bochsvga_save_restore':
cc1: note: source object is likely at address zero
./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));
      |     ^~~~~~~~~~~
cc1: note: source object is likely at address zero
./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);
      |     ^~~~~~~~~~~
cc1: note: source object is likely at address zero
./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
      |         ^~~~~~~~~~~~
cc1: note: source object is likely at address zero
./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
      |         ^~~~~~~~~~~~
cc1: note: source object is likely at address zero
./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) {
      |         ^~~~~~~~~~~
cc1: note: source object is likely at address zero
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_104f05':
cc1: note: source object is likely at address zero
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;
      |                    ^~~~~~~~~~~
In function 'handle_104f':
cc1: note: source object is likely at address zero
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: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);
      |         ^~~~~~~~~~~~
In function 'handle_104f':
cc1: note: source object is likely at address zero
In function 'vbe_104f10',
    inlined from 'handle_104f' at ./vgasrc/vbe.c:458:16:
./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 'handle_104f':
cc1: note: source object is likely at address zero
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 'handle_104f':
cc1: note: source object is likely at address zero
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 'handle_104f':
cc1: note: source object is likely at address zero
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 'handle_104f':
cc1: note: source object is likely at address zero
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 'handle_104f':
cc1: note: source object is likely at address zero
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 'handle_10':
cc1: note: source object is likely at address zero
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);
      |                    ^~~~~~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
  Fixup VGA rom assembler
  Linking out/vgarom.o
Version: 1.16.2-20231022_004214-build-3-19-x86
ld: warning: out/vgarom.o has a LOAD segment with RWX permissions
  Extracting binary out/vgabios.bin.raw
  Finalizing rom out/vgabios.bin
>>> seabios: building vgabios-qxl.bin
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'check_stdin':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:77:17: warning: format not a string literal and no format arguments [-Wformat-security]
   77 |                 printf(_("aborted!\n\n"));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:78:17: warning: format not a string literal and no format arguments [-Wformat-security]
   78 |                 printf(_("Console input/output is redirected. "));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:79:17: warning: format not a string literal and no format arguments [-Wformat-security]
   79 |                 printf(_("Run 'make oldconfig' to update configuration.\n\n"));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'conf_askvalue':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:89:17: warning: format not a string literal and no format arguments [-Wformat-security]
   89 |                 printf(_("(NEW) "));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'conf_choice':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:290:33: warning: format not a string literal and no format arguments [-Wformat-security]
  290 |                                 printf(_(" (NEW)"));
      |                                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'check_conf':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:438:41: warning: format not a string literal and no format arguments [-Wformat-security]
  438 |                                         printf(_("*\n* Restart config...\n*\n"));
      |                                         ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'main':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:636:41: warning: format not a string literal and no format arguments [-Wformat-security]
  636 |                                         _("\n*** The configuration requires explicit update.\n\n"));
      |                                         ^
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:689:25: warning: format not a string literal and no format arguments [-Wformat-security]
  689 |                         fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n"));
      |                         ^~~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:693:25: warning: format not a string literal and no format arguments [-Wformat-security]
  693 |                         fprintf(stderr, _("\n*** Error during update of the configuration.\n\n"));
      |                         ^~~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:704:25: warning: format not a string literal and no format arguments [-Wformat-security]
  704 |                         fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n"));
      |                         ^~~~~~~
scripts/kconfig/conf --olddefconfig /home/buildozer/aports/main/seabios/src/seabios-1.16.2/src/Kconfig
#
# configuration written to /home/buildozer/aports/main/seabios/src/seabios-1.16.2/.config
#
  Compiling to assembler out/src/asm-offsets.s
  Precompiling out/vgasrc/vgalayout.lds
  Build Kconfig config file
  Compile checking out/src/output.o
  Compile checking out/src/string.o
  Compile checking out/src/hw/pci.o
  Compile checking out/src/hw/serialio.o
  Compile checking out/vgasrc/vgainit.o
  Compile checking out/vgasrc/vgabios.o
  Compile checking out/vgasrc/vgafb.o
  Compile checking out/vgasrc/swcursor.o
  Compile checking out/vgasrc/vgafonts.o
  Compile checking out/vgasrc/vbe.o
  Compile checking out/vgasrc/stdvga.o
  Compile checking out/vgasrc/stdvgamodes.o
  Compile checking out/vgasrc/stdvgaio.o
  Compile checking out/vgasrc/clext.o
  Compile checking out/vgasrc/svgamodes.o
  Compile checking out/vgasrc/atiext.o
  Compile checking out/vgasrc/bochsvga.o
  Compile checking out/vgasrc/geodevga.o
  Compile checking out/src/fw/coreboot.o
  Compile checking out/vgasrc/cbvga.o
  Compile checking out/vgasrc/bochsdisplay.o
  Compile checking out/vgasrc/ramfb.o
  Generating offset file out/asm-offsets.h
  Compiling (16bit) out/vgaentry.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 function 'vga_post':
cc1: note: source object is likely at address zero
In file included from src/biosvar.h:10:
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/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 'vga_post':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'vga_post':
cc1: note: source object is likely at address zero
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:146:5: note: in expansion of macro 'SET_BDA'
  146 |     SET_BDA(dcc_index, CONFIG_VGA_STDVGA_PORTS ? 0x08 : 0xff);
      |     ^~~~~~~
In function 'vga_post':
cc1: note: source object is likely at address zero
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:149:5: note: in expansion of macro 'SET_BDA'
  149 |     SET_BDA(video_msr, 0x00); // Unavailable on vanilla vga, but...
      |     ^~~~~~~
In function 'vga_post':
cc1: note: source object is likely at address zero
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:150:5: note: in expansion of macro 'SET_BDA'
  150 |     SET_BDA(video_pal, 0x00); // Unavailable on vanilla vga, but...
      |     ^~~~~~~
In function 'vga_post':
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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));
      |     ^~~~~~~
In function 'vga_post':
cc1: note: source object is likely at address zero
In function 'allocate_extra_stack',
    inlined from 'vga_post' at vgasrc/vgainit.c:190:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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 'vga_post':
cc1: note: source object is likely at address zero
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) {
      |         ^~~~~~~~~~~
cc1: note: source object is likely at address zero
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
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 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
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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;
      |                    ^~~~~~~~~~~
In function 'handle_104f':
cc1: note: source object is likely at address zero
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))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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);
      |         ^~~~~~~~~~~~
In function 'handle_104f':
cc1: note: source object is likely at address zero
In function 'vbe_104f10',
    inlined from 'handle_104f' at vgasrc/vbe.c:458: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)
      |                                   ^
vgasrc/vgabios.h:63: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 'handle_104f':
cc1: note: source object is likely at address zero
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);
      |                ^~~~~~~~~~~
In function 'handle_104f':
cc1: note: source object is likely at address zero
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)
      |                         ^~~~~~~
cc1: note: source object is likely at address zero
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;
      |                      ^~~~~~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_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);
      |     ^~~~~~~~~~~~
cc1: note: source object is likely at address zero
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)) {
      |                    ^~~~~~~
cc1: note: source object is likely at address zero
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;
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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);
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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)};
      |                                       ^~~~~~~
cc1: note: source object is likely at address zero
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)) {
      |                   ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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};
      |                                     ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                       ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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;
      |                          ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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);
      |                   ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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));
      |                                          ^~~~~~~
cc1: note: source object is likely at address zero
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));
      |                                         ^~~~~~~~~~~
cc1: note: source object is likely at address zero
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));
      |                                      ^~~~~~~
cc1: note: source object is likely at address zero
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));
      |                                      ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_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);
      |         ^~~~~~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_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);
      |         ^~~~~~~~~~~
cc1: note: source object is likely at address zero
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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                       ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                    ^~~~~~~~~~~
cc1: note: source object is likely at address zero
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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_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));
      |     ^~~~~~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_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);
      |     ^~~~~~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 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
      |         ^~~~~~~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_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
      |         ^~~~~~~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 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);
      |                          ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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]));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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]));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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;
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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;
      |                      ^~~~~~~
cc1: note: source object is likely at address zero
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;
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
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 'vgafb_clear_chars.isra':
cc1: note: source object is likely at address zero
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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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;
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
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 'vgafb_move_chars.isra':
cc1: note: source object is likely at address zero
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_10':
cc1: note: source object is likely at address zero
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_10':
cc1: note: source object is likely at address zero
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_10':
cc1: note: source object is likely at address zero
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));
      |                         ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39: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_10':
cc1: note: source object is likely at address zero
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;
      |             ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39: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_10':
cc1: note: source object is likely at address zero
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;
      |               ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39: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_10':
cc1: note: source object is likely at address zero
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);
      |        ^~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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: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);
      |        ^~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
In function 'handle_101230',
    inlined from 'handle_1012' at vgasrc/vgabios.c:969:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122: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:900:5: note: in expansion of macro 'SET_BDA'
  900 |     SET_BDA(modeset_ctl, mctl);
      |     ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
In function 'handle_101230',
    inlined from 'handle_1012' at vgasrc/vgabios.c:969:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122: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:901:5: note: in expansion of macro 'SET_BDA'
  901 |     SET_BDA(video_switches, vswt);
      |     ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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);
      |         ^~~~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
In function 'handle_101210',
    inlined from 'handle_1012' at vgasrc/vgabios.c:968: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:872:16: note: in expansion of macro 'GET_BDA'
  872 |     regs->cx = GET_BDA(video_switches) & 0x0f;
      |                ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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);
      |                         ^~
In function 'handle_10':
cc1: note: source object is likely at address zero
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=]
In function 'handle_10':
cc1: note: source object is likely at address zero
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: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);
      |                         ^~
In function 'handle_10':
cc1: note: source object is likely at address zero
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:784:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
In function 'handle_10':
cc1: note: source object is likely at address zero
In function 'handle_101130',
    inlined from 'handle_1011' at vgasrc/vgabios.c:853:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1121: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:824:16: note: in expansion of macro 'GET_BDA'
  824 |     regs->cx = GET_BDA(char_height) & 0xff;
      |                ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
In function 'handle_101130',
    inlined from 'handle_1011' at vgasrc/vgabios.c:853:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1121: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:827:16: note: in expansion of macro 'GET_BDA'
  827 |     regs->dl = GET_BDA(video_rows);
      |                ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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));
      |     ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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_10':
cc1: note: source object is likely at address zero
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);
      |                ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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:519:16: note: in expansion of macro 'GET_BDA'
  519 |     regs->al = GET_BDA(video_mode) | (GET_BDA(video_ctl) & 0x80);
      |                ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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:519:39: note: in expansion of macro 'GET_BDA'
  519 |     regs->al = GET_BDA(video_mode) | (GET_BDA(video_ctl) & 0x80);
      |                                       ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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 'handle_10':
cc1: note: source object is likely at address zero
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 'handle_10':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39: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_10':
cc1: note: source object is likely at address zero
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_10':
cc1: note: source object is likely at address zero
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));
      |                              ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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))
      |                 ^~~~~~~
In function 'vgafb_write_char':
cc1: note: source object is likely at address zero
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:411:19: note: in expansion of macro 'GET_BDA'
  411 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
In function 'vgafb_write_char':
cc1: note: source object is likely at address zero
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);
      |                   ^~~~~~~
In function 'vgafb_read_char':
cc1: note: source object is likely at address zero
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:457:17: note: in expansion of macro 'GET_BDA'
  457 |     if (cp.x >= GET_BDA(video_cols) || cheight > ARRAY_SIZE(lines))
      |                 ^~~~~~~
In function 'vgafb_read_char':
cc1: note: source object is likely at address zero
  Compiling whole program 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 'vgafb_write_pixel':
cc1: note: source object is likely at address zero
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 'vgafb_read_pixel':
cc1: note: source object is likely at address zero
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 'write_char.isra':
cc1: note: source object is likely at address zero
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 'vgafb_clear_chars.constprop.isra':
cc1: note: source object is likely at address zero
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 'vgafb_move_chars.isra':
cc1: note: source object is likely at address zero
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));
      |                                         ^~~~~~~~~~~
In function 'bochsvga_save_restore':
cc1: note: source object is likely at address zero
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: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);
      |         ^~~~~~~~~~~
In function 'bochsvga_save_restore':
cc1: note: source object is likely at address zero
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: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 'bochsvga_save_restore':
cc1: note: source object is likely at address zero
./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));
      |     ^~~~~~~~~~~
cc1: note: source object is likely at address zero
./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);
      |     ^~~~~~~~~~~
cc1: note: source object is likely at address zero
./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
      |         ^~~~~~~~~~~~
cc1: note: source object is likely at address zero
./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
      |         ^~~~~~~~~~~~
cc1: note: source object is likely at address zero
./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) {
      |         ^~~~~~~~~~~
cc1: note: source object is likely at address zero
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_104f05':
cc1: note: source object is likely at address zero
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;
      |                    ^~~~~~~~~~~
In function 'handle_104f':
cc1: note: source object is likely at address zero
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: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);
      |         ^~~~~~~~~~~~
In function 'handle_104f':
cc1: note: source object is likely at address zero
In function 'vbe_104f10',
    inlined from 'handle_104f' at ./vgasrc/vbe.c:458:16:
./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 'handle_104f':
cc1: note: source object is likely at address zero
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 'handle_104f':
cc1: note: source object is likely at address zero
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 'handle_104f':
cc1: note: source object is likely at address zero
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 'handle_104f':
cc1: note: source object is likely at address zero
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 'handle_104f':
cc1: note: source object is likely at address zero
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 'handle_10':
cc1: note: source object is likely at address zero
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);
      |                    ^~~~~~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
  Fixup VGA rom assembler
  Linking out/vgarom.o
Version: 1.16.2-20231022_004219-build-3-19-x86
ld: warning: out/vgarom.o has a LOAD segment with RWX permissions
  Extracting binary out/vgabios.bin.raw
  Finalizing rom out/vgabios.bin
>>> seabios: building vgabios-stdvga.bin
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'check_stdin':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:77:17: warning: format not a string literal and no format arguments [-Wformat-security]
   77 |                 printf(_("aborted!\n\n"));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:78:17: warning: format not a string literal and no format arguments [-Wformat-security]
   78 |                 printf(_("Console input/output is redirected. "));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:79:17: warning: format not a string literal and no format arguments [-Wformat-security]
   79 |                 printf(_("Run 'make oldconfig' to update configuration.\n\n"));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'conf_askvalue':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:89:17: warning: format not a string literal and no format arguments [-Wformat-security]
   89 |                 printf(_("(NEW) "));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'conf_choice':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:290:33: warning: format not a string literal and no format arguments [-Wformat-security]
  290 |                                 printf(_(" (NEW)"));
      |                                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'check_conf':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:438:41: warning: format not a string literal and no format arguments [-Wformat-security]
  438 |                                         printf(_("*\n* Restart config...\n*\n"));
      |                                         ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'main':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:636:41: warning: format not a string literal and no format arguments [-Wformat-security]
  636 |                                         _("\n*** The configuration requires explicit update.\n\n"));
      |                                         ^
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:689:25: warning: format not a string literal and no format arguments [-Wformat-security]
  689 |                         fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n"));
      |                         ^~~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:693:25: warning: format not a string literal and no format arguments [-Wformat-security]
  693 |                         fprintf(stderr, _("\n*** Error during update of the configuration.\n\n"));
      |                         ^~~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:704:25: warning: format not a string literal and no format arguments [-Wformat-security]
  704 |                         fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n"));
      |                         ^~~~~~~
scripts/kconfig/conf --olddefconfig /home/buildozer/aports/main/seabios/src/seabios-1.16.2/src/Kconfig
#
# configuration written to /home/buildozer/aports/main/seabios/src/seabios-1.16.2/.config
#
  Compiling to assembler out/src/asm-offsets.s
  Precompiling out/vgasrc/vgalayout.lds
  Build Kconfig config file
  Compile checking out/src/output.o
  Compile checking out/src/string.o
  Compile checking out/src/hw/pci.o
  Compile checking out/src/hw/serialio.o
  Compile checking out/vgasrc/vgainit.o
  Compile checking out/vgasrc/vgabios.o
  Compile checking out/vgasrc/vgafb.o
  Compile checking out/vgasrc/swcursor.o
  Compile checking out/vgasrc/vgafonts.o
  Compile checking out/vgasrc/vbe.o
  Compile checking out/vgasrc/stdvga.o
  Compile checking out/vgasrc/stdvgamodes.o
  Compile checking out/vgasrc/stdvgaio.o
  Compile checking out/vgasrc/clext.o
  Compile checking out/vgasrc/svgamodes.o
  Compile checking out/vgasrc/atiext.o
  Compile checking out/vgasrc/bochsvga.o
  Compile checking out/vgasrc/geodevga.o
  Compile checking out/src/fw/coreboot.o
  Compile checking out/vgasrc/cbvga.o
  Compile checking out/vgasrc/bochsdisplay.o
  Compile checking out/vgasrc/ramfb.o
  Generating offset file out/asm-offsets.h
  Compiling (16bit) out/vgaentry.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 function 'vga_post':
cc1: note: source object is likely at address zero
In file included from src/biosvar.h:10:
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/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 'vga_post':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'vga_post':
cc1: note: source object is likely at address zero
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:146:5: note: in expansion of macro 'SET_BDA'
  146 |     SET_BDA(dcc_index, CONFIG_VGA_STDVGA_PORTS ? 0x08 : 0xff);
      |     ^~~~~~~
In function 'vga_post':
cc1: note: source object is likely at address zero
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:149:5: note: in expansion of macro 'SET_BDA'
  149 |     SET_BDA(video_msr, 0x00); // Unavailable on vanilla vga, but...
      |     ^~~~~~~
In function 'vga_post':
cc1: note: source object is likely at address zero
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:150:5: note: in expansion of macro 'SET_BDA'
  150 |     SET_BDA(video_pal, 0x00); // Unavailable on vanilla vga, but...
      |     ^~~~~~~
In function 'vga_post':
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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));
      |     ^~~~~~~
In function 'vga_post':
cc1: note: source object is likely at address zero
In function 'allocate_extra_stack',
    inlined from 'vga_post' at vgasrc/vgainit.c:190:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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 'vga_post':
cc1: note: source object is likely at address zero
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
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 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
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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) {
      |         ^~~~~~~~~~~
cc1: note: source object is likely at address zero
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;
      |                    ^~~~~~~~~~~
In function 'handle_104f':
cc1: note: source object is likely at address zero
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))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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);
      |         ^~~~~~~~~~~~
In function 'handle_104f':
cc1: note: source object is likely at address zero
In function 'vbe_104f10',
    inlined from 'handle_104f' at vgasrc/vbe.c:458: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)
      |                                   ^
vgasrc/vgabios.h:63: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 'handle_104f':
cc1: note: source object is likely at address zero
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);
      |                ^~~~~~~~~~~
In function 'handle_104f':
cc1: note: source object is likely at address zero
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)) {
      |                    ^~~~~~~
cc1: note: source object is likely at address zero
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;
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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);
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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)};
      |                                       ^~~~~~~
cc1: note: source object is likely at address zero
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;
      |                      ^~~~~~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_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);
      |     ^~~~~~~~~~~~
cc1: note: source object is likely at address zero
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)
      |                         ^~~~~~~
cc1: note: source object is likely at address zero
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)) {
      |                   ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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};
      |                                     ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                       ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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;
      |                          ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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);
      |                   ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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));
      |                                          ^~~~~~~
cc1: note: source object is likely at address zero
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));
      |                                         ^~~~~~~~~~~
cc1: note: source object is likely at address zero
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));
      |                                      ^~~~~~~
cc1: note: source object is likely at address zero
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));
      |                                      ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_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);
      |         ^~~~~~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_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);
      |         ^~~~~~~~~~~
cc1: note: source object is likely at address zero
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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                    ^~~~~~~~~~~
cc1: note: source object is likely at address zero
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);
      |                       ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
vgasrc/vgabios.c: In function 'vga_set_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/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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_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));
      |     ^~~~~~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_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);
      |     ^~~~~~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 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
      |         ^~~~~~~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_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
      |         ^~~~~~~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 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);
      |                          ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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]));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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]));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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;
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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;
      |                      ^~~~~~~
cc1: note: source object is likely at address zero
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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
vgasrc/vgafb.c: In function 'vgafb_clear_chars.isra':
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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;
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
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 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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 'vgafb_clear_chars.isra':
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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;
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
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 'vgafb_move_chars.isra':
cc1: note: source object is likely at address zero
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_10':
cc1: note: source object is likely at address zero
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_10':
cc1: note: source object is likely at address zero
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_10':
cc1: note: source object is likely at address zero
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));
      |                         ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39: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_10':
cc1: note: source object is likely at address zero
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;
      |             ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39: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_10':
cc1: note: source object is likely at address zero
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;
      |               ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39: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_10':
cc1: note: source object is likely at address zero
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);
      |        ^~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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: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);
      |        ^~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
In function 'handle_101230',
    inlined from 'handle_1012' at vgasrc/vgabios.c:969:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122: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:900:5: note: in expansion of macro 'SET_BDA'
  900 |     SET_BDA(modeset_ctl, mctl);
      |     ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
In function 'handle_101230',
    inlined from 'handle_1012' at vgasrc/vgabios.c:969:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122: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:901:5: note: in expansion of macro 'SET_BDA'
  901 |     SET_BDA(video_switches, vswt);
      |     ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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);
      |         ^~~~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
In function 'handle_101210',
    inlined from 'handle_1012' at vgasrc/vgabios.c:968: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:872:16: note: in expansion of macro 'GET_BDA'
  872 |     regs->cx = GET_BDA(video_switches) & 0x0f;
      |                ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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);
      |                         ^~
In function 'handle_10':
cc1: note: source object is likely at address zero
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=]
In function 'handle_10':
cc1: note: source object is likely at address zero
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: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);
      |                         ^~
In function 'handle_10':
cc1: note: source object is likely at address zero
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:784:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
In function 'handle_10':
cc1: note: source object is likely at address zero
In function 'handle_101130',
    inlined from 'handle_1011' at vgasrc/vgabios.c:853:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1121: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:824:16: note: in expansion of macro 'GET_BDA'
  824 |     regs->cx = GET_BDA(char_height) & 0xff;
      |                ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
In function 'handle_101130',
    inlined from 'handle_1011' at vgasrc/vgabios.c:853:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1121: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:827:16: note: in expansion of macro 'GET_BDA'
  827 |     regs->dl = GET_BDA(video_rows);
      |                ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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));
      |     ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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_10':
cc1: note: source object is likely at address zero
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);
      |                ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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:519:16: note: in expansion of macro 'GET_BDA'
  519 |     regs->al = GET_BDA(video_mode) | (GET_BDA(video_ctl) & 0x80);
      |                ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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:519:39: note: in expansion of macro 'GET_BDA'
  519 |     regs->al = GET_BDA(video_mode) | (GET_BDA(video_ctl) & 0x80);
      |                                       ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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 'handle_10':
cc1: note: source object is likely at address zero
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 'handle_10':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39: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_10':
cc1: note: source object is likely at address zero
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_10':
cc1: note: source object is likely at address zero
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));
      |                              ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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))
      |                 ^~~~~~~
In function 'vgafb_write_char':
cc1: note: source object is likely at address zero
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:411:19: note: in expansion of macro 'GET_BDA'
  411 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
In function 'vgafb_write_char':
cc1: note: source object is likely at address zero
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);
      |                   ^~~~~~~
In function 'vgafb_read_char':
cc1: note: source object is likely at address zero
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:457:17: note: in expansion of macro 'GET_BDA'
  457 |     if (cp.x >= GET_BDA(video_cols) || cheight > ARRAY_SIZE(lines))
      |                 ^~~~~~~
In function 'vgafb_read_char':
cc1: note: source object is likely at address zero
  Compiling whole program 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 'vgafb_write_pixel':
cc1: note: source object is likely at address zero
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 'vgafb_read_pixel':
cc1: note: source object is likely at address zero
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 'write_char.isra':
cc1: note: source object is likely at address zero
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 'vgafb_clear_chars.constprop.isra':
cc1: note: source object is likely at address zero
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 'vgafb_move_chars.isra':
cc1: note: source object is likely at address zero
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));
      |                                         ^~~~~~~~~~~
In function 'bochsvga_save_restore':
cc1: note: source object is likely at address zero
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: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);
      |         ^~~~~~~~~~~
In function 'bochsvga_save_restore':
cc1: note: source object is likely at address zero
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: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 'bochsvga_save_restore':
cc1: note: source object is likely at address zero
./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));
      |     ^~~~~~~~~~~
cc1: note: source object is likely at address zero
./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);
      |     ^~~~~~~~~~~
cc1: note: source object is likely at address zero
./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
      |         ^~~~~~~~~~~~
cc1: note: source object is likely at address zero
./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
      |         ^~~~~~~~~~~~
cc1: note: source object is likely at address zero
./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) {
      |         ^~~~~~~~~~~
cc1: note: source object is likely at address zero
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_104f05':
cc1: note: source object is likely at address zero
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;
      |                    ^~~~~~~~~~~
In function 'handle_104f':
cc1: note: source object is likely at address zero
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: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);
      |         ^~~~~~~~~~~~
In function 'handle_104f':
cc1: note: source object is likely at address zero
In function 'vbe_104f10',
    inlined from 'handle_104f' at ./vgasrc/vbe.c:458:16:
./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 'handle_104f':
cc1: note: source object is likely at address zero
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 'handle_104f':
cc1: note: source object is likely at address zero
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 'handle_104f':
cc1: note: source object is likely at address zero
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 'handle_104f':
cc1: note: source object is likely at address zero
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 'handle_104f':
cc1: note: source object is likely at address zero
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 'handle_10':
cc1: note: source object is likely at address zero
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);
      |                    ^~~~~~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
  Fixup VGA rom assembler
  Linking out/vgarom.o
Version: 1.16.2-20231022_004225-build-3-19-x86
ld: warning: out/vgarom.o has a LOAD segment with RWX permissions
  Extracting binary out/vgabios.bin.raw
  Finalizing rom out/vgabios.bin
>>> seabios: building vgabios-virtio.bin
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'check_stdin':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:77:17: warning: format not a string literal and no format arguments [-Wformat-security]
   77 |                 printf(_("aborted!\n\n"));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:78:17: warning: format not a string literal and no format arguments [-Wformat-security]
   78 |                 printf(_("Console input/output is redirected. "));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:79:17: warning: format not a string literal and no format arguments [-Wformat-security]
   79 |                 printf(_("Run 'make oldconfig' to update configuration.\n\n"));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'conf_askvalue':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:89:17: warning: format not a string literal and no format arguments [-Wformat-security]
   89 |                 printf(_("(NEW) "));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'conf_choice':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:290:33: warning: format not a string literal and no format arguments [-Wformat-security]
  290 |                                 printf(_(" (NEW)"));
      |                                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'check_conf':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:438:41: warning: format not a string literal and no format arguments [-Wformat-security]
  438 |                                         printf(_("*\n* Restart config...\n*\n"));
      |                                         ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'main':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:636:41: warning: format not a string literal and no format arguments [-Wformat-security]
  636 |                                         _("\n*** The configuration requires explicit update.\n\n"));
      |                                         ^
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:689:25: warning: format not a string literal and no format arguments [-Wformat-security]
  689 |                         fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n"));
      |                         ^~~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:693:25: warning: format not a string literal and no format arguments [-Wformat-security]
  693 |                         fprintf(stderr, _("\n*** Error during update of the configuration.\n\n"));
      |                         ^~~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:704:25: warning: format not a string literal and no format arguments [-Wformat-security]
  704 |                         fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n"));
      |                         ^~~~~~~
scripts/kconfig/conf --olddefconfig /home/buildozer/aports/main/seabios/src/seabios-1.16.2/src/Kconfig
#
# configuration written to /home/buildozer/aports/main/seabios/src/seabios-1.16.2/.config
#
  Compiling to assembler out/src/asm-offsets.s
  Precompiling out/vgasrc/vgalayout.lds
  Build Kconfig config file
  Compile checking out/src/output.o
  Compile checking out/src/string.o
  Compile checking out/src/hw/pci.o
  Compile checking out/src/hw/serialio.o
  Compile checking out/vgasrc/vgainit.o
  Compile checking out/vgasrc/vgabios.o
  Compile checking out/vgasrc/vgafb.o
  Compile checking out/vgasrc/swcursor.o
  Compile checking out/vgasrc/vgafonts.o
  Compile checking out/vgasrc/vbe.o
  Compile checking out/vgasrc/stdvga.o
  Compile checking out/vgasrc/stdvgamodes.o
  Compile checking out/vgasrc/stdvgaio.o
  Compile checking out/vgasrc/clext.o
  Compile checking out/vgasrc/svgamodes.o
  Compile checking out/vgasrc/atiext.o
  Compile checking out/vgasrc/bochsvga.o
  Compile checking out/vgasrc/geodevga.o
  Compile checking out/src/fw/coreboot.o
  Compile checking out/vgasrc/cbvga.o
  Compile checking out/vgasrc/bochsdisplay.o
  Compile checking out/vgasrc/ramfb.o
  Generating offset file out/asm-offsets.h
  Compiling (16bit) out/vgaentry.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 function 'vga_post':
cc1: note: source object is likely at address zero
In file included from src/biosvar.h:10:
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/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 'vga_post':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'vga_post':
cc1: note: source object is likely at address zero
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:146:5: note: in expansion of macro 'SET_BDA'
  146 |     SET_BDA(dcc_index, CONFIG_VGA_STDVGA_PORTS ? 0x08 : 0xff);
      |     ^~~~~~~
In function 'vga_post':
cc1: note: source object is likely at address zero
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:149:5: note: in expansion of macro 'SET_BDA'
  149 |     SET_BDA(video_msr, 0x00); // Unavailable on vanilla vga, but...
      |     ^~~~~~~
In function 'vga_post':
cc1: note: source object is likely at address zero
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:150:5: note: in expansion of macro 'SET_BDA'
  150 |     SET_BDA(video_pal, 0x00); // Unavailable on vanilla vga, but...
      |     ^~~~~~~
In function 'vga_post':
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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));
      |     ^~~~~~~
In function 'vga_post':
cc1: note: source object is likely at address zero
In function 'allocate_extra_stack',
    inlined from 'vga_post' at vgasrc/vgainit.c:190:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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 'vga_post':
cc1: note: source object is likely at address zero
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
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 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
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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) {
      |         ^~~~~~~~~~~
cc1: note: source object is likely at address zero
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;
      |                    ^~~~~~~~~~~
In function 'handle_104f':
cc1: note: source object is likely at address zero
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))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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);
      |         ^~~~~~~~~~~~
In function 'handle_104f':
cc1: note: source object is likely at address zero
In function 'vbe_104f10',
    inlined from 'handle_104f' at vgasrc/vbe.c:458: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)
      |                                   ^
vgasrc/vgabios.h:63: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 'handle_104f':
cc1: note: source object is likely at address zero
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);
      |                ^~~~~~~~~~~
In function 'handle_104f':
cc1: note: source object is likely at address zero
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;
      |                      ^~~~~~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_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);
      |     ^~~~~~~~~~~~
cc1: note: source object is likely at address zero
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)
      |                         ^~~~~~~
cc1: note: source object is likely at address zero
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)) {
      |                    ^~~~~~~
cc1: note: source object is likely at address zero
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;
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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);
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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)};
      |                                       ^~~~~~~
cc1: note: source object is likely at address zero
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)) {
      |                   ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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};
      |                                     ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                       ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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;
      |                          ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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);
      |                   ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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));
      |                                          ^~~~~~~
cc1: note: source object is likely at address zero
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));
      |                                         ^~~~~~~~~~~
cc1: note: source object is likely at address zero
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));
      |                                      ^~~~~~~
cc1: note: source object is likely at address zero
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));
      |                                      ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_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);
      |         ^~~~~~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_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);
      |         ^~~~~~~~~~~
cc1: note: source object is likely at address zero
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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                    ^~~~~~~~~~~
cc1: note: source object is likely at address zero
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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_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));
      |     ^~~~~~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_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);
      |     ^~~~~~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 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
      |         ^~~~~~~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_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
      |         ^~~~~~~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 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);
      |                          ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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]));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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]));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                       ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
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_10':
cc1: note: source object is likely at address zero
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_10':
cc1: note: source object is likely at address zero
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_10':
cc1: note: source object is likely at address zero
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));
      |                         ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39: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_10':
cc1: note: source object is likely at address zero
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;
      |             ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39: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_10':
cc1: note: source object is likely at address zero
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;
      |               ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39: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_10':
cc1: note: source object is likely at address zero
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);
      |        ^~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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: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);
      |        ^~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
In function 'handle_101230',
    inlined from 'handle_1012' at vgasrc/vgabios.c:969:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122: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:900:5: note: in expansion of macro 'SET_BDA'
  900 |     SET_BDA(modeset_ctl, mctl);
      |     ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
In function 'handle_101230',
    inlined from 'handle_1012' at vgasrc/vgabios.c:969:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122: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:901:5: note: in expansion of macro 'SET_BDA'
  901 |     SET_BDA(video_switches, vswt);
      |     ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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);
      |         ^~~~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
In function 'handle_101210',
    inlined from 'handle_1012' at vgasrc/vgabios.c:968: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:872:16: note: in expansion of macro 'GET_BDA'
  872 |     regs->cx = GET_BDA(video_switches) & 0x0f;
      |                ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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);
      |                         ^~
In function 'handle_10':
cc1: note: source object is likely at address zero
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=]
In function 'handle_10':
cc1: note: source object is likely at address zero
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: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);
      |                         ^~
In function 'handle_10':
cc1: note: source object is likely at address zero
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:784:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
In function 'handle_10':
cc1: note: source object is likely at address zero
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/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;
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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;
      |                ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
In function 'handle_101130',
    inlined from 'handle_1011' at vgasrc/vgabios.c:853:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1121: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:553:22: note: in expansion of macro 'GET_BDA'
  553 |     u32 pageoffset = GET_BDA(video_pagesize) * cp.page;
      |                      ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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_10':
cc1: note: source object is likely at address zero
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));
      |     ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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_10':
cc1: note: source object is likely at address zero
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);
      |                ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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:519:16: note: in expansion of macro 'GET_BDA'
  519 |     regs->al = GET_BDA(video_mode) | (GET_BDA(video_ctl) & 0x80);
      |                ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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:519:39: note: in expansion of macro 'GET_BDA'
  519 |     regs->al = GET_BDA(video_mode) | (GET_BDA(video_ctl) & 0x80);
      |                                       ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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 'handle_10':
cc1: note: source object is likely at address zero
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 'handle_10':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39: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_10':
cc1: note: source object is likely at address zero
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_10':
cc1: note: source object is likely at address zero
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));
      |                              ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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;
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
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 'vgafb_clear_chars.isra':
cc1: note: source object is likely at address zero
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;
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
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 'vgafb_move_chars.isra':
cc1: note: source object is likely at address zero
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))
      |                 ^~~~~~~
In function 'vgafb_write_char':
cc1: note: source object is likely at address zero
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:411:19: note: in expansion of macro 'GET_BDA'
  411 |     int cheight = GET_BDA(char_height);
      |                   ^~~~~~~
In function 'vgafb_write_char':
cc1: note: source object is likely at address zero
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);
      |                   ^~~~~~~
In function 'vgafb_read_char':
cc1: note: source object is likely at address zero
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:457:17: note: in expansion of macro 'GET_BDA'
  457 |     if (cp.x >= GET_BDA(video_cols) || cheight > ARRAY_SIZE(lines))
      |                 ^~~~~~~
In function 'vgafb_read_char':
cc1: note: source object is likely at address zero
  Compiling whole program 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 'vgafb_write_pixel':
cc1: note: source object is likely at address zero
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 'vgafb_read_pixel':
cc1: note: source object is likely at address zero
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 'write_char.isra':
cc1: note: source object is likely at address zero
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 'vgafb_clear_chars.constprop.isra':
cc1: note: source object is likely at address zero
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 'vgafb_move_chars.isra':
cc1: note: source object is likely at address zero
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));
      |                                         ^~~~~~~~~~~
In function 'bochsvga_save_restore':
cc1: note: source object is likely at address zero
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: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);
      |         ^~~~~~~~~~~
In function 'bochsvga_save_restore':
cc1: note: source object is likely at address zero
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: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 'bochsvga_save_restore':
cc1: note: source object is likely at address zero
./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));
      |     ^~~~~~~~~~~
cc1: note: source object is likely at address zero
./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);
      |     ^~~~~~~~~~~
cc1: note: source object is likely at address zero
./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
      |         ^~~~~~~~~~~~
cc1: note: source object is likely at address zero
./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
      |         ^~~~~~~~~~~~
cc1: note: source object is likely at address zero
./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) {
      |         ^~~~~~~~~~~
cc1: note: source object is likely at address zero
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_104f05':
cc1: note: source object is likely at address zero
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;
      |                    ^~~~~~~~~~~
In function 'handle_104f':
cc1: note: source object is likely at address zero
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: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);
      |         ^~~~~~~~~~~~
In function 'handle_104f':
cc1: note: source object is likely at address zero
In function 'vbe_104f10',
    inlined from 'handle_104f' at ./vgasrc/vbe.c:458:16:
./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 'handle_104f':
cc1: note: source object is likely at address zero
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 'handle_104f':
cc1: note: source object is likely at address zero
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 'handle_104f':
cc1: note: source object is likely at address zero
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 'handle_104f':
cc1: note: source object is likely at address zero
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 'handle_104f':
cc1: note: source object is likely at address zero
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 'handle_10':
cc1: note: source object is likely at address zero
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);
      |                    ^~~~~~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
  Fixup VGA rom assembler
  Linking out/vgarom.o
Version: 1.16.2-20231022_004231-build-3-19-x86
ld: warning: out/vgarom.o has a LOAD segment with RWX permissions
  Extracting binary out/vgabios.bin.raw
  Finalizing rom out/vgabios.bin
>>> seabios: building vgabios-vmware.bin
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'check_stdin':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:77:17: warning: format not a string literal and no format arguments [-Wformat-security]
   77 |                 printf(_("aborted!\n\n"));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:78:17: warning: format not a string literal and no format arguments [-Wformat-security]
   78 |                 printf(_("Console input/output is redirected. "));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:79:17: warning: format not a string literal and no format arguments [-Wformat-security]
   79 |                 printf(_("Run 'make oldconfig' to update configuration.\n\n"));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'conf_askvalue':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:89:17: warning: format not a string literal and no format arguments [-Wformat-security]
   89 |                 printf(_("(NEW) "));
      |                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'conf_choice':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:290:33: warning: format not a string literal and no format arguments [-Wformat-security]
  290 |                                 printf(_(" (NEW)"));
      |                                 ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'check_conf':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:438:41: warning: format not a string literal and no format arguments [-Wformat-security]
  438 |                                         printf(_("*\n* Restart config...\n*\n"));
      |                                         ^~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c: In function 'main':
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:636:41: warning: format not a string literal and no format arguments [-Wformat-security]
  636 |                                         _("\n*** The configuration requires explicit update.\n\n"));
      |                                         ^
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:689:25: warning: format not a string literal and no format arguments [-Wformat-security]
  689 |                         fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n"));
      |                         ^~~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:693:25: warning: format not a string literal and no format arguments [-Wformat-security]
  693 |                         fprintf(stderr, _("\n*** Error during update of the configuration.\n\n"));
      |                         ^~~~~~~
/home/buildozer/aports/main/seabios/src/seabios-1.16.2/scripts/kconfig/conf.c:704:25: warning: format not a string literal and no format arguments [-Wformat-security]
  704 |                         fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n"));
      |                         ^~~~~~~
scripts/kconfig/conf --olddefconfig /home/buildozer/aports/main/seabios/src/seabios-1.16.2/src/Kconfig
#
# configuration written to /home/buildozer/aports/main/seabios/src/seabios-1.16.2/.config
#
  Compiling to assembler out/src/asm-offsets.s
  Precompiling out/vgasrc/vgalayout.lds
  Build Kconfig config file
  Compile checking out/src/output.o
  Compile checking out/src/string.o
  Compile checking out/src/hw/pci.o
  Compile checking out/src/hw/serialio.o
  Compile checking out/vgasrc/vgainit.o
  Compile checking out/vgasrc/vgabios.o
  Compile checking out/vgasrc/vgafb.o
  Compile checking out/vgasrc/swcursor.o
  Compile checking out/vgasrc/vgafonts.o
  Compile checking out/vgasrc/vbe.o
  Compile checking out/vgasrc/stdvga.o
  Compile checking out/vgasrc/stdvgamodes.o
  Compile checking out/vgasrc/stdvgaio.o
  Compile checking out/vgasrc/clext.o
  Compile checking out/vgasrc/svgamodes.o
  Compile checking out/vgasrc/atiext.o
  Compile checking out/vgasrc/bochsvga.o
  Compile checking out/vgasrc/geodevga.o
  Compile checking out/src/fw/coreboot.o
  Compile checking out/vgasrc/cbvga.o
  Compile checking out/vgasrc/bochsdisplay.o
  Compile checking out/vgasrc/ramfb.o
  Generating offset file out/asm-offsets.h
  Compiling (16bit) out/vgaentry.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 function 'vga_post':
cc1: note: source object is likely at address zero
In file included from src/biosvar.h:10:
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/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 'vga_post':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'vga_post':
cc1: note: source object is likely at address zero
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:146:5: note: in expansion of macro 'SET_BDA'
  146 |     SET_BDA(dcc_index, CONFIG_VGA_STDVGA_PORTS ? 0x08 : 0xff);
      |     ^~~~~~~
In function 'vga_post':
cc1: note: source object is likely at address zero
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:149:5: note: in expansion of macro 'SET_BDA'
  149 |     SET_BDA(video_msr, 0x00); // Unavailable on vanilla vga, but...
      |     ^~~~~~~
In function 'vga_post':
cc1: note: source object is likely at address zero
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:150:5: note: in expansion of macro 'SET_BDA'
  150 |     SET_BDA(video_pal, 0x00); // Unavailable on vanilla vga, but...
      |     ^~~~~~~
In function 'vga_post':
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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));
      |     ^~~~~~~
In function 'vga_post':
cc1: note: source object is likely at address zero
In function 'allocate_extra_stack',
    inlined from 'vga_post' at vgasrc/vgainit.c:190:5:
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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 'vga_post':
cc1: note: source object is likely at address zero
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) {
      |         ^~~~~~~~~~~
cc1: note: source object is likely at address zero
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
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 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
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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;
      |                    ^~~~~~~~~~~
In function 'handle_104f':
cc1: note: source object is likely at address zero
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))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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);
      |         ^~~~~~~~~~~~
In function 'handle_104f':
cc1: note: source object is likely at address zero
In function 'vbe_104f10',
    inlined from 'handle_104f' at vgasrc/vbe.c:458: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)
      |                                   ^
vgasrc/vgabios.h:63: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 'handle_104f':
cc1: note: source object is likely at address zero
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);
      |                ^~~~~~~~~~~
In function 'handle_104f':
cc1: note: source object is likely at address zero
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;
      |                      ^~~~~~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_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);
      |     ^~~~~~~~~~~~
cc1: note: source object is likely at address zero
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)
      |                         ^~~~~~~
cc1: note: source object is likely at address zero
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)) {
      |                    ^~~~~~~
cc1: note: source object is likely at address zero
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;
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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);
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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)};
      |                                       ^~~~~~~
cc1: note: source object is likely at address zero
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)) {
      |                   ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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};
      |                                     ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                       ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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;
      |                          ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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);
      |                   ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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));
      |                                          ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                       ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                ^~~~~~~
cc1: note: source object is likely at address zero
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));
      |                                         ^~~~~~~~~~~
cc1: note: source object is likely at address zero
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));
      |                                      ^~~~~~~
cc1: note: source object is likely at address zero
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));
      |                                      ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_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);
      |         ^~~~~~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_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);
      |         ^~~~~~~~~~~
cc1: note: source object is likely at address zero
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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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);
      |                    ^~~~~~~~~~~
cc1: note: source object is likely at address zero
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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_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));
      |     ^~~~~~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_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);
      |     ^~~~~~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 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
      |         ^~~~~~~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_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
      |         ^~~~~~~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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;
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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;
      |                      ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 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);
      |                          ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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]));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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]));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |         ^~~~~~~
cc1: note: source object is likely at address zero
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;
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
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 'vgafb_clear_chars.isra':
cc1: note: source object is likely at address zero
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;
      |                  ^~~~~~~
cc1: note: source object is likely at address zero
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 'vgafb_move_chars.isra':
cc1: note: source object is likely at address zero
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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:182:35: warning: array subscript 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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));
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
src/farptr.h:180:6: warning: array subscript 0 is outside array bounds of 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/farptr.h:182:10: note: in expansion of macro 'GET_FARVAR'
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |          ^~~~~~~~~~
src/biosvar.h:39: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);
      |     ^~~~~~~
cc1: note: source object is likely at address zero
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_10':
cc1: note: source object is likely at address zero
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_10':
cc1: note: source object is likely at address zero
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_10':
cc1: note: source object is likely at address zero
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));
      |                         ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39: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_10':
cc1: note: source object is likely at address zero
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;
      |             ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39: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_10':
cc1: note: source object is likely at address zero
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;
      |               ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
In function 'handle_101231',
    inlined from 'handle_1012' at vgasrc/vgabios.c:970:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122:16:
In function 'gfx_write_char',
    inlined from 'vgafb_write_char' at vgasrc/vgafb.c:633:9:
src/farptr.h:182:35: warning: array subscript 0 is outside array bounds of 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39: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_10':
cc1: note: source object is likely at address zero
In function 'handle_101230',
    inlined from 'handle_1012' at vgasrc/vgabios.c:969: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 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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))
      |                 ^~~~~~~
In function 'vgafb_write_char':
cc1: note: source object is likely at address zero
In function 'gfx_write_char',
    inlined from 'vgafb_write_char' at vgasrc/vgafb.c:633:9:
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);
      |        ^~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
In function 'handle_101230',
    inlined from 'handle_1012' at vgasrc/vgabios.c:969: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 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/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 'vgafb_write_char':
cc1: note: source object is likely at address zero
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);
      |        ^~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
In function 'handle_101230',
    inlined from 'handle_1012' at vgasrc/vgabios.c:969:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122: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:900:5: note: in expansion of macro 'SET_BDA'
  900 |     SET_BDA(modeset_ctl, mctl);
      |     ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
In function 'handle_101230',
    inlined from 'handle_1012' at vgasrc/vgabios.c:969:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1122: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:901:5: note: in expansion of macro 'SET_BDA'
  901 |     SET_BDA(video_switches, vswt);
      |     ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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);
      |         ^~~~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
In function 'handle_101210',
    inlined from 'handle_1012' at vgasrc/vgabios.c:968: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:872:16: note: in expansion of macro 'GET_BDA'
  872 |     regs->cx = GET_BDA(video_switches) & 0x0f;
      |                ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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);
      |                         ^~
In function 'handle_10':
cc1: note: source object is likely at address zero
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=]
In function 'handle_10':
cc1: note: source object is likely at address zero
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: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);
      |                         ^~
In function 'handle_10':
cc1: note: source object is likely at address zero
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:784:25: warning: array subscript 0 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
In function 'handle_10':
cc1: note: source object is likely at address zero
In function 'handle_101130',
    inlined from 'handle_1011' at vgasrc/vgabios.c:853:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1121: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:824:16: note: in expansion of macro 'GET_BDA'
  824 |     regs->cx = GET_BDA(char_height) & 0xff;
      |                ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
In function 'handle_101130',
    inlined from 'handle_1011' at vgasrc/vgabios.c:853:16,
    inlined from 'handle_10' at vgasrc/vgabios.c:1121: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:827:16: note: in expansion of macro 'GET_BDA'
  827 |     regs->dl = GET_BDA(video_rows);
      |                ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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));
      |     ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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 1 is outside array bounds of 'struct segoff_s[0]' [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/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_10':
cc1: note: source object is likely at address zero
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);
      |                ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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:519:16: note: in expansion of macro 'GET_BDA'
  519 |     regs->al = GET_BDA(video_mode) | (GET_BDA(video_ctl) & 0x80);
      |                ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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:519:39: note: in expansion of macro 'GET_BDA'
  519 |     regs->al = GET_BDA(video_mode) | (GET_BDA(video_ctl) & 0x80);
      |                                       ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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 'u16[0]' {aka 'short unsigned int[]'} [-Warray-bounds=]
  180 |     (*((typeof(&(var)))MAKE_FLATPTR((seg), &(var))))
      |     ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/biosvar.h: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 'handle_10':
cc1: note: source object is likely at address zero
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 'handle_10':
cc1: note: source object is likely at address zero
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);
      |     ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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 'u8[0]' {aka 'unsigned char[]'} [-Warray-bounds=]
  182 |     do { GET_FARVAR((seg), (var)) = (val); } while (0)
      |                                   ^
src/biosvar.h:39: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_10':
cc1: note: source object is likely at address zero
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_10':
cc1: note: source object is likely at address zero
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));
      |                              ^~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
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);
      |                   ^~~~~~~
In function 'vgafb_read_char':
cc1: note: source object is likely at address zero
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:457:17: note: in expansion of macro 'GET_BDA'
  457 |     if (cp.x >= GET_BDA(video_cols) || cheight > ARRAY_SIZE(lines))
      |                 ^~~~~~~
In function 'vgafb_read_char':
cc1: note: source object is likely at address zero
  Compiling whole program 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 'vgafb_write_pixel':
cc1: note: source object is likely at address zero
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 'vgafb_read_pixel':
cc1: note: source object is likely at address zero
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 'write_char.isra':
cc1: note: source object is likely at address zero
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 'vgafb_clear_chars.constprop.isra':
cc1: note: source object is likely at address zero
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 'vgafb_move_chars.isra':
cc1: note: source object is likely at address zero
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));
      |                                         ^~~~~~~~~~~
In function 'bochsvga_save_restore':
cc1: note: source object is likely at address zero
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: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);
      |         ^~~~~~~~~~~
In function 'bochsvga_save_restore':
cc1: note: source object is likely at address zero
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: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 'bochsvga_save_restore':
cc1: note: source object is likely at address zero
./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));
      |     ^~~~~~~~~~~
cc1: note: source object is likely at address zero
./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);
      |     ^~~~~~~~~~~
cc1: note: source object is likely at address zero
./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
      |         ^~~~~~~~~~~~
cc1: note: source object is likely at address zero
./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
      |         ^~~~~~~~~~~~
cc1: note: source object is likely at address zero
./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) {
      |         ^~~~~~~~~~~
cc1: note: source object is likely at address zero
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_104f05':
cc1: note: source object is likely at address zero
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;
      |                    ^~~~~~~~~~~
In function 'handle_104f':
cc1: note: source object is likely at address zero
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: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);
      |         ^~~~~~~~~~~~
In function 'handle_104f':
cc1: note: source object is likely at address zero
In function 'vbe_104f10',
    inlined from 'handle_104f' at ./vgasrc/vbe.c:458:16:
./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 'handle_104f':
cc1: note: source object is likely at address zero
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 'handle_104f':
cc1: note: source object is likely at address zero
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 'handle_104f':
cc1: note: source object is likely at address zero
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 'handle_104f':
cc1: note: source object is likely at address zero
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 'handle_104f':
cc1: note: source object is likely at address zero
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 'handle_10':
cc1: note: source object is likely at address zero
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);
      |                    ^~~~~~~~~~~
In function 'handle_10':
cc1: note: source object is likely at address zero
  Fixup VGA rom assembler
  Linking out/vgarom.o
Version: 1.16.2-20231022_004237-build-3-19-x86
ld: warning: out/vgarom.o has a LOAD segment with RWX permissions
  Extracting binary out/vgabios.bin.raw
  Finalizing rom out/vgabios.bin
>>> WARNING: seabios: APKBUILD does not run any tests!
    Alpine policy will soon require that packages have any relevant testsuites run during the build process.
    To fix, either define a check() function, or declare !check in $options to indicate the package does not have a testsuite.
>>> seabios: Entering fakeroot...
>>> seabios-doc*: Running split function doc...
>>> seabios-doc*: Preparing subpackage seabios-doc...
>>> seabios-doc*: Running postcheck for seabios-doc
>>> seabios-bin*: Running split function _seabios...
>>> seabios-bin*: Preparing subpackage seabios-bin...
>>> seabios-bin*: Stripping binaries
>>> seabios-bin*: Running postcheck for seabios-bin
>>> seavgabios-bin*: Running split function _seavgabios...
>>> seavgabios-bin*: Preparing subpackage seavgabios-bin...
>>> seavgabios-bin*: Stripping binaries
>>> WARNING: seavgabios-bin*: No arch specific binaries found so arch should probably be set to "noarch"
>>> seavgabios-bin*: Running postcheck for seavgabios-bin
>>> seabios*: Running postcheck for seabios
>>> seabios*: Preparing package seabios...
>>> seabios*: Stripping binaries
>>> WARNING: seabios*: No arch specific binaries found so arch should probably be set to "noarch"
>>> seabios-bin*: Scanning shared objects
>>> seabios-doc*: Scanning shared objects
>>> seabios*: Scanning shared objects
>>> seavgabios-bin*: Scanning shared objects
>>> seabios-bin*: Tracing dependencies...
>>> seabios-bin*: Package size: 812.0 KB
>>> seabios-bin*: Compressing data...
>>> seabios-bin*: Create checksum...
>>> seabios-bin*: Create seabios-bin-1.16.2-r0.apk
>>> seabios-doc*: Tracing dependencies...
>>> seabios-doc*: Package size: 184.0 KB
>>> seabios-doc*: Compressing data...
>>> seabios-doc*: Create checksum...
>>> seabios-doc*: Create seabios-doc-1.16.2-r0.apk
>>> seabios*: Tracing dependencies...
>>> seabios*: Package size: 12.0 KB
>>> seabios*: Compressing data...
>>> seabios*: Create checksum...
>>> seabios*: Create seabios-1.16.2-r0.apk
>>> seavgabios-bin*: Tracing dependencies...
>>> seavgabios-bin*: Package size: 256.0 KB
>>> seavgabios-bin*: Compressing data...
>>> seavgabios-bin*: Create checksum...
>>> seavgabios-bin*: Create seavgabios-bin-1.16.2-r0.apk
>>> seabios: Build complete at Sun, 22 Oct 2023 00:42:38 +0000 elapsed time 0h 1m 26s
>>> seabios: Cleaning up srcdir
>>> seabios: Cleaning up pkgdir
>>> seabios: Uninstalling dependencies...
(1/14) Purging .makedepends-seabios (20231022.004115)
(2/14) Purging iasl (20230628-r0)
(3/14) Purging python3-pyc (3.11.6-r1)
(4/14) Purging python3-pycache-pyc0 (3.11.6-r1)
(5/14) Purging pyc (3.11.6-r1)
(6/14) Purging python3 (3.11.6-r1)
(7/14) Purging gdbm (1.23-r1)
(8/14) Purging libbz2 (1.0.8-r6)
(9/14) Purging libffi (3.4.4-r3)
(10/14) Purging libpanelw (6.4_p20231007-r0)
(11/14) Purging mpdecimal (2.5.1-r2)
(12/14) Purging readline (8.2.1-r2)
(13/14) Purging sqlite-libs (3.43.2-r0)
(14/14) Purging xz-libs (5.4.4-r0)
Executing busybox-1.36.1-r13.trigger
OK: 376 MiB in 101 packages
>>> seabios: Updating the main/x86 repository index...
>>> seabios: Signing the index...