Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Android/art/art/libdexfile/dex/   (Android Betriebssystem Version 17©)  Datei vom 26.5.2026 mit Größe 2 kB image not shown  

Quelle  dex_file_tracking_registrar.h

  Sprache: C
 

/*
 * Copyright (C) 2017 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */


#ifndef ART_LIBDEXFILE_DEX_DEX_FILE_TRACKING_REGISTRAR_H_
#define ART_LIBDEXFILE_DEX_DEX_FILE_TRACKING_REGISTRAR_H_

#include <deque>
#include <tuple>

#include "dex_file.h"

namespace art {
namespace dex {
namespace tracking {

// Class for (un)poisoning various sections of Dex Files
//
// This class provides the means to log accesses only of sections whose
// accesses are needed. All accesses are displayed as stack traces in
// logcat.
class DexFileTrackingRegistrar {
 public:
  explicit DexFileTrackingRegistrar(const DexFile* const dex_file)
      : dex_file_(dex_file) {
  }

  // This function is where the functions below it are called to actually
  // poison sections.
  void SetDexSections();

  // Uses data contained inside range_values_ to poison memory through the
  // memory tool.
  void SetCurrentRanges();

 private:
  void SetDexFileRegistration(bool should_poison);

  // Set of functions concerning Code Items of dex_file_
  void SetAllCodeItemRegistration(bool should_poison);
  // Sets the insns_ section of all code items.
  void SetAllInsnsRegistration(bool should_poison);
  // This function finds the code item of a class based on class name.
  void SetCodeItemRegistration(const char* class_name, bool should_poison);
  // Sets the size and offset information along with first instruction in insns_
  // section of all code items.
  void SetAllCodeItemStartRegistration(bool should_poison);

  // Set of functions concerning String Data Items of dex_file_
  void SetAllStringDataRegistration(bool should_poison);
  // Sets the first byte of size value and data section of all string data
  // items.
  void SetAllStringDataStartRegistration(bool should_poison);

  // Contains tuples of all ranges of memory that need to be explicitly
  // (un)poisoned by the memory tool.
  std::deque<std::tuple<const void *, size_t, bool>> range_values_;

  const DexFile* const dex_file_;
};

// This function is meant to called externally to use DexfileTrackingRegistrar
void RegisterDexFile(const DexFile* dex_file);

}  // namespace tracking
}  // namespace dex
}  // namespace art

#endif  // ART_LIBDEXFILE_DEX_DEX_FILE_TRACKING_REGISTRAR_H_

Messung V0.5 in Prozent
C=89 H=96 G=92

¤ Dauer der Verarbeitung: 0.12 Sekunden  (vorverarbeitet am  2026-06-29) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.