From e19511a60cda301feacdb6244375363b08dccf7d Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Thu, 21 Nov 2019 20:44:54 +1030 Subject: PR273, SOM size -A The SOM backend creates BFD sections for "spaces", and "sub-spaces". "sub-spaces" are what we normally think of as a section, "spaces" aggregate "sub-spaces". Thus it does not really make sense to include "spaces" for size -A since that would double count total size. It so happens that real sections ought to have at least one of the ALLOC and HAS_CONTENTS flags set, so this patch excludes "spaces" but excluding BFD sections with no flags set. PR 273 * size.c (sysv_internal_sizer, sysv_internal_printer): Exclude sections with no flag bits set. * testsuite/binutils-all/size.exp: Allow $CODE$ as a text section. --- binutils/size.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'binutils/size.c') diff --git a/binutils/size.c b/binutils/size.c index b147221..69da30c 100644 --- a/binutils/size.c +++ b/binutils/size.c @@ -557,12 +557,16 @@ static void sysv_internal_sizer (bfd *file ATTRIBUTE_UNUSED, sec_ptr sec, void *ignore ATTRIBUTE_UNUSED) { - bfd_size_type size = bfd_section_size (sec); + flagword flags = bfd_section_flags (sec); + /* Exclude sections with no flags set. This is to omit som spaces. */ + if (flags == 0) + return; if ( ! bfd_is_abs_section (sec) && ! bfd_is_com_section (sec) && ! bfd_is_und_section (sec)) { + bfd_size_type size = bfd_section_size (sec); int namelen = strlen (bfd_section_name (sec)); if (namelen > svi_namelen) @@ -589,12 +593,16 @@ static void sysv_internal_printer (bfd *file ATTRIBUTE_UNUSED, sec_ptr sec, void *ignore ATTRIBUTE_UNUSED) { - bfd_size_type size = bfd_section_size (sec); + flagword flags = bfd_section_flags (sec); + if (flags == 0) + return; if ( ! bfd_is_abs_section (sec) && ! bfd_is_com_section (sec) && ! bfd_is_und_section (sec)) { + bfd_size_type size = bfd_section_size (sec); + svi_total += size; sysv_one_line (bfd_section_name (sec), -- cgit v1.1