diff --git a/src/lib_rdi_format/rdi_format.h b/src/lib_rdi_format/rdi_format.h index f440f03c..73323def 100644 --- a/src/lib_rdi_format/rdi_format.h +++ b/src/lib_rdi_format/rdi_format.h @@ -386,6 +386,7 @@ typedef enum RDI_TypeModifierFlagsEnum { RDI_TypeModifierFlag_Const = 1<<0, RDI_TypeModifierFlag_Volatile = 1<<1, +RDI_TypeModifierFlag_Restrict = 1<<2, } RDI_TypeModifierFlagsEnum; typedef RDI_U32 RDI_UDTFlags; @@ -887,6 +888,7 @@ X(Count)\ #define RDI_TypeModifierFlags_XList \ X(Const)\ X(Volatile)\ +X(Restrict)\ #define RDI_TypeNode_XList \ X(RDI_TypeKind, kind)\ diff --git a/src/rdi_format/rdi_format.mdesk b/src/rdi_format/rdi_format.mdesk index 2a515898..5294e4ca 100644 --- a/src/rdi_format/rdi_format.mdesk +++ b/src/rdi_format/rdi_format.mdesk @@ -785,6 +785,7 @@ RDI_TypeModifierFlagTable: { {Const `1<<0`} {Volatile `1<<1`} + {Restrict `1<<2`} } @table(name type_lhs type_rhs desc) diff --git a/src/rdi_from_pdb/rdi_from_pdb.c b/src/rdi_from_pdb/rdi_from_pdb.c index a2f067b6..cbbec26a 100644 --- a/src/rdi_from_pdb/rdi_from_pdb.c +++ b/src/rdi_from_pdb/rdi_from_pdb.c @@ -3526,8 +3526,9 @@ p2r_convert(Arena *arena, P2R_User2Convert *in) // rjf: cv -> rdi modifier flags RDI_TypeModifierFlags modifier_flags = 0; - if(lf->attribs & CV_PointerAttrib_Const) {modifier_flags |= RDI_TypeModifierFlag_Const;} - if(lf->attribs & CV_PointerAttrib_Volatile) {modifier_flags |= RDI_TypeModifierFlag_Volatile;} + if(lf->attribs & CV_PointerAttrib_Const) {modifier_flags |= RDI_TypeModifierFlag_Const;} + if(lf->attribs & CV_PointerAttrib_Volatile) {modifier_flags |= RDI_TypeModifierFlag_Volatile;} + if(lf->attribs & CV_PointerAttrib_Restricted) {modifier_flags |= RDI_TypeModifierFlag_Restrict;} // rjf: cv info -> rdi pointer type kind RDI_TypeKind type_kind = RDI_TypeKind_Ptr;