From: Alan Modra Date: Tue, 24 Feb 2015 23:06:36 +0000 (+1030) Subject: Pad only text sections at end by default X-Git-Tag: gdb-7.10-release~1425 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9028d9432c57fc0871479960f843ef4af194d5ac;p=external%2Fbinutils.git Pad only text sections at end by default gas/ * write.c (SUB_SEGMENT_ALIGN): Don't pad non-code sections at end to their alignment. gas/testsuite/ * gas/sparc/pcrel.d: Update for changed padding in data sections. * gas/sparc/pcrel64.d: Likewise. ld/testsuite/ * ld-sparc/gotop32.rd: Update for changed padding in data sections. * ld-sparc/gotop32.td: Likewise. * ld-sparc/gotop64.rd: Likewise. * ld-sparc/gotop64.td: Likewise. * ld-tilegx/external.s: Align .data. * ld-tilepro/external.s: Likewise. --- diff --git a/gas/ChangeLog b/gas/ChangeLog index a769877..d5cc47f 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2015-02-28 Alan Modra + + * write.c (SUB_SEGMENT_ALIGN): Don't pad non-code sections at + end to their alignment. + 2015-02-19 Marcus Shawcroft * config/tc-aarch64.c (reloc_table_entry): Generate diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 630fa91..f19792b 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2015-02-28 Alan Modra + + * gas/sparc/pcrel.d: Update for changed padding in data sections. + * gas/sparc/pcrel64.d: Likewise. + 2015-02-26 Marcus Shawcroft * gas/aarch64/diagnostic.s: Add LDR test. diff --git a/gas/testsuite/gas/sparc/pcrel.d b/gas/testsuite/gas/sparc/pcrel.d index 6abe49b..7a8aec2 100644 --- a/gas/testsuite/gas/sparc/pcrel.d +++ b/gas/testsuite/gas/sparc/pcrel.d @@ -4,7 +4,7 @@ .*: +file format .*sparc.* -Disassembly of section .text: +Disassembly of section \.text: 0+ : 0: 01 00 00 00 nop @@ -12,23 +12,22 @@ Disassembly of section .text: 0+8 : 8: 01 00 00 00 nop -Disassembly of section .data: +Disassembly of section \.data: -0+ <.data>: +0+ <\.data>: 0: 00 00 00 00 (unimp|illtrap) 0 4: 00 00 00 01 (unimp|illtrap) 0x1 - ... - 8: R_SPARC_32 .text\+0x10 - c: R_SPARC_DISP32 .text\+0x10 - 10: R_SPARC_32 .text\+0x14 - 14: R_SPARC_DISP32 .text\+0x14 + \.\.\. + 8: R_SPARC_32 \.text\+0x10 + c: R_SPARC_DISP32 \.text\+0x10 + 10: R_SPARC_32 \.text\+0x14 + 14: R_SPARC_DISP32 \.text\+0x14 18: R_SPARC_32 foo 1c: R_SPARC_DISP32 foo 20: R_SPARC_32 foo\+0x10 24: R_SPARC_DISP32 foo\+0x10 - 28: R_SPARC_DISP8 .data\+0x18 - 29: R_SPARC_DISP8 .data\+0x34 - 2a: R_SPARC_DISP16 .data\+0x18 - 2c: R_SPARC_DISP16 .data\+0x34 + 28: R_SPARC_DISP8 \.data\+0x18 + 29: R_SPARC_DISP8 \.data\+0x34 + 2a: R_SPARC_DISP16 \.data\+0x18 + 2c: R_SPARC_DISP16 \.data\+0x34 30: 00 02 00 00 (unimp|illtrap) 0x20000 - ... diff --git a/gas/testsuite/gas/sparc/pcrel64.d b/gas/testsuite/gas/sparc/pcrel64.d index d778850..9c50d34 100644 --- a/gas/testsuite/gas/sparc/pcrel64.d +++ b/gas/testsuite/gas/sparc/pcrel64.d @@ -4,7 +4,7 @@ .*: +file format .*sparc.* -Disassembly of section .text: +Disassembly of section \.text: 0+ : 0: 01 00 00 00 nop @@ -12,29 +12,28 @@ Disassembly of section .text: 0+8 : 8: 01 00 00 00 nop -Disassembly of section .data: +Disassembly of section \.data: -0+ <.data>: +0+ <\.data>: 0: 00 00 00 00 illtrap 0 4: 00 00 00 01 illtrap 0x1 - ... - 8: R_SPARC_32 .text\+0x10 - c: R_SPARC_DISP32 .text\+0x10 - 10: R_SPARC_32 .text\+0x14 - 14: R_SPARC_DISP32 .text\+0x14 + \.\.\. + 8: R_SPARC_32 \.text\+0x10 + c: R_SPARC_DISP32 \.text\+0x10 + 10: R_SPARC_32 \.text\+0x14 + 14: R_SPARC_DISP32 \.text\+0x14 18: R_SPARC_32 foo 1c: R_SPARC_DISP32 foo 20: R_SPARC_32 foo\+0x10 24: R_SPARC_DISP32 foo\+0x10 - 28: R_SPARC_64 .text\+0x8 - 30: R_SPARC_DISP64 .text\+0x8 + 28: R_SPARC_64 \.text\+0x8 + 30: R_SPARC_DISP64 \.text\+0x8 38: R_SPARC_64 foo 40: R_SPARC_DISP64 foo 48: R_SPARC_64 foo\+0x10 50: R_SPARC_DISP64 foo\+0x10 - 58: R_SPARC_DISP8 .data\+0x18 - 59: R_SPARC_DISP8 .data\+0x64 - 5a: R_SPARC_DISP16 .data\+0x18 - 5c: R_SPARC_DISP16 .data\+0x64 + 58: R_SPARC_DISP8 \.data\+0x18 + 59: R_SPARC_DISP8 \.data\+0x64 + 5a: R_SPARC_DISP16 \.data\+0x18 + 5c: R_SPARC_DISP16 \.data\+0x64 60: 00 02 00 00 illtrap 0x20000 - ... diff --git a/gas/write.c b/gas/write.c index aefed29..949ae92 100644 --- a/gas/write.c +++ b/gas/write.c @@ -1692,7 +1692,9 @@ set_symtab (void) of the section. This allows proper nop-filling at the end of code-bearing sections. */ #define SUB_SEGMENT_ALIGN(SEG, FRCHAIN) \ - (!(FRCHAIN)->frch_next ? get_recorded_alignment (SEG) : 0) + (!(FRCHAIN)->frch_next && subseg_text_p (SEG) \ + ? get_recorded_alignment (SEG) \ + : 0) #else #define SUB_SEGMENT_ALIGN(SEG, FRCHAIN) 0 #endif diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index 196bfa5..82ff52d 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,12 @@ +2015-02-28 Alan Modra + + * ld-sparc/gotop32.rd: Update for changed padding in data sections. + * ld-sparc/gotop32.td: Likewise. + * ld-sparc/gotop64.rd: Likewise. + * ld-sparc/gotop64.td: Likewise. + * ld-tilegx/external.s: Align .data. + * ld-tilepro/external.s: Likewise. + 2015-02-26 Marcus Shawcroft * ld-aarch64/aarch64-elf.exp (tls-tiny-desc, tls-tiny-desc-ie) diff --git a/ld/testsuite/ld-sparc/gotop32.rd b/ld/testsuite/ld-sparc/gotop32.rd index acbbdeb..3b5b942 100644 --- a/ld/testsuite/ld-sparc/gotop32.rd +++ b/ld/testsuite/ld-sparc/gotop32.rd @@ -16,7 +16,7 @@ Section Headers: +\[[ 0-9]+\] .text +PROGBITS +0+1000 0+1000 0+1000 0+ +AX +0 +0 4096 +\[[ 0-9]+\] .dynamic +DYNAMIC +0+12000 0+2000 0+70 08 +WA +3 +0 +4 +\[[ 0-9]+\] .got +PROGBITS +0+12070 0+2070 0+8 04 +WA +0 +0 +4 - +\[[ 0-9]+\] .data +PROGBITS +0+13000 0+3000 0+1000 00 +WA +0 +0 4096 + +\[[ 0-9]+\] .data +PROGBITS +0+13000 0+3000 0+8 00 +WA +0 +0 4096 +\[[ 0-9]+\] .shstrtab +.* +\[[ 0-9]+\] .symtab +.* +\[[ 0-9]+\] .strtab +.* @@ -29,7 +29,7 @@ There are [0-9]+ program headers, starting at offset [0-9]+ Program Headers: +Type +Offset +VirtAddr +PhysAddr +FileSiz MemSiz +Flg Align +LOAD +0x0+ 0x0+ 0x0+ 0x0+2000 0x0+2000 R E 0x10000 - +LOAD +0x0+2000 0x0+12000 0x0+12000 0x0+2000 0x0+2000 RW +0x10000 + +LOAD +0x0+2000 0x0+12000 0x0+12000 0x0+1008 0x0+1008 RW +0x10000 +DYNAMIC +0x0+2000 0x0+12000 0x0+12000 0x0+70 0x0+70 RW +0x4 #... diff --git a/ld/testsuite/ld-sparc/gotop32.td b/ld/testsuite/ld-sparc/gotop32.td index 520788b..d933b71 100644 --- a/ld/testsuite/ld-sparc/gotop32.td +++ b/ld/testsuite/ld-sparc/gotop32.td @@ -7,6 +7,5 @@ .*: +file format elf32-sparc Contents of section .data: - 13000 12345678 deadbeef 00000000 00000000 .* - 13010 00000000 00000000 00000000 00000000 .* + 13000 12345678 deadbeef .* #pass diff --git a/ld/testsuite/ld-sparc/gotop64.rd b/ld/testsuite/ld-sparc/gotop64.rd index 08a9514..2d3ffec 100644 --- a/ld/testsuite/ld-sparc/gotop64.rd +++ b/ld/testsuite/ld-sparc/gotop64.rd @@ -16,7 +16,7 @@ Section Headers: +\[[ 0-9]+\] .text +PROGBITS +0+1000 0+1000 0+1000 0+ +AX +0 +0 4096 +\[[ 0-9]+\] .dynamic +DYNAMIC +0+102000 0+2000 0+e0 10 +WA +3 +0 +8 +\[[ 0-9]+\] .got +PROGBITS +0+1020e0 0+20e0 0+10 08 +WA +0 +0 +8 - +\[[ 0-9]+\] .data +PROGBITS +0+103000 0+3000 0+1000 00 +WA +0 +0 4096 + +\[[ 0-9]+\] .data +PROGBITS +0+103000 0+3000 0+8 00 +WA +0 +0 4096 +\[[ 0-9]+\] .shstrtab +.* +\[[ 0-9]+\] .symtab +.* +\[[ 0-9]+\] .strtab +.* @@ -29,7 +29,7 @@ There are [0-9]+ program headers, starting at offset [0-9]+ Program Headers: +Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align +LOAD +0x0+ 0x0+ 0x0+ 0x0+2000 0x0+2000 R E 0x100000 - +LOAD +0x0+2000 0x0+102000 0x0+102000 0x0+2000 0x0+2000 RW +0x100000 + +LOAD +0x0+2000 0x0+102000 0x0+102000 0x0+1008 0x0+1008 RW +0x100000 +DYNAMIC +0x0+2000 0x0+102000 0x0+102000 0x0+e0 0x0+e0 RW +0x8 #... diff --git a/ld/testsuite/ld-sparc/gotop64.td b/ld/testsuite/ld-sparc/gotop64.td index 28d40ed..303cdfe 100644 --- a/ld/testsuite/ld-sparc/gotop64.td +++ b/ld/testsuite/ld-sparc/gotop64.td @@ -7,6 +7,5 @@ .*: +file format elf64-sparc Contents of section .data: - 103000 12345678 deadbeef 00000000 00000000 .* - 103010 00000000 00000000 00000000 00000000 .* + 103000 12345678 deadbeef .* #pass diff --git a/ld/testsuite/ld-tilegx/external.s b/ld/testsuite/ld-tilegx/external.s index ab681bc..8806584 100644 --- a/ld/testsuite/ld-tilegx/external.s +++ b/ld/testsuite/ld-tilegx/external.s @@ -38,6 +38,6 @@ external_64a = 0x123456789abcdef0 external_64b = 0xfedcba9876543210 .data - + .align 0x20 .global external_data1 external_data1: diff --git a/ld/testsuite/ld-tilepro/external.s b/ld/testsuite/ld-tilepro/external.s index 93d7556..87ba37a 100644 --- a/ld/testsuite/ld-tilepro/external.s +++ b/ld/testsuite/ld-tilepro/external.s @@ -28,6 +28,6 @@ external_32a = 0x87654321 external_32b = 0xfedcba98 .data - + .align 0x20 .global external_data1 external_data1: