Index: x86-64-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/x86-64-tdep.c,v retrieving revision 1.13 diff -c -3 -p -r1.13 x86-64-tdep.c *** x86-64-tdep.c 6 Apr 2002 00:02:50 -0000 1.13 --- x86-64-tdep.c 26 Apr 2002 14:06:54 -0000 *************** static struct register_info x86_64_regis *** 116,121 **** --- 116,124 ---- int x86_64_num_regs = X86_64_NUM_REGS; int x86_64_num_gregs = X86_64_NUM_GREGS; + /* Did we already print a note about frame pointer? */ + int omit_fp_note_printed = 0; + /* Number of bytes of storage in the actual machine representation for register REGNO. */ int *************** x86_64_skip_prologue (CORE_ADDR pc) *** 811,820 **** read_memory (pc, (char *) prolog_buf, PROLOG_BUFSIZE); ! /* First check, whether pc points to pushq %rbp, movq %rsp,%rbp. */ ! for (i = 0; i < PROLOG_BUFSIZE; i++) ! if (prolog_expect[i] != prolog_buf[i]) return pc; v_function = find_pc_function (pc); v_sal = find_pc_line (pc, 0); --- 814,836 ---- read_memory (pc, (char *) prolog_buf, PROLOG_BUFSIZE); ! /* First check, whether pc points to pushq %rbp. If not, ! * print a recommendation to enable frame pointer. */ ! if (prolog_expect[0] != prolog_buf[0]) ! { ! if (!omit_fp_note_printed) ! { ! printf_filtered ! ("NOTE: This function doesn't seem to have a valid prologue.\n" ! " Try to add -fno-omit-frame-pointer tou your gcc's CFLAGS.\n"); ! omit_fp_note_printed++; ! } return pc; + } + /* Valid prolog continues with movq %rsp,%rbp. */ + for (i = 1; i < PROLOG_BUFSIZE; i++) + if (prolog_expect[i] != prolog_buf[i]) + return pc + 1; /* First instruction after pushq %rbp. */ v_function = find_pc_function (pc); v_sal = find_pc_line (pc, 0);