mirror of
https://github.com/torvalds/linux.git
synced 2026-11-09 13:44:03 +01:00
bpftool: Don't drop a type in the sorted C dump
The C dump sorts types by default, so that generated headers are
diffable. The sorted dump emits one type fewer than the unsorted dump
of the same BTF.
dump_btf_c() starts its loop at index 1 to skip the void type at BTF
type ID 0. That holds for the unsorted dump, where the array index is
the type ID, but not after qsort(): position 0 is then the lowest
ranked type, and btf_type_rank() ranks an anonymous enum 0 while void
takes the default rank of 10. So the enum is skipped, and void is
emitted instead as a no-op.
Fixes: 94133cf24b ("bpftool: Introduce btf c dump sorting")
Acked-by: Eduard Zingerman <eddyz87@gmail.com>
Signed-off-by: Ihor Solodrai <ihor.solodrai@linux.dev>
Link: https://lore.kernel.org/r/20260828215207.3105313-7-ihor.solodrai@linux.dev
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
parent
438147f7f6
commit
ff01f88a91
|
|
@ -805,9 +805,13 @@ static int dump_btf_c(const struct btf *btf,
|
|||
|
||||
if (sort_dump)
|
||||
datums = sort_btf_c(btf);
|
||||
for (i = 1; i < cnt; i++) {
|
||||
for (i = 0; i < cnt; i++) {
|
||||
int idx = datums ? datums[i].index : i;
|
||||
|
||||
/* type ID 0 is void, skip it */
|
||||
if (idx == 0)
|
||||
continue;
|
||||
|
||||
err = btf_dump__dump_type(d, idx);
|
||||
if (err)
|
||||
goto done;
|
||||
|
|
|
|||
|
|
@ -21,6 +21,10 @@
|
|||
#endif
|
||||
#endif
|
||||
|
||||
enum {
|
||||
E0 = 1,
|
||||
};
|
||||
|
||||
struct holey {
|
||||
int c;
|
||||
long: 32;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user