summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Kettenis <kettenis@gnu.org>2002-08-23 19:26:15 +0000
committerMark Kettenis <kettenis@gnu.org>2002-08-23 19:26:15 +0000
commit53b29ccd7e66c0adc917dec0be94ce1aca7d5b22 (patch)
tree2d9000afcd8870afa007d8aa36146764664b5975
parent49c46170906a030ab5a5f03c0c26432d28e40fe9 (diff)
downloadgdb-53b29ccd7e66c0adc917dec0be94ce1aca7d5b22.tar.gz
* i386-tdep.c: Include "objfiles.h".
(i386_svr4_init_abi): Set in_solib_call_trampoline and skip_trampoline_code. * config/i386/tm-i386v4.h: Don't include "config/tm-sysv4.h". (CPLUS_MARKER): Define to '.'.
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/config/i386/tm-i386v4.h11
-rw-r--r--gdb/i386-tdep.c5
3 files changed, 20 insertions, 2 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 953261401e5..ea6156c002d 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,11 @@
2002-08-23 Mark Kettenis <kettenis@gnu.org>
+ * i386-tdep.c: Include "objfiles.h".
+ (i386_svr4_init_abi): Set in_solib_call_trampoline and
+ skip_trampoline_code.
+ * config/i386/tm-i386v4.h: Don't include "config/tm-sysv4.h".
+ (CPLUS_MARKER): Define to '.'.
+
* linux-proc.c (struct linux_corefile_thread_data): Add num_notes
member.
(linux_corefile_thread_callback): Increase args->num_notes.
diff --git a/gdb/config/i386/tm-i386v4.h b/gdb/config/i386/tm-i386v4.h
index bfc4bb2d38f..9363327fdb7 100644
--- a/gdb/config/i386/tm-i386v4.h
+++ b/gdb/config/i386/tm-i386v4.h
@@ -26,7 +26,14 @@
/* Pick up most of what we need from the generic i386 target include file. */
#include "i386/tm-i386.h"
-/* Pick up more stuff from the generic SVR4 host include file. */
-#include "config/tm-sysv4.h"
+/* It is unknown which, if any, SVR4 assemblers do not accept dollar signs
+ in identifiers. The default in G++ is to use dots instead, for all SVR4
+ systems, so we make that our default also. FIXME: There should be some
+ way to get G++ to tell us what CPLUS_MARKER it is using, perhaps by
+ stashing it in the debugging information as part of the name of an
+ invented symbol ("gcc_cplus_marker$" for example). */
+
+#undef CPLUS_MARKER
+#define CPLUS_MARKER '.'
#endif /* ifndef TM_I386V4_H */
diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c
index 42301367e50..233049dd7e5 100644
--- a/gdb/i386-tdep.c
+++ b/gdb/i386-tdep.c
@@ -25,6 +25,7 @@
#include "frame.h"
#include "inferior.h"
#include "gdbcore.h"
+#include "objfiles.h"
#include "target.h"
#include "floatformat.h"
#include "symfile.h"
@@ -1370,6 +1371,10 @@ i386_svr4_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
/* System V Release 4 uses ELF. */
i386_elf_init_abi (info, gdbarch);
+ /* System V Release 4 has shared libraries. */
+ set_gdbarch_in_solib_call_trampoline (gdbarch, in_plt_section);
+ set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target);
+
/* FIXME: kettenis/20020511: Why do we override this function here? */
set_gdbarch_frame_chain_valid (gdbarch, generic_func_frame_chain_valid);