aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorElena Zannoni <ezannoni@kwikemart.cygnus.com>2003-04-04 19:30:49 +0000
committerElena Zannoni <ezannoni@kwikemart.cygnus.com>2003-04-04 19:30:49 +0000
commit50c46a0d6f9207a8ce22b29bb537f549c688a2ff (patch)
tree0a68c179abbeb10050b68338885e0541f8c24d07 /gdb
parent97f2bd8bacc60d16694951c323cdf1c7213b75f5 (diff)
downloadgdb-50c46a0d6f9207a8ce22b29bb537f549c688a2ff.zip
gdb-50c46a0d6f9207a8ce22b29bb537f549c688a2ff.tar.gz
gdb-50c46a0d6f9207a8ce22b29bb537f549c688a2ff.tar.bz2
2003-04-04 Elena Zannoni <ezannoni@redhat.com>
* x86-64-tdep.c (x86_64_push_arguments): Handle correctly the signed integer case. (classify_argument): Handle enumerations and references.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/x86-64-tdep.c18
2 files changed, 19 insertions, 5 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 83cb701..a2afc12 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2003-04-04 Elena Zannoni <ezannoni@redhat.com>
+
+ * x86-64-tdep.c (x86_64_push_arguments): Handle correctly the
+ signed integer case.
+ (classify_argument): Handle enumerations and references.
+
2003-04-04 Andrew Cagney <cagney@redhat.com>
* frame.c (create_sentinel_frame): Initialize the sentinel frame's
diff --git a/gdb/x86-64-tdep.c b/gdb/x86-64-tdep.c
index 5d43e01..5b8abf6 100644
--- a/gdb/x86-64-tdep.c
+++ b/gdb/x86-64-tdep.c
@@ -471,6 +471,8 @@ classify_argument (struct type *type,
return 2;
}
break;
+ case TYPE_CODE_ENUM:
+ case TYPE_CODE_REF:
case TYPE_CODE_INT:
case TYPE_CODE_PTR:
switch (bytes)
@@ -700,11 +702,17 @@ x86_64_push_arguments (int nargs, struct value **args, CORE_ADDR sp,
intreg += 2;
break;
case X86_64_INTEGERSI_CLASS:
- deprecated_write_register_gen (int_parameter_registers[intreg / 2],
- VALUE_CONTENTS_ALL (args[i]) + offset);
- offset += 8;
- intreg++;
- break;
+ {
+ LONGEST num
+ = extract_signed_integer (VALUE_CONTENTS_ALL (args[i])
+ + offset, 4);
+ regcache_raw_write_signed (current_regcache,
+ int_parameter_registers[intreg / 2], num);
+
+ offset += 8;
+ intreg++;
+ break;
+ }
case X86_64_SSEDF_CLASS:
case X86_64_SSESF_CLASS:
case X86_64_SSE_CLASS: