diff options
author | Tom Tromey <tromey@redhat.com> | 2009-06-17 20:06:27 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2009-06-17 20:06:27 +0000 |
commit | 6ba49852d83084f36ec1998f3209a2737fcb01c1 (patch) | |
tree | 5144c7c89982455146ac9358a1eff911855b34f6 | |
parent | 2cb0a60da1e179e012a43c23c4c1a7e875fd9504 (diff) | |
download | gcc-6ba49852d83084f36ec1998f3209a2737fcb01c1.zip gcc-6ba49852d83084f36ec1998f3209a2737fcb01c1.tar.gz gcc-6ba49852d83084f36ec1998f3209a2737fcb01c1.tar.bz2 |
hook.in: Do not fail when there is no current objfile.
* python/hook.in: Do not fail when there is no current objfile.
Use os.path.normpath.
From-SVN: r148626
-rw-r--r-- | libstdc++-v3/ChangeLog | 5 | ||||
-rw-r--r-- | libstdc++-v3/python/hook.in | 59 |
2 files changed, 37 insertions, 27 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 03c0110..5abe284 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -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&&)): diff --git a/libstdc++-v3/python/hook.in b/libstdc++-v3/python/hook.in index f7bf1af..120e187 100644 --- a/libstdc++-v3/python/hook.in +++ b/libstdc++-v3/python/hook.in @@ -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 |