The FieldRVA table has the following columns:
-
RVA (a 4-byte constant)
-
Field (an index into Field table)
Conceptually, each row in the FieldRVA table is an extension to exactly one row in the Field table, and records the RVA (Relative Virtual Address) within the image file at which this field's initial value is stored.
A row in the FieldRVA table is created for each static parent field that has specified the optional data label §II.16). The RVA column is the relative virtual address of the data in the PE file (§II.16.3).
This contains informative text only.
-
RVA shall be non-zero [ERROR]
-
RVA shall point into the current module's data area (not its metadata area) [ERROR]
-
Field shall index a valid row in the Field table [ERROR]
-
Any field with an RVA shall be a ValueType (not a Class or an Interface). Moreover, it shall not have any private fields (and likewise for any of its fields that are themselves ValueTypes). (If any of these conditions were breached, code could overlay that global static and access its private fields.) Moreover, no fields of that ValueType can be Object References (into the GC heap) [ERROR]
-
So long as two RVA-based fields comply with the previous conditions, the ranges of memory spanned by the two ValueTypes can overlap, with no further constraints. This is not actually an additional rule; it simply clarifies the position with regard to overlapped RVA-based fields
End informative text.