0001-S390-Support-new-vector-register-sections.patch OBS-URL: https://build.opensuse.org/package/show/devel:gcc/gdb?expand=0&rev=125
74 lines
2.6 KiB
Diff
74 lines
2.6 KiB
Diff
From 60abeae4f219a7a445d11ebaf72d2939413ffe80 Mon Sep 17 00:00:00 2001
|
|
From: Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
Date: Fri, 27 Feb 2015 10:47:54 +0100
|
|
Subject: [PATCH] S390: Fix compiler invocation with "compile" command
|
|
|
|
On 64-bit S390 platforms the "compile" command always failed because
|
|
gcc was not invoked correctly. This patch fixes the compiler
|
|
invocation.
|
|
|
|
gdb/ChangeLog:
|
|
|
|
* s390-linux-tdep.c (s390_gcc_target_options): Not just handle
|
|
31-bit targets, but 64-bit targets as well.
|
|
(s390_gnu_triplet_regexp): New function.
|
|
(s390_gdbarch_init): Set the gcc_target_options gdbarch method for
|
|
64-bit targets as well. Set the gnu_triplet_regexp gdbarch
|
|
method.
|
|
---
|
|
gdb/ChangeLog | 9 +++++++++
|
|
gdb/s390-linux-tdep.c | 19 ++++++++++++++++---
|
|
2 files changed, 25 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/gdb/s390-linux-tdep.c b/gdb/s390-linux-tdep.c
|
|
index 9bd25fe..803779c 100644
|
|
--- a/gdb/s390-linux-tdep.c
|
|
+++ b/gdb/s390-linux-tdep.c
|
|
@@ -2808,12 +2808,24 @@ s390_address_class_name_to_type_flags (struct gdbarch *gdbarch,
|
|
return 0;
|
|
}
|
|
|
|
-/* Implement gdbarch_gcc_target_options. GCC does not know "-m32". */
|
|
+/* Implement gdbarch_gcc_target_options. GCC does not know "-m32" or
|
|
+ "-mcmodel=large". */
|
|
|
|
static char *
|
|
s390_gcc_target_options (struct gdbarch *gdbarch)
|
|
{
|
|
- return xstrdup ("-m31");
|
|
+ return xstrdup (gdbarch_ptr_bit (gdbarch) == 64 ? "-m64" : "-m31");
|
|
+}
|
|
+
|
|
+/* Implement gdbarch_gnu_triplet_regexp. Target triplets are "s390-*"
|
|
+ for 31-bit and "s390x-*" for 64-bit, while the BFD arch name is
|
|
+ always "s390". Note that an s390x compiler supports "-m31" as
|
|
+ well. */
|
|
+
|
|
+static const char *
|
|
+s390_gnu_triplet_regexp (struct gdbarch *gdbarch)
|
|
+{
|
|
+ return "s390x?";
|
|
}
|
|
|
|
/* Implementation of `gdbarch_stap_is_single_operand', as defined in
|
|
@@ -3112,7 +3124,6 @@ s390_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
|
{
|
|
case ABI_LINUX_S390:
|
|
set_gdbarch_addr_bits_remove (gdbarch, s390_addr_bits_remove);
|
|
- set_gdbarch_gcc_target_options (gdbarch, s390_gcc_target_options);
|
|
set_solib_svr4_fetch_link_map_offsets
|
|
(gdbarch, svr4_ilp32_fetch_link_map_offsets);
|
|
|
|
@@ -3152,6 +3163,8 @@ s390_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
|
set_gdbarch_stap_register_indirection_suffixes (gdbarch,
|
|
stap_register_indirection_suffixes);
|
|
set_gdbarch_stap_is_single_operand (gdbarch, s390_stap_is_single_operand);
|
|
+ set_gdbarch_gcc_target_options (gdbarch, s390_gcc_target_options);
|
|
+ set_gdbarch_gnu_triplet_regexp (gdbarch, s390_gnu_triplet_regexp);
|
|
|
|
return gdbarch;
|
|
}
|
|
--
|
|
1.8.1.4
|
|
|