gas/ChangeLog:
* NEWS: Mention new feature. * config/obj-coff.c (obj_coff_section): Accept digits and use to override default section alignment power if specified. * doc/as.texinfo (.section directive): Update documentation. gas/testsuite/ChangeLog: * gas/pe/section-align-1.s: New test source file. * gas/pe/section-align-1.d: Likewise control script. * gas/pe/section-align-2.s: Likewise ... * gas/pe/section-align-2.d: ... and likewise. * gas/pe/pe.exp: Invoke new testcases.
This commit is contained in:
parent
40b27cdc59
commit
31907d5e90
10 changed files with 143 additions and 0 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2010-01-27 Dave Korn <dave.korn.cygwin@gmail.com>
|
||||||
|
|
||||||
|
* NEWS: Mention new feature.
|
||||||
|
* config/obj-coff.c (obj_coff_section): Accept digits and use
|
||||||
|
to override default section alignment power if specified.
|
||||||
|
* doc/as.texinfo (.section directive): Update documentation.
|
||||||
|
|
||||||
2010-01-27 H.J. Lu <hongjiu.lu@intel.com>
|
2010-01-27 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
* config/tc-i386.c (avxscalar): New.
|
* config/tc-i386.c (avxscalar): New.
|
||||||
|
|
5
gas/NEWS
5
gas/NEWS
|
@ -1,5 +1,10 @@
|
||||||
-*- text -*-
|
-*- text -*-
|
||||||
|
|
||||||
|
* GAS now understands an extended syntax in the .section directive flags
|
||||||
|
for COFF targets that allows the section's alignment to be specified. This
|
||||||
|
feature has also been backported to the 2.20 release series, starting with
|
||||||
|
2.20.1.
|
||||||
|
|
||||||
* Add support for the Renesas RX processor.
|
* Add support for the Renesas RX processor.
|
||||||
|
|
||||||
Changes in 2.20:
|
Changes in 2.20:
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
#define OBJ_HEADER "obj-coff.h"
|
#define OBJ_HEADER "obj-coff.h"
|
||||||
|
|
||||||
#include "as.h"
|
#include "as.h"
|
||||||
|
#include "safe-ctype.h"
|
||||||
#include "obstack.h"
|
#include "obstack.h"
|
||||||
#include "subsegs.h"
|
#include "subsegs.h"
|
||||||
|
|
||||||
|
@ -1540,6 +1541,7 @@ coff_frob_file_after_relocs (void)
|
||||||
'r' for read-only data
|
'r' for read-only data
|
||||||
's' for shared data (PE)
|
's' for shared data (PE)
|
||||||
'y' for noread
|
'y' for noread
|
||||||
|
'0' - '9' for power-of-two alignment (GNU extension).
|
||||||
But if the argument is not a quoted string, treat it as a
|
But if the argument is not a quoted string, treat it as a
|
||||||
subsegment number.
|
subsegment number.
|
||||||
|
|
||||||
|
@ -1552,6 +1554,7 @@ obj_coff_section (int ignore ATTRIBUTE_UNUSED)
|
||||||
/* Strip out the section name. */
|
/* Strip out the section name. */
|
||||||
char *section_name;
|
char *section_name;
|
||||||
char c;
|
char c;
|
||||||
|
int alignment = -1;
|
||||||
char *name;
|
char *name;
|
||||||
unsigned int exp;
|
unsigned int exp;
|
||||||
flagword flags, oldflags;
|
flagword flags, oldflags;
|
||||||
|
@ -1594,6 +1597,11 @@ obj_coff_section (int ignore ATTRIBUTE_UNUSED)
|
||||||
attr != '"'
|
attr != '"'
|
||||||
&& ! is_end_of_line[attr])
|
&& ! is_end_of_line[attr])
|
||||||
{
|
{
|
||||||
|
if (ISDIGIT (attr))
|
||||||
|
{
|
||||||
|
alignment = attr - '0';
|
||||||
|
continue;
|
||||||
|
}
|
||||||
switch (attr)
|
switch (attr)
|
||||||
{
|
{
|
||||||
case 'b':
|
case 'b':
|
||||||
|
@ -1670,6 +1678,8 @@ obj_coff_section (int ignore ATTRIBUTE_UNUSED)
|
||||||
}
|
}
|
||||||
|
|
||||||
sec = subseg_new (name, (subsegT) exp);
|
sec = subseg_new (name, (subsegT) exp);
|
||||||
|
if (alignment >= 0)
|
||||||
|
sec->alignment_power = alignment;
|
||||||
|
|
||||||
oldflags = bfd_get_section_flags (stdoutput, sec);
|
oldflags = bfd_get_section_flags (stdoutput, sec);
|
||||||
if (oldflags == SEC_NO_FLAGS)
|
if (oldflags == SEC_NO_FLAGS)
|
||||||
|
|
|
@ -5768,6 +5768,8 @@ shared section (meaningful for PE targets)
|
||||||
ignored. (For compatibility with the ELF version)
|
ignored. (For compatibility with the ELF version)
|
||||||
@item y
|
@item y
|
||||||
section is not readable (meaningful for PE targets)
|
section is not readable (meaningful for PE targets)
|
||||||
|
@item 0-9
|
||||||
|
single-digit power-of-two section alignment (GNU extension)
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
If no flags are specified, the default flags depend upon the section name. If
|
If no flags are specified, the default flags depend upon the section name. If
|
||||||
|
|
|
@ -1,3 +1,11 @@
|
||||||
|
2010-01-27 Dave Korn <dave.korn.cygwin@gmail.com>
|
||||||
|
|
||||||
|
* gas/pe/section-align-1.s: New test source file.
|
||||||
|
* gas/pe/section-align-1.d: Likewise control script.
|
||||||
|
* gas/pe/section-align-2.s: Likewise ...
|
||||||
|
* gas/pe/section-align-2.d: ... and likewise.
|
||||||
|
* gas/pe/pe.exp: Invoke new testcases.
|
||||||
|
|
||||||
2010-01-27 H.J. Lu <hongjiu.lu@intel.com>
|
2010-01-27 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
* gas/i386/avx-scalar-intel.d: New.
|
* gas/i386/avx-scalar-intel.d: New.
|
||||||
|
|
|
@ -32,3 +32,6 @@ run_dump_test "aligncomm-a"
|
||||||
run_dump_test "aligncomm-b"
|
run_dump_test "aligncomm-b"
|
||||||
run_dump_test "aligncomm-c"
|
run_dump_test "aligncomm-c"
|
||||||
run_dump_test "aligncomm-d"
|
run_dump_test "aligncomm-d"
|
||||||
|
|
||||||
|
run_dump_test "section-align-1"
|
||||||
|
run_dump_test "section-align-3"
|
||||||
|
|
29
gas/testsuite/gas/pe/section-align-1.d
Normal file
29
gas/testsuite/gas/pe/section-align-1.d
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
#objdump: -h
|
||||||
|
#name: section alignment
|
||||||
|
|
||||||
|
# Test that alignment works in .section directives.
|
||||||
|
|
||||||
|
.*: .*
|
||||||
|
|
||||||
|
Sections:
|
||||||
|
Idx Name *Size *VMA *LMA *File off *Algn
|
||||||
|
0 \.text 0*0000000 0*0000000 0*0000000 0*0000000 2\*\*[24]
|
||||||
|
ALLOC, LOAD, READONLY, CODE
|
||||||
|
1 \.data 0*0000000 0*0000000 0*0000000 0*0000000 2\*\*[24]
|
||||||
|
ALLOC, LOAD, DATA
|
||||||
|
2 \.bss 0*0000000 0*0000000 0*0000000 0*0000000 2\*\*[24]
|
||||||
|
ALLOC
|
||||||
|
3 \.none 0*0000000 0*0000000 0*0000000 0*0000000 2\*\*0
|
||||||
|
ALLOC, LOAD, READONLY, DATA
|
||||||
|
4 \.zero 0*0000000 0*0000000 0*0000000 0*0000000 2\*\*0
|
||||||
|
ALLOC, LOAD, READONLY, DATA
|
||||||
|
5 \.one 0*0000001 0*0000000 0*0000000 0*00001a4 2\*\*0
|
||||||
|
CONTENTS, ALLOC, LOAD, READONLY, DATA
|
||||||
|
6 \.two 0*0000002 0*0000000 0*0000000 0*00001a5 2\*\*0
|
||||||
|
CONTENTS, ALLOC, LOAD, READONLY, DATA
|
||||||
|
7 \.three 0*0000003 0*0000000 0*0000000 0*00001a7 2\*\*0
|
||||||
|
CONTENTS, ALLOC, LOAD, READONLY, DATA
|
||||||
|
8 \.four 0*0000004 0*0000000 0*0000000 0*00001aa 2\*\*0
|
||||||
|
CONTENTS, ALLOC, LOAD, READONLY, DATA
|
||||||
|
9 \.five 0*0000005 0*0000000 0*0000000 0*00001ae 2\*\*0
|
||||||
|
CONTENTS, ALLOC, LOAD, READONLY, DATA
|
15
gas/testsuite/gas/pe/section-align-1.s
Normal file
15
gas/testsuite/gas/pe/section-align-1.s
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
|
||||||
|
.section .none,"dr0"
|
||||||
|
.section .zero,"dr0"
|
||||||
|
.ascii ""
|
||||||
|
.section .one,"dr0"
|
||||||
|
.ascii "1"
|
||||||
|
.section .two,"dr0"
|
||||||
|
.ascii "12"
|
||||||
|
.section .three,"dr0"
|
||||||
|
.ascii "123"
|
||||||
|
.section .four,"dr0"
|
||||||
|
.ascii "1234"
|
||||||
|
.section .five,"dr0"
|
||||||
|
.ascii "12345"
|
||||||
|
.end
|
39
gas/testsuite/gas/pe/section-align-3.d
Normal file
39
gas/testsuite/gas/pe/section-align-3.d
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
#objdump: -h
|
||||||
|
#name: section alignment
|
||||||
|
|
||||||
|
# Test that alignment works in .section directives.
|
||||||
|
|
||||||
|
.*: .*
|
||||||
|
|
||||||
|
Sections:
|
||||||
|
Idx Name *Size *VMA *LMA *File off *Algn
|
||||||
|
0 \.text 0*0000000 0*0000000 0*0000000 0*0000000 2\*\*[24]
|
||||||
|
ALLOC, LOAD, READONLY, CODE
|
||||||
|
1 \.data 0*0000000 0*0000000 0*0000000 0*0000000 2\*\*[24]
|
||||||
|
ALLOC, LOAD, DATA
|
||||||
|
2 \.bss 0*0000000 0*0000000 0*0000000 0*0000000 2\*\*[24]
|
||||||
|
ALLOC
|
||||||
|
3 \.none 0*0000000 0*0000000 0*0000000 0*0000000 2\*\*3
|
||||||
|
ALLOC, LOAD, READONLY, DATA
|
||||||
|
4 \.zero 0*0000000 0*0000000 0*0000000 0*0000000 2\*\*3
|
||||||
|
ALLOC, LOAD, READONLY, DATA
|
||||||
|
5 \.one 0*0000008 0*0000000 0*0000000 0*000026c 2\*\*3
|
||||||
|
CONTENTS, ALLOC, LOAD, READONLY, DATA
|
||||||
|
6 \.two 0*0000008 0*0000000 0*0000000 0*0000274 2\*\*3
|
||||||
|
CONTENTS, ALLOC, LOAD, READONLY, DATA
|
||||||
|
7 \.three 0*0000008 0*0000000 0*0000000 0*000027c 2\*\*3
|
||||||
|
CONTENTS, ALLOC, LOAD, READONLY, DATA
|
||||||
|
8 \.four 0*0000008 0*0000000 0*0000000 0*0000284 2\*\*3
|
||||||
|
CONTENTS, ALLOC, LOAD, READONLY, DATA
|
||||||
|
9 \.five 0*0000008 0*0000000 0*0000000 0*000028c 2\*\*3
|
||||||
|
CONTENTS, ALLOC, LOAD, READONLY, DATA
|
||||||
|
10 \.six 0*0000008 0*0000000 0*0000000 0*0000294 2\*\*3
|
||||||
|
CONTENTS, ALLOC, LOAD, READONLY, DATA
|
||||||
|
11 \.seven 0*0000008 0*0000000 0*0000000 0*000029c 2\*\*3
|
||||||
|
CONTENTS, ALLOC, LOAD, READONLY, DATA
|
||||||
|
12 \.eight 0*0000008 0*0000000 0*0000000 0*00002a4 2\*\*3
|
||||||
|
CONTENTS, ALLOC, LOAD, READONLY, DATA
|
||||||
|
13 \.nine 0*0000010 0*0000000 0*0000000 0*00002ac 2\*\*3
|
||||||
|
CONTENTS, ALLOC, LOAD, READONLY, DATA
|
||||||
|
14 \.ten 0*0000010 0*0000000 0*0000000 0*00002bc 2\*\*3
|
||||||
|
CONTENTS, ALLOC, LOAD, READONLY, DATA
|
25
gas/testsuite/gas/pe/section-align-3.s
Normal file
25
gas/testsuite/gas/pe/section-align-3.s
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
|
||||||
|
.section .none,"dr3"
|
||||||
|
.section .zero,"dr3"
|
||||||
|
.ascii ""
|
||||||
|
.section .one,"dr3"
|
||||||
|
.ascii "1"
|
||||||
|
.section .two,"dr3"
|
||||||
|
.ascii "12"
|
||||||
|
.section .three,"dr3"
|
||||||
|
.ascii "123"
|
||||||
|
.section .four,"dr3"
|
||||||
|
.ascii "1234"
|
||||||
|
.section .five,"dr3"
|
||||||
|
.ascii "12345"
|
||||||
|
.section .six,"dr3"
|
||||||
|
.ascii "123456"
|
||||||
|
.section .seven,"dr3"
|
||||||
|
.ascii "1234567"
|
||||||
|
.section .eight,"dr3"
|
||||||
|
.ascii "12345678"
|
||||||
|
.section .nine,"dr3"
|
||||||
|
.ascii "123456789"
|
||||||
|
.section .ten,"dr3"
|
||||||
|
.ascii "1234567890"
|
||||||
|
.end
|
Loading…
Add table
Reference in a new issue