Browse Source

bugfix

gdb-4_18-branch
Jim Kingdon 34 years ago
parent
commit
a4374df58d
  1. 18
      gdb/config/pa/xm-pa.h

18
gdb/config/pa/xm-pa.h

@ -3,16 +3,18 @@
#define MAKEVA_START(list) \
list->argindex = list->nargs * list->max_arg_size;
/* In addition to having the arguments passed with the first ones at the
highest memory addresses, the pa also apparently aligns each argument
to the size of that argument. This only works because the caller only
deals in 4 and 8 byte arguments. If we wanted to handle args > 8 bytes,
we would have to pass the address by reference. */
#define MAKEVA_ARG(list, argaddr, argsize) \
list->argindex = (list->argindex - argsize) & ~ (argsize - 1); \
memcpy (&list->arg_bytes[list->argindex], argaddr, argsize);
if (argsize > 8) \
/* Currently this never happens; printf_command only uses argsize */ \
/* of sizeof (int), sizeof (double), or sizeof (long long). */ \
error ("MAKEVA_ARG not fully written for hp-pa"); \
memcpy (&list->arg_bytes[list->argindex - argsize], argaddr, argsize); \
if (argsize <= 4) \
list->argindex -= 4; \
else if (argsize <= 8) \
list->argindex -= 8; \
/* Apparently the address of the arglist is the address right after the args
/* The address of the arglist is the address right after the args
(which is what you'd expect). */
#define MAKEVA_END(list) \
return (va_list) (list->arg_bytes \

Loading…
Cancel
Save