diff --git a/CHANGELOG.md b/CHANGELOG.md index bb2b1d9094..cfe7928ec4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,11 @@ ## TBD +### Enhancements + +* Support for Android Kernels with a 16kB page size + []() + ### Bug fixes * Corrected the behavior when `Bugsnag.startSession` is called when `config.autoTrackSessions=true`, the first automatic session will now be correctly discarded diff --git a/bugsnag-android-core/src/main/CMakeLists.txt b/bugsnag-android-core/src/main/CMakeLists.txt index c2cebef409..281c8ee11a 100644 --- a/bugsnag-android-core/src/main/CMakeLists.txt +++ b/bugsnag-android-core/src/main/CMakeLists.txt @@ -1,15 +1,19 @@ set(BUGSNAG_VERSION 1.0.1) add_library( # Specifies the name of the library. - bugsnag-root-detection - # Sets the library as a shared library. - SHARED - # Provides a relative path to your source file(s). - jni/root_detection.c - ) + bugsnag-root-detection + # Sets the library as a shared library. + SHARED + # Provides a relative path to your source file(s). + jni/root_detection.c +) include_directories(jni) -set_target_properties(bugsnag-root-detection - PROPERTIES - COMPILE_OPTIONS - -Werror -Wall -pedantic) +set(EXTRA_LINK_FLAGS "-Wl,-z,max-page-size=16384") + +set_target_properties( + bugsnag-root-detection + PROPERTIES + COMPILE_OPTIONS -Werror -Wall -pedantic + LINK_FLAGS "${EXTRA_LINK_FLAGS}" +) diff --git a/bugsnag-plugin-android-anr/src/main/CMakeLists.txt b/bugsnag-plugin-android-anr/src/main/CMakeLists.txt index f4bc87c22e..3777341157 100644 --- a/bugsnag-plugin-android-anr/src/main/CMakeLists.txt +++ b/bugsnag-plugin-android-anr/src/main/CMakeLists.txt @@ -1,23 +1,27 @@ set(BUGSNAG_VERSION 1.0.1) add_library( # Specifies the name of the library. - bugsnag-plugin-android-anr - # Sets the library as a shared library. - SHARED - # Provides a relative path to your source file(s). - jni/anr_google.c - jni/anr_handler.c - jni/bugsnag_anr.c - jni/utils/string.c - ) + bugsnag-plugin-android-anr + # Sets the library as a shared library. + SHARED + # Provides a relative path to your source file(s). + jni/anr_google.c + jni/anr_handler.c + jni/bugsnag_anr.c + jni/utils/string.c +) include_directories(jni) +set(EXTRA_LINK_FLAGS "-Wl,-z,max-page-size=16384") + target_link_libraries( # Specifies the target library. - bugsnag-plugin-android-anr - # Links the log library to the target library. - log) + bugsnag-plugin-android-anr + # Links the log library to the target library. + log) -set_target_properties(bugsnag-plugin-android-anr - PROPERTIES - COMPILE_OPTIONS - -Werror -Wall -pedantic) +set_target_properties( + bugsnag-plugin-android-anr + PROPERTIES + COMPILE_OPTIONS -Werror -Wall -pedantic + LINK_FLAGS "${EXTRA_LINK_FLAGS}" +) diff --git a/bugsnag-plugin-android-ndk/src/main/CMakeLists.txt b/bugsnag-plugin-android-ndk/src/main/CMakeLists.txt index 959c790255..73d98025d4 100644 --- a/bugsnag-plugin-android-ndk/src/main/CMakeLists.txt +++ b/bugsnag-plugin-android-ndk/src/main/CMakeLists.txt @@ -1,58 +1,62 @@ set(BUGSNAG_VERSION 1.0.1) add_library( # Specifies the name of the library. - bugsnag-ndk - - # Sets the library as a shared library. - SHARED - - # Provides a relative path to your source file(s). - jni/bugsnag_ndk.c - jni/bugsnag.c - jni/metadata.c - jni/safejni.c - jni/jni_cache.c - jni/event.c - jni/featureflags.c - jni/internal_metrics.c - jni/handlers/signal_handler.c - jni/handlers/cpp_handler.cpp - jni/utils/crash_info.c - jni/utils/serializer/buffered_writer.c - jni/utils/serializer/event_writer.c - jni/utils/serializer/BSG_KSJSONCodec.c - jni/utils/serializer/BSG_KSCrashStringConversion.c - jni/utils/stack_unwinder.cpp - jni/utils/seqlock.c - jni/utils/serializer.c - jni/utils/string.c - jni/utils/threads.c - jni/utils/memory.c - jni/deps/parson/parson.c + bugsnag-ndk + + # Sets the library as a shared library. + SHARED + + # Provides a relative path to your source file(s). + jni/bugsnag_ndk.c + jni/bugsnag.c + jni/metadata.c + jni/safejni.c + jni/jni_cache.c + jni/event.c + jni/featureflags.c + jni/internal_metrics.c + jni/handlers/signal_handler.c + jni/handlers/cpp_handler.cpp + jni/utils/crash_info.c + jni/utils/serializer/buffered_writer.c + jni/utils/serializer/event_writer.c + jni/utils/serializer/BSG_KSJSONCodec.c + jni/utils/serializer/BSG_KSCrashStringConversion.c + jni/utils/stack_unwinder.cpp + jni/utils/seqlock.c + jni/utils/serializer.c + jni/utils/string.c + jni/utils/threads.c + jni/utils/memory.c + jni/deps/parson/parson.c ) include_directories( - jni - jni/deps - jni/external/libunwindstack-ndk/include + jni + jni/deps + jni/external/libunwindstack-ndk/include ) target_include_directories(bugsnag-ndk PRIVATE ${BUGSNAG_DIR}/assets/include) -target_link_libraries( # Specifies the target library. - bugsnag-ndk - # Links the log library to the target library. - log) +target_link_libraries( + # Specifies the target library. + bugsnag-ndk + # Links the log library to the target library. + log +) # Avoid exporting symbols in release mode to keep internals private # More symbols are exported in debug mode for the sake of unit testing -set(EXTRA_LINK_FLAGS "-Wl,--version-script=${CMAKE_CURRENT_LIST_DIR}/exported_native_symbols-${CMAKE_BUILD_TYPE}.txt") - -set_target_properties(bugsnag-ndk - PROPERTIES - COMPILE_OPTIONS -Werror -Wall -pedantic - LINK_FLAGS "${EXTRA_LINK_FLAGS}" - CXX_STANDARD 17 - CXX_STANDARD_REQUIRED YES) +set(EXTRA_LINK_FLAGS "-Wl,-z,max-page-size=16384,--version-script=${CMAKE_CURRENT_LIST_DIR}/exported_native_symbols-${CMAKE_BUILD_TYPE}.txt") + +set_target_properties( + bugsnag-ndk + PROPERTIES + COMPILE_OPTIONS -Werror -Wall -pedantic + LINK_FLAGS "${EXTRA_LINK_FLAGS}" + CXX_STANDARD 17 + CXX_STANDARD_REQUIRED YES +) add_subdirectory(jni/external/libunwindstack-ndk/cmake) target_link_libraries(bugsnag-ndk unwindstack) diff --git a/examples/sdk-app-example/app/CMakeLists.txt b/examples/sdk-app-example/app/CMakeLists.txt index c803a1ddd6..f9aa3ccd01 100644 --- a/examples/sdk-app-example/app/CMakeLists.txt +++ b/examples/sdk-app-example/app/CMakeLists.txt @@ -5,5 +5,14 @@ find_package(bugsnag-plugin-android-ndk REQUIRED CONFIG) add_library(entrypoint SHARED src/main/cpp/entrypoint.cpp) +set(EXTRA_LINK_FLAGS "-Wl,-z,max-page-size=16384") + target_include_directories(entrypoint PRIVATE ${BUGSNAG_INCLUDE_DIR}) target_link_libraries(entrypoint bugsnag-plugin-android-ndk::bugsnag-ndk) + +set_target_properties( + entrypoint + PROPERTIES + COMPILE_OPTIONS -Werror -Wall -pedantic + LINK_FLAGS "${EXTRA_LINK_FLAGS}" +) diff --git a/scripts/run-cpp-check.sh b/scripts/run-cpp-check.sh index 35213af7b5..1ce30903ac 100755 --- a/scripts/run-cpp-check.sh +++ b/scripts/run-cpp-check.sh @@ -1,2 +1,2 @@ -cppcheck --error-exitcode=2 --enable=warning,performance bugsnag-plugin-android-anr/src/main/jni && \ -cppcheck --error-exitcode=2 --enable=warning,performance bugsnag-plugin-android-ndk/src/main/jni -i bugsnag-plugin-android-ndk/src/main/jni/deps -i bugsnag-plugin-android-ndk/src/main/jni/external +cppcheck --error-exitcode=2 --enable=warning,performance --check-level=exhaustive bugsnag-plugin-android-anr/src/main/jni && \ +cppcheck --error-exitcode=2 --enable=warning,performance --check-level=exhaustive bugsnag-plugin-android-ndk/src/main/jni -i bugsnag-plugin-android-ndk/src/main/jni/deps -i bugsnag-plugin-android-ndk/src/main/jni/external