Re: [PATCH 0/2] Display local variables & function parameters from stack frames
by Dave Anderson
----- "Sharyathi Nagesh" <sharyath(a)in.ibm.com> wrote:
> Hi
> Mohan, Sachin and myself have implemented this feature in crash to
> display local variables and arguments from vmcore dumps. This feature
> introduces a new command 'local' in crash utility which provides
> interface for stack unwinding along with option to display local
> variables and arguments. This patch is based on crash utility
> crash-4.0-8.9. It has dependency on libdw/libelf libraries provided by
> elfutils package.
> This has been tested on dumps taken on ppc64 machine. We were able to
> unwind the stack as well as display local variables, arguments. It
> currently displays values for non-optimized variables only (this fallows
> gdb's convention)
>
> TODO Items:
> 1. Support on x86_64 and x86 need to be implemented/tested
> 2. Makefile need to be updated to help packaging this feature
>
> Regards
> Sharyathi Nagesh
A couple suggestions -- move the get_netdump_arch() and get_regs_from_elf_notes()
prototypes to defs.h under the others listed for netdump.c.
Then remove this from local.c:
+ #include <../netdump.h>
By removing the netdump.h inclusion, you can build your package with just
the "defs.h" file like so:
# make -f local.mk TARGET=X86_64
gcc -nostartfiles -shared -g -rdynamic -o local.so local.c unwind_dw.c -fPIC \
-ldw -L ../../elfutils-0.137/libdw -I ../../elfutils-0.137/libdw \
-I ../../elfutils-0.137/libelf/ -DX86_64 -Wall;
#
Also, the TARGET_FLAGS setting you have in your local.mk doesn't do anything.
I see that you copied it from the sial.mk file, where it's used as a replacement
in sial.mk to replace the suggested "-D$(TARGET) $(TARGET_CFLAGS)" part of the
compile line. For x86_64 nothing is needed in TARGET_CFLAGS -- these are what
the supported arches need:
#define TARGET_CFLAGS_X86 "TARGET_CFLAGS=-D_FILE_OFFSET_BITS=64"
#define TARGET_CFLAGS_ALPHA "TARGET_CFLAGS="
#define TARGET_CFLAGS_PPC "TARGET_CFLAGS=-D_FILE_OFFSET_BITS=64"
#define TARGET_CFLAGS_IA64 "TARGET_CFLAGS="
#define TARGET_CFLAGS_S390 "TARGET_CFLAGS=-D_FILE_OFFSET_BITS=64"
#define TARGET_CFLAGS_S390X "TARGET_CFLAGS="
#define TARGET_CFLAGS_PPC64 "TARGET_CFLAGS=-m64"
#define TARGET_CFLAGS_X86_64 "TARGET_CFLAGS="
So I presume you do need the -m64 for ppc64, but I don't see how your
local.mk file would pick it up? I also don't understand where your extra
$ADD_CFLAGS is supposed to get set up?
For that matter, the additional -L and -I for the elfutils stuff you've added
seem to be unnecessary, just -ldw seems to be suffice:
# make -f local2.mk TARGET=X86_64
gcc -nostartfiles -shared -g -rdynamic -o local.so local.c unwind_dw.c -fPIC -ldw -DX86_64 -Wall;
#
Thanks,
Dave
15 years, 4 months
[PATCH 0/2] Display local variables & function parameters from stack frames
by Sharyathi Nagesh
Hi
Mohan, Sachin and myself have implemented this feature in crash to
display local variables and arguments from vmcore dumps. This feature
introduces a new command 'local' in crash utility which provides
interface for stack unwinding along with option to display local
variables and arguments. This patch is based on crash utility
crash-4.0-8.9. It has dependency on libdw/libelf libraries provided by
elfutils package.
This has been tested on dumps taken on ppc64 machine. We were able to
unwind the stack as well as display local variables, arguments. It
currently displays values for non-optimized variables only (this fallows
gdb's convention)
TODO Items:
1. Support on x86_64 and x86 need to be implemented/tested
2. Makefile need to be updated to help packaging this feature
Regards
Sharyathi Nagesh
15 years, 4 months