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