mgorny created this revision.
mgorny added reviewers: labath, teemperor, krytarowski, emaste.
Herald added a subscriber: pengfei.
mgorny requested review of this revision.

Split the ABIX86 class into two classes: ABIX86 class used to define
the plugin, and ABIX86_i386 class that is the base for 32-bit ABIs.
This makes ABIX86 more suitable to become a common class for all ABIs,
and removes the confusing concept that ABIX86 initializes 64-bit ABIs
but is only the base for 32-bit ABIs.


https://reviews.llvm.org/D111216

Files:
  lldb/source/Plugins/ABI/X86/ABIMacOSX_i386.h
  lldb/source/Plugins/ABI/X86/ABISysV_i386.h
  lldb/source/Plugins/ABI/X86/ABIX86.cpp
  lldb/source/Plugins/ABI/X86/ABIX86.h
  lldb/source/Plugins/ABI/X86/ABIX86_64.h
  lldb/source/Plugins/ABI/X86/ABIX86_i386.cpp
  lldb/source/Plugins/ABI/X86/ABIX86_i386.h
  lldb/source/Plugins/ABI/X86/CMakeLists.txt

Index: lldb/source/Plugins/ABI/X86/CMakeLists.txt
===================================================================
--- lldb/source/Plugins/ABI/X86/CMakeLists.txt
+++ lldb/source/Plugins/ABI/X86/CMakeLists.txt
@@ -1,5 +1,6 @@
 add_lldb_library(lldbPluginABIX86 PLUGIN
   ABIX86.cpp
+  ABIX86_i386.cpp
   ABIMacOSX_i386.cpp
   ABISysV_i386.cpp
   ABISysV_x86_64.cpp
Index: lldb/source/Plugins/ABI/X86/ABIX86_i386.h
===================================================================
--- /dev/null
+++ lldb/source/Plugins/ABI/X86/ABIX86_i386.h
@@ -0,0 +1,22 @@
+//===-- ABIX86_i386.h -------------------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_SOURCE_PLUGINS_ABI_X86_ABIX86_I386_H
+#define LLDB_SOURCE_PLUGINS_ABI_X86_ABIX86_I386_H
+
+#include "lldb/Target/ABI.h"
+
+class ABIX86_i386 : public lldb_private::MCBasedABI {
+public:
+  uint32_t GetGenericNum(llvm::StringRef name) override;
+
+private:
+  using lldb_private::MCBasedABI::MCBasedABI;
+};
+
+#endif
Index: lldb/source/Plugins/ABI/X86/ABIX86_i386.cpp
===================================================================
--- /dev/null
+++ lldb/source/Plugins/ABI/X86/ABIX86_i386.cpp
@@ -0,0 +1,22 @@
+//===-- ABIX86_i386.cpp ---------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "ABIX86_i386.h"
+
+uint32_t ABIX86_i386::GetGenericNum(llvm::StringRef name) {
+  return llvm::StringSwitch<uint32_t>(name)
+      .Case("eip", LLDB_REGNUM_GENERIC_PC)
+      .Case("esp", LLDB_REGNUM_GENERIC_SP)
+      .Case("ebp", LLDB_REGNUM_GENERIC_FP)
+      .Case("eflags", LLDB_REGNUM_GENERIC_FLAGS)
+      .Case("edi", LLDB_REGNUM_GENERIC_ARG1)
+      .Case("esi", LLDB_REGNUM_GENERIC_ARG2)
+      .Case("edx", LLDB_REGNUM_GENERIC_ARG3)
+      .Case("ecx", LLDB_REGNUM_GENERIC_ARG4)
+      .Default(LLDB_INVALID_REGNUM);
+}
Index: lldb/source/Plugins/ABI/X86/ABIX86_64.h
===================================================================
--- lldb/source/Plugins/ABI/X86/ABIX86_64.h
+++ lldb/source/Plugins/ABI/X86/ABIX86_64.h
@@ -13,6 +13,9 @@
 #include "lldb/lldb-private.h"
 
 class ABIX86_64 : public lldb_private::MCBasedABI {
+public:
+  uint32_t GetGenericNum(llvm::StringRef name) override;
+
 protected:
   std::string GetMCName(std::string name) override {
     MapRegisterName(name, "stmm", "st");
Index: lldb/source/Plugins/ABI/X86/ABIX86.h
===================================================================
--- lldb/source/Plugins/ABI/X86/ABIX86.h
+++ lldb/source/Plugins/ABI/X86/ABIX86.h
@@ -1,4 +1,4 @@
-//===-- X86.h ---------------------------------------------------*- C++ -*-===//
+//===-- ABIX86.h ------------------------------------------------*- C++ -*-===//
 //
 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 // See https://llvm.org/LICENSE.txt for license information.
@@ -9,16 +9,10 @@
 #ifndef LLDB_SOURCE_PLUGINS_ABI_X86_ABIX86_H
 #define LLDB_SOURCE_PLUGINS_ABI_X86_ABIX86_H
 
-#include "lldb/Target/ABI.h"
-
-class ABIX86 : public lldb_private::MCBasedABI {
+class ABIX86 {
 public:
   static void Initialize();
   static void Terminate();
-
-  uint32_t GetGenericNum(llvm::StringRef name) override;
-
-private:
-  using lldb_private::MCBasedABI::MCBasedABI;
 };
+
 #endif
Index: lldb/source/Plugins/ABI/X86/ABIX86.cpp
===================================================================
--- lldb/source/Plugins/ABI/X86/ABIX86.cpp
+++ lldb/source/Plugins/ABI/X86/ABIX86.cpp
@@ -1,4 +1,4 @@
-//===-- X86.h -------------------------------------------------------------===//
+//===-- ABIX86.cpp --------------------------------------------------------===//
 //
 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 // See https://llvm.org/LICENSE.txt for license information.
@@ -28,16 +28,3 @@
   ABISysV_x86_64::Terminate();
   ABIWindows_x86_64::Terminate();
 }
-
-uint32_t ABIX86::GetGenericNum(llvm::StringRef name) {
-  return llvm::StringSwitch<uint32_t>(name)
-      .Case("eip", LLDB_REGNUM_GENERIC_PC)
-      .Case("esp", LLDB_REGNUM_GENERIC_SP)
-      .Case("ebp", LLDB_REGNUM_GENERIC_FP)
-      .Case("eflags", LLDB_REGNUM_GENERIC_FLAGS)
-      .Case("edi", LLDB_REGNUM_GENERIC_ARG1)
-      .Case("esi", LLDB_REGNUM_GENERIC_ARG2)
-      .Case("edx", LLDB_REGNUM_GENERIC_ARG3)
-      .Case("ecx", LLDB_REGNUM_GENERIC_ARG4)
-      .Default(LLDB_INVALID_REGNUM);
-}
Index: lldb/source/Plugins/ABI/X86/ABISysV_i386.h
===================================================================
--- lldb/source/Plugins/ABI/X86/ABISysV_i386.h
+++ lldb/source/Plugins/ABI/X86/ABISysV_i386.h
@@ -9,10 +9,10 @@
 #ifndef LLDB_SOURCE_PLUGINS_ABI_X86_ABISYSV_I386_H
 #define LLDB_SOURCE_PLUGINS_ABI_X86_ABISYSV_I386_H
 
-#include "Plugins/ABI/X86/ABIX86.h"
+#include "Plugins/ABI/X86/ABIX86_i386.h"
 #include "lldb/lldb-private.h"
 
-class ABISysV_i386 : public ABIX86 {
+class ABISysV_i386 : public ABIX86_i386 {
 public:
   ~ABISysV_i386() override = default;
 
@@ -95,7 +95,7 @@
   bool RegisterIsCalleeSaved(const lldb_private::RegisterInfo *reg_info);
 
 private:
-  using ABIX86::ABIX86; // Call CreateInstance instead.
+  using ABIX86_i386::ABIX86_i386; // Call CreateInstance instead.
 };
 
 #endif // LLDB_SOURCE_PLUGINS_ABI_X86_ABISYSV_I386_H
Index: lldb/source/Plugins/ABI/X86/ABIMacOSX_i386.h
===================================================================
--- lldb/source/Plugins/ABI/X86/ABIMacOSX_i386.h
+++ lldb/source/Plugins/ABI/X86/ABIMacOSX_i386.h
@@ -9,11 +9,11 @@
 #ifndef LLDB_SOURCE_PLUGINS_ABI_X86_ABIMACOSX_I386_H
 #define LLDB_SOURCE_PLUGINS_ABI_X86_ABIMACOSX_I386_H
 
-#include "Plugins/ABI/X86/ABIX86.h"
+#include "Plugins/ABI/X86/ABIX86_i386.h"
 #include "lldb/Core/Value.h"
 #include "lldb/lldb-private.h"
 
-class ABIMacOSX_i386 : public ABIX86 {
+class ABIMacOSX_i386 : public ABIX86_i386 {
 public:
   ~ABIMacOSX_i386() override = default;
 
@@ -92,7 +92,7 @@
   }
 
 private:
-  using ABIX86::ABIX86; // Call CreateInstance instead.
+  using ABIX86_i386::ABIX86_i386; // Call CreateInstance instead.
 };
 
 #endif // LLDB_SOURCE_PLUGINS_ABI_X86_ABIMACOSX_I386_H
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to