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..78519f1c1e9b5c94adc4e9b0884c9dcaeab402cf 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 |
@@ -21,9 +21,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 +89,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 +165,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 +421,14 @@ public class ChildProcessConnection { |
TraceEvent.end(); |
} |
+ public void applyRelro(Bundle relroBundle) { |
+ if (mService != null && relroBundle != null) |
+ try { |
+ mService.applyRelro(relroBundle); |
+ } catch (Exception e) { |
bulach
2013/09/09 16:14:15
is there a more specific Exception to catch?
perha
digit1
2013/09/10 09:23:30
Yes, it's RemoteException (any Binder service func
|
+ } |
+ } |
+ |
private static final long REMOVE_INITIAL_BINDING_DELAY_MILLIS = 1 * 1000; // One second. |
/** |