-
Notifications
You must be signed in to change notification settings - Fork 6
Update for building on modern systems, including Apple Silicon #2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
It's probably worth tagging this as 2.5.0-pebble5 if merged - should I update the version in this commit or will that happen after this is merged? |
macOS on Apple Silicon does not allow memory pages to be marked as RWX. Instead, to achieve the same behaviour, pages be allocated with the MAP_JIT flag, and the permissions are dynamically switched between RW and RX using the pthread_jit_write_protect function.[1] Most of this commit is derived from upstream work in [2], with changes as necessary to apply onto this older tree. [1]: https://developer.apple.com/documentation/apple-silicon/porting-just-in-time-compilers-to-apple-silicon [2]: https://gitlab.com/qemu-project/qemu/-/commit/653b87eb36045b506b79f0bb433016ef1c54bc9a Signed-off-by: Ruby Iris Juric <ruby@srxl.me>
At some point, sys/memfd.h was removed from most systems.[1] Instead, the definitions we need from it can now be found in sys/mman.h. [1]: https://stackoverflow.com/questions/56615488/getting-gcc-error-sys-memfd-h-no-such-file-or-directory Signed-off-by: Ruby Iris Juric <ruby@srxl.me>
Without these includes, the build fails on some systems due to missing declarations for qemu_system_reset_request, which live in sysemu/sysemu.h. Signed-off-by: Ruby Iris Juric <ruby@srxl.me>
Similarly to 745fb61, it seems some definitions may have been moved around in the C stdlib, and accessing major requires explicitly including sys/sysmacros.h. Signed-off-by: Ruby Iris Juric <ruby@srxl.me>
Somewhere in the macOS build, there's an #include for <version>. Because the root source directory is added to the include path during build, that include picks up this VERSION file, which makes the build fail since it doesn't contain valid C code. Renaming the file to prevent the name collision allows the build to proceed as normal. Signed-off-by: Ruby Iris Juric <ruby@srxl.me>
All of the old submodules are currently dead, either because of dropping support for the old git:// scheme (like GitHub), or because the repos have been moved to a new location. Signed-off-by: Ruby Iris Juric <ruby@srxl.me>
|
Works for me. We'd have to create and push a new tag after this is merged. Also we might want to mention that unlike the FW, Python 2 is required to build this. |
|
It should be pretty trivial to port these scripts to Python 3, especially since there's no external dependencies - |
Address a memory leak bug in the usages of timer_del().
The issue arises from the incorrect use of the ambiguous timer API
timer_del(), which does not free the timer object. The LeakSanitizer
report this issue during fuzzing. The correct API timer_free() freed
the timer object instead.
=================================================================
==2586273==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 48 byte(s) in 1 object(s) allocated from:
#0 0x55f2afd89879 in calloc /llvm-project/compiler-rt/lib/asan/asan_malloc_linux.cpp:75:3
pebble-dev#1 0x7f443b93ac50 in g_malloc0 (/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x5ec50)
pebble-dev#2 0x55f2b053962e in timer_new include/qemu/timer.h:542:12
pebble-dev#3 0x55f2b0514771 in timer_new_us include/qemu/timer.h:582:12
pebble-dev#4 0x55f2b0514288 in lsi_scsi_realize hw/scsi/lsi53c895a.c:2350:24
pebble-dev#5 0x55f2b0452d26 in pci_qdev_realize hw/pci/pci.c:2174:9
Signed-off-by: Zheng Huang <hz1624917200@outlook.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-ID: <73cd69f9-ff9b-4cd4-b8aa-265f9d6067b9@gmail.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
This PR is an upstream of the patches in https://github.com/Sorixelle/pebble.nix/tree/main/derivations/pebble-qemu that allow this repo to be built, and the resulting binaries to be run on modern systems, particularly Apple Silicon macOS systems. All of this is generally useful outside of a Nix environment, so it would be nice to have here so anyone can build this repo easily if they need to.