aboutsummaryrefslogtreecommitdiff
path: root/ld/pe-dll.c
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2013-11-21 15:20:09 +0000
committerPedro Alves <palves@redhat.com>2013-11-22 13:53:39 +0000
commit194cca41192efa65f710967e3149bbc813c12b22 (patch)
treea36148b875d93eafe33dc1cea95072c0205aeb8f /ld/pe-dll.c
parent33f8fe58b9a55a0075a90cc9080a1716221a3f81 (diff)
downloadgdb-194cca41192efa65f710967e3149bbc813c12b22.zip
gdb-194cca41192efa65f710967e3149bbc813c12b22.tar.gz
gdb-194cca41192efa65f710967e3149bbc813c12b22.tar.bz2
Make use of the frame stash to detect wider stack cycles.
Given we already have the frame id stash, which holds the ids of all frames in the chain, detecting corrupted stacks with wide stack cycles with non-consecutive dup frame ids is just as cheap as just detecting cycles in consecutive frames: #0 frame_id1 #1 frame_id2 #2 frame_id3 #3 frame_id1 #4 frame_id2 #5 frame_id3 #6 frame_id1 ... forever ... We just need to check whether the stash already knows about a given frame id instead of comparing the ids of the previous/this frames. Tested on x86_64 Fedora 17. gdb/ 2013-11-22 Pedro Alves <palves@redhat.com> Tom Tromey <tromey@redhat.com> * frame.c (frame_stash_add): Now returns whether a frame with the same ID was already known. (compute_frame_id): New function, factored out from get_frame_id. (get_frame_id): No longer lazilly compute the frame id here. (get_prev_frame_if_no_cycle): New function. Detects wider stack cycles. (get_prev_frame_1): Use it instead of get_prev_frame_raw directly, and checking for stack cycles here.
Diffstat (limited to 'ld/pe-dll.c')
0 files changed, 0 insertions, 0 deletions