aboutsummaryrefslogtreecommitdiff
path: root/gdb/dwarfread.c
diff options
context:
space:
mode:
authorBob Manson <manson@cygnus>1998-05-08 05:30:24 +0000
committerBob Manson <manson@cygnus>1998-05-08 05:30:24 +0000
commit1e9c814fb93ece8958aec6810e4e2e3c3859aa1a (patch)
tree3ddeb2374dee651948ea8ae15d59978385842fd7 /gdb/dwarfread.c
parentd67094c6214f66773176d9a2dcb44a6971e25385 (diff)
downloadgdb-1e9c814fb93ece8958aec6810e4e2e3c3859aa1a.zip
gdb-1e9c814fb93ece8958aec6810e4e2e3c3859aa1a.tar.gz
gdb-1e9c814fb93ece8958aec6810e4e2e3c3859aa1a.tar.bz2
* config/sparc/tm-sp64.h (CALL_DUMMY): Store and retrieve
%o0-%o5 as 64-bit values; compensate for stack bias. (USE_STRUCT_CONVENTION): We only pass pointers to structs if they're larger than 32 bytes. (REG_STRUCT_HAS_ADDR): Ditto. * sparc-tdep.c (sparc_init_extra_frame_info): Use read_sp() instead of read_register. If the target is a sparc64 and the frame pointer is odd, compensate for the stack bias. (get_saved_register): Use read_sp(). (DUMMY_STACK_REG_BUF_SIZE): Use FP_REGISTER_BYTES. (sparc_push_dummy_frame): Use read_sp()/write_sp(). On sparc64, save the PC, NPC, CCR, FSR, FPRS, Y and ASI registers. (sparc_frame_find_saved_regs): Use read_sp(). Read the PC, NPC, CCR, FSR, FPRS, Y and ASI registers from the frame, if it's a dummy frame. (sparc_pop_frame): Use write_sp(). If the target is a sparc64 and the FP is odd, compensate for stack bias. (sparc_store_return_value): Right-justify the return value before writing it to %o0. (sparc_fix_call_dummy): Don't NOP out part of the call dummy on sparc64. (sparc64_read_sp, sparc64_read_fp, sparc64_write_sp, sparc64_write_fp, sp64_push_arguments, sparc64_extract_return_value): New functions to support the sparc64 ABI. * dwarfread.c (handle_producer): Set processing_gcc_compilation to the right version number. * dwarf2read.c (read_file_scope): Assume we're processing GCC2 output.
Diffstat (limited to 'gdb/dwarfread.c')
-rw-r--r--gdb/dwarfread.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/gdb/dwarfread.c b/gdb/dwarfread.c
index 323ceaf..eb95b1a 100644
--- a/gdb/dwarfread.c
+++ b/gdb/dwarfread.c
@@ -1902,10 +1902,17 @@ handle_producer (producer)
/* If this compilation unit was compiled with g++ or gcc, then set the
processing_gcc_compilation flag. */
- processing_gcc_compilation =
- STREQN (producer, GPLUS_PRODUCER, strlen (GPLUS_PRODUCER))
- || STREQN (producer, CHILL_PRODUCER, strlen (CHILL_PRODUCER))
- || STREQN (producer, GCC_PRODUCER, strlen (GCC_PRODUCER));
+ if (STREQN (producer, GCC_PRODUCER, strlen (GCC_PRODUCER)))
+ {
+ char version = producer[strlen (GCC_PRODUCER)];
+ processing_gcc_compilation = (version == '2' ? 2 : 1);
+ }
+ else
+ {
+ processing_gcc_compilation =
+ STREQN (producer, GPLUS_PRODUCER, strlen (GPLUS_PRODUCER))
+ || STREQN (producer, CHILL_PRODUCER, strlen (CHILL_PRODUCER));
+ }
/* Select a demangling style if we can identify the producer and if
the current style is auto. We leave the current style alone if it