diff options
author | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-06-17 20:06:27 +0000 |
---|---|---|
committer | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-06-17 20:06:27 +0000 |
commit | 99505c80cf781c18484caace1572054e95c957b4 (patch) | |
tree | 5144c7c89982455146ac9358a1eff911855b34f6 /libstdc++-v3/python | |
parent | 326fb3fd5d032dbf896558a1718ca1a0f6a23523 (diff) | |
download | gcc-99505c80cf781c18484caace1572054e95c957b4.tar.gz |
* python/hook.in: Do not fail when there is no current objfile.
Use os.path.normpath.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@148626 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3/python')
-rw-r--r-- | libstdc++-v3/python/hook.in | 59 |
1 files changed, 32 insertions, 27 deletions
diff --git a/libstdc++-v3/python/hook.in b/libstdc++-v3/python/hook.in index f7bf1afb44d..120e187ed19 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 |