]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
hook.in: Do not fail when there is no current objfile.
authorTom Tromey <tromey@redhat.com>
Wed, 17 Jun 2009 20:06:27 +0000 (20:06 +0000)
committerTom Tromey <tromey@gcc.gnu.org>
Wed, 17 Jun 2009 20:06:27 +0000 (20:06 +0000)
* python/hook.in: Do not fail when there is no current objfile.
Use os.path.normpath.

From-SVN: r148626

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

index 03c011072c1dc356dda23ef531bb2c3ae02e4637..5abe28411cfd763b3445a046564d5a2e075f46a8 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 f7bf1afb44d5f700ca4c7df5a784a61eb06b8786..120e187ed19523277e97582aa4c4449f98cd3500 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