From: Tom Tromey Date: Wed, 17 Jun 2009 20:06:27 +0000 (+0000) Subject: hook.in: Do not fail when there is no current objfile. X-Git-Tag: releases/gcc-4.5.0~5151 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6ba49852d83084f36ec1998f3209a2737fcb01c1;p=thirdparty%2Fgcc.git 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 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 03c011072c1d..5abe28411cfd 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,8 @@ +2009-06-17 Tom Tromey + + * python/hook.in: Do not fail when there is no current objfile. + Use os.path.normpath. + 2009-06-16 Jonathan Wakely * libsupc++/exception_ptr.h (exception_ptr::swap(exception_ptr&&)): diff --git a/libstdc++-v3/python/hook.in b/libstdc++-v3/python/hook.in index f7bf1afb44d5..120e187ed195 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