[rcore][drm] Link failure for `eglGetPlatformDisplay()` on Mali GPUs with stripped EGL symbol tables
Issue description
When compiling raylib 6.0 with PLATFORM=PLATFORM_DRM on devices with Mali GPUs (specifically Mali-G52), the build fails with:
/usr/bin/ld: /usr/local/lib/libraylib.a(rcore.o): in function `InitPlatform':
rcore.c:(.text+0x1dfa4): undefined reference to `eglGetPlatformDisplay'
collect2: error: ld returned 1 exit statusRoot Cause
In src/platforms/rcore_drm.c, the #if defined(EGL_VERSION_1_5) check is a compile-time preprocessor check. Since libegl1-mesa-dev defines EGL_VERSION_1_5 in its headers, the preprocessor always takes the top branch and compiles a direct call to eglGetPlatformDisplay.
However, the Mali driver ships libEGL.so as a stripped binary, the function physically exists in the binary but the symbol table is removed, so the linker cannot resolve it by name at link time even though it would work at runtime.
This can be confirmed with:
nm /usr/lib/aarch64-linux-gnu/libEGL.so
# nm: no symbols
strings /usr/lib/aarch64-linux-gnu/libEGL.so.1 | grep eglGetPlatformDisplay
# eglGetPlatformDisplayBecause of this the existing #else fallback to eglGetDisplay never makes it into the compiled binary at all, the preprocessor removes it before compilation.
Workaround
Until fixed, patching rcore_drm.c line 1417 to use eglGetDisplay directly works:
platform.device = eglGetDisplay((EGLNativeDisplayType)platform.gbmDevice);
Environment
Device: Powkiddy RGB30 GPU: Mali-G52 OS: dArkOS (Debian Trixie based) EGL: Mesa 25.0.7 (pkg-config --modversion egl reports 1.5)
Code Example
#include "raylib.h"
int main(void)
{
InitWindow(720, 720, "raylib example - basic window");
while (!WindowShouldClose())
{
BeginDrawing();
ClearBackground(RAYWHITE);
DrawText("Congrats! You created your first window!", 190, 200, 20, LIGHTGRAY);
EndDrawing();
}
CloseWindow();
return 0;
}Source: raysan5/raylib