Index: src/gdb-jit.cc |
diff --git a/src/gdb-jit.cc b/src/gdb-jit.cc |
index 819bd69e070027c21e02423649ac0055ded0852e..1cff2e6fef06e16ace31f94c1439dcb574998275 100644 |
--- a/src/gdb-jit.cc |
+++ b/src/gdb-jit.cc |
@@ -656,6 +656,12 @@ class ELF BASE_EMBEDDED { |
#elif V8_TARGET_ARCH_PPC64 && V8_TARGET_BIG_ENDIAN && V8_OS_LINUX |
const uint8_t ident[16] = {0x7f, 'E', 'L', 'F', 2, 2, 1, 0, |
0, 0, 0, 0, 0, 0, 0, 0}; |
+#elif V8_TARGET_ARCH_S390X |
+ const uint8_t ident[16] = {0x7f, 'E', 'L', 'F', 2, 2, 1, 3, |
+ 0, 0, 0, 0, 0, 0, 0, 0}; |
+#elif V8_TARGET_ARCH_S390 |
+ const uint8_t ident[16] = {0x7f, 'E', 'L', 'F', 1, 2, 1, 3, |
+ 0, 0, 0, 0, 0, 0, 0, 0}; |
#else |
#error Unsupported target architecture. |
#endif |
@@ -680,6 +686,11 @@ class ELF BASE_EMBEDDED { |
// id=B81AEC1A37F5DAF185257C3E004E8845&linkid=1n0000&c_t= |
// c9xw7v5dzsj7gt1ifgf4cjbcnskqptmr |
header->machine = 21; |
+#elif V8_TARGET_ARCH_S390 |
+ // Processor identification value is 22 (EM_S390) as defined in the ABI: |
+ // http://refspecs.linuxbase.org/ELF/zSeries/lzsabi0_s390.html#AEN1691 |
+ // http://refspecs.linuxbase.org/ELF/zSeries/lzsabi0_zSeries.html#AEN1599 |
+ header->machine = 22; |
#else |
#error Unsupported target architecture. |
#endif |
@@ -772,7 +783,8 @@ class ELFSymbol BASE_EMBEDDED { |
return static_cast<Binding>(info >> 4); |
} |
#if (V8_TARGET_ARCH_IA32 || V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_X87 || \ |
- (V8_TARGET_ARCH_X64 && V8_TARGET_ARCH_32_BIT)) |
+ (V8_TARGET_ARCH_X64 && V8_TARGET_ARCH_32_BIT) || \ |
+ (V8_TARGET_ARCH_S390 && V8_TARGET_ARCH_32_BIT)) |
struct SerializedLayout { |
SerializedLayout(uint32_t name, |
uintptr_t value, |
@@ -796,7 +808,7 @@ class ELFSymbol BASE_EMBEDDED { |
uint16_t section; |
}; |
#elif(V8_TARGET_ARCH_X64 && V8_TARGET_ARCH_64_BIT) || \ |
- (V8_TARGET_ARCH_PPC64 && V8_OS_LINUX) |
+ (V8_TARGET_ARCH_PPC64 && V8_OS_LINUX) || V8_TARGET_ARCH_S390X |
struct SerializedLayout { |
SerializedLayout(uint32_t name, |
uintptr_t value, |
@@ -1145,6 +1157,8 @@ class DebugInfoSection : public DebugSection { |
UNIMPLEMENTED(); |
#elif V8_TARGET_ARCH_PPC64 && V8_OS_LINUX |
w->Write<uint8_t>(DW_OP_reg31); // The frame pointer is here on PPC64. |
+#elif V8_TARGET_ARCH_S390 |
+ w->Write<uint8_t>(DW_OP_reg11); // The frame pointer's here on S390. |
#else |
#error Unsupported target architecture. |
#endif |