diff options
author | Petr Sorfa <petrs@caldera.com> | 2002-01-11 16:56:04 +0000 |
---|---|---|
committer | Petr Sorfa <petrs@caldera.com> | 2002-01-11 16:56:04 +0000 |
commit | b21b22e0688fffcd43af44aa3b234c7a5a4cd954 (patch) | |
tree | cfc13f3e3ed7cd092c464c5216ffdff64c3e4fc8 /gdb/dwarf2read.c | |
parent | 41ae02c9eaedd88a26c7772a54e50a03ee129f7c (diff) | |
download | gdb-b21b22e0688fffcd43af44aa3b234c7a5a4cd954.zip gdb-b21b22e0688fffcd43af44aa3b234c7a5a4cd954.tar.gz gdb-b21b22e0688fffcd43af44aa3b234c7a5a4cd954.tar.bz2 |
1) Handling of the DW_AT_byte_size attribute when processing a
DW_TAG_string_type (this is acceptable under the current DWARF 2.1/3.0
standard.)
2) In read_tag_string_type(), a fix for FORTRAN that propagates the
first string length to all string types. This is important as FORTRAN
strings are not delimited as in C/C++.
3) Handling of the DW_LANG_Fortran95.
Diffstat (limited to 'gdb/dwarf2read.c')
-rw-r--r-- | gdb/dwarf2read.c | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index 28317f2..785acc2 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -2786,12 +2786,30 @@ read_tag_string_type (struct die_info *die, struct objfile *objfile) } else { - length = 1; + /* check for the DW_AT_byte_size attribute */ + attr = dwarf_attr (die, DW_AT_byte_size); + if (attr) + { + length = DW_UNSND (attr); + } + else + { + length = 1; + } } index_type = dwarf2_fundamental_type (objfile, FT_INTEGER); range_type = create_range_type (NULL, index_type, 1, length); - char_type = dwarf2_fundamental_type (objfile, FT_CHAR); - type = create_string_type (char_type, range_type); + if (cu_language == language_fortran) + { + /* Need to create a unique string type for bounds + information */ + type = create_string_type (0, range_type); + } + else + { + char_type = dwarf2_fundamental_type (objfile, FT_CHAR); + type = create_string_type (char_type, range_type); + } die->type = type; } @@ -3797,6 +3815,7 @@ set_cu_language (unsigned int lang) break; case DW_LANG_Fortran77: case DW_LANG_Fortran90: + case DW_LANG_Fortran95: cu_language = language_fortran; break; case DW_LANG_Mips_Assembler: |