Implement the recommendations described in issue #255 by @zzazzdzz:
- Check bounds when reading ELF program header sections.
- Skip reading ELF section headers if the string table pointer is NULL.
- Increase the buffer size for dissassembled instructions in the
dissassembly view and pass the buffer size to the disArm() and
disThumb() functions so that rudimentary bounds checking can be done.
Also add the constants WORK_RAM_SIZE and ROM_SIZE to reduce incidence of
magic numbers and make the code a bit cleaner.
Move the `cache: directories: "$HOME/.ccache"` key from the top of the
file into each specific job, otherwise it does not seem to have an
effect as a global option.
Use a matrix of 4 jobs, linux (ubuntu trusty), mingw i686, mingw x86-64
and mac.
Automatically detect ccache in the cmake config and cache the
`~/.ccache` directory for faster rebuilds.
Instructions for ccache in cmake are here:
https://stackoverflow.com/a/24305849
Change build status badge in README.md to Travis.
Add some dependencies for the linux build that apt errors out on,
hopefully this won't affect newer ubuntu or debian.
Do an apt-get update before trying to install mxe dependencies for win32
cross builds, or the packages cannot be found.
In MainFrame::ShowModal, which is used as a wrapper for
wxDialog::ShowModal to also pause emulation, add the current window
style flags to the additional CAPTION and RESIZE_BORDER flags being set
with SetWindowStyle(), otherwise the other style flags of the window are
reset causing erroneous behavior such as save dialogs appearing as open
dialogs on Mac.
When using GTK2, call DrawArea(dc) instead of GetWindow()->Refresh(),
this prevents glib from using huge amounts of CPU (as discovered by
@retro-wertz .)
Switching video drivers sometimes crashes the app, the DrawArea() call
is as safe as possible, the problem is elsewhere.
Skip the check for wx-config-gtk3 if the WX_CONFIG environment variable
is set, indicating that the user wants to override the version of wx to
build against.
Use a loop to check for wx-config-gtk4 then wx-config-gtk3 and unset the
config executable variable otherwise.
Also remove gl from the initial wx libraries list.
Change installdeps to install wxgtk3 on arch instead of the wxgtk
package which uses gtk2.
Update the cmake code to check for the renamed wx-config executable
wx-config-gtk3 on arch, first checking for wx-config-gtk4 for the
future.
Compile out the min/max functions in GBALink.cpp when compiling with
clang, clang does not like them because of some sort of changes in the
preprocessor.
Run the mac builder script with homebrew bash, system bash does not work
and dash no longer works.
TODO: fix dash compat
Minor rework on how bios is loaded when CPUInit is called, removes a few conditions.
Disable cheats by default. This is automatically re-enabled when enabling and applying cheats. Should save a few cycles during runtime if cheats are not needed.