diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 32acb09..bfbdcb8 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2016-12-15  Doug Evans  <dje@google.com>
+
+	* system-gdbinit/fuchsia.py: New file.
+	* data-directory/Makefile.in (SYSTEM_GDBINIT_FILES): Add fuchsia.py.
+
 2016-12-14  Doug Evans  <dje@google.com>
 
 	Beginnings of Fuchsia amd64 port.
diff --git a/gdb/data-directory/Makefile.in b/gdb/data-directory/Makefile.in
index 51b5c2a..bf74c72 100644
--- a/gdb/data-directory/Makefile.in
+++ b/gdb/data-directory/Makefile.in
@@ -137,6 +137,7 @@
 SYSTEM_GDBINIT_INSTALL_DIR = $(DESTDIR)$(GDB_DATADIR)/$(SYSTEM_GDBINIT_DIR)
 SYSTEM_GDBINIT_FILES = \
 	elinos.py \
+	fuchsia.py \
 	wrs-linux.py
 
 FLAGS_TO_PASS = \
diff --git a/gdb/system-gdbinit/fuchsia.py b/gdb/system-gdbinit/fuchsia.py
new file mode 100644
index 0000000..b5d18cf
--- /dev/null
+++ b/gdb/system-gdbinit/fuchsia.py
@@ -0,0 +1,82 @@
+# Copyright 2016 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+"""Initialize gdb for debugging fuchsia code."""
+
+import gdb
+import os
+import sys
+
+
+_FUCHSIA_SYS_PATH = "scripts/gdb"
+_FUCHSIA_GDB_FILE = _FUCHSIA_SYS_PATH + "/fuchsia/gdb/__init__.py"
+
+
+def _get_sys_path(fuchsia_gdb_file):
+  """Return sys.path entry for gdb support.
+
+  Arguments:
+    fuchsia_gdb_file: The absolute path to _FUCHSIA_GDB_FILE.
+
+  Returns:
+    Path to add to sys.path.
+  """
+
+  # /foo/bar/fuchsia/gdb/__init__.py -> /foo/bar
+  return os.path.dirname(os.path.dirname(os.path.dirname(fuchsia_gdb_file)))
+
+
+def _find_file(file):
+  """Look for file in current directory and every parent.
+
+  Returns:
+    Absolute path of found file or None if not found.
+  """
+
+  cwd = os.getcwd()
+
+  while cwd != "/":
+    trial = os.path.join(cwd, file)
+    if os.path.exists(trial):
+      return trial
+    # Protect against unknown failure modes.
+    new_cwd = os.path.dirname(cwd)
+    if new_cwd == cwd:
+      print "Trouble with file system trying to find: %s" % (file)
+      sys.exit(1)
+    cwd = new_cwd
+  return None
+
+
+def _append_sys_path(path):
+  """Append path to sys.path if not already present."""
+  # Python2 canonicalizes directories in sys.path, so we do too.
+  path = os.path.abspath(path)
+  if os.path.exists(path) and \
+      path not in sys.path:
+    sys.path.append(path)
+
+
+def _try_bootstrap():
+  """Try to find Fuchsia support and load it.
+
+  Most of Fuchsia support comes with the Fuchsia tree in the scripts repo.
+  We just need to find it.
+  """
+
+  fuchsia_gdb_file = _find_file(_FUCHSIA_GDB_FILE)
+  if fuchsia_gdb_file != None:
+    _append_sys_path(_get_sys_path(fuchsia_gdb_file))
+    # TODO(dje): Catch certain exceptions?
+    import fuchsia.gdb
+    fuchsia.gdb.Initialize()
+  else:
+    print "Unable to find Fuchsia support. In Fuchsia tree?"
+    print "Looking for file: %s" % (_FUCHSIA_GDB_FILE)
+
+
+# This message is quite helpful for debugging issues with the python support.
+print "Hi, this is fuchsia.py. Adding Fuchsia support."
+
+_try_bootstrap()
