diff --git a/pressure-vessel/adverb-preload.c b/pressure-vessel/adverb-preload.c
index 415b4ee8e7efe463b40283d83db3aec9dad1fe89..2685f6fbfad45f9298ea1ca3da8ec81c6cd411ca 100644
--- a/pressure-vessel/adverb-preload.c
+++ b/pressure-vessel/adverb-preload.c
@@ -9,11 +9,22 @@
 #include "supported-architectures.h"
 #include "utils.h"
 
-/* Indexed by PreloadVariableIndex */
-static const char *preload_variables[] =
+const PvPreloadVariable pv_preload_variables[] =
 {
-  "LD_AUDIT",
-  "LD_PRELOAD",
+  [PV_PRELOAD_VARIABLE_INDEX_LD_AUDIT] = {
+      .variable = "LD_AUDIT",
+      .adverb_option = "--ld-audit",
+      /* "The items in the list are colon-separated, and there is no support
+       * for escaping the separator." —ld.so(8) */
+      .separators = ":",
+  },
+  [PV_PRELOAD_VARIABLE_INDEX_LD_PRELOAD] = {
+      .variable = "LD_PRELOAD",
+      .adverb_option = "--ld-preload",
+      /* "The items of the list can be separated by spaces or colons, and
+       * there is no support for escaping either separator." —ld.so(8) */
+      .separators = ": ",
+  },
 };
 
 static gpointer
@@ -45,7 +56,7 @@ pv_adverb_set_up_preload_modules (FlatpakBwrap *wrapped_command,
                                   gsize n_preload_modules,
                                   GError **error)
 {
-  GPtrArray *preload_search_paths[G_N_ELEMENTS (preload_variables)] = { NULL };
+  GPtrArray *preload_search_paths[G_N_ELEMENTS (pv_preload_variables)] = { NULL };
   gsize i;
 
   /* Iterate through all modules, populating preload_search_paths */
@@ -155,11 +166,11 @@ pv_adverb_set_up_preload_modules (FlatpakBwrap *wrapped_command,
 
   /* Serialize search_paths[PRELOAD_VARIABLE_INDEX_LD_AUDIT] into
    * LD_AUDIT, etc. */
-  for (i = 0; i < G_N_ELEMENTS (preload_variables); i++)
+  for (i = 0; i < G_N_ELEMENTS (pv_preload_variables); i++)
     {
       GPtrArray *search_path = preload_search_paths[i];
       g_autoptr(GString) buffer = g_string_new ("");
-      const char *variable = preload_variables[i];
+      const char *variable = pv_preload_variables[i].variable;
 
       if (search_path != NULL)
         g_ptr_array_foreach (search_path, (GFunc) append_to_search_path, buffer);
diff --git a/pressure-vessel/adverb-preload.h b/pressure-vessel/adverb-preload.h
index 3f6ca1f59238a4acf78bd90f50184a549325dba5..bd9c578dcfb66ac6c30804e1136551fbd2b05fed 100644
--- a/pressure-vessel/adverb-preload.h
+++ b/pressure-vessel/adverb-preload.h
@@ -18,6 +18,15 @@ typedef enum
   PV_PRELOAD_VARIABLE_INDEX_LD_PRELOAD,
 } PvPreloadVariableIndex;
 
+typedef struct
+{
+  const char *variable;
+  const char *adverb_option;
+  const char *separators;
+} PvPreloadVariable;
+
+extern const PvPreloadVariable pv_preload_variables[2];
+
 #define PV_UNSPECIFIED_ABI (G_MAXSIZE)
 
 typedef struct
diff --git a/pressure-vessel/meson.build b/pressure-vessel/meson.build
index 5bb38e9cfb0a91f4070727211b76daa907dc846c..59bfe47c78c6278479792b1d982977231ac798ae 100644
--- a/pressure-vessel/meson.build
+++ b/pressure-vessel/meson.build
@@ -71,6 +71,8 @@ enums = gnome.mkenums_simple(
 pressure_vessel_utils = static_library(
   'pressure-vessel-utils',
   sources : [
+    'adverb-preload.c',
+    'adverb-preload.h',
     'flatpak-bwrap.c',
     'flatpak-bwrap-private.h',
     'flatpak-utils-base.c',
@@ -106,8 +108,6 @@ pressure_vessel_utils_dep = declare_dependency(
 pressure_vessel_adverb_lib = static_library(
   'pressure-vessel-adverb-lib',
   sources : [
-    'adverb-preload.c',
-    'adverb-preload.h',
     'adverb-sdl.c',
     'adverb-sdl.h',
     'per-arch-dirs.c',
diff --git a/pressure-vessel/wrap-context.c b/pressure-vessel/wrap-context.c
index 3b26215767e1f76f7f9bb80d76f47c417cfb791d..dd711208e75810a0109df8766afacd7d9f8a7d99 100644
--- a/pressure-vessel/wrap-context.c
+++ b/pressure-vessel/wrap-context.c
@@ -192,17 +192,17 @@ opt_ignored_cb (const gchar *option_name,
 
 static gboolean
 opt_ld_something (PvWrapOptions *self,
-                  PreloadVariableIndex which,
+                  PvPreloadVariableIndex which,
                   const char *value,
-                  const char *separators,
+                  gboolean split,
                   GError **error)
 {
   g_auto(GStrv) tokens = NULL;
   size_t i;
 
-  if (separators != NULL)
+  if (split)
     {
-      tokens = g_strsplit_set (value, separators, 0);
+      tokens = g_strsplit_set (value, pv_preload_variables[which].separators, 0);
     }
   else
     {
@@ -230,8 +230,8 @@ opt_ld_audit_cb (const gchar *option_name,
                  gpointer data,
                  GError **error)
 {
-  return opt_ld_something (data, PRELOAD_VARIABLE_INDEX_LD_AUDIT,
-                           value, NULL, error);
+  return opt_ld_something (data, PV_PRELOAD_VARIABLE_INDEX_LD_AUDIT,
+                           value, FALSE, error);
 }
 
 static gboolean
@@ -240,10 +240,8 @@ opt_ld_audits_cb (const gchar *option_name,
                   gpointer data,
                   GError **error)
 {
-  /* "The items in the list are colon-separated, and there is no support
-   * for escaping the separator." —ld.so(8) */
-  return opt_ld_something (data, PRELOAD_VARIABLE_INDEX_LD_AUDIT,
-                           value, ":", error);
+  return opt_ld_something (data, PV_PRELOAD_VARIABLE_INDEX_LD_AUDIT,
+                           value, TRUE, error);
 }
 
 static gboolean
@@ -252,8 +250,8 @@ opt_ld_preload_cb (const gchar *option_name,
                    gpointer data,
                    GError **error)
 {
-  return opt_ld_something (data, PRELOAD_VARIABLE_INDEX_LD_PRELOAD,
-                           value, NULL, error);
+  return opt_ld_something (data, PV_PRELOAD_VARIABLE_INDEX_LD_PRELOAD,
+                           value, FALSE, error);
 }
 
 static gboolean
@@ -262,10 +260,8 @@ opt_ld_preloads_cb (const gchar *option_name,
                     gpointer data,
                     GError **error)
 {
-  /* "The items of the list can be separated by spaces or colons, and
-   * there is no support for escaping either separator." —ld.so(8) */
-  return opt_ld_something (data, PRELOAD_VARIABLE_INDEX_LD_PRELOAD,
-                           value, ": ", error);
+  return opt_ld_something (data, PV_PRELOAD_VARIABLE_INDEX_LD_PRELOAD,
+                           value, TRUE, error);
 }
 
 static gboolean
diff --git a/pressure-vessel/wrap-context.h b/pressure-vessel/wrap-context.h
index 56d5bcfd7e3ffce142bfb117903903050bbd3ccd..17d2db2c2821faf7654445fe116a51af3e1e9b35 100644
--- a/pressure-vessel/wrap-context.h
+++ b/pressure-vessel/wrap-context.h
@@ -11,6 +11,7 @@
 #include "steam-runtime-tools/resolve-in-sysroot-internal.h"
 #include "steam-runtime-tools/utils-internal.h"
 
+#include "pressure-vessel/adverb-preload.h"
 #include "pressure-vessel/flatpak-exports-private.h"
 
 #include "pressure-vessel/wrap-interactive.h"
@@ -39,15 +40,9 @@ typedef enum
   TRISTATE_MAYBE
 } Tristate;
 
-typedef enum
-{
-  PRELOAD_VARIABLE_INDEX_LD_AUDIT,
-  PRELOAD_VARIABLE_INDEX_LD_PRELOAD,
-} PreloadVariableIndex;
-
 typedef struct
 {
-  PreloadVariableIndex which;
+  PvPreloadVariableIndex which;
   gchar *preload;
 } WrapPreloadModule;
 
diff --git a/pressure-vessel/wrap-setup.c b/pressure-vessel/wrap-setup.c
index fbaef9c99ee86df56874e95dc424184ab90dd28b..7e31e55cf54cfd8da2e95e0c4cbe4847f6c4d0e7 100644
--- a/pressure-vessel/wrap-setup.c
+++ b/pressure-vessel/wrap-setup.c
@@ -33,6 +33,7 @@
 
 #include <string.h>
 
+#include "adverb-preload.h"
 #include "bwrap.h"
 #include "exports.h"
 #include "flatpak-run-dbus-private.h"
@@ -869,10 +870,7 @@ append_preload_basename (GPtrArray *argv,
 /**
  * pv_wrap_append_preload:
  * @argv: (element-type filename): Array of command-line options to populate
- * @variable: (type filename): Environment variable from which this
- *  preload module was taken, either `LD_AUDIT` or `LD_PRELOAD`
- * @option: (type filename): Command-line option to add to @argv,
- *  either `--ld-audit` or `--ld-preload`
+ * @which: Either `LD_AUDIT` or `LD_PRELOAD`
  * @preload: (type filename): Path of preloadable module in current
  *  namespace, possibly including special ld.so tokens such as `$LIB`,
  *  or basename of a preloadable module to be found in the standard
@@ -889,8 +887,7 @@ append_preload_basename (GPtrArray *argv,
  */
 void
 pv_wrap_append_preload (GPtrArray *argv,
-                        const char *variable,
-                        const char *option,
+                        PvPreloadVariableIndex which,
                         const char *preload,
                         GStrv env,
                         PvAppendPreloadFlags flags,
@@ -899,11 +896,17 @@ pv_wrap_append_preload (GPtrArray *argv,
 {
   SrtLoadableKind kind;
   SrtLoadableFlags loadable_flags;
+  const char *variable;
+  const char *option;
 
   g_return_if_fail (argv != NULL);
-  g_return_if_fail (option != NULL);
   g_return_if_fail (preload != NULL);
   g_return_if_fail (runtime == NULL || PV_IS_RUNTIME (runtime));
+  g_return_if_fail (which >= 0);
+  g_return_if_fail (which < G_N_ELEMENTS (pv_preload_variables));
+
+  variable = pv_preload_variables[which].variable;
+  option = pv_preload_variables[which].adverb_option;
 
   if (strstr (preload, "gtk3-nocsd") != NULL)
     {
diff --git a/pressure-vessel/wrap-setup.h b/pressure-vessel/wrap-setup.h
index f0308e8fb0c960960c0cdbb8e9f9af4c1938a57b..936314a4d0901c4947798b462bc6b112340518ba 100644
--- a/pressure-vessel/wrap-setup.h
+++ b/pressure-vessel/wrap-setup.h
@@ -26,6 +26,7 @@
 #include "steam-runtime-tools/env-overlay-internal.h"
 #include "steam-runtime-tools/utils-internal.h"
 
+#include "adverb-preload.h"
 #include "bwrap.h"
 #include "flatpak-bwrap-private.h"
 #include "flatpak-exports-private.h"
@@ -84,8 +85,7 @@ typedef enum
 } PvAppendPreloadFlags;
 
 void pv_wrap_append_preload (GPtrArray *argv,
-                             const char *variable,
-                             const char *option,
+                             PvPreloadVariableIndex which,
                              const char *preload,
                              GStrv env,
                              PvAppendPreloadFlags flags,
diff --git a/pressure-vessel/wrap.c b/pressure-vessel/wrap.c
index 00aacc9a1adf84cc20b02c37a295a4c3c89aea9f..eddd59e0057a40e780ca0eb150dc2ba14c7c7560 100644
--- a/pressure-vessel/wrap.c
+++ b/pressure-vessel/wrap.c
@@ -66,16 +66,6 @@ static const GDebugKey pv_debug_keys[] =
   { "container", PV_WRAP_LOG_FLAGS_CONTAINER },
 };
 
-static const struct
-{
-  const char *variable;
-  const char *adverb_option;
-} preload_options[] =
-{
-  [PRELOAD_VARIABLE_INDEX_LD_AUDIT] = { "LD_AUDIT", "--ld-audit" },
-  [PRELOAD_VARIABLE_INDEX_LD_PRELOAD] = { "LD_PRELOAD", "--ld-preload" },
-};
-
 #define usage_error(...) _srt_log_failure (__VA_ARGS__)
 
 int
@@ -851,10 +841,9 @@ main (int argc,
                                                             j);
 
           g_assert (module->which >= 0);
-          g_assert (module->which < G_N_ELEMENTS (preload_options));
+          g_assert (module->which < G_N_ELEMENTS (pv_preload_variables));
           pv_wrap_append_preload (adverb_preload_argv,
-                                  preload_options[module->which].variable,
-                                  preload_options[module->which].adverb_option,
+                                  module->which,
                                   module->preload,
                                   environ,
                                   append_preload_flags,
diff --git a/tests/pressure-vessel/wrap-setup.c b/tests/pressure-vessel/wrap-setup.c
index a550e05aeb1e5e85c5bcec22be6dce6285e72db4..c238b8af06900e43ec96e1a75602aba15b34726b 100644
--- a/tests/pressure-vessel/wrap-setup.c
+++ b/tests/pressure-vessel/wrap-setup.c
@@ -979,37 +979,37 @@ test_options_true (Fixture *f,
 
   g_assert_cmpuint (options->preload_modules->len, >, i);
   module = &g_array_index (options->preload_modules, WrapPreloadModule, i++);
-  g_assert_cmpint (module->which, ==, PRELOAD_VARIABLE_INDEX_LD_AUDIT);
+  g_assert_cmpint (module->which, ==, PV_PRELOAD_VARIABLE_INDEX_LD_AUDIT);
   g_assert_cmpstr (module->preload, ==, "libaudit.so");
 
   g_assert_cmpuint (options->preload_modules->len, >, i);
   module = &g_array_index (options->preload_modules, WrapPreloadModule, i++);
-  g_assert_cmpint (module->which, ==, PRELOAD_VARIABLE_INDEX_LD_AUDIT);
+  g_assert_cmpint (module->which, ==, PV_PRELOAD_VARIABLE_INDEX_LD_AUDIT);
   g_assert_cmpstr (module->preload, ==, "libaudit1.so");
 
   g_assert_cmpuint (options->preload_modules->len, >, i);
   module = &g_array_index (options->preload_modules, WrapPreloadModule, i++);
-  g_assert_cmpint (module->which, ==, PRELOAD_VARIABLE_INDEX_LD_AUDIT);
+  g_assert_cmpint (module->which, ==, PV_PRELOAD_VARIABLE_INDEX_LD_AUDIT);
   g_assert_cmpstr (module->preload, ==, "libaudit2.so");
 
   g_assert_cmpuint (options->preload_modules->len, >, i);
   module = &g_array_index (options->preload_modules, WrapPreloadModule, i++);
-  g_assert_cmpint (module->which, ==, PRELOAD_VARIABLE_INDEX_LD_PRELOAD);
+  g_assert_cmpint (module->which, ==, PV_PRELOAD_VARIABLE_INDEX_LD_PRELOAD);
   g_assert_cmpstr (module->preload, ==, "libpreload.so");
 
   g_assert_cmpuint (options->preload_modules->len, >, i);
   module = &g_array_index (options->preload_modules, WrapPreloadModule, i++);
-  g_assert_cmpint (module->which, ==, PRELOAD_VARIABLE_INDEX_LD_PRELOAD);
+  g_assert_cmpint (module->which, ==, PV_PRELOAD_VARIABLE_INDEX_LD_PRELOAD);
   g_assert_cmpstr (module->preload, ==, "libpreload1.so");
 
   g_assert_cmpuint (options->preload_modules->len, >, i);
   module = &g_array_index (options->preload_modules, WrapPreloadModule, i++);
-  g_assert_cmpint (module->which, ==, PRELOAD_VARIABLE_INDEX_LD_PRELOAD);
+  g_assert_cmpint (module->which, ==, PV_PRELOAD_VARIABLE_INDEX_LD_PRELOAD);
   g_assert_cmpstr (module->preload, ==, "libpreload2.so");
 
   g_assert_cmpuint (options->preload_modules->len, >, i);
   module = &g_array_index (options->preload_modules, WrapPreloadModule, i++);
-  g_assert_cmpint (module->which, ==, PRELOAD_VARIABLE_INDEX_LD_PRELOAD);
+  g_assert_cmpint (module->which, ==, PV_PRELOAD_VARIABLE_INDEX_LD_PRELOAD);
   g_assert_cmpstr (module->preload, ==, "libpreload3.so");
 
   g_assert_cmpuint (i, ==, options->preload_modules->len);
@@ -1612,8 +1612,7 @@ populate_ld_preload (Fixture *f,
         }
 
       pv_wrap_append_preload (argv,
-                              "LD_PRELOAD",
-                              "--ld-preload",
+                              PV_PRELOAD_VARIABLE_INDEX_LD_PRELOAD,
                               preloads[i].string,
                               f->env,
                               flags | PV_APPEND_PRELOAD_FLAGS_IN_UNIT_TESTS,