Visitar URL original
NDK 27 arm64 Navigation Native libraries have non-16 KB GNU_RELRO segment ends · Issue #7978 · mapbox/mapbox-navigation-android · GitHub
Skip to content

NDK 27 arm64 Navigation Native libraries have non-16 KB GNU_RELRO segment ends #7978

Open

Description

@changl

Android API: 36 (Android 16) for the bounded emulator result below; the static artifact check is API-independent.
Mapbox Navigation SDK version: 3.33.0, then 3.32.3 (-ndk27; Navigation Native 324.33.0, then 324.32.3).

Steps to trigger behavior

  1. Download each official AAR linked below, for example curl -fLO '<AAR URL>'.
  2. Extract the arm64 libraries: unzip '<artifact>.aar' 'jni/arm64-v8a/*.so' -d extracted (use a separate destination for each AAR).
  3. Run the Android NDK tool llvm-readelf -lW extracted/jni/arm64-v8a/<library>.so for each library.
  4. Check every LOAD: p_align is at least 0x4000, is a power of two, and (VirtAddr - Offset) % p_align == 0; all pass here. For GNU_RELRO, calculate (VirtAddr + MemSiz) % 0x4000; the nonzero values below reproduce the defect against the documented end-alignment check.

Official AARs (dash-native-ndk27 ships both libraries):

Expected behavior

The GNU_RELRO segment end is aligned to 16 KB, so (VirtAddr + MemSiz) % 0x4000 == 0, per Android's RELRO guidance, or Mapbox documents why this layout is safe on native 16 KB devices.

Actual behavior

Both libraries retain nonzero GNU_RELRO end remainders in the newest stable 3.33.0 dependency, although every LOAD meets 16 KB alignment:

Library (arm64-v8a) AAR version Every LOAD p_align GNU_RELRO VirtAddr + MemSiz = end end % 0x4000
libnavigator-android.so 324.33.0 0x4000, 0x4000, 0x4000 0x1d92ae0 + 0x74520 = 0x1e07000 0x3000
libnn-perf-replay.so 324.33.0 0x4000, 0x4000, 0x4000 0x1d790 + 0x870 = 0x1e000 0x2000
libnavigator-android.so 324.32.3 0x4000, 0x4000, 0x4000 0x1d4a7c0 + 0x73840 = 0x1dbe000 0x2000
libnn-perf-replay.so 324.32.3 0x4000, 0x4000, 0x4000 0x1d760 + 0x8a0 = 0x1e000 0x2000

In a prior bounded Android 16 / API 36 arm64 emulator run with 16 KB pages and linker/package compatibility mode disabled, Navigation 3.32.0 / Navigation Native 324.32.0 -ndk27 completed one Free Drive start/stop with seven emulator GPS fixes: no crash observed. No Active Guidance was exercised. That result does not establish safety, physical-device compatibility, or runtime behavior of 3.33.0/3.32.3; those versions were checked statically only.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions