ips[0] = ip;
i = 1;
- fp = (((UWord*)fp)[0]);
- while (True) {
+ if (fp_min <= fp && fp < fp_max-4+1) {
- if (i >= n_ips)
- break;
+ /* initial FP is sane; keep going */
+ fp = (((UWord*)fp)[0]);
- /* Try to derive a new (ip,fp) pair from the current set. */
+ while (True) {
- if (fp_min <= fp && fp <= fp_max) {
- /* fp looks sane, so use it. */
+ if (i >= n_ips)
+ break;
- if (i == 1 && lr_is_first_RA)
- ip = lr;
- else
- ip = (((UWord*)fp)[1]);
+ /* Try to derive a new (ip,fp) pair from the current set. */
- fp = (((UWord*)fp)[0]);
- ips[i++] = ip;
- if (debug)
- VG_(printf)(" ipsF[%d]=%08p\n", i-1, ips[i-1]);
- continue;
- }
+ if (fp_min <= fp && fp <= fp_max) {
+ /* fp looks sane, so use it. */
- /* No luck there. We have to give up. */
- break;
+ if (i == 1 && lr_is_first_RA)
+ ip = lr;
+ else
+ ip = (((UWord*)fp)[1]);
+
+ fp = (((UWord*)fp)[0]);
+ ips[i++] = ip;
+ if (debug)
+ VG_(printf)(" ipsF[%d]=%08p\n", i-1, ips[i-1]);
+ continue;
+ }
+
+ /* No luck there. We have to give up. */
+ break;
+ }
}
# else