unwind: EHABISectionIterator `operator!=`, constify `operator-`
authorSaleem Abdulrasool <compnerd@compnerd.org>
Thu, 18 Jun 2020 15:51:44 +0000 (08:51 -0700)
committerSaleem Abdulrasool <compnerd@compnerd.org>
Thu, 18 Jun 2020 15:54:34 +0000 (08:54 -0700)
Add missing `operator!=` and make `operator-` const for
`EHABISectionIterator`.  This repairs the build of libunwind when
building with GCC.

Patch by Chad Duffin!

Reviewed By: compnerd, libunwind
Differential Revision: https://reviews.llvm.org/D81597

libunwind/src/UnwindCursor.hpp

index 8200eee..f346c72 100644 (file)
@@ -1275,7 +1275,7 @@ struct EHABISectionIterator {
   _Self operator+(size_t a) { _Self out = *this; out._i += a; return out; }
   _Self operator-(size_t a) { assert(_i >= a); _Self out = *this; out._i -= a; return out; }
 
-  size_t operator-(const _Self& other) { return _i - other._i; }
+  size_t operator-(const _Self& other) const { return _i - other._i; }
 
   bool operator==(const _Self& other) const {
     assert(_addressSpace == other._addressSpace);
@@ -1283,6 +1283,12 @@ struct EHABISectionIterator {
     return _i == other._i;
   }
 
+  bool operator!=(const _Self& other) const {
+    assert(_addressSpace == other._addressSpace);
+    assert(_sects == other._sects);
+    return _i != other._i;
+  }
+
   typename A::pint_t operator*() const { return functionAddress(); }
 
   typename A::pint_t functionAddress() const {