----- Original Message -----
> Fix the extension trace.so for RHEL7.6 ,which moved
> ftrace_event_call.data into an anonymous union,and the
> previous offset has changed, so the trace.so extension
> module fails to load ,indicating "no commands registered:
> shared object unloaded".
Thanks Xu -- queued for crash-7.2.4:
https://github.com/crash-utility/crash/commit/f6d451d64fc91c8f0010d5b1fe96330e37845d31
Dave
> ---
> extensions/trace.c | 20 ++++++++++++++++++--
> 1 file changed, 18 insertions(+), 2 deletions(-)
>
> diff --git a/extensions/trace.c b/extensions/trace.c
> index 7d76699..ad71951 100644
> --- a/extensions/trace.c
> +++ b/extensions/trace.c
> @@ -853,8 +853,18 @@ static int syscall_get_enter_fields(ulong call, ulong
> *fields)
> inited = 1;
> data_offset = MAX(MEMBER_OFFSET("ftrace_event_call", "data"),
> MEMBER_OFFSET("trace_event_call", "data"));
> - if (data_offset < 0)
> - return -1;
> + if (data_offset < 0) {
> + /*
> + * rhel-7.6 moved the .data member into an anonymous union.
> + */
> + if (MEMBER_EXISTS("ftrace_event_call", "rh_data") &&
> + MEMBER_EXISTS("ftrace_event_data", "data")) {
> + data_offset = MEMBER_OFFSET("ftrace_event_call",
> "rh_data") +
> + MEMBER_OFFSET("ftrace_event_data", "data");
> + inited = 2;
> + } else
> + return -1;
> + }
>
> enter_fields_offset = MEMBER_OFFSET("syscall_metadata", "enter_fields");
> if (enter_fields_offset < 0)
> @@ -868,6 +878,12 @@ work:
> "read ftrace_event_call data", RETURN_ON_ERROR))
> return -1;
>
> + if (inited == 2) {
> + if (!readmem(metadata, KVADDR, &metadata, sizeof(metadata),
> + "read ftrace_event_call data (indirect rh_data)",
> RETURN_ON_ERROR))
> + return -1;
> + }
> +
> *fields = metadata + enter_fields_offset;
> return 0;
> }
> --
> 2.17.1
>
>
>
> --
> Crash-utility mailing list
> Crash-utility@redhat.com
> https://www.redhat.com/mailman/listinfo/crash-utility
>
--
Crash-utility mailing list
Crash-utility@redhat.com
https://www.redhat.com/mailman/listinfo/crash-utility