aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2002-12-25 21:20:31 +0000
committerAlexandre Oliva <aoliva@redhat.com>2002-12-25 21:20:31 +0000
commit9605f328cd91016a1f55928b8b67419eb050e771 (patch)
treeed558c78614b16d0a9211bba60a86514bc84d058
parentc4e54c2a3ceaad2a0f5550ff2d28f2be1dbfbaa1 (diff)
downloadgdb-9605f328cd91016a1f55928b8b67419eb050e771.zip
gdb-9605f328cd91016a1f55928b8b67419eb050e771.tar.gz
gdb-9605f328cd91016a1f55928b8b67419eb050e771.tar.bz2
* dwarf2dbg.c (DWARF2_ADDR_SIZE): New macro.
(dwarf2_finish): Use it. * doc/internals.texi (DWARF2_ADDR_SIZE): Document it. * config/tc-mips.h (DWARF2_ADDR_SIZE): Override.
-rw-r--r--gas/ChangeLog7
-rw-r--r--gas/config/tc-mips.h3
-rw-r--r--gas/doc/internals.texi6
-rw-r--r--gas/dwarf2dbg.c9
4 files changed, 23 insertions, 2 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index fbe346c..927d2fe 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,10 @@
+2002-12-25 Alexandre Oliva <aoliva@redhat.com>
+
+ * dwarf2dbg.c (DWARF2_ADDR_SIZE): New macro.
+ (dwarf2_finish): Use it.
+ * doc/internals.texi (DWARF2_ADDR_SIZE): Document it.
+ * config/tc-mips.h (DWARF2_ADDR_SIZE): Override.
+
2002-12-20 DJ Delorie <dj@redhat.com>
* config/tc-xstormy16.c (md_cgen_lookup_reloc): Support
diff --git a/gas/config/tc-mips.h b/gas/config/tc-mips.h
index dd52a7f..a19c87d 100644
--- a/gas/config/tc-mips.h
+++ b/gas/config/tc-mips.h
@@ -185,4 +185,7 @@ extern void mips_enable_auto_align PARAMS ((void));
extern enum dwarf2_format mips_dwarf2_format PARAMS ((void));
#define DWARF2_FORMAT() mips_dwarf2_format ()
+#define DWARF2_ADDR_SIZE(bfd) \
+ (DWARF2_FORMAT () == dwarf2_format_32bit ? 4 : 8)
+
#endif /* TC_MIPS */
diff --git a/gas/doc/internals.texi b/gas/doc/internals.texi
index 0d54d4f..f88e6b2 100644
--- a/gas/doc/internals.texi
+++ b/gas/doc/internals.texi
@@ -1503,6 +1503,12 @@ This define only affects @code{.debug_info} and @code{.debug_line}
sections generated by the assembler. DWARF 2 sections generated by
other tools will be unaffected by this setting.
+@item DWARF2_ADDR_SIZE (@var{bfd})
+@cindex DWARF2_ADDR_SIZE
+It should return the size of an address, as it should be represented in
+debugging info. If you don't define this macro, the default definition uses
+the number of bits per address, as defined in @var{bfd}, divided by 8.
+
@end table
@node Object format backend
diff --git a/gas/dwarf2dbg.c b/gas/dwarf2dbg.c
index 0d5c072..db6e0f0 100644
--- a/gas/dwarf2dbg.c
+++ b/gas/dwarf2dbg.c
@@ -44,9 +44,14 @@
#include "dwarf2dbg.h"
#ifndef DWARF2_FORMAT
-#define DWARF2_FORMAT() dwarf2_format_32bit
+# define DWARF2_FORMAT() dwarf2_format_32bit
#endif
+#ifndef DWARF2_ADDR_SIZE
+# define DWARF2_ADDR_SIZE(bfd) (bfd_arch_bits_per_address (bfd) / 8);
+#endif
+
+
#ifdef BFD_ASSEMBLER
#include "subsegs.h"
@@ -1341,7 +1346,7 @@ dwarf2_finish ()
return;
/* Calculate the size of an address for the target machine. */
- sizeof_address = bfd_arch_bits_per_address (stdoutput) / 8;
+ sizeof_address = DWARF2_ADDR_SIZE (stdoutput);
/* Create and switch to the line number section. */
line_seg = subseg_new (".debug_line", 0);