diff options
author | Alan Modra <amodra@gmail.com> | 2019-11-21 20:44:54 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2019-11-21 22:33:42 +1030 |
commit | e19511a60cda301feacdb6244375363b08dccf7d (patch) | |
tree | 6592c6c5986399f2495aceb95b043d2b80341fb3 /binutils | |
parent | f76d79580efea856298d9e5b9a91746be875f1b1 (diff) | |
download | fsf-binutils-gdb-e19511a60cda301feacdb6244375363b08dccf7d.zip fsf-binutils-gdb-e19511a60cda301feacdb6244375363b08dccf7d.tar.gz fsf-binutils-gdb-e19511a60cda301feacdb6244375363b08dccf7d.tar.bz2 |
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.
Diffstat (limited to 'binutils')
-rw-r--r-- | binutils/ChangeLog | 7 | ||||
-rw-r--r-- | binutils/size.c | 12 | ||||
-rw-r--r-- | binutils/testsuite/binutils-all/size.exp | 2 |
3 files changed, 18 insertions, 3 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 2d1a003..c4f7e3d 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,10 @@ +2019-11-21 Alan Modra <amodra@gmail.com> + + 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. + 2019-11-21 Nick Clifton <nickc@redhat.com> * objcopy.c (merge_gnu_build_notes): Allow for the possibility 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), diff --git a/binutils/testsuite/binutils-all/size.exp b/binutils/testsuite/binutils-all/size.exp index a102e15..1c199ba 100644 --- a/binutils/testsuite/binutils-all/size.exp +++ b/binutils/testsuite/binutils-all/size.exp @@ -66,7 +66,7 @@ if {![binutils_assemble $srcdir/$subdir/bintest.s tmpdir/bintest.o]} then { set got [binutils_run $SIZE "$SIZEFLAGS -A ${testfile}"] - set want "${testfile}.*(text|TEXT|P)\[^\n\r\]*\[ \]($dec)\[ \]+$dec.*(\\.data|DATA|D_1)\[^\n\r\]*\[ \]($dec)\[ \]+$dec" + set want "${testfile}.*(text|TEXT|\\\$CODE\\\$|P)\[^\n\r\]*\[ \]($dec)\[ \]+$dec.*(\\.data|DATA|D_1)\[^\n\r\]*\[ \]($dec)\[ \]+$dec" if ![regexp $want $got all textname textsize dataname datasize] then { fail "size -A" |