packages: gcc/gcc.spec, gcc/gcc-python-pretty-printer-bool-vector.patch (NE...
pluto
pluto at pld-linux.org
Sat Oct 16 10:52:53 CEST 2010
Author: pluto Date: Sat Oct 16 08:52:53 2010 GMT
Module: packages Tag: HEAD
---- Log message:
- patch pretty printers to support std::vector<bool>.
- release 3 for rebuild with new branch diff.
---- Files affected:
packages/gcc:
gcc.spec (1.635 -> 1.636) , gcc-python-pretty-printer-bool-vector.patch (NONE -> 1.1) (NEW)
---- Diffs:
================================================================
Index: packages/gcc/gcc.spec
diff -u packages/gcc/gcc.spec:1.635 packages/gcc/gcc.spec:1.636
--- packages/gcc/gcc.spec:1.635 Fri Oct 15 23:44:34 2010
+++ packages/gcc/gcc.spec Sat Oct 16 10:52:48 2010
@@ -71,7 +71,7 @@
Summary(pt_BR.UTF-8): Coleção dos compiladores GNU: o compilador C e arquivos compartilhados
Name: gcc
Version: %{major_ver}.%{minor_ver}
-Release: 2
+Release: 3
Epoch: 6
License: GPL v3+
Group: Development/Languages
@@ -94,6 +94,7 @@
Patch10: %{name}-moresparcs.patch
Patch11: %{name}-build-id.patch
Patch12: %{name}-plugin-decl-hook.patch
+Patch13: %{name}-python-pretty-printer-bool-vector.patch
URL: http://gcc.gnu.org/
BuildRequires: autoconf
%{?with_tests:BuildRequires: autogen}
@@ -1228,6 +1229,7 @@
%patch10 -p0
%patch11 -p0
%patch12 -p0
+%patch13 -p0
mv ChangeLog ChangeLog.general
@@ -2218,6 +2220,10 @@
All persons listed below can be reached at <cvs_login>@pld-linux.org
$Log$
+Revision 1.636 2010/10/16 08:52:48 pluto
+- patch pretty printers to support std::vector<bool>.
+- release 3 for rebuild with new branch diff.
+
Revision 1.635 2010/10/15 21:44:34 pluto
- gcc-branch.diff updated.
- libstdc++ python pretty printers for gdb packaged.
================================================================
Index: packages/gcc/gcc-python-pretty-printer-bool-vector.patch
diff -u /dev/null packages/gcc/gcc-python-pretty-printer-bool-vector.patch:1.1
--- /dev/null Sat Oct 16 10:52:53 2010
+++ packages/gcc/gcc-python-pretty-printer-bool-vector.patch Sat Oct 16 10:52:48 2010
@@ -0,0 +1,85 @@
+--- libstdc++-v3/python/libstdcxx/v6/printers.py (revision 163281)
++++ libstdc++-v3/python/libstdcxx/v6/printers.py (revision 163282)
+@@ -153,37 +153,71 @@
+ "Print a std::vector"
+
+ class _iterator:
+- def __init__ (self, start, finish):
+- self.item = start
+- self.finish = finish
++ def __init__ (self, start, finish, bitvec):
++ self.bitvec = bitvec
++ if bitvec:
++ self.item = start['_M_p']
++ self.so = start['_M_offset']
++ self.finish = finish['_M_p']
++ self.fo = finish['_M_offset']
++ itype = self.item.dereference().type
++ self.isize = 8 * itype.sizeof
++ else:
++ self.item = start
++ self.finish = finish
+ self.count = 0
+
+ def __iter__(self):
+ return self
+
+ def next(self):
+- if self.item == self.finish:
+- raise StopIteration
+ count = self.count
+ self.count = self.count + 1
+- elt = self.item.dereference()
+- self.item = self.item + 1
+- return ('[%d]' % count, elt)
++ if self.bitvec:
++ if self.item == self.finish and self.so >= self.fo:
++ raise StopIteration
++ elt = self.item.dereference()
++ obit = 1 if elt & (1 << self.so) else 0
++ self.so = self.so + 1
++ if self.so >= self.isize:
++ self.item = self.item + 1
++ self.so = 0
++ return ('[%d]' % count, obit)
++ else:
++ if self.item == self.finish:
++ raise StopIteration
++ elt = self.item.dereference()
++ self.item = self.item + 1
++ return ('[%d]' % count, elt)
+
+ def __init__(self, typename, val):
+ self.typename = typename
+ self.val = val
++ self.is_bool = val.type.template_argument(0).code == gdb.TYPE_CODE_BOOL
+
+ def children(self):
+ return self._iterator(self.val['_M_impl']['_M_start'],
+- self.val['_M_impl']['_M_finish'])
++ self.val['_M_impl']['_M_finish'],
++ self.is_bool)
+
+ def to_string(self):
+ start = self.val['_M_impl']['_M_start']
+ finish = self.val['_M_impl']['_M_finish']
+ end = self.val['_M_impl']['_M_end_of_storage']
+- return ('%s of length %d, capacity %d'
+- % (self.typename, int (finish - start), int (end - start)))
++ if self.is_bool:
++ start = self.val['_M_impl']['_M_start']['_M_p']
++ so = self.val['_M_impl']['_M_start']['_M_offset']
++ finish = self.val['_M_impl']['_M_finish']['_M_p']
++ fo = self.val['_M_impl']['_M_finish']['_M_offset']
++ itype = start.dereference().type
++ bl = 8 * itype.sizeof
++ length = (bl - so) + bl * ((finish - start) - 1) + fo
++ capacity = bl * (end - start)
++ return ('%s<bool> of length %d, capacity %d'
++ % (self.typename, int (length), int (capacity)))
++ else:
++ return ('%s of length %d, capacity %d'
++ % (self.typename, int (finish - start), int (end - start)))
+
+ def display_hint(self):
+ return 'array'
================================================================
---- CVS-web:
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/gcc/gcc.spec?r1=1.635&r2=1.636&f=u
More information about the pld-cvs-commit
mailing list