/* Darwin support for GDB, the GNU debugger.
- Copyright (C) 1997-2017 Free Software Foundation, Inc.
+ Copyright (C) 1997-2020 Free Software Foundation, Inc.
Contributed by Apple Computer, Inc.
#include "i386-darwin-tdep.h"
#include "solib.h"
#include "solib-darwin.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
#include <algorithm>
/* Offsets into the struct i386_thread_state where we'll find the saved regs.
return i386_sigtramp_p (this_frame);
}
-/* Check wether TYPE is a 128-bit vector (__m128, __m128d or __m128i). */
+/* Check whether TYPE is a 128-bit vector (__m128, __m128d or __m128i). */
static int
i386_m128_p (struct type *type)
{
- return (TYPE_CODE (type) == TYPE_CODE_ARRAY && TYPE_VECTOR (type)
+ return (type->code () == TYPE_CODE_ARRAY && TYPE_VECTOR (type)
&& TYPE_LENGTH (type) == 16);
}
aligned to 8-byte boundaries.
7. [...] The caller aligns 128-bit vectors in the parameter area to
16-byte boundaries. */
- if (TYPE_CODE (type) == TYPE_CODE_ARRAY && TYPE_VECTOR (type))
+ if (type->code () == TYPE_CODE_ARRAY && TYPE_VECTOR (type))
return TYPE_LENGTH (type);
/* 4. The caller places all the fields of structures (or unions) with no
vector elements in the parameter area. These structures are 4-byte
aligned.
5. The caller places structures with vector elements on the stack,
16-byte aligned. */
- if (TYPE_CODE (type) == TYPE_CODE_STRUCT
- || TYPE_CODE (type) == TYPE_CODE_UNION)
+ if (type->code () == TYPE_CODE_STRUCT
+ || type->code () == TYPE_CODE_UNION)
{
int i;
int res = 4;
i386_darwin_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
struct regcache *regcache, CORE_ADDR bp_addr,
int nargs, struct value **args, CORE_ADDR sp,
- int struct_return, CORE_ADDR struct_addr)
+ function_call_return_method return_method,
+ CORE_ADDR struct_addr)
{
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
int args_space = 0;
int num_m128 = 0;
- if (struct_return)
+ if (return_method == return_method_struct)
{
if (write_pass)
{
if (write_pass)
{
const gdb_byte *val = value_contents_all (args[i]);
- regcache_raw_write
- (regcache, I387_MM0_REGNUM(tdep) + num_m128, val);
+ regcache->raw_write (I387_MM0_REGNUM(tdep) + num_m128, val);
}
num_m128++;
}
/* Finally, update the stack pointer... */
store_unsigned_integer (buf, 4, byte_order, sp);
- regcache_cooked_write (regcache, I386_ESP_REGNUM, buf);
+ regcache->cooked_write (I386_ESP_REGNUM, buf);
/* ...and fake a frame pointer. */
- regcache_cooked_write (regcache, I386_EBP_REGNUM, buf);
+ regcache->cooked_write (I386_EBP_REGNUM, buf);
/* MarkK wrote: This "+ 8" is all over the place:
(i386_frame_this_id, i386_sigtramp_frame_this_id,
return GDB_OSABI_UNKNOWN;
}
+void _initialize_i386_darwin_tdep ();
void
-_initialize_i386_darwin_tdep (void)
+_initialize_i386_darwin_tdep ()
{
gdbarch_register_osabi_sniffer (bfd_arch_unknown, bfd_target_mach_o_flavour,
i386_mach_o_osabi_sniffer);