diff options
author | Etienne Pierre-doray <etiennep@chromium.org> | 2018-09-10 16:19:33 +0000 |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2021-07-25 20:36:14 -0700 |
commit | 725a8734514bb88b5acd976040e6710e26b2e3b5 (patch) | |
tree | 15293dbea03b652c5873d1aaebbc2efaf67c88c3 | |
parent | 74d44edc92e96d45c2f1d488e42171bb3c55570c (diff) | |
download | zucchini-725a8734514bb88b5acd976040e6710e26b2e3b5.tar.gz |
[Zucchini]: Fix OffsetMapper implicit conversion.
Fix compile error with -Wshorten-64-to-32. Image size is new stored as an
offset_t to avoid implicit conversion.
Bug: 881008
Change-Id: I82b12ce17d8368f05d6a5537fd1734ee32b37dbe
Reviewed-on: https://chromium-review.googlesource.com/1213549
Reviewed-by: Samuel Huang <huangs@chromium.org>
Commit-Queue: Etienne Pierre-Doray <etiennep@chromium.org>
Cr-Commit-Position: refs/heads/master@{#589938}
NOKEYCHECK=True
GitOrigin-RevId: 5946dbfa3f684d8f4960bb413b5e8322ebddcee3
-rw-r--r-- | equivalence_map.cc | 12 | ||||
-rw-r--r-- | equivalence_map.h | 18 | ||||
-rw-r--r-- | zucchini_apply.cc | 6 | ||||
-rw-r--r-- | zucchini_gen.cc | 4 | ||||
-rw-r--r-- | zucchini_gen_unittest.cc | 4 |
5 files changed, 24 insertions, 20 deletions
diff --git a/equivalence_map.cc b/equivalence_map.cc index 0711bfb..8583e67 100644 --- a/equivalence_map.cc +++ b/equivalence_map.cc @@ -215,8 +215,8 @@ EquivalenceCandidate VisitEquivalenceSeed( /******** OffsetMapper ********/ OffsetMapper::OffsetMapper(std::vector<Equivalence>&& equivalences, - size_t old_image_size, - size_t new_image_size) + offset_t old_image_size, + offset_t new_image_size) : equivalences_(std::move(equivalences)), old_image_size_(old_image_size), new_image_size_(new_image_size) { @@ -229,8 +229,8 @@ OffsetMapper::OffsetMapper(std::vector<Equivalence>&& equivalences, } OffsetMapper::OffsetMapper(EquivalenceSource&& equivalence_source, - size_t old_image_size, - size_t new_image_size) + offset_t old_image_size, + offset_t new_image_size) : old_image_size_(old_image_size), new_image_size_(new_image_size) { DCHECK_GT(new_image_size_, 0U); for (auto e = equivalence_source.GetNext(); e.has_value(); @@ -241,8 +241,8 @@ OffsetMapper::OffsetMapper(EquivalenceSource&& equivalence_source, } OffsetMapper::OffsetMapper(const EquivalenceMap& equivalence_map, - size_t old_image_size, - size_t new_image_size) + offset_t old_image_size, + offset_t new_image_size) : equivalences_(equivalence_map.size()), old_image_size_(old_image_size), new_image_size_(new_image_size) { diff --git a/equivalence_map.h b/equivalence_map.h index 2ae8801..8b716a1 100644 --- a/equivalence_map.h +++ b/equivalence_map.h @@ -89,17 +89,17 @@ class OffsetMapper { // - From a list of |equivalences|, already sorted (by |src_offset|) and // pruned, useful for tests. OffsetMapper(std::vector<Equivalence>&& equivalences, - size_t old_image_size, - size_t new_image_size); + offset_t old_image_size, + offset_t new_image_size); // - From a generator, useful for Zucchini-apply. OffsetMapper(EquivalenceSource&& equivalence_source, - size_t old_image_size, - size_t new_image_size); + offset_t old_image_size, + offset_t new_image_size); // - From an EquivalenceMap that needs to be processed, useful for // Zucchini-gen. OffsetMapper(const EquivalenceMap& equivalence_map, - size_t old_image_size, - size_t new_image_size); + offset_t old_image_size, + offset_t new_image_size); ~OffsetMapper(); size_t size() const { return equivalences_.size(); } @@ -145,9 +145,9 @@ class OffsetMapper { private: // |equivalences_| is pruned, i.e., no "old" blocks overlap (and no "new" // block overlaps). Also, it is sorted by "old" offsets. - std::vector<Equivalence> equivalences_; // P - const size_t old_image_size_; - const size_t new_image_size_; + std::vector<Equivalence> equivalences_; + const offset_t old_image_size_; + const offset_t new_image_size_; }; // Container of equivalences between |old_image_index| and |new_image_index|, diff --git a/zucchini_apply.cc b/zucchini_apply.cc index e202085..2d001a1 100644 --- a/zucchini_apply.cc +++ b/zucchini_apply.cc @@ -10,6 +10,7 @@ #include <utility> #include "base/logging.h" +#include "base/numerics/safe_conversions.h" #include "components/zucchini/disassembler.h" #include "components/zucchini/element_detection.h" #include "components/zucchini/equivalence_map.h" @@ -112,8 +113,9 @@ bool ApplyReferencesCorrection(ExecutableType exe_type, for (const auto& ref_group : old_disasm->MakeReferenceGroups()) pool_groups[ref_group.pool_tag()].push_back(ref_group); - OffsetMapper offset_mapper(patch.GetEquivalenceSource(), old_image.size(), - new_image.size()); + OffsetMapper offset_mapper(patch.GetEquivalenceSource(), + base::checked_cast<offset_t>(old_image.size()), + base::checked_cast<offset_t>(new_image.size())); std::vector<ReferenceGroup> new_groups = new_disasm->MakeReferenceGroups(); for (const auto& pool_and_sub_groups : pool_groups) { diff --git a/zucchini_gen.cc b/zucchini_gen.cc index 38bd8b1..ac7e33b 100644 --- a/zucchini_gen.cc +++ b/zucchini_gen.cc @@ -287,7 +287,9 @@ bool GenerateExecutableElement(ExecutableType exe_type, EquivalenceMap equivalences = CreateEquivalenceMap(old_image_index, new_image_index, new_disasm->num_equivalence_iterations()); - OffsetMapper offset_mapper(equivalences, old_image.size(), new_image.size()); + OffsetMapper offset_mapper(equivalences, + base::checked_cast<offset_t>(old_image.size()), + base::checked_cast<offset_t>(new_image.size())); ReferenceDeltaSink reference_delta_sink; for (const auto& old_targets : old_image_index.target_pools()) { diff --git a/zucchini_gen_unittest.cc b/zucchini_gen_unittest.cc index 97b223e..3a6d2cb 100644 --- a/zucchini_gen_unittest.cc +++ b/zucchini_gen_unittest.cc @@ -35,8 +35,8 @@ std::vector<int32_t> GenerateReferencesDeltaTest( EquivalenceMap&& equivalence_map) { // OffsetMapper needs image sizes for forward-projection overflow check. These // are tested elsewhere, so just use arbitrary large value. - constexpr size_t kOldImageSize = 1000000; - constexpr size_t kNewImageSize = 1001000; + constexpr offset_t kOldImageSize = 1000000; + constexpr offset_t kNewImageSize = 1001000; ReferenceDeltaSink reference_delta_sink; |