Commit b1d05108 authored by Mike Hommey's avatar Mike Hommey
Browse files

Bug 1598196 - Support disabling the linker on Android in the code. r=froydnj

For now, there is no flag to actually allow it, but this is the
code-side changes to allow the linker being disabled.

Differential Revision: https://phabricator.services.mozilla.com/D54074

--HG--
extra : moz-landing-system : lando
parent 83bfe6ce
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -31,7 +31,7 @@
#include "sqlite3.h"
#include "SQLiteBridge.h"
#include "NSSBridge.h"
#include "ElfLoader.h"
#include "Linker.h"
#include "application.ini.h"

#include "mozilla/arm.h"
@@ -99,7 +99,7 @@ JavaVM* sJavaVM;

void abortThroughJava(const char* msg) {
  struct sigaction sigact = {};
  if (SEGVHandler::__wrap_sigaction(SIGSEGV, nullptr, &sigact)) {
  if (__wrap_sigaction(SIGSEGV, nullptr, &sigact)) {
    return;  // sigaction call failed.
  }

@@ -373,9 +373,13 @@ Java_org_mozilla_gecko_mozglue_GeckoLoader_nativeRun(JNIEnv* jenv, jclass jc,
      return;
    }

#ifdef MOZ_LINKER
    ElfLoader::Singleton.ExpectShutdown(false);
#endif
    gBootstrap->GeckoStart(jenv, argv, argc, sAppData);
#ifdef MOZ_LINKER
    ElfLoader::Singleton.ExpectShutdown(true);
#endif
  } else {
    gBootstrap->XRE_SetAndroidChildFds(
        jenv, {prefsFd, prefMapFd, ipcFd, crashFd, crashAnnotationFd});
+1 −1
Original line number Diff line number Diff line
@@ -11,7 +11,7 @@
#  include <android/log.h>
#endif

#include "ElfLoader.h"
#include "Linker.h"

#ifdef DEBUG
#  define LOG(x...) __android_log_print(ANDROID_LOG_INFO, "GeckoJNI", x)
+2 −1
Original line number Diff line number Diff line
@@ -4,11 +4,12 @@

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <jni.h>
#include <android/log.h>
#include "dlfcn.h"
#include "APKOpen.h"
#include "ElfLoader.h"
#include "Linker.h"
#include "SQLiteBridge.h"

#ifdef DEBUG
+1 −1
Original line number Diff line number Diff line
@@ -35,7 +35,7 @@

#  if defined(MOZ_LINKER)
#    include "AutoObjectMapper.h"
#    include "ElfLoader.h"  // dl_phdr_info
#    include "Linker.h"  // dl_phdr_info
#  elif defined(GP_OS_linux) || defined(GP_OS_android)
#    include <link.h>  // dl_phdr_info
#  else
+0 −2
Original line number Diff line number Diff line
@@ -1322,5 +1322,3 @@ int SEGVHandler::__wrap_sigaction(int signum, const struct sigaction* act,
  if (act) that.action = *act;
  return 0;
}

Logging Logging::Singleton;
Loading