diff options
author | Dan Moseley <danmose@microsoft.com> | 2017-01-30 10:37:48 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-01-30 10:37:48 -0700 |
commit | 5e61ff96c21b5caca03084cb64379a650832e7d6 (patch) | |
tree | 70d1afaee00bdbc8dd34a51154c9631dfbf11b73 /src/vm | |
parent | c32c99120863db56b825cd6065f2e24873542d71 (diff) | |
parent | 90fa43cad1c59814c48c149636d095366366b636 (diff) | |
download | coreclr-5e61ff96c21b5caca03084cb64379a650832e7d6.tar.gz coreclr-5e61ff96c21b5caca03084cb64379a650832e7d6.tar.bz2 coreclr-5e61ff96c21b5caca03084cb64379a650832e7d6.zip |
Merge pull request #8564 from lucenticus/x86-gdbjit
[x86/Linux] Initial support of GDB JIT interface
Diffstat (limited to 'src/vm')
-rw-r--r-- | src/vm/codeman.h | 2 | ||||
-rw-r--r-- | src/vm/gdbjit.cpp | 52 | ||||
-rw-r--r-- | src/vm/gdbjit.h | 6 |
3 files changed, 12 insertions, 48 deletions
diff --git a/src/vm/codeman.h b/src/vm/codeman.h index d1ec52bbf0..5fbddea875 100644 --- a/src/vm/codeman.h +++ b/src/vm/codeman.h @@ -181,7 +181,7 @@ public: return phdrMDesc; } #if defined(FEATURE_GDBJIT) - PTR_BYTE GetCalledMethods() + VOID* GetCalledMethods() { SUPPORTS_DAC; return pCalledMethods; diff --git a/src/vm/gdbjit.cpp b/src/vm/gdbjit.cpp index 2b73de95c5..2ae7009888 100644 --- a/src/vm/gdbjit.cpp +++ b/src/vm/gdbjit.cpp @@ -697,14 +697,7 @@ const unsigned char AbbrevTable[] = { 4, DW_TAG_subprogram, DW_CHILDREN_yes, DW_AT_name, DW_FORM_strp, DW_AT_linkage_name, DW_FORM_strp, DW_AT_decl_file, DW_FORM_data1, DW_AT_decl_line, DW_FORM_data1, DW_AT_type, DW_FORM_ref4, DW_AT_external, DW_FORM_flag_present, - DW_AT_low_pc, DW_FORM_addr, DW_AT_high_pc, -#if defined(_TARGET_AMD64_) - DW_FORM_data8, -#elif defined(_TARGET_ARM_) - DW_FORM_data4, -#else -#error Unsupported platform! -#endif + DW_AT_low_pc, DW_FORM_addr, DW_AT_high_pc, DW_FORM_size, DW_AT_frame_base, DW_FORM_exprloc, 0, 0, 5, DW_TAG_variable, DW_CHILDREN_no, @@ -733,14 +726,7 @@ const unsigned char AbbrevTable[] = { 12, DW_TAG_subprogram, DW_CHILDREN_yes, DW_AT_name, DW_FORM_strp, DW_AT_linkage_name, DW_FORM_strp, DW_AT_decl_file, DW_FORM_data1, DW_AT_decl_line, DW_FORM_data1, DW_AT_type, DW_FORM_ref4, DW_AT_external, DW_FORM_flag_present, - DW_AT_low_pc, DW_FORM_addr, DW_AT_high_pc, -#if defined(_TARGET_AMD64_) - DW_FORM_data8, -#elif defined(_TARGET_ARM_) - DW_FORM_data4, -#else -#error Unsupported platform! -#endif + DW_AT_low_pc, DW_FORM_addr, DW_AT_high_pc, DW_FORM_size, DW_AT_frame_base, DW_FORM_exprloc, DW_AT_object_pointer, DW_FORM_ref4, 0, 0, 13, DW_TAG_formal_parameter, DW_CHILDREN_no, @@ -754,25 +740,11 @@ const unsigned char AbbrevTable[] = { 0, 0, 16, DW_TAG_try_block, DW_CHILDREN_no, - DW_AT_low_pc, DW_FORM_addr, DW_AT_high_pc, -#if defined(_TARGET_AMD64_) - DW_FORM_data8, -#elif defined(_TARGET_ARM_) - DW_FORM_data4, -#else -#error Unsupported platform! -#endif + DW_AT_low_pc, DW_FORM_addr, DW_AT_high_pc, DW_FORM_size, 0, 0, 17, DW_TAG_catch_block, DW_CHILDREN_no, - DW_AT_low_pc, DW_FORM_addr, DW_AT_high_pc, -#if defined(_TARGET_AMD64_) - DW_FORM_data8, -#elif defined(_TARGET_ARM_) - DW_FORM_data4, -#else -#error Unsupported platform! -#endif + DW_AT_low_pc, DW_FORM_addr, DW_AT_high_pc, DW_FORM_size, 0, 0, 18, DW_TAG_inheritance, DW_CHILDREN_no, DW_AT_type, DW_FORM_ref4, DW_AT_data_member_location, DW_FORM_data1, @@ -807,13 +779,7 @@ struct __attribute__((packed)) DebugInfoCU struct __attribute__((packed)) DebugInfoTryCatchSub { uint8_t m_sub_abbrev; -#if defined(_TARGET_AMD64_) - uint64_t m_sub_low_pc, m_sub_high_pc; -#elif defined(_TARGET_ARM_) - uint32_t m_sub_low_pc, m_sub_high_pc; -#else -#error Unsupported platform! -#endif + uintptr_t m_sub_low_pc, m_sub_high_pc; }; struct __attribute__((packed)) DebugInfoSub @@ -823,13 +789,7 @@ struct __attribute__((packed)) DebugInfoSub uint32_t m_linkage_name; uint8_t m_file, m_line; uint32_t m_sub_type; -#if defined(_TARGET_AMD64_) - uint64_t m_sub_low_pc, m_sub_high_pc; -#elif defined(_TARGET_ARM_) - uint32_t m_sub_low_pc, m_sub_high_pc; -#else -#error Unsupported platform! -#endif + uintptr_t m_sub_low_pc, m_sub_high_pc; uint8_t m_sub_loc[2]; }; diff --git a/src/vm/gdbjit.h b/src/vm/gdbjit.h index 6dc4d9ed6f..1bc75772b6 100644 --- a/src/vm/gdbjit.h +++ b/src/vm/gdbjit.h @@ -24,12 +24,14 @@ typedef Elf32_Ehdr Elf_Ehdr; typedef Elf32_Shdr Elf_Shdr; typedef Elf32_Sym Elf_Sym; + const uint16_t DW_FORM_size = DW_FORM_data4; #define ADDRESS_SIZE 4 #elif defined(_TARGET_AMD64_) || defined(_TARGET_ARM64_) typedef Elf64_Ehdr Elf_Ehdr; typedef Elf64_Shdr Elf_Shdr; typedef Elf64_Sym Elf_Sym; -#define ADDRESS_SIZE 8 + const uint16_t DW_FORM_size = DW_FORM_data8; +#define ADDRESS_SIZE 8 #else #error "Target is not supported" #endif @@ -469,6 +471,8 @@ public: m_sub_loc[0] = 1; #if defined(_TARGET_AMD64_) m_sub_loc[1] = DW_OP_reg6; +#elif defined(_TARGET_X86_) + m_sub_loc[1] = DW_OP_reg5; #elif defined(_TARGET_ARM_) m_sub_loc[1] = DW_OP_reg11; #else |