bugfix
authorJim Kingdon <jkingdon@engr.sgi.com>
Tue, 29 Jun 1993 18:53:40 +0000 (18:53 +0000)
committerJim Kingdon <jkingdon@engr.sgi.com>
Tue, 29 Jun 1993 18:53:40 +0000 (18:53 +0000)
gdb/config/pa/xm-pa.h

index 2a5072586290226e21b81624317817c8da36eab3..523baf1324b362a5b3981798389add9e71f45092 100644 (file)
@@ -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 \
This page took 0.02469 seconds and 4 git commands to generate.