aboutsummaryrefslogtreecommitdiff
path: root/gdb/arch-utils.c
diff options
context:
space:
mode:
authorJan Kratochvil <jan.kratochvil@redhat.com>2014-05-14 14:08:57 -0600
committerJan Kratochvil <jan.kratochvil@redhat.com>2014-12-12 22:25:37 +0100
commitf208eee0f3a4f42a0bf20ab900eb36fbba8e4b9e (patch)
tree8984185ee57c14d23c39794558eda58f36659887 /gdb/arch-utils.c
parent233a8fb382c88d7faa6da1cd93a7e21b77e36df4 (diff)
downloadgdb-f208eee0f3a4f42a0bf20ab900eb36fbba8e4b9e.zip
gdb-f208eee0f3a4f42a0bf20ab900eb36fbba8e4b9e.tar.gz
gdb-f208eee0f3a4f42a0bf20ab900eb36fbba8e4b9e.tar.bz2
add infcall_mmap and gcc_target_options gdbarch methods
The compiler needed two new gdbarch methods. The infcall_mmap method allocates memory in the inferior. This is used when inserting the object code. The gcc_target_options method computes some arch-specific gcc options to pass to the compiler. This is used to ensure that gcc generates object code for the correct architecture. gdb/ChangeLog 2014-12-12 Jan Kratochvil <jan.kratochvil@redhat.com> * arch-utils.c (default_infcall_mmap) (default_gcc_target_options): New functions. * arch-utils.h (GDB_MMAP_PROT_READ, GDB_MMAP_PROT_WRITE) (GDB_MMAP_PROT_EXEC): Define. (default_infcall_mmap, default_gcc_target_options): Declare. * gdbarch.h: Rebuild. * gdbarch.c: Rebuild. * gdbarch.sh (infcall_mmap, gcc_target_options): New methods.
Diffstat (limited to 'gdb/arch-utils.c')
-rw-r--r--gdb/arch-utils.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/gdb/arch-utils.c b/gdb/arch-utils.c
index 33d5543..3cd0a21 100644
--- a/gdb/arch-utils.c
+++ b/gdb/arch-utils.c
@@ -858,6 +858,22 @@ default_skip_permanent_breakpoint (struct regcache *regcache)
regcache_write_pc (regcache, current_pc);
}
+CORE_ADDR
+default_infcall_mmap (CORE_ADDR size, unsigned prot)
+{
+ error (_("This target does not support inferior memory allocation by mmap."));
+}
+
+/* -mcmodel=large is used so that no GOT (Global Offset Table) is needed to be
+ created in inferior memory by GDB (normally it is set by ld.so). */
+
+char *
+default_gcc_target_options (struct gdbarch *gdbarch)
+{
+ return xstrprintf ("-m%d%s", gdbarch_ptr_bit (gdbarch),
+ gdbarch_ptr_bit (gdbarch) == 64 ? " -mcmodel=large" : "");
+}
+
/* -Wmissing-prototypes */
extern initialize_file_ftype _initialize_gdbarch_utils;