sketch out unified RDI_Variable to replace RDI_GlobalVariable, RDI_ThreadVariable, RDI_Local, and RDI_Constant, & plug into new RDI structured namespaces

This commit is contained in:
Ryan Fleury
2026-03-09 15:15:48 -07:00
parent 408b3af27c
commit 5badc7f325
4 changed files with 83 additions and 41 deletions
+42 -1
View File
@@ -956,6 +956,7 @@ RDI_ContainerKindTable:
RDI_ContainerFlagTable:
{
{External `1<<8`}
{KindMask `0xff`}
}
@table(name value)
@@ -983,6 +984,19 @@ RDI_LocationKindTable:
{AddrRegPlusU16 0x3}
{AddrAddrRegPlusU16 0x4}
{ValReg 0x5}
{ModuleOff 0x6}
{TLSOff 0x7}
{ConstantDataOff 0x8}
{List 0x9}
}
@table(name value)
RDI_VariableKindTable:
{
{Local 0x0}
{Param 0x1}
{Global 0x2}
{Thread 0x3}
}
@table(name type desc)
@@ -993,6 +1007,19 @@ RDI_NamespaceMemberTable:
{container_idx RDI_U32 ""}
}
@table(name type desc)
RDI_VariableMemberTable:
{
{name_string_idx RDI_U32 ""}
{container_flags RDI_ContainerFlags ""}
{container_idx RDI_U32 ""}
{type_idx RDI_U32 ""}
{variable_kind RDI_VariableKind ""}
{location_kind RDI_LocationKind ""}
{padding RDI_U16 ""}
{location_idx RDI_U32 ""}
}
@table(name type desc)
RDI_GlobalVariableMemberTable:
{
@@ -1108,7 +1135,6 @@ RDI_LocationRegMemberTable:
@enum(RDI_U32) RDI_ContainerFlags:
{
@expand(RDI_ContainerFlagTable a) `$(a.name .. =>20) = $(a.value)`,
`KindMask = 0xff`,
}
@enum(RDI_U32) RDI_LinkFlags:
@@ -1121,6 +1147,11 @@ RDI_LocationRegMemberTable:
@expand(RDI_LocalKindTable a) `$(a.name .. =>20) = $(a.value)`
}
@enum(RDI_U8) RDI_VariableKind:
{
@expand(RDI_VariableKindTable a) `$(a.name .. =>20) = $(a.value)`
}
@enum(RDI_U8) RDI_LocationKind:
{
@expand(RDI_LocationKindTable a) `$(a.name .. =>20) = $(a.value)`
@@ -1148,6 +1179,11 @@ RDI_LocationRegMemberTable:
@expand(RDI_NamespaceMemberTable a) `$(a.type), $(a.name)`
}
@xlist RDI_Variable_XList:
{
@expand(RDI_VariableMemberTable a) `$(a.type), $(a.name)`
}
@xlist RDI_GlobalVariable_XList:
{
@expand(RDI_GlobalVariableMemberTable a) `$(a.type), $(a.name)`
@@ -1205,6 +1241,11 @@ RDI_LocationRegMemberTable:
@expand(RDI_NamespaceMemberTable a) `$(a.type) $(a.name)`
}
@struct RDI_Variable:
{
@expand(RDI_VariableMemberTable a) `$(a.type) $(a.name)`
}
@struct RDI_GlobalVariable:
{
@expand(RDI_GlobalVariableMemberTable a) `$(a.type) $(a.name)`