* x86-64-tdep.c: Fix some formatting problems, mostly in comments.

(x86_64_push_return_address): Add comment.
(x86_64_pop_frame): Make static.
(examine_argument): Clarify comment.
(x86_64_skip_prologue): Make prolog_expact variable static.
This commit is contained in:
Mark Kettenis 2002-10-26 10:37:45 +00:00
parent 9f1549cccc
commit 26abbdc424
2 changed files with 40 additions and 34 deletions

View File

@ -1,5 +1,11 @@
2002-10-26 Mark Kettenis <kettenis@gnu.org>
* x86-64-tdep.c: Fix some formatting problems, mostly in comments.
(x86_64_push_return_address): Add comment.
(x86_64_pop_frame): Make static.
(examine_argument): Clarify comment.
(x86_64_skip_prologue): Make prolog_expact variable static.
* dwarf2cfi.c: Fix some formatting problems.
(context_cpy, read_encoded_pointer): Clarify comments.

View File

@ -1,7 +1,6 @@
/* Target-dependent code for the x86-64 for GDB, the GNU debugger.
Copyright 2001, 2002 Free Software Foundation, Inc.
Contributed by Jiri Smid, SuSE Labs.
This file is part of GDB.
@ -251,18 +250,20 @@ static const char *valid_flavours[] = {
};
static const char *disassembly_flavour = att_flavour;
/* Push the return address (pointing to the call dummy) onto the stack
and return the new value for the stack pointer. */
static CORE_ADDR
x86_64_push_return_address (CORE_ADDR pc, CORE_ADDR sp)
{
char buf[8];
store_unsigned_integer (buf, 8, CALL_DUMMY_ADDRESS ());
write_memory (sp - 8, buf, 8);
return sp - 8;
}
void
static void
x86_64_pop_frame (void)
{
generic_pop_current_frame (cfi_pop_frame);
@ -300,8 +301,8 @@ merge_classes (enum x86_64_reg_class class1, enum x86_64_reg_class class2)
if (class1 == class2)
return class1;
/* Rule #2: If one of the classes is NO_CLASS, the resulting class is
the other class. */
/* Rule #2: If one of the classes is NO_CLASS, the resulting class
is the other class. */
if (class1 == X86_64_NO_CLASS)
return class2;
if (class2 == X86_64_NO_CLASS)
@ -328,15 +329,13 @@ merge_classes (enum x86_64_reg_class class1, enum x86_64_reg_class class2)
return X86_64_SSE_CLASS;
}
/* Classify the argument type. CLASSES will be filled by the register
class used to pass each word of the operand. The number of words
is returned. In case the parameter should be passed in memory, 0
is returned. As a special case for zero sized containers,
classes[0] will be NO_CLASS and 1 is returned.
/* Classify the argument type.
CLASSES will be filled by the register class used to pass each word
of the operand. The number of words is returned. In case the parameter
should be passed in memory, 0 is returned. As a special case for zero
sized containers, classes[0] will be NO_CLASS and 1 is returned.
See the x86-64 PS ABI for details.
*/
See the x86-64 psABI for details. */
static int
classify_argument (struct type *type,
@ -361,8 +360,8 @@ classify_argument (struct type *type,
for (i = 0; i < words; i++)
classes[i] = X86_64_NO_CLASS;
/* Zero sized arrays or structures are NO_CLASS. We return 0 to
signalize memory class, so handle it as special case. */
/* Zero sized arrays or structures are NO_CLASS. We return 0
to signalize memory class, so handle it as special case. */
if (!words)
{
classes[0] = X86_64_NO_CLASS;
@ -445,7 +444,7 @@ classify_argument (struct type *type,
&& (i == 0 || classes[i - 1] != X86_64_SSE_CLASS))
classes[i] = X86_64_SSE_CLASS;
/* X86_64_X87UP_CLASS should be preceeded by X86_64_X87_CLASS. */
/* X86_64_X87UP_CLASS should be preceeded by X86_64_X87_CLASS. */
if (classes[i] == X86_64_X87UP_CLASS
&& (i == 0 || classes[i - 1] != X86_64_X87_CLASS))
classes[i] = X86_64_SSE_CLASS;
@ -499,8 +498,9 @@ classify_argument (struct type *type,
"classify_argument: unknown argument type");
}
/* Examine the argument and return set number of register required in each
class. Return 0 ifif parameter should be passed in memory. */
/* Examine the argument and set *INT_NREGS and *SSE_NREGS to the
number of registers required based on the information passed in
CLASSES. Return 0 if parameter should be passed in memory. */
static int
examine_argument (enum x86_64_reg_class classes[MAX_CLASSES],
@ -538,9 +538,9 @@ examine_argument (enum x86_64_reg_class classes[MAX_CLASSES],
#define RET_SSE_REGS 2
/* Check if the structure in value_type is returned in registers or in
memory. If this function returns 1, gdb will call STORE_STRUCT_RETURN and
EXTRACT_STRUCT_VALUE_ADDRESS else STORE_RETURN_VALUE and EXTRACT_RETURN_VALUE
will be used. */
memory. If this function returns 1, GDB will call
STORE_STRUCT_RETURN and EXTRACT_STRUCT_VALUE_ADDRESS else
STORE_RETURN_VALUE and EXTRACT_RETURN_VALUE will be used. */
int
x86_64_use_struct_convention (int gcc_p, struct type *value_type)
{
@ -554,7 +554,6 @@ x86_64_use_struct_convention (int gcc_p, struct type *value_type)
needed_intregs > RET_INT_REGS || needed_sseregs > RET_SSE_REGS);
}
/* Extract from an array REGBUF containing the (raw) register state, a
function return value of TYPE, and copy that, in virtual format,
into VALBUF. */
@ -637,10 +636,10 @@ x86_64_extract_return_value (struct type *type, char *regbuf, char *valbuf)
}
}
/* Handled by unwind informations. */
static void
x86_64_frame_init_saved_regs (struct frame_info *fi)
{
/* Do nothing. Everything is handled by the stack unwinding code. */
}
#define INT_REGS 6
@ -862,30 +861,31 @@ x86_64_skip_prologue (CORE_ADDR pc)
struct symtab_and_line v_sal;
struct symbol *v_function;
CORE_ADDR endaddr;
unsigned char prolog_buf[PROLOG_BUFSIZE];
/* We will handle only functions beginning with:
55 pushq %rbp
48 89 e5 movq %rsp,%rbp
*/
unsigned char prolog_expect[PROLOG_BUFSIZE] = { 0x55, 0x48, 0x89, 0xe5 },
prolog_buf[PROLOG_BUFSIZE];
/* We will handle only functions starting with: */
static unsigned char prolog_expect[PROLOG_BUFSIZE] =
{
0x55, /* pushq %rbp */
0x48, 0x89, 0xe5 /* movq %rsp, %rbp */
};
read_memory (pc, (char *) prolog_buf, PROLOG_BUFSIZE);
/* First check, whether pc points to pushq %rbp, movq %rsp,%rbp. */
/* 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; /* ... no, it doesn't. Nothing to skip. */
return pc; /* ... no, it doesn't. Nothing to skip. */
/* OK, we have found the prologue and want PC of the first
/* OK, we have found the prologue and want PC of the first
non-prologue instruction. */
pc += PROLOG_BUFSIZE;
v_function = find_pc_function (pc);
v_sal = find_pc_line (pc, 0);
/* If pc doesn't point to a function with debuginfo,
some of the following may be NULL. */
/* If pc doesn't point to a function with debuginfo, some of the
following may be NULL. */
if (!v_function || !v_function->ginfo.value.block || !v_sal.symtab)
return pc;