169ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik/*
269ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik * Copyright (C) 2015 The Android Open Source Project
369ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik *
469ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik * Licensed under the Apache License, Version 2.0 (the "License");
569ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik * you may not use this file except in compliance with the License.
669ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik * You may obtain a copy of the License at
769ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik *
869ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik *      http://www.apache.org/licenses/LICENSE-2.0
969ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik *
1069ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik * Unless required by applicable law or agreed to in writing, software
1169ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik * distributed under the License is distributed on an "AS IS" BASIS,
1269ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1369ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik * See the License for the specific language governing permissions and
1469ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik * limitations under the License.
1569ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik *
1669ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik * Header file of the dexdump utility.
1769ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik *
1869ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik * This is a re-implementation of the original dexdump utility that was
1969ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik * based on Dalvik functions in libdex into a new dexdump that is now
2069ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik * based on Art functions in libart instead. The output is identical to
2169ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik * the original for correct DEX files. Error messages may differ, however.
2269ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik * Also, ODEX files are no longer supported.
2369ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik */
2469ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik
2569ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik#ifndef ART_DEXDUMP_DEXDUMP_H_
2669ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik#define ART_DEXDUMP_DEXDUMP_H_
2769ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik
2869ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik#include <stdint.h>
2969ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik#include <stdio.h>
3069ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik
3169ae54abd4eaad54dc73b75ea7c8051aa515581dAart Biknamespace art {
3269ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik
3369ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik/* Supported output formats. */
3469ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bikenum OutputFormat {
3569ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik  OUTPUT_PLAIN = 0,  // default
3669ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik  OUTPUT_XML,        // XML-style
3769ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik};
3869ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik
3969ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik/* Command-line options. */
4069ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bikstruct Options {
4169ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik  bool checksumOnly;
4269ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik  bool disassemble;
4369ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik  bool exportsOnly;
4469ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik  bool ignoreBadChecksum;
45c1d8caa6e0ccfbc534ff94fc8ace0897c59ddd94Nicolas Geoffray  bool disableVerifier;
46dce50865e8d37db3de314431496ac61018e45ebeAart Bik  bool showAnnotations;
47dce50865e8d37db3de314431496ac61018e45ebeAart Bik  bool showCfg;
4869ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik  bool showFileHeaders;
4969ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik  bool showSectionHeaders;
5069ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik  bool verbose;
5169ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik  OutputFormat outputFormat;
5269ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik  const char* outputFileName;
5369ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik};
5469ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik
5569ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik/* Prototypes. */
5669ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bikextern struct Options gOptions;
5769ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bikextern FILE* gOutFile;
5869ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bikint processFile(const char* fileName);
5969ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik
6069ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik}  // namespace art
6169ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik
6269ae54abd4eaad54dc73b75ea7c8051aa515581dAart Bik#endif  // ART_DEXDUMP_DEXDUMP_H_
63