This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: python-2.4 compat. [Re: [patch][python] 1 of 5 - Frame filter Python C code changes.]


On 12/09/13 08:36, Jan Kratochvil wrote:
> On Fri, 10 May 2013 12:42:20 +0200, Phil Muldoon wrote:
> [...]
>> --- /dev/null
>> +++ b/gdb/python/lib/gdb/command/frame_filters.py
>> @@ -0,0 +1,461 @@
> [...]
>> +            for frame_filter in sorted_frame_filters:
>> +                name = frame_filter[0]
>> +                try:
>> +                    priority = '{:<8}'.format(
>> +                        str(gdb.frames.get_priority(frame_filter[1])))
>> +                    enabled = '{:<7}'.format(
>> +                        self.enabled_string(gdb.frames.get_enabled(frame_filter[1])))
>> +                except Exception as e:
>> +                    print("  Error printing filter '"+name+"': "+str(e))
>> +                else:
>> +                    print("  %s  %s  %s" % (priority, enabled, name))
> (plus it is there once again later)
> 
> CentOS-5 python-2.4.3-56.el5.x86_64:
> 
> ./gdb -nx -data-directory ./data-directoryTraceback (most recent call last):
>   File ".../gdb/testsuite/../data-directory/python/gdb/__init__.py", line 105, in auto_load_packages
>     __import__(modname)
>   File "./data-directory/python/gdb/command/frame_filters.py", line 82
>     except Exception as e:
>                       ^
> SyntaxError: invalid syntax
> 
> GNU gdb (GDB) 7.6.50.20130912-cvs
> 
> IIRC it was agreed upon upstream FSF GDB should support python-2.4, could you
> code it in a compatible way?

To write this so it works in Python 2.4 -> Python 3.x I will have to
write it as:

except Exception:
   e = sys.exc_info()[1]
   ....

That's fine - I will do that.  But I think it is kind of silly to do
stuff like this in Python - we are just circumventing how Exceptions
should be written to support a broad subset of Python versions.

The differences between 2.4 and 2.7, and 3.x and everything in-between
are just becoming a major pain to maintain, and harder to review.  At
some point we should discuss, for future GDB releases, our strategy
for Python versions.  I just see in the future incompatibilities we
can't write around being replaced with:

if sys.version >= 2.4 and sys.version <= 2.7:
   ....
else if sys.version > 2.7:
   ....

Which is just the moral equivalent of #ifdef'ness in C.  Not to
mention the same equivalent in the Python C code in GDB.


Cheers,

Phil
   


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]