OSDN Git Service

* python/hook.in: Do not fail when there is no current objfile.
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 17 Jun 2009 20:06:27 +0000 (20:06 +0000)
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 17 Jun 2009 20:06:27 +0000 (20:06 +0000)
Use os.path.normpath.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@148626 138bc75d-0d04-0410-961f-82ee72b054a4

libstdc++-v3/ChangeLog
libstdc++-v3/python/hook.in

index 03c0110..5abe284 100644 (file)
@@ -1,3 +1,8 @@
+2009-06-17  Tom Tromey  <tromey@redhat.com>
+
+       * python/hook.in: Do not fail when there is no current objfile.
+       Use os.path.normpath.
+
 2009-06-16  Jonathan Wakely  <jwakely.gcc@gmail.com>
 
        * libsupc++/exception_ptr.h (exception_ptr::swap(exception_ptr&&)):
index f7bf1af..120e187 100644 (file)
@@ -22,33 +22,38 @@ import os.path
 pythondir = '@pythondir@'
 libdir = '@toolexeclibdir@'
 
-# Update module path.  We want to find the relative path from libdir
-# to pythondir, and then we want to apply that relative path to the
-# directory holding the objfile with which this file is associated.
-# This preserves relocatability of the gcc tree.
-
-# Do a simple normalization that removes duplicate separators.
-pythondir = os.path.join (*['/'] + pythondir.split (os.sep))
-libdir = os.path.join (*['/'] + libdir.split (os.sep))
-
-prefix = os.path.commonprefix ([libdir, pythondir])
-# In some bizarre configuration we might have found a match in the
-# middle of a directory name.
-if prefix[-1] != '/':
-    prefix = os.path.dirname (prefix)
-
-# Strip off the prefix.
-pythondir = pythondir[len (prefix):]
-libdir = libdir[len (prefix):]
-
-# Compute the ".."s needed to get from libdir to the prefix.
-dotdots = ('..' + os.sep) * len (libdir.split (os.sep))
-
-objfile = gdb.current_objfile ().filename
-dir = os.path.join (os.path.dirname (objfile), dotdots, pythondir)
-
-if not dir in sys.path:
-    sys.path.insert(0, dir)
+# This file might be loaded when there is no current objfile.  This
+# can happen if the user loads it manually.  In this case we don't
+# update sys.path; instead we just hope the user managed to do that
+# beforehand.
+if gdb.current_objfile () is not None:
+    # Update module path.  We want to find the relative path from libdir
+    # to pythondir, and then we want to apply that relative path to the
+    # directory holding the objfile with which this file is associated.
+    # This preserves relocatability of the gcc tree.
+
+    # Do a simple normalization that removes duplicate separators.
+    pythondir = os.path.normpath (pythondir)
+    libdir = os.path.normpath (libdir)
+
+    prefix = os.path.commonprefix ([libdir, pythondir])
+    # In some bizarre configuration we might have found a match in the
+    # middle of a directory name.
+    if prefix[-1] != '/':
+        prefix = os.path.dirname (prefix)
+
+    # Strip off the prefix.
+    pythondir = pythondir[len (prefix):]
+    libdir = libdir[len (prefix):]
+
+    # Compute the ".."s needed to get from libdir to the prefix.
+    dotdots = ('..' + os.sep) * len (libdir.split (os.sep))
+
+    objfile = gdb.current_objfile ().filename
+    dir = os.path.join (os.path.dirname (objfile), dotdots, pythondir)
+
+    if not dir in sys.path:
+        sys.path.insert(0, dir)
 
 # Load the pretty-printers.
 from libstdcxx.v6.printers import register_libstdcxx_printers