This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch] Pushing Inferior Function Arguments onto Stack on PowerPC64 machines


On Wed, Oct 04, 2006 at 04:43:04PM -0400, David Edelsohn wrote:
> >>>>> Daniel Jacobowitz writes:
> 
> >> From reading the PPC64 Platform ABI  at
> >> http://www.freestandards.org/spec/ELF/ppc64/PPC-elf64abi-1.9.html
> >> ( see section 3.1.7)  it appears that on Big Endian machines,
> >> values are  left aligned. But looks like GCC has different rules and right
> >> aligns the values which are put on the
> >> registers. This matches  Andrew Cagney  comment in the code, that says that
> >> ABI specifies that the values
> >> should be left aligned. But like I said in my earlier note, GCC appears to
> >> want the values to be
> >> right aligned.  Would appreciate another set of eyes looking at it as I
> >> don't have too much experience
> >> in this area.
> 
> 	The PPC64 Linux ABI changed.  AIX always pads upwards.  PPC64
> Linux pads aggregates smaller than a doubleword downward.
> 
> "An aggregate or union smaller than one doubleword in size is padded so
> that it appears in the least significant bits of the doubleword.  All
> others are padded, if necessary, at their tail."

Thank you (and thanks to Andreas for answering, too).

In that case, the Linux and AIX configurations ought to be calling
different functions here.  Janani, if you want to try to fix this,
I would recommend:

  - Rename the existing function.  Add an argument to it, is_linux.
  - Create a wrapper function with the old name, in the same file,
    for AIX to use.
  - Create a wrapper function in ppc-linux-tdep.c which calls it with
    is_linux == 1.
  - Call set_gdbarch_push_dummy_call in the PPC64 section of
    ppc_linux_init_abi.

-- 
Daniel Jacobowitz
CodeSourcery


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]