Simple Directmedia Layer
Go to file
Jessica Clarke 02daab8736 Fix pointer provenance in SDL_SIMDRealloc
This is needed to support CHERI, and thus Arm's experimental Morello
prototype, where pointers are implemented using unforgeable capabilities
that include bounds and permissions metadata to provide fine-grained
spatial and referential memory safety, as well as revocation by sweeping
memory to provide heap temporal memory safety.

The C standard does not guarantee that if two pointers compare equal
they are the same pointer, as C pointers have a notion of provenance,
and compilers have been known to exploit this during optimisation. For
CHERI, this becomes even more important, as in-place expansion can
result in realloc returning a capability to the same address but with
increased capability bounds, and so reusing the old capability will trap
trying to access outside the bounds of the original allocation.

In the case that ptr == mem, memdiff and ptrdiff should still be equal,
so the only overhead is a small amount of pointer arithmetic and a store
of the new pointer (which is required per the C standard in order to not
be undefined behaviour when next loaded).

This also fixes the calculation of oldmem to use uintptr_t rather than
size_t as casting the pointer to size_t on CHERI will strip the
capability metadata, including the validity tag, with the subsequent
cast back to void * resulting in a null-derived capability whose
validity tag is clear and thus cannot be dereferenced without trapping.
2021-07-29 14:42:15 -07:00
.github CI: add 'libdecor' dependency from upstream 2021-07-25 14:54:12 -07:00
acinclude
android-project Enable TV game mode by default on Android 2021-05-07 12:43:35 -07:00
android-project-ant
build-scripts wikiheaders.pl: Add --copy-to-header option. 2021-07-14 17:07:41 -04:00
cmake wayland: client-side decoration 2021-07-25 14:54:12 -07:00
debian debian: Align to debian packaging scheme 2021-04-07 13:57:23 -07:00
docs README-dynapi.md: Cleaned up markdown formatting. 2021-07-23 12:48:28 -04:00
include Fix SDL_Event definition to support systems with pointers larger than 8 bytes 2021-07-29 14:42:15 -07:00
src Fix pointer provenance in SDL_SIMDRealloc 2021-07-29 14:42:15 -07:00
test Query the rate for the correct sensor (thanks @meyraud705) 2021-07-29 14:25:13 -07:00
VisualC Reverted accidental Visual Studio version bump in SDL.sln 2021-07-27 12:51:44 -07:00
VisualC-WinRT
visualtest fix permissions of a few files 2021-02-22 15:44:32 +03:00
wayland-protocols Remove wl-shell and xdg-shell-unstable-v6 support (#4323) 2021-07-27 14:12:26 -07:00
Xcode fix permissions 2021-07-08 17:56:14 +03:00
Xcode-iOS
.gitignore Updated .gitignore from @Zangetsu38 - thanks! 2021-07-24 01:19:58 -07:00
Android.mk minor watcom build fixes. 2021-05-15 00:22:50 +03:00
autogen.sh bump minimum required autoconf version and revise autogen.sh 2021-04-14 23:20:40 +03:00
BUGS.txt
cmake_uninstall.cmake.in
CMakeLists.txt wayland: client-side decoration 2021-07-25 14:54:12 -07:00
configure --disable-wayland-shared implies --disable-libdecor-shared for now. 2021-07-28 17:01:02 +03:00
configure.ac --disable-wayland-shared implies --disable-libdecor-shared for now. 2021-07-28 17:01:02 +03:00
CREDITS.txt
INSTALL.txt development list has moved to forum 2021-06-01 16:49:13 -07:00
LICENSE.txt
Makefile.in Include README.md in the distribution archive 2021-07-27 08:34:46 -07:00
Makefile.minimal
Makefile.os2 updated os2 makefile. 2021-07-07 23:51:32 +03:00
Makefile.pandora
Makefile.psp
Makefile.wiz
README-SDL.txt
README.md Update and rename README.txt to README.md 2021-03-20 18:46:37 -04:00
sdl2-config-version.cmake.in
sdl2-config.cmake.in sdl2-config.cmake.in: Make SDL2::SDL2 work with MinGW, fixes #3665 2021-07-08 14:55:33 -07:00
sdl2-config.in
sdl2.m4
sdl2.pc.in rename PKG_CONFIG_LIBS_PRIV to PKGCONFIG_LIBS_PRIV 2021-04-14 21:40:50 +03:00
SDL2.spec.in
SDL2Config.cmake SDL2Config.cmake: Clean it up a bit, remove gcc-style SDL2_LIBRARIES 2021-07-08 14:55:33 -07:00
TODO.txt Fixed up legacy MoinMoin URLs at wiki.libsdl.org 2021-04-01 12:20:33 -04:00
WhatsNew.txt

Simple DirectMedia Layer (SDL) Version 2.0

https://www.libsdl.org/

Simple DirectMedia Layer is a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware via OpenGL and Direct3D. It is used by video playback software, emulators, and popular games including Valve's award winning catalog and many Humble Bundle games.

More extensive documentation is available in the docs directory, starting with README.md

Enjoy!

Sam Lantinga (slouken@libsdl.org)