19347e0bdf9d9cb691c3681ea06c87716b6251af4Logan Chien/*
2c72c4ddfcd79c74f70713da91a69569451b5c19eZonr Chang * Copyright 2011-2012, The Android Open Source Project
39347e0bdf9d9cb691c3681ea06c87716b6251af4Logan Chien *
49347e0bdf9d9cb691c3681ea06c87716b6251af4Logan Chien * Licensed under the Apache License, Version 2.0 (the "License");
59347e0bdf9d9cb691c3681ea06c87716b6251af4Logan Chien * you may not use this file except in compliance with the License.
69347e0bdf9d9cb691c3681ea06c87716b6251af4Logan Chien * You may obtain a copy of the License at
79347e0bdf9d9cb691c3681ea06c87716b6251af4Logan Chien *
89347e0bdf9d9cb691c3681ea06c87716b6251af4Logan Chien *     http://www.apache.org/licenses/LICENSE-2.0
99347e0bdf9d9cb691c3681ea06c87716b6251af4Logan Chien *
109347e0bdf9d9cb691c3681ea06c87716b6251af4Logan Chien * Unless required by applicable law or agreed to in writing, software
119347e0bdf9d9cb691c3681ea06c87716b6251af4Logan Chien * distributed under the License is distributed on an "AS IS" BASIS,
129347e0bdf9d9cb691c3681ea06c87716b6251af4Logan Chien * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139347e0bdf9d9cb691c3681ea06c87716b6251af4Logan Chien * See the License for the specific language governing permissions and
149347e0bdf9d9cb691c3681ea06c87716b6251af4Logan Chien * limitations under the License.
159347e0bdf9d9cb691c3681ea06c87716b6251af4Logan Chien */
169347e0bdf9d9cb691c3681ea06c87716b6251af4Logan Chien
17c72c4ddfcd79c74f70713da91a69569451b5c19eZonr Chang#ifndef BCC_SUPPORT_DISASSEMBLER_H
18c72c4ddfcd79c74f70713da91a69569451b5c19eZonr Chang#define BCC_SUPPORT_DISASSEMBLER_H
199347e0bdf9d9cb691c3681ea06c87716b6251af4Logan Chien
20388fec12e6bbf5798281d266cac63630bcaba333Shih-wei Liao#include <stdint.h>
21388fec12e6bbf5798281d266cac63630bcaba333Shih-wei Liao#include <stddef.h>
229347e0bdf9d9cb691c3681ea06c87716b6251af4Logan Chien
239347e0bdf9d9cb691c3681ea06c87716b6251af4Logan Chiennamespace llvm {
24388fec12e6bbf5798281d266cac63630bcaba333Shih-wei Liao  class raw_ostream;
25388fec12e6bbf5798281d266cac63630bcaba333Shih-wei Liao} // end namespace llvm
269347e0bdf9d9cb691c3681ea06c87716b6251af4Logan Chien
279347e0bdf9d9cb691c3681ea06c87716b6251af4Logan Chiennamespace bcc {
289347e0bdf9d9cb691c3681ea06c87716b6251af4Logan Chien
29388fec12e6bbf5798281d266cac63630bcaba333Shih-wei Liaoclass OutputFile;
309347e0bdf9d9cb691c3681ea06c87716b6251af4Logan Chien
31388fec12e6bbf5798281d266cac63630bcaba333Shih-wei Liaoenum DisassembleResult {
32388fec12e6bbf5798281d266cac63630bcaba333Shih-wei Liao  kDisassembleSuccess,
33388fec12e6bbf5798281d266cac63630bcaba333Shih-wei Liao  kDisassemblerNotAvailable,
34388fec12e6bbf5798281d266cac63630bcaba333Shih-wei Liao  kDisassembleInvalidOutput,
35388fec12e6bbf5798281d266cac63630bcaba333Shih-wei Liao  kDisassembleFailedPrepareOutput,
36388fec12e6bbf5798281d266cac63630bcaba333Shih-wei Liao  kDisassembleUnknownTarget,
37388fec12e6bbf5798281d266cac63630bcaba333Shih-wei Liao  kDisassembleFailedSetup,
38388fec12e6bbf5798281d266cac63630bcaba333Shih-wei Liao  kDisassembleOutOfMemory,
39388fec12e6bbf5798281d266cac63630bcaba333Shih-wei Liao  kDisassembleInvalidInstruction,
40388fec12e6bbf5798281d266cac63630bcaba333Shih-wei Liao};
419347e0bdf9d9cb691c3681ea06c87716b6251af4Logan Chien
42388fec12e6bbf5798281d266cac63630bcaba333Shih-wei LiaoDisassembleResult Disassemble(llvm::raw_ostream &pOutput, const char *pTriple,
43388fec12e6bbf5798281d266cac63630bcaba333Shih-wei Liao                              const char *pFuncName, const uint8_t *pFunc,
44388fec12e6bbf5798281d266cac63630bcaba333Shih-wei Liao                              size_t pFuncSize);
459347e0bdf9d9cb691c3681ea06c87716b6251af4Logan Chien
46388fec12e6bbf5798281d266cac63630bcaba333Shih-wei LiaoDisassembleResult Disassemble(OutputFile &pOutput, const char *pTriple,
47388fec12e6bbf5798281d266cac63630bcaba333Shih-wei Liao                              const char *pFuncName, const uint8_t *pFunc,
48388fec12e6bbf5798281d266cac63630bcaba333Shih-wei Liao                              size_t pFuncSize);
49388fec12e6bbf5798281d266cac63630bcaba333Shih-wei Liao
50388fec12e6bbf5798281d266cac63630bcaba333Shih-wei Liao} // end namespace bcc
519347e0bdf9d9cb691c3681ea06c87716b6251af4Logan Chien
52c72c4ddfcd79c74f70713da91a69569451b5c19eZonr Chang#endif // BCC_SUPPORT_DISASSEMBLER_H
53