xref: /openbsd-src/gnu/llvm/lldb/source/Plugins/ABI/X86/ABIX86.cpp (revision f1dd7b858388b4a23f4f67a4957ec5ff656ebbe8)
1 //===-- X86.h -------------------------------------------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #include "ABIX86.h"
10 #include "ABIMacOSX_i386.h"
11 #include "ABISysV_i386.h"
12 #include "ABISysV_x86_64.h"
13 #include "ABIWindows_x86_64.h"
14 #include "lldb/Core/PluginManager.h"
15 
16 LLDB_PLUGIN_DEFINE(ABIX86)
17 
18 void ABIX86::Initialize() {
19   ABIMacOSX_i386::Initialize();
20   ABISysV_i386::Initialize();
21   ABISysV_x86_64::Initialize();
22   ABIWindows_x86_64::Initialize();
23 }
24 
25 void ABIX86::Terminate() {
26   ABIMacOSX_i386::Terminate();
27   ABISysV_i386::Terminate();
28   ABISysV_x86_64::Terminate();
29   ABIWindows_x86_64::Terminate();
30 }
31 
32 uint32_t ABIX86::GetGenericNum(llvm::StringRef name) {
33   return llvm::StringSwitch<uint32_t>(name)
34       .Case("eip", LLDB_REGNUM_GENERIC_PC)
35       .Case("esp", LLDB_REGNUM_GENERIC_SP)
36       .Case("ebp", LLDB_REGNUM_GENERIC_FP)
37       .Case("eflags", LLDB_REGNUM_GENERIC_FLAGS)
38       .Case("edi", LLDB_REGNUM_GENERIC_ARG1)
39       .Case("esi", LLDB_REGNUM_GENERIC_ARG2)
40       .Case("edx", LLDB_REGNUM_GENERIC_ARG3)
41       .Case("ecx", LLDB_REGNUM_GENERIC_ARG4)
42       .Default(LLDB_INVALID_REGNUM);
43 }
44