Skip to content

Conversation

Michael137
Copy link
Member

@Michael137 Michael137 commented Oct 3, 2025

Synchronized with the values in

HANDLE_DW_LANG(0x0034, GLSL, 0, 0, DWARF)
HANDLE_DW_LANG(0x0035, GLSL_ES, 0, 0, DWARF)
HANDLE_DW_LANG(0x0036, HLSL, 0, 0, DWARF)
HANDLE_DW_LANG(0x0037, OpenCL_CPP, 0, 0, DWARF)
HANDLE_DW_LANG(0x0038, CPP_for_OpenCL, 0, 0, DWARF)
HANDLE_DW_LANG(0x0039, SYCL, 0, 0, DWARF)
HANDLE_DW_LANG(0x003d, Metal, 0, 0, DWARF)
HANDLE_DW_LANG(0x0040, Ruby, 0, 0, DWARF)
HANDLE_DW_LANG(0x0041, Move, 0, 0, DWARF)
HANDLE_DW_LANG(0x0042, Hylo, 0, 0, DWARF)

Added somewhere between DWARFv5 and DWARFv6

@llvmbot
Copy link
Member

llvmbot commented Oct 3, 2025

@llvm/pr-subscribers-lldb

Author: Michael Buch (Michael137)

Changes

Full diff: https://github.com/llvm/llvm-project/pull/161810.diff

2 Files Affected:

  • (modified) lldb/include/lldb/lldb-enumerations.h (+10)
  • (modified) lldb/source/Target/Language.cpp (+10)
diff --git a/lldb/include/lldb/lldb-enumerations.h b/lldb/include/lldb/lldb-enumerations.h
index fec9fdef44df9..fe6b66fd66957 100644
--- a/lldb/include/lldb/lldb-enumerations.h
+++ b/lldb/include/lldb/lldb-enumerations.h
@@ -522,6 +522,16 @@ enum LanguageType {
   eLanguageTypeAssembly = 0x0031,
   eLanguageTypeC_sharp = 0x0032,
   eLanguageTypeMojo = 0x0033,
+  eLanguageTypeGLSL = 0x0034,
+  eLanguageTypeGLSL_ES = 0x0035,
+  eLanguageTypeHLSL = 0x0036,
+  eLanguageTypeOpenCL_CPP = 0x0037,
+  eLanguageTypeCppForOpenCL = 0x0038,
+  eLanguageTypeSycl = 0x0039,
+  eLanguageTypeMetal = 0x003d,
+  eLanguageTypeRuby = 0x0040,
+  eLanguageTypeMove = 0x0041,
+  eLanguageTypeHylo = 0x0042,
   eLanguageTypeLastStandardLanguage = eLanguageTypeMojo,
 
   // Vendor Extensions
diff --git a/lldb/source/Target/Language.cpp b/lldb/source/Target/Language.cpp
index 484d9badde397..e291b42d7264d 100644
--- a/lldb/source/Target/Language.cpp
+++ b/lldb/source/Target/Language.cpp
@@ -244,6 +244,16 @@ struct language_name_pair language_names[] = {
     {"assembly", eLanguageTypeAssembly},
     {"c-sharp", eLanguageTypeC_sharp},
     {"mojo", eLanguageTypeMojo},
+    {"GLSL", eLanguageTypeGLSL},
+    {"GLSL_ES", eLanguageTypeGLSL_ES},
+    {"HLSL", eLanguageTypeHLSL},
+    {"OpenCL_CPP", eLanguageTypeOpenCL_CPP},
+    {"CPP_for_OpenCL", eLanguageTypeCppForOpenCL},
+    {"SYCL", eLanguageTypeSycl},
+    {"Metal", eLanguageTypeMetal},
+    {"Ruby", eLanguageTypeRuby},
+    {"Move", eLanguageTypeMove},
+    {"Hylo", eLanguageTypeHylo},
     // Vendor Extensions
     {"assembler", eLanguageTypeMipsAssembler},
     // Now synonyms, in arbitrary order

@DavidSpickett
Copy link
Collaborator

DWARF codes from what exactly, DWARFv5, things already allocated to be in DWARFv6?

@Michael137
Copy link
Member Author

DWARF codes from what exactly, DWARFv5, things already allocated to be in DWARFv6?

With the values in Dwarf.def
Most likely DWARFv6 values

I'll put it in the PR description

Copy link
Collaborator

@DavidSpickett DavidSpickett left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@DavidSpickett
Copy link
Collaborator

CI failing with another thing that depends on the size of this enum.

@Michael137
Copy link
Member Author

CI failing with another thing that depends on the size of this enum.

Ah looks like we've hit this limit here:

/// A 64-bit SmallBitVector is only small up to 64-7 bits, and the
/// setBitsInMask interface wants to write full bytes.
static const size_t g_num_small_bitvector_bits = 64 - 8;
static_assert(eNumLanguageTypes < g_num_small_bitvector_bits,
              "Languages bit vector is no longer small on 64 bit systems");
LanguageSet::LanguageSet() : bitvector(eNumLanguageTypes, false) {}

Not sure we should really care about this though? Seems like the LanguageSet is just less efficient now. But this would have inevitably happened right?

@DavidSpickett
Copy link
Collaborator

If there's a stack based type to hand use it, but otherwise yeah we were always gonna hit this limit eventually.

Also double check that what the comment says is still true. Maybe bitvector got better in the meantime?

@Michael137
Copy link
Member Author

Talked to @adrian-prantl and we might want to just move away from the old-style unversioned language codes in favour of the new DWARFv6 language codes. In which case maybe we can do this differently. Closing for now

@Michael137 Michael137 closed this Oct 8, 2025
@Michael137 Michael137 deleted the lldb/language-code-sync branch October 8, 2025 17:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants