This is the mail archive of the gdb-patches@sourceware.org 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] | |
Hello,
GDB is currently unable to unwind past stack-check probes that are
inserted by the compiler when compiling with -stack-check. The attached
patch adds handling for the sequences currently emitted by GCC. Eric
Botcazou told us that they can take 3 forms:
1. A single probe
sethi <some immediate>,%g1
sub %sp, %g1, %g1
clr [%g1 - some immediate]
2. A small number of probes (at most 5)
sethi <some immediate>,%g1
sub %sp, %g1, %g1
clr [%g1]
add %g1, -<some immediate>, %g1
clr [%g1]
[...]
add %g1, -<some immediate>, %g1
clr [%g1]
clr [%g1 - some immediate]
3. A probing loop
sethi <some immediate>,%g1
sub %sp, %g1, %g1
sethi <some immediate>, %g4
sub %g1, %g4, %g4
cmp %g1, %g4
be <disp>
add %g1, -<some immediate>, %g1
ba <disp>
clr [%g1]
clr [%g4 - some immediate]
2007-03-28 Joel Brobecker <brobecker@adacore.com>
* sparc-tdep.c (X_RS2): New macro.
(sparc_skip_stack_check): New function.
(sparc_analyze_prologue): Adjust PC past stack probing
sequence if necessary.
Tested on sparc-solaris, no regression.
OK to apply?
Thanks,
--
Joel
PS: Do other people think that it is simpler for the human brain to understand
if (pc >= current_pc)
than
if (current_pc <= pc)
In other words, the boundary value is put on the rhs of the condition,
and the variable value is put on the lhs... It's just an aesthetic
consideration, but I can change it if others agree.
Attachment:
stack-check.diff
Description: Text document
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |