On Tue, 25 Jan 2022 14:07:14 -0800 Kees Cook <keescook@xxxxxxxxxxxx> wrote: > > The tstruct is the TP_STRUCT__entry() and for each __rel_dynamic_array() or > > __dynamic_array(), the __data_size gets updated and saved into the > > __data_offsets that holds where each item is. > > > > The rel versions sets the offset from its location to the data, where as > > the non rel versions sets the offset from the beginning of the event to the > > data. > > Could this just be > > #define __get_rel_dynamic_array(field) \ > ((void *)(&__entry->data[__entry->__rel_loc_##field & 0xffff]) > > ? This is currently user space defined. But since the only user of the rel_* version hasn't been upstreamed yet, we could change it. But it also requires changing libtraceevent as it depends on this code too. I'm surprised that it doesn't break with the __get_dynamic_array() versions, or is that because it's based off of __entry? -- Steve