Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(201)

Side by Side Diff: src/gdb-jit.cc

Issue 1252913007: Enable gdb-jit for PPC64 on Linux (both big-endian and little-endian). (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Correct white-space issues. Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « build/standalone.gypi ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2010 the V8 project authors. All rights reserved. 1 // Copyright 2010 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/v8.h" 5 #include "src/v8.h"
6 6
7 #include "src/base/bits.h" 7 #include "src/base/bits.h"
8 #include "src/base/platform/platform.h" 8 #include "src/base/platform/platform.h"
9 #include "src/bootstrapper.h" 9 #include "src/bootstrapper.h"
10 #include "src/compiler.h" 10 #include "src/compiler.h"
(...skipping 631 matching lines...) Expand 10 before | Expand all | Expand 10 after
642 }; 642 };
643 643
644 644
645 void WriteHeader(Writer* w) { 645 void WriteHeader(Writer* w) {
646 DCHECK(w->position() == 0); 646 DCHECK(w->position() == 0);
647 Writer::Slot<ELFHeader> header = w->CreateSlotHere<ELFHeader>(); 647 Writer::Slot<ELFHeader> header = w->CreateSlotHere<ELFHeader>();
648 #if (V8_TARGET_ARCH_IA32 || V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_X87 || \ 648 #if (V8_TARGET_ARCH_IA32 || V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_X87 || \
649 (V8_TARGET_ARCH_X64 && V8_TARGET_ARCH_32_BIT)) 649 (V8_TARGET_ARCH_X64 && V8_TARGET_ARCH_32_BIT))
650 const uint8_t ident[16] = 650 const uint8_t ident[16] =
651 { 0x7f, 'E', 'L', 'F', 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 651 { 0x7f, 'E', 'L', 'F', 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0};
652 #elif V8_TARGET_ARCH_X64 && V8_TARGET_ARCH_64_BIT 652 #elif(V8_TARGET_ARCH_X64 && V8_TARGET_ARCH_64_BIT) || \
653 (V8_TARGET_ARCH_PPC64 && V8_TARGET_LITTLE_ENDIAN)
653 const uint8_t ident[16] = 654 const uint8_t ident[16] =
654 { 0x7f, 'E', 'L', 'F', 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 655 { 0x7f, 'E', 'L', 'F', 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0};
656 #elif V8_TARGET_ARCH_PPC64 && V8_TARGET_BIG_ENDIAN && V8_OS_LINUX
657 const uint8_t ident[16] = {0x7f, 'E', 'L', 'F', 2, 2, 1, 0,
658 0, 0, 0, 0, 0, 0, 0, 0};
655 #else 659 #else
656 #error Unsupported target architecture. 660 #error Unsupported target architecture.
657 #endif 661 #endif
658 memcpy(header->ident, ident, 16); 662 memcpy(header->ident, ident, 16);
659 header->type = 1; 663 header->type = 1;
660 #if V8_TARGET_ARCH_IA32 || V8_TARGET_ARCH_X87 664 #if V8_TARGET_ARCH_IA32 || V8_TARGET_ARCH_X87
661 header->machine = 3; 665 header->machine = 3;
662 #elif V8_TARGET_ARCH_X64 666 #elif V8_TARGET_ARCH_X64
663 // Processor identification value for x64 is 62 as defined in 667 // Processor identification value for x64 is 62 as defined in
664 // System V ABI, AMD64 Supplement 668 // System V ABI, AMD64 Supplement
665 // http://www.x86-64.org/documentation/abi.pdf 669 // http://www.x86-64.org/documentation/abi.pdf
666 header->machine = 62; 670 header->machine = 62;
667 #elif V8_TARGET_ARCH_ARM 671 #elif V8_TARGET_ARCH_ARM
668 // Set to EM_ARM, defined as 40, in "ARM ELF File Format" at 672 // Set to EM_ARM, defined as 40, in "ARM ELF File Format" at
669 // infocenter.arm.com/help/topic/com.arm.doc.dui0101a/DUI0101A_Elf.pdf 673 // infocenter.arm.com/help/topic/com.arm.doc.dui0101a/DUI0101A_Elf.pdf
670 header->machine = 40; 674 header->machine = 40;
675 #elif V8_TARGET_ARCH_PPC64 && V8_OS_LINUX
676 // Set to EM_PPC64, defined as 21, in Power ABI,
677 // Join the next 4 lines, omitting the spaces and double-slashes.
678 // https://www-03.ibm.com/technologyconnect/tgcm/TGCMFileServlet.wss/
679 // ABI64BitOpenPOWERv1.1_16July2015_pub.pdf?
680 // id=B81AEC1A37F5DAF185257C3E004E8845&linkid=1n0000&c_t=
681 // c9xw7v5dzsj7gt1ifgf4cjbcnskqptmr
682 header->machine = 21;
671 #else 683 #else
672 #error Unsupported target architecture. 684 #error Unsupported target architecture.
673 #endif 685 #endif
674 header->version = 1; 686 header->version = 1;
675 header->entry = 0; 687 header->entry = 0;
676 header->pht_offset = 0; 688 header->pht_offset = 0;
677 header->sht_offset = sizeof(ELFHeader); // Section table follows header. 689 header->sht_offset = sizeof(ELFHeader); // Section table follows header.
678 header->flags = 0; 690 header->flags = 0;
679 header->header_size = sizeof(ELFHeader); 691 header->header_size = sizeof(ELFHeader);
680 header->pht_entry_size = 0; 692 header->pht_entry_size = 0;
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
776 section(section) { 788 section(section) {
777 } 789 }
778 790
779 uint32_t name; 791 uint32_t name;
780 uintptr_t value; 792 uintptr_t value;
781 uintptr_t size; 793 uintptr_t size;
782 uint8_t info; 794 uint8_t info;
783 uint8_t other; 795 uint8_t other;
784 uint16_t section; 796 uint16_t section;
785 }; 797 };
786 #elif V8_TARGET_ARCH_X64 && V8_TARGET_ARCH_64_BIT 798 #elif(V8_TARGET_ARCH_X64 && V8_TARGET_ARCH_64_BIT) || \
799 (V8_TARGET_ARCH_PPC64 && V8_OS_LINUX)
787 struct SerializedLayout { 800 struct SerializedLayout {
788 SerializedLayout(uint32_t name, 801 SerializedLayout(uint32_t name,
789 uintptr_t value, 802 uintptr_t value,
790 uintptr_t size, 803 uintptr_t size,
791 Binding binding, 804 Binding binding,
792 Type type, 805 Type type,
793 uint16_t section) 806 uint16_t section)
794 : name(name), 807 : name(name),
795 info((binding << 4) | type), 808 info((binding << 4) | type),
796 other(0), 809 other(0),
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
1054 // DWARF2 standard 1067 // DWARF2 standard
1055 enum DWARF2LocationOp { 1068 enum DWARF2LocationOp {
1056 DW_OP_reg0 = 0x50, 1069 DW_OP_reg0 = 0x50,
1057 DW_OP_reg1 = 0x51, 1070 DW_OP_reg1 = 0x51,
1058 DW_OP_reg2 = 0x52, 1071 DW_OP_reg2 = 0x52,
1059 DW_OP_reg3 = 0x53, 1072 DW_OP_reg3 = 0x53,
1060 DW_OP_reg4 = 0x54, 1073 DW_OP_reg4 = 0x54,
1061 DW_OP_reg5 = 0x55, 1074 DW_OP_reg5 = 0x55,
1062 DW_OP_reg6 = 0x56, 1075 DW_OP_reg6 = 0x56,
1063 DW_OP_reg7 = 0x57, 1076 DW_OP_reg7 = 0x57,
1077 DW_OP_reg8 = 0x58,
1078 DW_OP_reg9 = 0x59,
1079 DW_OP_reg10 = 0x5a,
1080 DW_OP_reg11 = 0x5b,
1081 DW_OP_reg12 = 0x5c,
1082 DW_OP_reg13 = 0x5d,
1083 DW_OP_reg14 = 0x5e,
1084 DW_OP_reg15 = 0x5f,
1085 DW_OP_reg16 = 0x60,
1086 DW_OP_reg17 = 0x61,
1087 DW_OP_reg18 = 0x62,
1088 DW_OP_reg19 = 0x63,
1089 DW_OP_reg20 = 0x64,
1090 DW_OP_reg21 = 0x65,
1091 DW_OP_reg22 = 0x66,
1092 DW_OP_reg23 = 0x67,
1093 DW_OP_reg24 = 0x68,
1094 DW_OP_reg25 = 0x69,
1095 DW_OP_reg26 = 0x6a,
1096 DW_OP_reg27 = 0x6b,
1097 DW_OP_reg28 = 0x6c,
1098 DW_OP_reg29 = 0x6d,
1099 DW_OP_reg30 = 0x6e,
1100 DW_OP_reg31 = 0x6f,
1064 DW_OP_fbreg = 0x91 // 1 param: SLEB128 offset 1101 DW_OP_fbreg = 0x91 // 1 param: SLEB128 offset
1065 }; 1102 };
1066 1103
1067 enum DWARF2Encoding { 1104 enum DWARF2Encoding {
1068 DW_ATE_ADDRESS = 0x1, 1105 DW_ATE_ADDRESS = 0x1,
1069 DW_ATE_SIGNED = 0x5 1106 DW_ATE_SIGNED = 0x5
1070 }; 1107 };
1071 1108
1072 bool WriteBodyInternal(Writer* w) { 1109 bool WriteBodyInternal(Writer* w) {
1073 uintptr_t cu_start = w->position(); 1110 uintptr_t cu_start = w->position();
(...skipping 25 matching lines...) Expand all
1099 #if V8_TARGET_ARCH_IA32 || V8_TARGET_ARCH_X87 1136 #if V8_TARGET_ARCH_IA32 || V8_TARGET_ARCH_X87
1100 w->Write<uint8_t>(DW_OP_reg5); // The frame pointer's here on ia32 1137 w->Write<uint8_t>(DW_OP_reg5); // The frame pointer's here on ia32
1101 #elif V8_TARGET_ARCH_X64 1138 #elif V8_TARGET_ARCH_X64
1102 w->Write<uint8_t>(DW_OP_reg6); // and here on x64. 1139 w->Write<uint8_t>(DW_OP_reg6); // and here on x64.
1103 #elif V8_TARGET_ARCH_ARM 1140 #elif V8_TARGET_ARCH_ARM
1104 UNIMPLEMENTED(); 1141 UNIMPLEMENTED();
1105 #elif V8_TARGET_ARCH_MIPS 1142 #elif V8_TARGET_ARCH_MIPS
1106 UNIMPLEMENTED(); 1143 UNIMPLEMENTED();
1107 #elif V8_TARGET_ARCH_MIPS64 1144 #elif V8_TARGET_ARCH_MIPS64
1108 UNIMPLEMENTED(); 1145 UNIMPLEMENTED();
1146 #elif V8_TARGET_ARCH_PPC64 && V8_OS_LINUX
1147 w->Write<uint8_t>(DW_OP_reg31); // The frame pointer is here on PPC64.
1109 #else 1148 #else
1110 #error Unsupported target architecture. 1149 #error Unsupported target architecture.
1111 #endif 1150 #endif
1112 fb_block_size.set(static_cast<uint32_t>(w->position() - fb_block_start)); 1151 fb_block_size.set(static_cast<uint32_t>(w->position() - fb_block_start));
1113 1152
1114 int params = scope->ParameterCount(); 1153 int params = scope->ParameterCount();
1115 int slots = scope->StackLocalCount(); 1154 int slots = scope->StackLocalCount();
1116 int context_slots = scope->ContextLocalCount(); 1155 int context_slots = scope->ContextLocalCount();
1117 // The real slot ID is internal_slots + context_slot_id. 1156 // The real slot ID is internal_slots + context_slot_id.
1118 int internal_slots = Context::MIN_CONTEXT_SLOTS; 1157 int internal_slots = Context::MIN_CONTEXT_SLOTS;
(...skipping 1038 matching lines...) Expand 10 before | Expand all | Expand 10 after
2157 LineInfo* line_info = reinterpret_cast<LineInfo*>(event->user_data); 2196 LineInfo* line_info = reinterpret_cast<LineInfo*>(event->user_data);
2158 PutLineInfo(reinterpret_cast<Address>(event->code_start), line_info); 2197 PutLineInfo(reinterpret_cast<Address>(event->code_start), line_info);
2159 break; 2198 break;
2160 } 2199 }
2161 } 2200 }
2162 } 2201 }
2163 #endif 2202 #endif
2164 } // namespace GDBJITInterface 2203 } // namespace GDBJITInterface
2165 } // namespace internal 2204 } // namespace internal
2166 } // namespace v8 2205 } // namespace v8
OLDNEW
« no previous file with comments | « build/standalone.gypi ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698