diff options
author | Elena Zannoni <ezannoni@kwikemart.cygnus.com> | 2003-04-04 19:30:49 +0000 |
---|---|---|
committer | Elena Zannoni <ezannoni@kwikemart.cygnus.com> | 2003-04-04 19:30:49 +0000 |
commit | 50c46a0d6f9207a8ce22b29bb537f549c688a2ff (patch) | |
tree | 0a68c179abbeb10050b68338885e0541f8c24d07 /gdb | |
parent | 97f2bd8bacc60d16694951c323cdf1c7213b75f5 (diff) | |
download | gdb-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/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/x86-64-tdep.c | 18 |
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: |