11-163r1 To: J3 From: Nick Maclaren Subject: Interop TR: the version member and CFI_establish Date: 2011 June 29 Reference: N1854, 11-163, 11-168r1 There is a lack of clarity about when the version member is set. During discussion, we agreed that the version member should be set on establishment (i.e. always by CFI_establish, and never by other calls), and that the implementation be given the option to determine what the value of CFI_VERSION in the header used to compile the call to CFI_establish, in case that it differs from that used when the code of CFI_establish were compiled. Edits to N1854: [9:10] Before "functions" add "macro and". [10:7] Append "when the descriptor is established and otherwise not changed." [13:3] Before "functions", add "macro and". [16:18+] Add a new paragraph: "It is unspecified whether CFI_establish is a macro or an identifier declared with external linkage. If a macro definition is suppressed in order to access an actual function, the behavior is undefined." [16:21+] Add a new note: "NOTE 5.x This function is allowed to be a macro to provide extra implementation flexibility. For example, it could include the value of CFI_VERSION in the header used to compile the call to CFI_establish as an extra argument of the actual function used to establish the descriptor."