summaryrefslogtreecommitdiff
path: root/src/vm
diff options
context:
space:
mode:
authorDan Moseley <danmose@microsoft.com>2017-01-30 10:37:48 -0700
committerGitHub <noreply@github.com>2017-01-30 10:37:48 -0700
commit5e61ff96c21b5caca03084cb64379a650832e7d6 (patch)
tree70d1afaee00bdbc8dd34a51154c9631dfbf11b73 /src/vm
parentc32c99120863db56b825cd6065f2e24873542d71 (diff)
parent90fa43cad1c59814c48c149636d095366366b636 (diff)
downloadcoreclr-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.h2
-rw-r--r--src/vm/gdbjit.cpp52
-rw-r--r--src/vm/gdbjit.h6
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