diff --git a/src/gnome-shell-extension-prefs.c b/src/gnome-shell-extension-prefs.c
index 75f687e7f..e97df5df2 100644
--- a/src/gnome-shell-extension-prefs.c
+++ b/src/gnome-shell-extension-prefs.c
@@ -50,3 +50,18 @@ main (int argc, char *argv[])
 
   return 0;
 }
+
+
+/* HACK:
+   Add a dummy function that calls into libgnome-shell-js.so to ensure it's
+   linked to /usr/bin/gnome-shell-extension-prefs even when linking with
+   --as-needed. This function is never actually called.
+   https://bugzilla.gnome.org/show_bug.cgi?id=670477
+*/
+void _shell_link_to_shell_js (void);
+
+void
+_shell_link_to_shell_js (void)
+{
+  shell_js_add_extension_importer (NULL, NULL, NULL, NULL);
+}