Difference between revisions of "HOWTO-Debug-Endian-Issues"

Jump to navigation Jump to search
m
small typo and grammar fixes
(Mention the Raspberry Pi being able to run big-endian NetBSD, just in case… untested)
m (small typo and grammar fixes)
Line 8: Line 8:
#* Examples include the [https://www.raptorcs.com/content/BK1B01/intro.html Raptor Blackbird™] workstation. It is a powerful system which can run up-to-date Linux/BSD distributions, both in little-endian and big-endian modes.
#* Examples include the [https://www.raptorcs.com/content/BK1B01/intro.html Raptor Blackbird™] workstation. It is a powerful system which can run up-to-date Linux/BSD distributions, both in little-endian and big-endian modes.
#* Unfortunately, it's a pricey niche system, and there's no guarantee that big-endian OS options will be maintained for long.
#* Unfortunately, it's a pricey niche system, and there's no guarantee that big-endian OS options will be maintained for long.
#* NetBSD also allows [https://mail-index.netbsd.org/port-arm/2020/12/03/msg007117.html running a Raspberry Pi in big-endian mode], but this isn't been tested for ScummVM development yet.
#* NetBSD also allows [https://mail-index.netbsd.org/port-arm/2020/12/03/msg007117.html running a Raspberry Pi in big-endian mode], but this hasn't been tested for ScummVM development yet.
# Running a native, older big-endian development system:
# Running a native, older big-endian development system:
#* Examples include buying an older G4 or G5 Apple PowerPC system, or an older SPARC64 Sun station<ref>Some MIPS and ARM boards also exist, but their quality can vary a lot, and although the MIPS and ARM architectures are theoretically bi-endian, in practice these development boards often only run in little-endian mode, nowadays. They can be useful for strict-alignment testing, though (but <code>-fsanitize=alignment -DSCUMM_NEED_ALIGNMENT</code> in UBSan on your regular desktop will also catch a lot of these issues).</ref>. They can often be bought second hand at very reasonable prices.
#* Examples include buying an older G4 or G5 Apple PowerPC system, or an older SPARC64 Sun station<ref>Some MIPS and ARM boards also exist, but their quality can vary a lot, and although the MIPS and ARM architectures are theoretically bi-endian, in practice these development boards often only run in little-endian mode, nowadays. They can be useful for strict-alignment testing, though (but <code>-fsanitize=alignment -DSCUMM_NEED_ALIGNMENT</code> in UBSan on your regular desktop will also catch a lot of these issues).</ref>. They can often be bought second-hand at very reasonable prices.
#* However, running a modern development environment on them in getting harder (but not impossible), because the big-endian desktop ecosystem receives less and less maintenance, so things often tend to break. G5 systems (in particular) also require careful maintenance and can be very power-hungry.
#* However, running a modern development environment on them in getting harder (but not impossible), because the big-endian desktop ecosystem receives less and less maintenance, so things often tend to break. G5 systems (in particular) also require careful maintenance and can be very power-hungry.
# '''Emulating a big-endian development system from your regular development machine''':
# '''Emulating a big-endian development system from your regular development machine''':
Line 74: Line 74:


* <code>-m 2048</code>: the amount of memory given to the VM, in megabytes. Using more than 2 GiB is not possible in QEMU at the moment. Moreover, this is a 32-bit system and it wouldn't change the VM performance much.
* <code>-m 2048</code>: the amount of memory given to the VM, in megabytes. Using more than 2 GiB is not possible in QEMU at the moment. Moreover, this is a 32-bit system and it wouldn't change the VM performance much.
* <code>-g 1024x750x32</code>: VM screen resolution and bit depth. You can try suiting it to your needs, but strange results may happen with some resolutions, and, since there's no graphics acceleration, making the window too big may worsen performance. Reducing the bit-depth from <code>32</code> to <code>24</code> bits could help in some cases.
* <code>-g 1024x750x32</code>: VM screen resolution and bit depth. You can try suiting it to your needs, but strange results may happen with some resolutions, and, since there's no graphics acceleration, making the window too big may worsen performance. Reducing the bit depth from <code>32</code> to <code>24</code> bits could help in some cases.
* <code>-cdrom /path/to/host/game.iso</code>: this is a quick way of sharing some game or development files from your host to the VM (it will then appear in its file manager). Other file-sharing options between the two systems are possible ([[#Various options for a more convenient setup|see below]]).
* <code>-cdrom /path/to/host/game.iso</code>: this is a quick way of sharing some game or development files from your host to the VM (it will then appear in its file manager). Other file-sharing options between the two systems are possible ([[#Various options for a more convenient setup|see below]]).


Line 83: Line 83:
==== Keyboard layout ====
==== Keyboard layout ====


Keyboard layout can be changed in Applications Menu > Settings > Keyboard > Layout, or with <code>setxkbmap</code> (see also https://wiki.debian.org/Keyboard), if necessary. Default credentials are <code>scummvm</code> / <code>scummvm</code>, since this is just a local development environment.
The keyboard layout can be changed in Applications Menu > Settings > Keyboard > Layout, or with <code>setxkbmap</code> (see also https://wiki.debian.org/Keyboard), if necessary. Default credentials are <code>scummvm</code> / <code>scummvm</code>, since this is just a local development environment.


=== Building ScummVM in the Debian PPC VM ===
=== Building ScummVM in the Debian PPC VM ===
Line 152: Line 152:
== Debugging for Other Architectures ==
== Debugging for Other Architectures ==


The instructions above should be valid for emulation and debugging of other uncommon machine architectures e.g. MIPS, provided that QEMU supports that architecture e.g. use qemu-system-mips, rather than ppc, and a Linux distribution or other Unix is available for that architecture as a installation CD ISO image.
The instructions above should be valid for emulation and debugging of other uncommon machine architectures e.g. MIPS, provided that QEMU supports that architecture e.g. use qemu-system-mips, rather than ppc, and a Linux distribution or other Unix is available for that architecture as an installation CD ISO image.


However, there are a few architectures which QEMU does not support, notably [https://en.wikipedia.org/wiki/SuperH SH]. However, there is another general purpose CPU/machine emulator called [http://gxemul.sourceforge.net/ GXemul] which does support this and some other more esoteric platforms. This is less supported than QEMU, but this procedure should be possible with some modifications. Any notes on this would be gratefully received by the team.
However, there are a few architectures which QEMU does not support, notably [https://en.wikipedia.org/wiki/SuperH SH]. However, there is another general purpose CPU/machine emulator called [http://gxemul.sourceforge.net/ GXemul] which does support this and some other more esoteric platforms. This is less supported than QEMU, but this procedure should be possible with some modifications. Any notes on this would be gratefully received by the team.
192

edits

Navigation menu