2010-05-21 Tristan Gingold <gingold@adacore.com>
authorTristan Gingold <gingold@adacore.com>
Fri, 21 May 2010 13:19:34 +0000 (13:19 +0000)
committerTristan Gingold <gingold@adacore.com>
Fri, 21 May 2010 13:19:34 +0000 (13:19 +0000)
* vms-alpha.c (_bfd_vms_slurp_eisd): Set SEC_HAS_CONTENTS and
SEC_LOAD if isect has data.
(vms_get_symbol_info): Refine the condition for 'T' type.

bfd/ChangeLog
bfd/vms-alpha.c

index 2b81809a19c84eb9c4044b0c37c4a4c4ecf2f229..167e8c6f062f74e9ccc8114d51bb543ce84e45a3 100644 (file)
@@ -1,3 +1,9 @@
+2010-05-21  Tristan Gingold  <gingold@adacore.com>
+
+       * vms-alpha.c (_bfd_vms_slurp_eisd): Set SEC_HAS_CONTENTS and
+       SEC_LOAD if isect has data.
+       (vms_get_symbol_info): Refine the condition for 'T' type.
+
 2010-05-18  Tristan Gingold  <gingold@adacore.com>
 
        * vms-alpha.c (_bfd_vms_write_emh): New function.
index 8d1d7cbf0886d044de7f9f641134118f7ba931e9..2c6a19c600ff57b781930b5c5d29efadc3ba8475 100644 (file)
@@ -547,12 +547,14 @@ _bfd_vms_slurp_eisd (bfd *abfd, unsigned int offset)
         what's in each section without examining the data.  This is
         especially true of DWARF debug sections.  */
       bfd_flags = SEC_ALLOC;
+      if (vbn != 0)
+        bfd_flags |= SEC_HAS_CONTENTS | SEC_LOAD;
 
       if (flags & EISD__M_EXE)
-       bfd_flags |= SEC_CODE | SEC_HAS_CONTENTS | SEC_LOAD;
+       bfd_flags |= SEC_CODE;
 
       if (flags & EISD__M_NONSHRADR)
-       bfd_flags |= SEC_DATA | SEC_HAS_CONTENTS | SEC_LOAD;
+       bfd_flags |= SEC_DATA;
 
       if (!(flags & EISD__M_WRT))
        bfd_flags |= SEC_READONLY;
@@ -561,10 +563,10 @@ _bfd_vms_slurp_eisd (bfd *abfd, unsigned int offset)
        bfd_flags |= SEC_DATA;
 
       if (flags & EISD__M_FIXUPVEC)
-       bfd_flags |= SEC_DATA | SEC_HAS_CONTENTS | SEC_LOAD;
+       bfd_flags |= SEC_DATA;
 
       if (flags & EISD__M_CRF)
-       bfd_flags |= SEC_HAS_CONTENTS | SEC_LOAD;
+       bfd_flags |= SEC_DATA;
 
       if (flags & EISD__M_GBL)
        {
@@ -8944,7 +8946,8 @@ vms_get_symbol_info (bfd * abfd ATTRIBUTE_UNUSED,
     ret->type = 'U';
   else if (bfd_is_ind_section (sec))
     ret->type = 'I';
-  else if (bfd_get_section_flags (abfd, sec) & SEC_CODE)
+  else if ((symbol->flags & BSF_FUNCTION)
+           || (bfd_get_section_flags (abfd, sec) & SEC_CODE))
     ret->type = 'T';
   else if (bfd_get_section_flags (abfd, sec) & SEC_DATA)
     ret->type = 'D';