aboutsummaryrefslogtreecommitdiff
path: root/gdb
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
commitdfe01d390c53804bd69fb46ff90894a6fdea2948 (patch)
treef6b513aad5963ebfd219e6b8c8ef1a0befeab464 /gdb
parent8acc2935383b05b6ae4626dac433883c21381cfb (diff)
downloadgdb-dfe01d390c53804bd69fb46ff90894a6fdea2948.zip
gdb-dfe01d390c53804bd69fb46ff90894a6fdea2948.tar.gz
gdb-dfe01d390c53804bd69fb46ff90894a6fdea2948.tar.bz2
* 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 '.'.
Diffstat (limited to 'gdb')
-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 9532614..ea6156c 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 bfc4bb2..9363327 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 4230136..233049d 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);