22 *
23 */
24
25 #ifndef SHARE_VM_UTILITIES_DECODER_ELF_HPP
26 #define SHARE_VM_UTILITIES_DECODER_ELF_HPP
27
28 #if !defined(_WINDOWS) && !defined(__APPLE__)
29
30 #include "utilities/decoder.hpp"
31 #include "utilities/elfFile.hpp"
32
33 class ElfDecoder : public AbstractDecoder {
34
35 public:
36 ElfDecoder() {
37 _opened_elf_files = NULL;
38 _decoder_status = no_error;
39 }
40 virtual ~ElfDecoder();
41
42 bool can_decode_C_frame_in_vm() const { return true; }
43
44 bool demangle(const char* symbol, char *buf, int buflen);
45 bool decode(address addr, char *buf, int buflen, int* offset, const char* filepath, bool demangle);
46 bool decode(address addr, char *buf, int buflen, int* offset, const void *base) {
47 ShouldNotReachHere();
48 return false;
49 }
50
51 private:
52 ElfFile* get_elf_file(const char* filepath);
53
54 private:
55 ElfFile* _opened_elf_files;
56 };
57
58 #endif // !_WINDOWS && !__APPLE__
59 #endif // SHARE_VM_UTILITIES_DECODER_ELF_HPP
|
22 *
23 */
24
25 #ifndef SHARE_VM_UTILITIES_DECODER_ELF_HPP
26 #define SHARE_VM_UTILITIES_DECODER_ELF_HPP
27
28 #if !defined(_WINDOWS) && !defined(__APPLE__)
29
30 #include "utilities/decoder.hpp"
31 #include "utilities/elfFile.hpp"
32
33 class ElfDecoder : public AbstractDecoder {
34
35 public:
36 ElfDecoder() {
37 _opened_elf_files = NULL;
38 _decoder_status = no_error;
39 }
40 virtual ~ElfDecoder();
41
42 bool demangle(const char* symbol, char *buf, int buflen);
43 bool decode(address addr, char *buf, int buflen, int* offset, const char* filepath, bool demangle);
44 bool decode(address addr, char *buf, int buflen, int* offset, const void *base) {
45 ShouldNotReachHere();
46 return false;
47 }
48
49 private:
50 ElfFile* get_elf_file(const char* filepath);
51
52 private:
53 ElfFile* _opened_elf_files;
54 };
55
56 #endif // !_WINDOWS && !__APPLE__
57 #endif // SHARE_VM_UTILITIES_DECODER_ELF_HPP
|