| OLD | NEW |
| 1 /* Native support code for PPC AIX, for GDB the GNU debugger. | 1 /* Native support code for PPC AIX, for GDB the GNU debugger. |
| 2 | 2 |
| 3 Copyright (C) 2006-2012 Free Software Foundation, Inc. | 3 Copyright (C) 2006-2012 Free Software Foundation, Inc. |
| 4 | 4 |
| 5 Free Software Foundation, Inc. | 5 Free Software Foundation, Inc. |
| 6 | 6 |
| 7 This file is part of GDB. | 7 This file is part of GDB. |
| 8 | 8 |
| 9 This program is free software; you can redistribute it and/or modify | 9 This program is free software; you can redistribute it and/or modify |
| 10 it under the terms of the GNU General Public License as published by | 10 it under the terms of the GNU General Public License as published by |
| (...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 417 { | 417 { |
| 418 CORE_ADDR tocvalue = (*rs6000_find_toc_address_hook) (func_addr); | 418 CORE_ADDR tocvalue = (*rs6000_find_toc_address_hook) (func_addr); |
| 419 regcache_raw_write_signed (regcache, tdep->ppc_toc_regnum, tocvalue); | 419 regcache_raw_write_signed (regcache, tdep->ppc_toc_regnum, tocvalue); |
| 420 } | 420 } |
| 421 | 421 |
| 422 target_store_registers (regcache, -1); | 422 target_store_registers (regcache, -1); |
| 423 return sp; | 423 return sp; |
| 424 } | 424 } |
| 425 | 425 |
| 426 static enum return_value_convention | 426 static enum return_value_convention |
| 427 rs6000_return_value (struct gdbarch *gdbarch, struct type *func_type, | 427 rs6000_return_value (struct gdbarch *gdbarch, struct value *function, |
| 428 struct type *valtype, struct regcache *regcache, | 428 struct type *valtype, struct regcache *regcache, |
| 429 gdb_byte *readbuf, const gdb_byte *writebuf) | 429 gdb_byte *readbuf, const gdb_byte *writebuf) |
| 430 { | 430 { |
| 431 struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); | 431 struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); |
| 432 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); | 432 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); |
| 433 gdb_byte buf[8]; | |
| 434 | 433 |
| 435 /* The calling convention this function implements assumes the | 434 /* The calling convention this function implements assumes the |
| 436 processor has floating-point registers. We shouldn't be using it | 435 processor has floating-point registers. We shouldn't be using it |
| 437 on PowerPC variants that lack them. */ | 436 on PowerPC variants that lack them. */ |
| 438 gdb_assert (ppc_floating_point_unit_p (gdbarch)); | 437 gdb_assert (ppc_floating_point_unit_p (gdbarch)); |
| 439 | 438 |
| 440 /* AltiVec extension: Functions that declare a vector data type as a | 439 /* AltiVec extension: Functions that declare a vector data type as a |
| 441 return value place that return value in VR2. */ | 440 return value place that return value in VR2. */ |
| 442 if (TYPE_CODE (valtype) == TYPE_CODE_ARRAY && TYPE_VECTOR (valtype) | 441 if (TYPE_CODE (valtype) == TYPE_CODE_ARRAY && TYPE_VECTOR (valtype) |
| 443 && TYPE_LENGTH (valtype) == 16) | 442 && TYPE_LENGTH (valtype) == 16) |
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 576 s = find_pc_section (addr); | 575 s = find_pc_section (addr); |
| 577 | 576 |
| 578 /* Normally, functions live inside a section that is executable. | 577 /* Normally, functions live inside a section that is executable. |
| 579 So, if ADDR points to a non-executable section, then treat it | 578 So, if ADDR points to a non-executable section, then treat it |
| 580 as a function descriptor and return the target address iff | 579 as a function descriptor and return the target address iff |
| 581 the target address itself points to a section that is executable. */ | 580 the target address itself points to a section that is executable. */ |
| 582 if (s && (s->the_bfd_section->flags & SEC_CODE) == 0) | 581 if (s && (s->the_bfd_section->flags & SEC_CODE) == 0) |
| 583 { | 582 { |
| 584 CORE_ADDR pc = 0; | 583 CORE_ADDR pc = 0; |
| 585 struct obj_section *pc_section; | 584 struct obj_section *pc_section; |
| 586 struct gdb_exception e; | 585 volatile struct gdb_exception e; |
| 587 | 586 |
| 588 TRY_CATCH (e, RETURN_MASK_ERROR) | 587 TRY_CATCH (e, RETURN_MASK_ERROR) |
| 589 { | 588 { |
| 590 pc = read_memory_unsigned_integer (addr, tdep->wordsize, byte_order); | 589 pc = read_memory_unsigned_integer (addr, tdep->wordsize, byte_order); |
| 591 } | 590 } |
| 592 if (e.reason < 0) | 591 if (e.reason < 0) |
| 593 { | 592 { |
| 594 /* An error occured during reading. Probably a memory error | 593 /* An error occured during reading. Probably a memory error |
| 595 due to the section not being loaded yet. This address | 594 due to the section not being loaded yet. This address |
| 596 cannot be a function descriptor. */ | 595 cannot be a function descriptor. */ |
| (...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 785 gdbarch_register_osabi_sniffer (bfd_arch_powerpc, | 784 gdbarch_register_osabi_sniffer (bfd_arch_powerpc, |
| 786 bfd_target_xcoff_flavour, | 785 bfd_target_xcoff_flavour, |
| 787 rs6000_aix_osabi_sniffer); | 786 rs6000_aix_osabi_sniffer); |
| 788 | 787 |
| 789 gdbarch_register_osabi (bfd_arch_rs6000, 0, GDB_OSABI_AIX, | 788 gdbarch_register_osabi (bfd_arch_rs6000, 0, GDB_OSABI_AIX, |
| 790 rs6000_aix_init_osabi); | 789 rs6000_aix_init_osabi); |
| 791 gdbarch_register_osabi (bfd_arch_powerpc, 0, GDB_OSABI_AIX, | 790 gdbarch_register_osabi (bfd_arch_powerpc, 0, GDB_OSABI_AIX, |
| 792 rs6000_aix_init_osabi); | 791 rs6000_aix_init_osabi); |
| 793 } | 792 } |
| 794 | 793 |
| OLD | NEW |