On Tue, Jun 3, 2025 at 6:18 AM Jiri Olsa olsajiri@gmail.com wrote:
+static int btf_dump_string_data(struct btf_dump *d,
const struct btf_type *t,__u32 id,const void *data)+{
const struct btf_array *array = btf_array(t);__u32 i;btf_dump_data_pfx(d);btf_dump_printf(d, "\"");for (i = 0; i < array->nelems; i++, data++) {char c;if (data >= d->typed_dump->data_end)return -E2BIG;curious, is this just string array without null terminating byte? should we just print " and return 0 instead of E2BIG error ?
Good question. That E2BIG error would happen, for example, if we tried to print the array "{ 'a', 'b', 'c' }" when the type was "char[4]". I'd say your proposed behavior would be consistent with the semantic of ".emit_strings should display strings in an intuitively useful way", and I'd be in favor of doing that (replacing "return -E2BIG" with "break"). If others agree (specifically Andrii, who had comments about the semantics yesterday), I'll make that change.
Blake