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