diff options
author | laforge@chromium.org <laforge@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-15 17:33:46 +0000 |
---|---|---|
committer | laforge@chromium.org <laforge@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-15 17:33:46 +0000 |
commit | 7e6b9261d9c928e09c7445f880f2ce10efee8a20 (patch) | |
tree | 95190aa9ee4e9e3a7bfa7ae719b991ebeed8a366 /courgette | |
parent | 910d7302e8e6e8225cb2590bb27b4aa040758e6a (diff) | |
download | chromium_src-7e6b9261d9c928e09c7445f880f2ce10efee8a20.zip chromium_src-7e6b9261d9c928e09c7445f880f2ce10efee8a20.tar.gz chromium_src-7e6b9261d9c928e09c7445f880f2ce10efee8a20.tar.bz2 |
Fix for bug where 64-bit executables were processed as 32-bit executables.
Added some more logging.
TBR=sra
Review URL: http://codereview.chromium.org/988002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@41598 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'courgette')
-rw-r--r-- | courgette/adjustment_method_2.cc | 4 | ||||
-rw-r--r-- | courgette/ensemble.cc | 15 | ||||
-rw-r--r-- | courgette/ensemble_create.cc | 6 | ||||
-rw-r--r-- | courgette/win32_x86_generator.h | 6 |
4 files changed, 24 insertions, 7 deletions
diff --git a/courgette/adjustment_method_2.cc b/courgette/adjustment_method_2.cc index 9cb9dbd..244b3a0 100644 --- a/courgette/adjustment_method_2.cc +++ b/courgette/adjustment_method_2.cc @@ -18,6 +18,7 @@ #include "base/format_macros.h" #include "base/logging.h" #include "base/string_util.h" +#include "base/time.h" #include "courgette/assembly_program.h" #include "courgette/courgette.h" @@ -1293,8 +1294,11 @@ class Adjuster : public AdjustmentMethod { } void Solve(const Trace& model, size_t model_end) { + base::Time start_time = base::Time::Now(); AssignmentProblem a(model, model_end); a.Solve(); + LOG(INFO) << " Adjuster::Solve " + << (base::Time::Now() - start_time).InSecondsF(); } void ReferenceLabel(Trace* trace, Label* label, bool is_model) { diff --git a/courgette/ensemble.cc b/courgette/ensemble.cc index 15bfb3e..a9b7f38 100644 --- a/courgette/ensemble.cc +++ b/courgette/ensemble.cc @@ -63,12 +63,15 @@ Status Ensemble::FindEmbeddedElements() { Region region(start + position, info->length()); if (info->has_text_section()) { - Element* element = new ElementWinPE(Element::WIN32_X86_WITH_CODE, - this, region, info); - owned_elements_.push_back(element); - elements_.push_back(element); - position += region.length(); - continue; + if (info->is_32bit()) { + Element* element = new ElementWinPE(Element::WIN32_X86_WITH_CODE, + this, region, info); + owned_elements_.push_back(element); + elements_.push_back(element); + position += region.length(); + continue; + } + // TODO(sra): Extend to 64-bit executables. } // If we had a clever transformation for resource-only executables we diff --git a/courgette/ensemble_create.cc b/courgette/ensemble_create.cc index 6e64474..00de688 100644 --- a/courgette/ensemble_create.cc +++ b/courgette/ensemble_create.cc @@ -186,6 +186,9 @@ void FreeGenerators(std::vector<TransformationPatchGenerator*>* generators) { Status GenerateEnsemblePatch(SourceStream* base, SourceStream* update, SinkStream* final_patch) { + LOG(INFO) << "start GenerateEnsemblePatch"; + base::Time start_time = base::Time::Now(); + Region old_region(base->Buffer(), base->Remaining()); Region new_region(update->Buffer(), update->Remaining()); Ensemble old_ensemble(old_region, "old"); @@ -376,6 +379,9 @@ Status GenerateEnsemblePatch(SourceStream* base, if (!patch_streams.CopyTo(final_patch)) return C_STREAM_ERROR; + LOG(INFO) << "done GenerateEnsemblePatch " + << (base::Time::Now() - start_time).InSecondsF() << "s"; + return C_OK; } diff --git a/courgette/win32_x86_generator.h b/courgette/win32_x86_generator.h index 3aabe9f..c0302ca 100644 --- a/courgette/win32_x86_generator.h +++ b/courgette/win32_x86_generator.h @@ -7,6 +7,7 @@ #ifndef COURGETTE_WIN32_X86_GENERATOR_H_ #define COURGETTE_WIN32_X86_GENERATOR_H_ +#include "base/logging.h" #include "base/scoped_ptr.h" #include "courgette/ensemble.h" @@ -60,8 +61,10 @@ class CourgetteWin32X86PatchGenerator : public TransformationPatchGenerator { ParseWin32X86PE(old_element_->region().start(), old_element_->region().length(), &old_program); - if (old_parse_status != C_OK) + if (old_parse_status != C_OK) { + LOG(ERROR) << "Cannot parse as Win32X86PE " << old_element_->Name(); return old_parse_status; + } AssemblyProgram* new_program = NULL; Status new_parse_status = @@ -70,6 +73,7 @@ class CourgetteWin32X86PatchGenerator : public TransformationPatchGenerator { &new_program); if (new_parse_status != C_OK) { DeleteAssemblyProgram(old_program); + LOG(ERROR) << "Cannot parse as Win32X86PE " << new_element_->Name(); return new_parse_status; } |