Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(207)

Unified Diff: content/public/android/java/src/org/chromium/content/browser/ChildProcessConnection.java

Issue 23717023: Android: Add chrome-specific dynamic linker. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add new 'content_linker_unittests_apk' target + ensure ashmem regions are forced read-only Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/public/android/java/src/org/chromium/content/browser/ChildProcessConnection.java
diff --git a/content/public/android/java/src/org/chromium/content/browser/ChildProcessConnection.java b/content/public/android/java/src/org/chromium/content/browser/ChildProcessConnection.java
index 9715f6368742f364525ceefd0af6e26262dc1dd6..388a0f94cde4586440edd9ec4c2030a57f1a97ac 100644
--- a/content/public/android/java/src/org/chromium/content/browser/ChildProcessConnection.java
+++ b/content/public/android/java/src/org/chromium/content/browser/ChildProcessConnection.java
@@ -14,6 +14,7 @@ import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
import android.os.ParcelFileDescriptor;
+import android.os.RemoteException;
import android.util.Log;
import java.io.IOException;
@@ -21,9 +22,11 @@ import java.util.concurrent.atomic.AtomicBoolean;
import org.chromium.base.CalledByNative;
import org.chromium.base.CpuFeatures;
+import org.chromium.base.Linker;
import org.chromium.base.SysUtils;
import org.chromium.base.ThreadUtils;
import org.chromium.content.app.ChildProcessService;
+import org.chromium.content.app.LibraryLoader;
import org.chromium.content.common.CommandLine;
import org.chromium.content.common.IChildProcessCallback;
import org.chromium.content.common.IChildProcessService;
@@ -87,6 +90,9 @@ public class ChildProcessConnection {
public static final String EXTRA_CPU_FEATURES =
"com.google.android.apps.chrome.extra.cpu_features";
+ public static final String EXTRA_CHROME_LINKER_ADDRESS =
+ "com.google.android.apps.chrome.extra.crazy_linker_address";
+
private final Context mContext;
private final int mServiceNumber;
private final boolean mInSandbox;
@@ -160,6 +166,9 @@ public class ChildProcessConnection {
if (commandLine != null) {
intent.putExtra(EXTRA_COMMAND_LINE, commandLine);
}
+ if (LibraryLoader.useCrazyLinker()) {
+ intent.putExtra(EXTRA_CHROME_LINKER_ADDRESS, Linker.getBaseLoadAddress());
+ }
mBound = mContext.bindService(intent, this, mBindFlags);
if (mBound && mProtectsFromOom && mConnectionCallbacks != null) {
mConnectionCallbacks.onOomBindingAdded(getPid());
@@ -413,6 +422,15 @@ public class ChildProcessConnection {
TraceEvent.end();
}
+ public void applyRelro(Bundle relroBundle) {
+ if (mService != null && relroBundle != null)
+ try {
+ mService.applyRelro(relroBundle);
+ } catch (RemoteException e) {
+ // Nothing to do if the child process died.
+ }
+ }
+
private static final long REMOVE_INITIAL_BINDING_DELAY_MILLIS = 1 * 1000; // One second.
/**

Powered by Google App Engine
This is Rietveld 408576698