mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-24 02:24:46 +08:00
Fix call functions command bug in 64 bits programs for AIX
In AIX for 64 bit programs we need to zero extend variables of integer or enum or char data type. Otherwise a zero will get dumped in the register as we memset our word to 0 and we copy non zero extended contents to the cache.
This commit is contained in:
parent
1c01b23603
commit
7aae1a86b3
@ -400,7 +400,15 @@ rs6000_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
|
||||
gdb_byte word[PPC_MAX_REGISTER_SIZE];
|
||||
|
||||
memset (word, 0, reg_size);
|
||||
memcpy (word, value_contents (arg).data (), len);
|
||||
if (type->code () == TYPE_CODE_INT
|
||||
|| type->code () == TYPE_CODE_ENUM
|
||||
|| type->code () == TYPE_CODE_BOOL
|
||||
|| type->code () == TYPE_CODE_CHAR)
|
||||
/* Sign or zero extend the "int" into a "word". */
|
||||
store_unsigned_integer (word, reg_size, byte_order,
|
||||
unpack_long (type, value_contents (arg).data ()));
|
||||
else
|
||||
memcpy (word, value_contents (arg).data (), len);
|
||||
regcache->cooked_write (tdep->ppc_gp0_regnum + 3 +ii, word);
|
||||
}
|
||||
++argno;
|
||||
|
Loading…
Reference in New Issue
Block a user