diff --git a/pressure-vessel/exports.c b/pressure-vessel/exports.c
new file mode 100644
index 0000000000000000000000000000000000000000..4c1f845a90e72846585526c86240a364efc9a8c5
--- /dev/null
+++ b/pressure-vessel/exports.c
@@ -0,0 +1,82 @@
+/*
+ * Copyright © 2017-2020 Collabora Ltd.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "exports.h"
+
+#include <ftw.h>
+
+/* nftw() doesn't have a user_data argument so we need to use a global
+ * variable :-( */
+static struct
+{
+  FlatpakExports *exports;
+} export_targets_data;
+
+static int
+export_targets_helper (const char *fpath,
+                       const struct stat *sb,
+                       int typeflag,
+                       struct FTW *ftwbuf)
+{
+  g_autofree gchar *target = NULL;
+
+  switch (typeflag)
+    {
+      case FTW_SL:
+        target = glnx_readlinkat_malloc (-1, fpath, NULL, NULL);
+
+        if (target[0] != '/')
+          break;
+
+        if (g_str_has_prefix (target, "/run/host/"))
+          break;
+
+        g_debug ("Exporting %s because %s points to it",
+                 target, fpath);
+        flatpak_exports_add_path_expose (export_targets_data.exports,
+                                         FLATPAK_FILESYSTEM_MODE_READ_ONLY,
+                                         target);
+        break;
+
+      default:
+        break;
+    }
+
+  return 0;
+}
+
+/**
+ * pv_export_symlink_targets:
+ * @exports: The #FlatpakExports
+ * @source: A copy of the overrides directory, for example
+ *  `/tmp/tmp12345678/overrides/lib`.
+ *
+ * For every symbolic link in @source, if the target is absolute, mark
+ * it to be exported in @exports.
+ */
+void
+pv_export_symlink_targets (FlatpakExports *exports,
+                           const char *source)
+{
+  g_return_if_fail (export_targets_data.exports == NULL);
+
+  export_targets_data.exports = exports;
+  nftw (source, export_targets_helper, 100, FTW_PHYS);
+  export_targets_data.exports = NULL;
+}
diff --git a/pressure-vessel/exports.h b/pressure-vessel/exports.h
new file mode 100644
index 0000000000000000000000000000000000000000..97d92691c202a4c56db866ef726a1c274575a33f
--- /dev/null
+++ b/pressure-vessel/exports.h
@@ -0,0 +1,28 @@
+/*
+ * Copyright © 2017-2020 Collabora Ltd.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "libglnx/libglnx.h"
+
+#include "flatpak-exports-private.h"
+#include "steam-runtime-tools/glib-backports-internal.h"
+
+void pv_export_symlink_targets (FlatpakExports *exports,
+                                const char *source);
diff --git a/pressure-vessel/meson.build b/pressure-vessel/meson.build
index df74607764ce93bb1c4da5c960258cabddda045b..ed93e41b7baf58f9634cdab8e8c348020ab666e2 100644
--- a/pressure-vessel/meson.build
+++ b/pressure-vessel/meson.build
@@ -191,6 +191,8 @@ executable(
   sources : [
     'bwrap.c',
     'bwrap.h',
+    'exports.c',
+    'exports.h',
     'flatpak-common-types-private.h',
     'flatpak-context.c',
     'flatpak-context-private.h',
diff --git a/pressure-vessel/runtime.c b/pressure-vessel/runtime.c
index 8af25be2b6c1b6b686c2a56efdada4b47c75747d..d39e2e63e77841a0ba78ccf16131b3f7a23d443c 100644
--- a/pressure-vessel/runtime.c
+++ b/pressure-vessel/runtime.c
@@ -36,6 +36,7 @@
 #include "bwrap-lock.h"
 #include "elf-utils.h"
 #include "enumtypes.h"
+#include "exports.h"
 #include "flatpak-run-private.h"
 #include "tree-copy.h"
 #include "utils.h"
@@ -1626,6 +1627,7 @@ bind_icd (PvRuntime *self,
 
 static gboolean
 bind_runtime (PvRuntime *self,
+              FlatpakExports *exports,
               FlatpakBwrap *bwrap,
               GHashTable *extra_locked_vars_to_unset,
               GHashTable *extra_locked_vars_to_inherit,
@@ -1817,6 +1819,8 @@ bind_runtime (PvRuntime *self,
         return FALSE;
     }
 
+  pv_export_symlink_targets (exports, self->overrides);
+
   if (self->mutable_sysroot == NULL)
     {
       /* self->overrides is in a temporary directory that will be
@@ -3615,6 +3619,7 @@ pv_runtime_use_provider_graphics_stack (PvRuntime *self,
 
 gboolean
 pv_runtime_bind (PvRuntime *self,
+                 FlatpakExports *exports,
                  FlatpakBwrap *bwrap,
                  GHashTable *extra_locked_vars_to_unset,
                  GHashTable *extra_locked_vars_to_inherit,
@@ -3623,13 +3628,18 @@ pv_runtime_bind (PvRuntime *self,
   g_autofree gchar *pressure_vessel_prefix = NULL;
 
   g_return_val_if_fail (PV_IS_RUNTIME (self), FALSE);
+  g_return_val_if_fail (exports != NULL, FALSE);
   g_return_val_if_fail (!pv_bwrap_was_finished (bwrap), FALSE);
   g_return_val_if_fail (extra_locked_vars_to_unset != NULL, FALSE);
   g_return_val_if_fail (extra_locked_vars_to_inherit != NULL, FALSE);
   g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
 
-  if (!bind_runtime (self, bwrap, extra_locked_vars_to_unset,
-                     extra_locked_vars_to_inherit, error))
+  if (!bind_runtime (self,
+                     exports,
+                     bwrap,
+                     extra_locked_vars_to_unset,
+                     extra_locked_vars_to_inherit,
+                     error))
     return FALSE;
 
   pressure_vessel_prefix = g_path_get_dirname (self->tools_dir);
diff --git a/pressure-vessel/runtime.h b/pressure-vessel/runtime.h
index 0b3d2944a4c2064da37a84afce5e647bbe4624f5..1d8ede2adda4854b96020aec7c3504fe7475c41e 100644
--- a/pressure-vessel/runtime.h
+++ b/pressure-vessel/runtime.h
@@ -27,6 +27,7 @@
 #include "libglnx/libglnx.h"
 
 #include "flatpak-bwrap-private.h"
+#include "flatpak-exports-private.h"
 #include "flatpak-utils-base-private.h"
 
 /**
@@ -82,6 +83,7 @@ PvRuntime *pv_runtime_new (const char *source_files,
 gchar *pv_runtime_get_adverb (PvRuntime *self,
                               FlatpakBwrap *adverb_args);
 gboolean pv_runtime_bind (PvRuntime *self,
+                          FlatpakExports *exports,
                           FlatpakBwrap *bwrap,
                           GHashTable *extra_locked_vars_to_unset,
                           GHashTable *extra_locked_vars_to_inherit,
diff --git a/pressure-vessel/wrap.c b/pressure-vessel/wrap.c
index 5bfa3a7b3743bead1acda1061090c8945b8b65f2..0662960e2ef5fb4bd25bb136cdc4835fea00fd9c 100644
--- a/pressure-vessel/wrap.c
+++ b/pressure-vessel/wrap.c
@@ -1781,8 +1781,12 @@ main (int argc,
       if (runtime == NULL)
         goto out;
 
-      if (!pv_runtime_bind (runtime, bwrap, extra_locked_vars_to_unset,
-                            extra_locked_vars_to_inherit, error))
+      if (!pv_runtime_bind (runtime,
+                            exports,
+                            bwrap,
+                            extra_locked_vars_to_unset,
+                            extra_locked_vars_to_inherit,
+                            error))
         goto out;
     }
   else if (is_flatpak_env)