From 91f8bf69a526912f86da81070407bba6a050e27f Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Wed, 27 Apr 2016 09:13:10 -0700 Subject: [PATCH] Skip debug sections when estimating distances Skip debug sections when estimating distances between output sections since compressed_size is used to compress debug sections and debug sections aren't excluded from distances between output sections. bfd/ PR ld/20006 * elf64-x86-64.c (elf_x86_64_convert_load): Skip debug sections when estimating distances between output sections. ld/ PR ld/20006 * testsuite/ld-elfvsb/elfvsb.exp (COMPRESS_LDFLAG): New. (visibility_run): Pass COMPRESS_LDFLAG to visibility_test on ELF targets. --- bfd/ChangeLog | 6 ++++++ bfd/elf64-x86-64.c | 25 ++++++++++++++----------- ld/ChangeLog | 13 ++++++++++--- ld/testsuite/ld-elfvsb/elfvsb.exp | 4 +++- 4 files changed, 33 insertions(+), 15 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index f67db84c21..b63811b475 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2016-04-27 H.J. Lu + + PR ld/20006 + * elf64-x86-64.c (elf_x86_64_convert_load): Skip debug sections + when estimating distances between output sections. + 2016-04-27 Alan Modra * elflink.c (_bfd_elf_is_start_stop): New function. diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c index 4899f9858a..02fcb220b9 100644 --- a/bfd/elf64-x86-64.c +++ b/bfd/elf64-x86-64.c @@ -3205,17 +3205,20 @@ elf_x86_64_convert_load (bfd *abfd, asection *sec, for (asect = link_info->output_bfd->sections; asect != NULL; asect = asect->next) - { - asection *i; - for (i = asect->map_head.s; - i != NULL; - i = i->map_head.s) - { - size = align_power (size, i->alignment_power); - size += i->size; - } - asect->compressed_size = size; - } + /* Skip debug sections since compressed_size is used to + compress debug sections. */ + if ((asect->flags & SEC_DEBUGGING) == 0) + { + asection *i; + for (i = asect->map_head.s; + i != NULL; + i = i->map_head.s) + { + size = align_power (size, i->alignment_power); + size += i->size; + } + asect->compressed_size = size; + } } /* Don't convert GOTPCREL relocations if TSEC isn't placed diff --git a/ld/ChangeLog b/ld/ChangeLog index 62db17087d..379a2148df 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,8 +1,15 @@ 2016-04-27 H.J. Lu - * ld-elf/compressed1b.d: Pass --compress-debug-sections=none - to ld. - * ld-elf/compressed1c.d: Likewise. + PR ld/20006 + * testsuite/ld-elfvsb/elfvsb.exp (COMPRESS_LDFLAG): New. + (visibility_run): Pass COMPRESS_LDFLAG to visibility_test on + ELF targets. + +2016-04-27 H.J. Lu + + * testsuite/ld-elf/compressed1b.d: Pass + --compress-debug-sections=none to ld. + * testsuite/ld-elf/compressed1c.d: Likewise. 2016-04-27 Alan Modra diff --git a/ld/testsuite/ld-elfvsb/elfvsb.exp b/ld/testsuite/ld-elfvsb/elfvsb.exp index d9d26d6785..e20cd766a6 100644 --- a/ld/testsuite/ld-elfvsb/elfvsb.exp +++ b/ld/testsuite/ld-elfvsb/elfvsb.exp @@ -62,6 +62,7 @@ if ![isnative] then {return} set tmpdir tmpdir set SHCFLAG "" set shared_needs_pic "no" +set COMPRESS_LDFLAG "-Wl,--compress-debug-sections=zlib-gabi" if { [istarget rs6000*-*-aix*] || [istarget powerpc*-*-aix*] } { @@ -228,6 +229,7 @@ proc visibility_run {visibility} { global support_protected global shared_needs_pic global PLT_CFLAGS + global COMPRESS_LDFLAG if [ string match $visibility "hidden" ] { set VSBCFLAG "-DHIDDEN_TEST" @@ -384,7 +386,7 @@ proc visibility_run {visibility} { } else { if { [istarget rs6000*-*-aix*] || [istarget powerpc*-*-aix*] } { visibility_test $visibility vp "visibility ($visibility)" mainnp.o sh1p.o sh2p.o xcoff } else { - visibility_test $visibility vp "visibility ($visibility)" mainnp.o sh1p.o sh2p.o elfvsb + visibility_test $visibility vp "visibility ($visibility)" mainnp.o sh1p.o sh2p.o elfvsb $COMPRESS_LDFLAG } } } }}