From 8a7140c38f21984c512ac97bcfa2f0d7417bdc27 Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Thu, 29 Apr 2004 16:40:20 +0000 Subject: Add support for generating DWARF2 debug sections in the x86 PE port --- bfd/coffcode.h | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) (limited to 'bfd/coffcode.h') diff --git a/bfd/coffcode.h b/bfd/coffcode.h index 15d9709..80b5526 100644 --- a/bfd/coffcode.h +++ b/bfd/coffcode.h @@ -1,6 +1,6 @@ /* Support for the generic parts of most COFF variants, for BFD. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003 + 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. Written by Cygnus Support. @@ -309,6 +309,9 @@ CODE_FRAGMENT #define STRING_SIZE_SIZE (4) +#define DOT_DEBUG ".debug" +#define GNU_LINKONCE_WI ".gnu.linkonce.wi." + static long sec_to_styp_flags PARAMS ((const char *, flagword)); static bfd_boolean styp_to_sec_flags @@ -428,7 +431,7 @@ sec_to_styp_flags (sec_name, sec_flags) styp_flags = STYP_LIT; #endif /* _LIT */ } - else if (!strncmp (sec_name, ".debug", 6)) + else if (!strncmp (sec_name, DOT_DEBUG, sizeof (DOT_DEBUG) - 1)) { /* Handle the XCOFF debug section and DWARF2 debug sections. */ if (!sec_name[6]) @@ -441,7 +444,7 @@ sec_to_styp_flags (sec_name, sec_flags) styp_flags = STYP_DEBUG_INFO; } #ifdef COFF_LONG_SECTION_NAMES - else if (!strncmp (sec_name, ".gnu.linkonce.wi.", 17)) + else if (!strncmp (sec_name, GNU_LINKONCE_WI, sizeof (GNU_LINKONCE_WI) - 1)) { styp_flags = STYP_DEBUG_INFO; } @@ -518,7 +521,7 @@ sec_to_styp_flags (sec_name, sec_flags) static long sec_to_styp_flags (sec_name, sec_flags) - const char *sec_name ATTRIBUTE_UNUSED; + const char *sec_name; flagword sec_flags; { long styp_flags = 0; @@ -531,6 +534,11 @@ sec_to_styp_flags (sec_name, sec_flags) PE files. The STYP_* flags and the IMAGE_SCN_* flags overlap, but there are more IMAGE_SCN_* flags. */ + /* FIXME: There is no gas syntax to specify the debug section flag. */ + if (strncmp (sec_name, DOT_DEBUG, sizeof (DOT_DEBUG) - 1) == 0 + || strncmp (sec_name, GNU_LINKONCE_WI, sizeof (GNU_LINKONCE_WI) - 1) == 0) + sec_flags = SEC_READONLY | SEC_DEBUGGING; + /* skip LOAD */ /* READONLY later */ /* skip RELOC */ @@ -675,12 +683,12 @@ styp_to_sec_flags (abfd, hdr, name, section, flags_ptr) #endif sec_flags |= SEC_ALLOC; } - else if (strncmp (name, ".debug", 6) == 0 + else if (strncmp (name, DOT_DEBUG, sizeof (DOT_DEBUG) - 1) == 0 #ifdef _COMMENT || strcmp (name, _COMMENT) == 0 #endif #ifdef COFF_LONG_SECTION_NAMES - || strncmp (name, ".gnu.linkonce.wi.", 17) == 0 + || strncmp (name, GNU_LINKONCE_WI, sizeof (GNU_LINKONCE_WI) - 1) == 0 #endif || strncmp (name, ".stab", 5) == 0) { @@ -3004,7 +3012,7 @@ coff_compute_section_file_positions (abfd) { asection *dsec; - dsec = bfd_make_section_old_way (abfd, ".debug"); + dsec = bfd_make_section_old_way (abfd, DOT_DEBUG); if (dsec == NULL) abort (); dsec->_raw_size = sz; -- cgit v1.1