thanks a lot for the response,
I will try the new version, my current version seems too old.
$ pahole --version
v1.9
在 2021/10/12 上午2:55, Arnaldo Carvalho de Melo 写道:
Em Sun, Oct 10, 2021 at 02:09:10PM +0800, Xianting Tian escreveu:
Hi,
Sorry to disturb you, when I use below command to get info about 'struct
hvc_struct', it failed.
$ pahole -C hvc_struct vmlinux
die__process_function: tag not supported (INVALID)!
die__process_unit: DW_TAG_dwarf_procedure (0x36) @ <0x4ebf4c> not handled!
But when I try some common struct, it is OK.
$ pahole -C task_struct vmlinux
Could you help me how to fix the issue? thanks a lot.
Using:
⬢[acme@toolbox v5.14.0-rc6+]$ pahole --version
v1.22
I see no problems, be it from DWARF or from BTF, in the various ways to
ask for that struct:
⬢[acme@toolbox v5.14.0-rc6+]$ pahole -C hvc_struct vmlinux
struct hvc_struct {
struct tty_port port; /* 0 352 */
/* --- cacheline 5 boundary (320 bytes) was 32 bytes ago --- */
spinlock_t lock; /* 352 4 */
int index; /* 356 4 */
int do_wakeup; /* 360 4 */
/* XXX 4 bytes hole, try to pack */
char * outbuf; /* 368 8 */
int outbuf_size; /* 376 4 */
int n_outbuf; /* 380 4 */
/* --- cacheline 6 boundary (384 bytes) --- */
uint32_t vtermno; /* 384 4 */
/* XXX 4 bytes hole, try to pack */
const struct hv_ops * ops; /* 392 8 */
int irq_requested; /* 400 4 */
int data; /* 404 4 */
struct winsize ws; /* 408 8 */
struct work_struct tty_resize; /* 416 32 */
/* --- cacheline 7 boundary (448 bytes) --- */
struct list_head next; /* 448 16 */
long unsigned int flags; /* 464 8 */
/* size: 472, cachelines: 8, members: 15 */
/* sum members: 464, holes: 2, sum holes: 8 */
/* last cacheline: 24 bytes */
};
⬢[acme@toolbox v5.14.0-rc6+]$ pahole hvc_struct
struct hvc_struct {
struct tty_port port; /* 0 352 */
/* --- cacheline 5 boundary (320 bytes) was 32 bytes ago --- */
spinlock_t lock; /* 352 4 */
int index; /* 356 4 */
int do_wakeup; /* 360 4 */
/* XXX 4 bytes hole, try to pack */
char * outbuf; /* 368 8 */
int outbuf_size; /* 376 4 */
int n_outbuf; /* 380 4 */
/* --- cacheline 6 boundary (384 bytes) --- */
uint32_t vtermno; /* 384 4 */
/* XXX 4 bytes hole, try to pack */
const struct hv_ops * ops; /* 392 8 */
int irq_requested; /* 400 4 */
int data; /* 404 4 */
struct winsize ws; /* 408 8 */
struct work_struct tty_resize; /* 416 32 */
/* --- cacheline 7 boundary (448 bytes) --- */
struct list_head next; /* 448 16 */
long unsigned int flags; /* 464 8 */
/* size: 472, cachelines: 8, members: 15 */
/* sum members: 464, holes: 2, sum holes: 8 */
/* last cacheline: 24 bytes */
};
⬢[acme@toolbox v5.14.0-rc6+]$
⬢[acme@toolbox v5.14.0-rc6+]$ pahole -F dwarf -C hvc_struct vmlinux
struct hvc_struct {
struct tty_port port; /* 0 352 */
/* --- cacheline 5 boundary (320 bytes) was 32 bytes ago --- */
spinlock_t lock; /* 352 4 */
int index; /* 356 4 */
int do_wakeup; /* 360 4 */
/* XXX 4 bytes hole, try to pack */
char * outbuf; /* 368 8 */
int outbuf_size; /* 376 4 */
int n_outbuf; /* 380 4 */
/* --- cacheline 6 boundary (384 bytes) --- */
uint32_t vtermno; /* 384 4 */
/* XXX 4 bytes hole, try to pack */
const struct hv_ops * ops; /* 392 8 */
int irq_requested; /* 400 4 */
int data; /* 404 4 */
struct winsize ws; /* 408 8 */
struct work_struct tty_resize; /* 416 32 */
/* --- cacheline 7 boundary (448 bytes) --- */
struct list_head next; /* 448 16 */
long unsigned int flags; /* 464 8 */
/* size: 472, cachelines: 8, members: 15 */
/* sum members: 464, holes: 2, sum holes: 8 */
/* last cacheline: 24 bytes */
};
⬢[acme@toolbox v5.14.0-rc6+]$ pahole -F btf -C hvc_struct vmlinux
struct hvc_struct {
struct tty_port port; /* 0 352 */
/* --- cacheline 5 boundary (320 bytes) was 32 bytes ago --- */
spinlock_t lock; /* 352 4 */
int index; /* 356 4 */
int do_wakeup; /* 360 4 */
/* XXX 4 bytes hole, try to pack */
char * outbuf; /* 368 8 */
int outbuf_size; /* 376 4 */
int n_outbuf; /* 380 4 */
/* --- cacheline 6 boundary (384 bytes) --- */
uint32_t vtermno; /* 384 4 */
/* XXX 4 bytes hole, try to pack */
const struct hv_ops * ops; /* 392 8 */
int irq_requested; /* 400 4 */
int data; /* 404 4 */
struct winsize ws; /* 408 8 */
struct work_struct tty_resize; /* 416 32 */
/* --- cacheline 7 boundary (448 bytes) --- */
struct list_head next; /* 448 16 */
long unsigned int flags; /* 464 8 */
/* size: 472, cachelines: 8, members: 15 */
/* sum members: 464, holes: 2, sum holes: 8 */
/* last cacheline: 24 bytes */
};
⬢[acme@toolbox v5.14.0-rc6+]$ pahole --help | grep decl
-D, --decl_exclude=PREFIX exclude classes declared in files with PREFIX
-I, --show_decl_info Show the file and line number where the tags were
⬢[acme@toolbox v5.14.0-rc6+]$ pahole -IF dwarf -C hvc_struct vmlinux
/* Used at: /var/home/acme/git/perf/drivers/tty/hvc/hvc_console.c */
/* <65c08c8> /var/home/acme/git/perf/drivers/tty/hvc/hvc_console.h:35 */
struct hvc_struct {
struct tty_port port; /* 0 352 */
/* --- cacheline 5 boundary (320 bytes) was 32 bytes ago --- */
spinlock_t lock; /* 352 4 */
int index; /* 356 4 */
int do_wakeup; /* 360 4 */
/* XXX 4 bytes hole, try to pack */
char * outbuf; /* 368 8 */
int outbuf_size; /* 376 4 */
int n_outbuf; /* 380 4 */
/* --- cacheline 6 boundary (384 bytes) --- */
uint32_t vtermno; /* 384 4 */
/* XXX 4 bytes hole, try to pack */
const struct hv_ops * ops; /* 392 8 */
int irq_requested; /* 400 4 */
int data; /* 404 4 */
struct winsize ws; /* 408 8 */
struct work_struct tty_resize; /* 416 32 */
/* --- cacheline 7 boundary (448 bytes) --- */
struct list_head next; /* 448 16 */
long unsigned int flags; /* 464 8 */
/* size: 472, cachelines: 8, members: 15 */
/* sum members: 464, holes: 2, sum holes: 8 */
/* last cacheline: 24 bytes */
};
⬢[acme@toolbox v5.14.0-rc6+]$