| 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 1401866a9327af33e8acf65a3bfcab3ad17f21e9..89d356d2f2cad5cfb81c809eed84d4aa7218de9c 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
 | 
| @@ -24,6 +24,8 @@ import org.chromium.base.CpuFeatures;
 | 
|  import org.chromium.base.SysUtils;
 | 
|  import org.chromium.base.ThreadUtils;
 | 
|  import org.chromium.content.app.ChildProcessService;
 | 
| +import org.chromium.content.app.Linker;
 | 
| +import org.chromium.content.app.LinkerParams;
 | 
|  import org.chromium.content.common.CommandLine;
 | 
|  import org.chromium.content.common.IChildProcessCallback;
 | 
|  import org.chromium.content.common.IChildProcessService;
 | 
| @@ -103,18 +105,23 @@ public class ChildProcessConnection {
 | 
|      // Incremented on attachAsActive(), decremented on detachAsActive().
 | 
|      private int mAttachAsActiveCount = 0;
 | 
|  
 | 
| +    // Linker-related parameters.
 | 
| +    private LinkerParams mLinkerParams = null;
 | 
| +
 | 
|      private static final String TAG = "ChildProcessConnection";
 | 
|  
 | 
|      private static class ConnectionParams {
 | 
|          final String[] mCommandLine;
 | 
|          final FileDescriptorInfo[] mFilesToBeMapped;
 | 
|          final IChildProcessCallback mCallback;
 | 
| +        final Bundle mSharedRelros;
 | 
|  
 | 
|          ConnectionParams(String[] commandLine, FileDescriptorInfo[] filesToBeMapped,
 | 
| -                IChildProcessCallback callback) {
 | 
| +                IChildProcessCallback callback, Bundle sharedRelros) {
 | 
|              mCommandLine = commandLine;
 | 
|              mFilesToBeMapped = filesToBeMapped;
 | 
|              mCallback = callback;
 | 
| +            mSharedRelros = sharedRelros;
 | 
|          }
 | 
|      }
 | 
|  
 | 
| @@ -142,6 +149,8 @@ public class ChildProcessConnection {
 | 
|                  if (commandLine != null) {
 | 
|                      intent.putExtra(EXTRA_COMMAND_LINE, commandLine);
 | 
|                  }
 | 
| +                if (mLinkerParams != null)
 | 
| +                    mLinkerParams.addIntentExtras(intent);
 | 
|                  mBound = mContext.bindService(intent, this, mBindFlags);
 | 
|              }
 | 
|              return mBound;
 | 
| @@ -204,12 +213,14 @@ public class ChildProcessConnection {
 | 
|  
 | 
|      ChildProcessConnection(Context context, int number, boolean inSandbox,
 | 
|              ChildProcessConnection.DeathCallback deathCallback,
 | 
| -            Class<? extends ChildProcessService> serviceClass) {
 | 
| +            Class<? extends ChildProcessService> serviceClass,
 | 
| +            LinkerParams linkerParams) {
 | 
|          mContext = context;
 | 
|          mServiceNumber = number;
 | 
|          mInSandbox = inSandbox;
 | 
|          mDeathCallback = deathCallback;
 | 
|          mServiceClass = serviceClass;
 | 
| +        mLinkerParams = linkerParams;
 | 
|          mInitialBinding = new ChildServiceConnection(Context.BIND_AUTO_CREATE);
 | 
|          mStrongBinding = new ChildServiceConnection(
 | 
|                  Context.BIND_AUTO_CREATE | Context.BIND_IMPORTANT);
 | 
| @@ -273,12 +284,14 @@ public class ChildProcessConnection {
 | 
|              String[] commandLine,
 | 
|              FileDescriptorInfo[] filesToBeMapped,
 | 
|              IChildProcessCallback processCallback,
 | 
| -            ConnectionCallback connectionCallbacks) {
 | 
| +            ConnectionCallback connectionCallbacks,
 | 
| +            Bundle sharedRelros) {
 | 
|          synchronized(mLock) {
 | 
|              TraceEvent.begin();
 | 
|              assert mConnectionParams == null;
 | 
|              mConnectionCallback = connectionCallbacks;
 | 
| -            mConnectionParams = new ConnectionParams(commandLine, filesToBeMapped, processCallback);
 | 
| +            mConnectionParams = new ConnectionParams(
 | 
| +                    commandLine, filesToBeMapped, processCallback, sharedRelros);
 | 
|              // Make sure that the service is already connected. If not, doConnectionSetup() will be
 | 
|              // called from onServiceConnected().
 | 
|              if (mServiceConnectComplete) {
 | 
| @@ -361,6 +374,9 @@ public class ChildProcessConnection {
 | 
|              bundle.putInt(EXTRA_CPU_COUNT, CpuFeatures.getCount());
 | 
|              bundle.putLong(EXTRA_CPU_FEATURES, CpuFeatures.getMask());
 | 
|  
 | 
| +            bundle.putBundle(Linker.EXTRA_LINKER_SHARED_RELROS,
 | 
| +                             mConnectionParams.mSharedRelros);
 | 
| +
 | 
|              try {
 | 
|                  mPID = mService.setupConnection(bundle, mConnectionParams.mCallback);
 | 
|              } catch (android.os.RemoteException re) {
 | 
| 
 |