diff options
author | Michal Ludvig <mludvig@suse.cz> | 2003-08-07 11:21:58 +0000 |
---|---|---|
committer | Michal Ludvig <mludvig@suse.cz> | 2003-08-07 11:21:58 +0000 |
commit | f22992f1153f76c2bd54d7f0714d18352e5cd8c2 (patch) | |
tree | 249bed8d3af3f78dcce3d5d7f8669287690728f6 | |
parent | e4989c00ae3f5e36b5749aad32796732ad96c310 (diff) | |
download | gdb-f22992f1153f76c2bd54d7f0714d18352e5cd8c2.zip gdb-f22992f1153f76c2bd54d7f0714d18352e5cd8c2.tar.gz gdb-f22992f1153f76c2bd54d7f0714d18352e5cd8c2.tar.bz2 |
2003-08-07 Michal Ludvig <mludvig@suse.cz>
* x86-64-tdep.c (x86_64_push_arguments): Skip the red zone.
-rw-r--r-- | gdb/ChangeLog | 2 | ||||
-rw-r--r-- | gdb/x86-64-tdep.c | 8 |
2 files changed, 10 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index e501922..29591f7 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,7 @@ 2003-08-07 Michal Ludvig <mludvig@suse.cz> + * x86-64-tdep.c (x86_64_dwarf_regmap): Correct register numbers. + (x86_64_push_arguments): Skip the red zone. 2003-08-04 Daniel Jacobowitz <drow@mvista.com> diff --git a/gdb/x86-64-tdep.c b/gdb/x86-64-tdep.c index 21a60f3..1d960a0 100644 --- a/gdb/x86-64-tdep.c +++ b/gdb/x86-64-tdep.c @@ -624,6 +624,14 @@ x86_64_push_arguments (struct regcache *regcache, int nargs, int stack_values_count = 0; int *stack_values; stack_values = alloca (nargs * sizeof (int)); + + /* Before storing anything to the stack we must skip + the "Red zone" (see the "Function calling sequence" section + of AMD64 ABI). + It could have already been skipped in the function's + prologue, but we don't care and will easily skip it once again. */ + sp -= 128; + for (i = 0; i < nargs; i++) { enum x86_64_reg_class class[MAX_CLASSES]; |