This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch/rfc/hppa] handle setting gp for calling shlib functions


What happens if the function pointer value, rather than code start
address is passed into push dummy call? The entire value should be passed in, but this is a simple step in that direction.


This will certainly help, as long as we also have a hook later in
call_function_by_hand () that can twiddle the funcaddr before setting
the breakpoint. maybe just moving the call that converts a funcptr to an
address to after the push dummy call?

Yes, or find_function addr could return both.


btw, a related but slightly different question -- i don't see any code
in this path which will preserve and restore the call-clobbered registers when doing a call. how does gdb ensure that the register state before and after the call are the same? (i do see that there is
a testcase for this though.)

See generic_push_dummy_frame (the name is historic) which saves all registers in save_reggroup (which by default is all registers).


callfuncs.exp checks that this works, namely tests like:

PASS: gdb.base/callfuncs.exp: gdb function calls preserve register contents
PASS: gdb.base/callfuncs.exp: continue after stop in call dummy preserves register contents
PASS: gdb.base/callfuncs.exp: finish after stop in call dummy preserves register contents
PASS: gdb.base/callfuncs.exp: return after stop in call dummy preserves register contents
PASS: gdb.base/callfuncs.exp: nested call dummies preserve register contents


Andrew



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]