X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gas%2Fsubsegs.c;h=d438a10c696fee1511a34ed7ce96425c09744313;hb=4e3f8a9609282e080a2f250c8b2a0e19b9d8f298;hp=0a2cf561ef28a6000031dd9200e35a3069b8b45d;hpb=9c2799c243988c1a6d3fe93c7c2c06599672068d;p=deliverable%2Fbinutils-gdb.git diff --git a/gas/subsegs.c b/gas/subsegs.c index 0a2cf561ef..d438a10c69 100644 --- a/gas/subsegs.c +++ b/gas/subsegs.c @@ -1,7 +1,5 @@ /* subsegs.c - subsegments - - Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 - Free Software Foundation, Inc. + Copyright (C) 1987-2019 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -57,7 +55,7 @@ subsegs_begin (void) * segment context correct. */ void -subseg_change (register segT seg, register int subseg) +subseg_change (segT seg, int subseg) { segment_info_type *seginfo = seg_info (seg); now_seg = seg; @@ -65,9 +63,9 @@ subseg_change (register segT seg, register int subseg) if (! seginfo) { - seginfo = xcalloc (1, sizeof (*seginfo)); + seginfo = XCNEW (segment_info_type); seginfo->bfd_section = seg; - bfd_set_section_userdata (stdoutput, seg, seginfo); + bfd_set_section_userdata (seg, seginfo); } } @@ -103,7 +101,7 @@ subseg_set_rest (segT seg, subsegT subseg) { /* This should be the only code that creates a frchainS. */ - newP = obstack_alloc (&frchains, sizeof (frchainS)); + newP = (frchainS *) obstack_alloc (&frchains, sizeof (frchainS)); newP->frch_subseg = subseg; newP->fix_root = NULL; newP->fix_tail = NULL; @@ -148,9 +146,7 @@ subseg_get (const char *segname, int force_new) { segT secptr; segment_info_type *seginfo; - const char *now_seg_name = (now_seg - ? bfd_get_section_name (stdoutput, now_seg) - : 0); + const char *now_seg_name = now_seg ? bfd_section_name (now_seg) : 0; if (!force_new && now_seg_name @@ -167,9 +163,9 @@ subseg_get (const char *segname, int force_new) if (! seginfo) { secptr->output_section = secptr; - seginfo = xcalloc (1, sizeof (*seginfo)); + seginfo = XCNEW (segment_info_type); seginfo->bfd_section = secptr; - bfd_set_section_userdata (stdoutput, secptr, seginfo); + bfd_set_section_userdata (secptr, seginfo); } return secptr; } @@ -262,7 +258,7 @@ section_symbol (segT sec) int subseg_text_p (segT sec) { - return (bfd_get_section_flags (stdoutput, sec) & SEC_CODE) != 0; + return (bfd_section_flags (sec) & SEC_CODE) != 0; } /* Return non zero if SEC has at least one byte of data. It is @@ -280,7 +276,7 @@ seg_not_empty_p (segT sec ATTRIBUTE_UNUSED) if (!seginfo) return 0; - + for (chain = seginfo->frchainP; chain; chain = chain->frch_next) { for (frag = chain->frch_root; frag; frag = frag->fr_next) @@ -299,6 +295,10 @@ subsegs_print_statistics (FILE *file) frchainS *frchp; asection *s; + /* PR 20897 - check to see if the output bfd was actually created. */ + if (stdoutput == NULL) + return; + fprintf (file, "frag chains:\n"); for (s = stdoutput->sections; s; s = s->next) {