\input texinfo @c -*-Texinfo-*-
-@c Copyright (c) 1991, 92, 93, 94, 95, 96, 97, 98, 2000
+@c Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+@c 2001
@c Free Software Foundation, Inc.
@c UPDATE!! On future updates--
@c (1) check for new machine-dep cmdline options in
@include asconfig.texi
@include gasver.texi
@c ---
+@c man begin NAME
+@ifset man
+@c Configure for the generation of man pages
+@set AS as
+@set TARGET TARGET
+@set GENERIC
+@set A29K
+@set ARC
+@set ARM
+@set D10V
+@set D30V
+@set H8/300
+@set H8/500
+@set HPPA
+@set I370
+@set I80386
+@set I860
+@set I960
+@set M32R
+@set M68HC11
+@set M680X0
+@set M880X0
+@set MCORE
+@set MIPS
+@set PDP11
+@set PJ
+@set SH
+@set SPARC
+@set C54X
+@set V850
+@set VAX
+@end ifset
+@c man end
@c common OR combinations of conditions
@ifset AOUT
@set aout-bout
@ifinfo
This file documents the GNU Assembler "@value{AS}".
-Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000 Free Software Foundation, Inc.
+@c man begin COPYRIGHT
+Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001 Free Software Foundation, Inc.
- Permission is granted to copy, distribute and/or modify this document
- under the terms of the GNU Free Documentation License, Version 1.1
- or any later version published by the Free Software Foundation;
- with no Invariant Sections, with no Front-Cover Texts, and with no
- Back-Cover Texts. A copy of the license is included in the
- section entitled "GNU Free Documentation License".
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1
+or any later version published by the Free Software Foundation;
+with no Invariant Sections, with no Front-Cover Texts, and with no
+Back-Cover Texts. A copy of the license is included in the
+section entitled "GNU Free Documentation License".
+
+@c man end
@ignore
Permission is granted to process this file through Tex and print the
@end tex
@vskip 0pt plus 1filll
-Copyright @copyright{} 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000 Free Software Foundation, Inc.
+Copyright @copyright{} 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1
Here is a brief summary of how to invoke @code{@value{AS}}. For details,
@pxref{Invoking,,Comand-Line Options}.
+@c man title AS the portable GNU assembler.
+
+@c man begin SEEALSO
+gcc(1), ld(1), and the Info entries for @file{binutils} and @file{ld}.
+@c man end
+
@c We don't use deffn and friends for the following because they seem
@c to be limited to one line for the header.
@smallexample
+@c man begin SYNOPSIS
@value{AS} [ -a[cdhlns][=file] ] [ -D ] [ --defsym @var{sym}=@var{val} ]
- [ -f ] [ --gstabs ] [ --gdwarf2 ] [ --help ] [ -I @var{dir} ] [ -J ] [ -K ] [ -L ]
+ [ -f ] [ --gstabs ] [ --gdwarf2 ] [ --help ] [ -I @var{dir} ]
+ [ -J ] [ -K ] [ -L ]
+ [ --listing--lhs-width=NUM ][ --listing-lhs-width2=NUM ]
+ [ --listing-rhs-width=NUM ][ --listing-cont-lines=NUM ]
[ --keep-locals ] [ -o @var{objfile} ] [ -R ] [ --statistics ] [ -v ]
[ -version ] [ --version ] [ -W ] [ --warn ] [ --fatal-warnings ]
[ -w ] [ -x ] [ -Z ] [ --target-help ]
@c am29k has no machine-dependent assembler options
@end ifset
@ifset ARC
- [ -mbig-endian | -mlittle-endian ]
+ [ -marc[5|6|7|8] ]
+ [ -EB | -EL ]
@end ifset
@ifset ARM
- [ -m[arm]1 | -m[arm]2 | -m[arm]250 | -m[arm]3 | -m[arm]6 | -m[arm]60 |
- -m[arm]600 | -m[arm]610 | -m[arm]620 | -m[arm]7[t][[d]m[i]][fe] | -m[arm]70 |
- -m[arm]700 | -m[arm]710[c] | -m[arm]7100 | -m[arm]7500 | -m[arm]8 |
- -m[arm]810 | -m[arm]9 | -m[arm]920 | -m[arm]920t | -m[arm]9tdmi |
+ [ -m[arm]1 | -m[arm]2 | -m[arm]250 | -m[arm]3 |
+ -m[arm]6 | -m[arm]60 | -m[arm]600 | -m[arm]610 |
+ -m[arm]620 | -m[arm]7[t][[d]m[i]][fe] | -m[arm]70 |
+ -m[arm]700 | -m[arm]710[c] | -m[arm]7100 |
+ -m[arm]7500 | -m[arm]8 | -m[arm]810 | -m[arm]9 |
+ -m[arm]920 | -m[arm]920t | -m[arm]9tdmi |
-mstrongarm | -mstrongarm110 | -mstrongarm1100 ]
- [ -m[arm]v2 | -m[arm]v2a | -m[arm]v3 | -m[arm]v3m | -m[arm]v4 | -m[arm]v4t |
- -m[arm]v5 | -[arm]v5t ]
+ [ -m[arm]v2 | -m[arm]v2a | -m[arm]v3 | -m[arm]v3m |
+ -m[arm]v4 | -m[arm]v4t | -m[arm]v5 | -[arm]v5t |
+ -[arm]v5te ]
[ -mthumb | -mall ]
[ -mfpa10 | -mfpa11 | -mfpe-old | -mno-fpu ]
[ -EB | -EL ]
- [ -mapcs-32 | -mapcs-26 | -mapcs-float | -mapcs-reentrant ]
- [ -mthumb-interwork ]
- [ -moabi ]
- [ -k ]
+ [ -mapcs-32 | -mapcs-26 | -mapcs-float |
+ -mapcs-reentrant ]
+ [ -mthumb-interwork ] [ -moabi ] [ -k ]
@end ifset
@ifset D10V
[ -O ]
@c The order here is important. See c-sparc.texi.
[ -Av6 | -Av7 | -Av8 | -Asparclet | -Asparclite
-Av8plus | -Av8plusa | -Av9 | -Av9a ]
- [ -xarch=v8plus | -xarch=v8plusa ] [ -bump ] [ -32 | -64 ]
+ [ -xarch=v8plus | -xarch=v8plusa ] [ -bump ]
+ [ -32 | -64 ]
@end ifset
@ifset TIC54X
[ -mcpu=54[123589] | -mcpu=54[56]lp ] [ -mfar-mode | -mf ]
@end ifset
@ifset I960
@c see md_parse_option in tc-i960.c
- [ -ACA | -ACA_A | -ACB | -ACC | -AKA | -AKB | -AKC | -AMC ]
+ [ -ACA | -ACA_A | -ACB | -ACC | -AKA | -AKB |
+ -AKC | -AMC ]
[ -b ] [ -no-relax ]
@end ifset
@ifset M32R
- [ --m32rx | --[no-]warn-explicit-parallel-conflicts | --W[n]p ]
+ [ --m32rx | --[no-]warn-explicit-parallel-conflicts |
+ --W[n]p ]
@end ifset
@ifset M680X0
[ -l ] [ -m68000 | -m68010 | -m68020 | ... ]
@end ifset
@ifset M68HC11
[ -m68hc11 | -m68hc12 ]
- [ --force-long-branchs ] [ --short-branchs ] [ --strict-direct-mode ]
- [ --print-insn-syntax ] [ --print-opcodes ] [ --generate-example ]
+ [ --force-long-branchs ] [ --short-branchs ]
+ [ --strict-direct-mode ] [ --print-insn-syntax ]
+ [ --print-opcodes ] [ --generate-example ]
@end ifset
@ifset MIPS
[ -nocpp ] [ -EL ] [ -EB ] [ -G @var{num} ] [ -mcpu=@var{CPU} ]
- [ -mips1 ] [ -mips2 ] [ -mips3 ] [ -m4650 ] [ -no-m4650 ] [ -mips32 ] [ -no-mips32 ]
- [ --trap ] [ --break ]
+ [ -mips1 ] [ -mips2 ] [ -mips3 ] [ -mips4 ] [ -mips5 ]
+ [ -mips32 ] [ -mips64 ]
+ [ -m4650 ] [ -no-m4650 ]
+ [ --trap ] [ --break ] [ -n ]
[ --emulation=@var{name} ]
@end ifset
[ -- | @var{files} @dots{} ]
+@c man end
@end smallexample
+@c man begin OPTIONS
+
@table @code
@item -a[cdhlmns]
Turn on listings, in any of a variety of ways:
these start with @samp{L}, but different systems have different local
label prefixes.
+@item --listing-lhs-width=@var{number}
+Set the maximum width, in words, of the output data column for an assembler
+listing to @var{number}.
+
+@item --listing-lhs-width2=@var{number}
+Set the maximum width, in words, of the output data column for continuation
+lines in an assembler listing to @var{number}.
+
+@item --listing-rhs-width=@var{number}
+Set the maximum width of an input source line, as displayed in a listing, to
+@var{number} bytes.
+
+@item --listing-cont-lines=@var{number}
+Set the maximum number of lines printed in a listing for a single line of input
+to @var{number} + 1.
+
@item -o @var{objfile}
Name the object-file output from @code{@value{AS}} @var{objfile}.
an ARC processor.
@table @code
-
-@cindex ARC endianness
-@cindex endianness, ARC
-@cindex big endian output, ARC
-@item -mbig-endian
-Generate ``big endian'' format output.
-
-@cindex little endian output, ARC
-@item -mlittle-endian
-Generate ``little endian'' format output.
-
+@item -marc[5|6|7|8]
+This option selects the core processor variant.
+@item -EB | -EL
+Select either big-endian (-EB) or little-endian (-EL) output.
@end table
@end ifset
@item -mthumb | -mall
Enable or disable Thumb only instruction decoding.
@item -mfpa10 | -mfpa11 | -mfpe-old | -mno-fpu
-Select which Floating Point architcture is the target.
+Select which Floating Point architecture is the target.
@item -mapcs-32 | -mapcs-26 | -mapcs-float | -mapcs-reentrant | -moabi
Select which procedure calling convention is in use.
@item -EB | -EL
@item -l
Shorten references to undefined symbols, to one word instead of two.
-@item -m68000 | -m68008 | -m68010 | -m68020 | -m68030 | -m68040 | -m68060
-@itemx | -m68302 | -m68331 | -m68332 | -m68333 | -m68340 | -mcpu32 | -m5200
+@item -m68000 | -m68008 | -m68010 | -m68020 | -m68030
+@itemx | -m68040 | -m68060 | -m68302 | -m68331 | -m68332
+@itemx | -m68333 | -m68340 | -mcpu32 | -m5200
Specify what processor in the 68000 family is the target. The default
is normally the 68020, but this can be changed at configuration time.
@end table
@end ifset
+@ifset PDP11
+
+For details about the PDP-11 machine dependent features options,
+see @ref{PDP-11-Options}.
+
+@table @code
+@item -mpic | -mno-pic
+Generate position-independent (or position-dependent) code. The
+default is @code{-mpic}.
+
+@item -mall
+@itemx -mall-extensions
+Enable all instruction set extensions. This is the default.
+
+@item -mno-extensions
+Disable all instruction set extensions.
+
+@item -m@var{extension} | -mno-@var{extension}
+Enable (or disable) a particular instruction set extension.
+
+@item -m@var{cpu}
+Enable the instruction set extensions supported by a particular CPU, and
+disable all other extensions.
+
+@item -m@var{machine}
+Enable the instruction set extensions supported by a particular machine
+model, and disable all other extensions.
+@end table
+
+@end ifset
+
@ifset PJ
The following options are available when @value{AS} is configured for
a picoJava processor.
@item -mips1
@itemx -mips2
@itemx -mips3
+@itemx -mips4
+@itemx -mips32
Generate code for a particular MIPS Instruction Set Architecture level.
@samp{-mips1} corresponds to the @sc{r2000} and @sc{r3000} processors,
@samp{-mips2} to the @sc{r6000} processor, and @samp{-mips3} to the @sc{r4000}
processor.
+@samp{-mips5}, @samp{-mips32}, and @samp{-mips64} correspond
+to generic @sc{MIPS V}, @sc{MIPS32}, and @sc{MIPS64} ISA
+processors, respectively.
@item -m4650
@itemx -no-m4650
instructions around accesses to the @samp{HI} and @samp{LO} registers.
@samp{-no-m4650} turns off this option.
-@item -mips32
-@itemx -no-mips32
-Generate code for the @sc{MIPS32} architecture. This tells the assembler to
-accept ISA level 2 instructions and MIPS32 extensions including some @sc{r4000}
-instructions.
-
@item -mcpu=@var{CPU}
-Generate code for a particular MIPS cpu. This has little effect on the
-assembler, but it is passed by @code{@value{GCC}}.
+Generate code for a particular MIPS cpu. It is exactly equivalent to
+@samp{-m@var{cpu}}, except that there are more value of @var{cpu}
+understood.
@cindex emulation
@item --emulation=@var{name}
(and only work for Instruction Set Architecture level 2 and higher);
@samp{--break} or @samp{--no-trap} (also synonyms, and the default) take a
break exception.
+
+@item -n
+When this option is used, @code{@value{AS}} will issue a warning every
+time it generates a nop instruction from a macro.
@end table
@end ifset
@item -sifilter
@itemx -nosifilter
Enable or disable the silicon filter behaviour. By default this is disabled.
-The default can be overidden by the @samp{-sifilter} command line option.
+The default can be overridden by the @samp{-sifilter} command line option.
@item -relax
Alter jump instructions for long displacements.
@end table
@end ifset
+@c man end
+
@menu
* Manual:: Structure of this Manual
* GNU Assembler:: The GNU Assembler
@node GNU Assembler
@section The GNU Assembler
+@c man begin DESCRIPTION
+
@sc{gnu} @code{as} is really a family of assemblers.
@ifclear GENERIC
This manual describes @code{@value{AS}}, a member of that family which is
incompatible versions of 680x0 assembly language syntax.
@end ifset
+@c man end
+
Unlike older assemblers, @code{@value{AS}} is designed to assemble a source
program in one pass of the source file. This has a subtle impact on the
@kbd{.org} directive (@pxref{Org,,@code{.org}}).
@section Command Line
@cindex command line conventions
+
After the program name @code{@value{AS}}, the command line may contain
options and file names. Options may appear in any order, and may be
before, after, or between file names. The order of file names is
The source program is a concatenation of the text in all the files, in the
order specified.
+@c man begin DESCRIPTION
Each time you run @code{@value{AS}} it assembles exactly one source
program. The source program is made up of one or more files.
(The standard input is also a file.)
If the source is empty, @code{@value{AS}} produces a small, empty object
file.
+@c man end
+
@subheading Filenames and Line-numbers
@cindex input file linenumbers
@node Errors
@section Error and Warning Messages
-@cindex error messsages
+@c man begin DESCRIPTION
+
+@cindex error messages
@cindex warning messages
@cindex messages from assembler
@code{@value{AS}} may write warnings and error messages to the standard error
that @code{@value{AS}} could keep assembling a flawed program; errors report a
grave problem that stops the assembly.
+@c man end
+
@cindex format of warning messages
Warning messages have the format
to particular machine architectures.
@end ifset
+@c man begin DESCRIPTION
+
If you are invoking @code{@value{AS}} via the @sc{gnu} C compiler (version 2),
you can use the @samp{-Wa} option to pass arguments through to the assembler.
The assembler arguments must be separated from each other (and the @samp{-Wa})
precisely what options it passes to each compilation pass, including the
assembler.)
+@c man end
+
@menu
* a:: -a[cdhlns] enable listings
* D:: -D for compatibility
@end ifset
* L:: -L to retain local labels
+* listing:: --listing-XXX to configure listing output
* M:: -M or --mri to assemble in MRI compatibility mode
* MD:: --MD for dependency tracking
* o:: -o to name the object file
The letters after @samp{-a} may be combined into one option,
@emph{e.g.}, @samp{-aln}.
+Note if the assembler source is coming from the standard input (eg because it
+is being created by @code{@value{GCC}} and the @samp{-pipe} command line switch
+is being used) then the listing will not contain any comments or preprocessor
+directives. This is because the listing code buffers input source lines from
+stdin only after they have been preprocessed by the assembler. This reduces
+memory usage and makes the code more efficient.
+
@node D
@section @code{-D}
On the HPPA local labels begin with @samp{L$}.
@end ifset
+@node listing
+@section Configuringh listing output: @code{--listing}
+
+The listing feature of the assembler can be enabled via the command line switch
+@samp{-a} (@pxref{a}). This feature combines the input source file(s) with a
+hex dump of the corresponding locations in the output object file, and displays
+them as a listing file. The format of this listing can be controlled by pseudo
+ops inside the assembler source (@pxref{List} @pxref{Title} @pxref{Sbttl}
+@pxref{Psize} @pxref{Eject}) and also by the following switches:
+
+@table @code
+@item --listing-lhs-width=@samp{number}
+@kindex --listing-lhs-width
+@cindex Width of first line disassembly output
+Sets the maximum width, in words, of the first line of the hex byte dump. This
+dump appears on the left hand side of the listing output.
+
+@item --listing-lhs-width2=@samp{number}
+@kindex --listing-lhs-width2
+@cindex Width of continuation lines of disassembly output
+Sets the maximum width, in words, of any further lines of the hex byte dump for
+a given inut source line. If this value is not specified, it defaults to being
+the same as the value specified for @samp{--listing-lhs-width}. If neither
+switch is used the default is to one.
+
+@item --listing-rhs-width=@samp{number}
+@kindex --listing-rhs-width
+@cindex Width of source line output
+Sets the maximum width, in characters, of the source line that is displayed
+alongside the hex dump. The default value for this parameter is 100. The
+source line is displayed on the right hand side of the listing output.
+
+@item --listing-cont-lines=@samp{number}
+@kindex --listing-cont-lines
+@cindex Maximum number of continuation lines
+Sets the maximum number of continuation lines of hex dump that will be
+displayed for a given single line of source input. The default value is 4.
+@end table
+
@node M
@section Assemble in MRI Compatibility Mode: @code{-M}
@ifset HPPA
@samp{;} for the HPPA;
@end ifset
+@ifset I80386
+@samp{#} on the i386 and x86-64;
+@end ifset
@ifset I960
@samp{#} on the i960;
@end ifset
+@ifset PDP11
+@samp{;} for the PDP-11;
+@end ifset
@ifset PJ
@samp{;} for picoJava;
@end ifset
@ifset M68HC11
@samp{#} on the 68HC11 and 68HC12;
@end ifset
+@ifset M880X0
+@samp{;} on the M880x0;
+@end ifset
@ifset VAX
@samp{#} on the Vax;
@end ifset
@samp{#} on the V850;
@end ifset
see @ref{Machine Dependencies}. @refill
-@c FIXME What about i386, m88k, i860?
+@c FIXME What about i860?
@ifset GENERIC
On some machines there are two different line comment characters. One
@cindex bss section
@item bss section
This section contains zeroed bytes when your program begins running. It
-is used to hold unitialized variables or common storage. The length of
+is used to hold uninitialized variables or common storage. The length of
each partial program's bss section is important, but because it starts
out containing zeroed bytes there is no need to store explicit zero
bytes in the object file. The bss section was invented to eliminate
@end table
@item
-Lowest Precedence
+Low Precedence
@table @code
@cindex addition, permitted arguments
If both arguments are in the same section, the result is absolute.
You may not subtract arguments from different sections.
@c FIXME is there still something useful to say about undefined - undefined ?
+
+@cindex comparison expressions
+@cindex expressions, comparison
+@item ==
+@dfn{Is Equal To}
+@item <>
+@dfn{Is Not Equal To}
+@item <
+@dfn{Is Less Than}
+@itemx >
+@dfn{Is Greater Than}
+@itemx >=
+@dfn{Is Greater Than Or Equal To}
+@itemx <=
+@dfn{Is Less Than Or Equal To}
+
+The comparison operators can be used as infix operators. A true results has a
+value of -1 whereas a false result has a value of 0. Note, these operators
+perform signed comparisons.
+@end table
+
+@item Lowest Precedence
+
+@table @code
+@item &&
+@dfn{Logical And}.
+
+@item ||
+@dfn{Logical Or}.
+
+These two logical operations can be used to combine the results of sub
+expressions. Note, unlike the comparison operators a true result returns a
+value of 1 but a false results does still return 0. Also note that the logical
+or operator has a slightly lower precedence than logical and.
+
@end table
@end enumerate
* hword:: @code{.hword @var{expressions}}
* Ident:: @code{.ident}
* If:: @code{.if @var{absolute expression}}
+* Incbin:: @code{.incbin "@var{file}"[,@var{skip}[,@var{count}]]}
* Include:: @code{.include "@var{file}"}
* Int:: @code{.int @var{expressions}}
@ifset ELF
@cindex @code{fill} directive
@cindex writing patterns in memory
@cindex patterns, writing in memory
-@var{result}, @var{size} and @var{value} are absolute expressions.
+@var{repeat}, @var{size} and @var{value} are absolute expressions.
This emits @var{repeat} copies of @var{size} bytes. @var{Repeat}
may be zero or more. @var{Size} may be zero or more, but if it is
more than 8, then it is deemed to have the value 8, compatible with
@cindex @code{.hidden} directive
@cindex Visibility
This one of the ELF visibility directives. The other two are
-@pxref{Internal,,@code{.internal}} and @pxref{Protected,,@code{.protected}}
+@code{.internal} (@pxref{Internal,,@code{.internal}}) and
+@code{.protected} (@pxref{Protected,,@code{.protected}}).
This directive overrides the named symbols default visibility (which is set by
their binding: local, global or weak). The directive sets the visibility to
following section of code if the two strings are not the same.
@end table
+@node Incbin
+@section @code{.incbin "@var{file}"[,@var{skip}[,@var{count}]]}
+
+@cindex @code{incbin} directive
+@cindex binary files, including
+The @code{incbin} directive includes @var{file} verbatim at the current
+location. You can control the search paths used with the @samp{-I} command-line
+option (@pxref{Invoking,,Command-Line Options}). Quotation marks are required
+around @var{file}.
+
+The @var{skip} argument skips a number of bytes from the start of the
+@var{file}. The @var{count} argument indicates the maximum number of bytes to
+read. Note that the data from is not aligned in any way, make sure to proper
+alignment is provided before and after the @code{incbin} directive.
+
@node Include
@section @code{.include "@var{file}"}
@cindex @code{.internal} directive
@cindex Visibility
This one of the ELF visibility directives. The other two are
-@pxref{Hidden,,@code{.hidden}} and @pxref{Protected,,@code{.protected}}
+@code{.hidden} (@pxref{Hidden,,@code{.hidden}}) and
+@code{.protected} (@pxref{Protected,,@code{.protected}}).
This directive overrides the named symbols default visibility (which is set by
their binding: local, global or weak). The directive sets the visibility to
@cindex @code{.previous} directive
@cindex Section Stack
This is one of the ELF section stack manipulation directives. The others are
-@pxref{Section}, @xref{SubSection}, @pxref{PushSection}, and
-@pxref{PopSection}.
+@code{.section} (@pxref{Section}), @code{.subsection} (@pxref{SubSection}),
+@code{.pushsection} (@pxref{PushSection}), and @code{.popsection}
+(@pxref{PopSection}).
This directive swaps the current section (and subsection) with most recently
referenced section (and subsection) prior to this one. Multiple
@cindex @code{.popsection} directive
@cindex Section Stack
This is one of the ELF section stack manipulation directives. The others are
-@pxref{Section}, @xref{SubSection}, @pxref{PushSection}, and
-@pxref{Previous}.
+@code{.section} (@pxref{Section}), @code{.subsection} (@pxref{SubSection}),
+@code{.pushsection} (@pxref{PushSection}), and @code{.previous}
+(@pxref{Previous}).
This directive replaces the current section (and subsection) with the top
section (and subsection) on the section stack. This section is popped off the
@cindex @code{.protected} directive
@cindex Visibility
This one of the ELF visibility directives. The other two are
-@pxref{Hidden} and @pxref{Internal}
+@code{.hidden} (@pxref{Hidden}) and @code{.internal} (@pxref{Internal}).
This directive overrides the named symbols default visibility (which is set by
their binding: local, global or weak). The directive sets the visibility to
@cindex @code{.pushsection} directive
@cindex Section Stack
This is one of the ELF section stack manipulation directives. The others are
-@pxref{Section}, @xref{SubSection}, @pxref{PopSection}, and
-@pxref{Previous}.
+@code{.section} (@pxref{Section}), @code{.subsection} (@pxref{SubSection}),
+@code{.popsection} (@pxref{PopSection}), and @code{.previous}
+(@pxref{Previous}).
-This directive is a synonym for @code{.section}. It psuhes the current section
+This directive is a synonym for @code{.section}. It pushes the current section
(and subsection) onto the top of the section stack, and then replaces the
current section and subsection with @code{name} and @code{subsection}.
@end ifset
If no flags are specified, the default flags depend upon the section name. If
the section name is not recognized, the default will be for the section to be
-loaded and writable.
+loaded and writable. Note the @code{n} and @code{w} flags remove attributes
+from the section, rather than adding them, so if they are used on their own it
+will be as if no flags had been specified at all.
If the optional argument to the @code{.section} directive is not quoted, it is
taken as a subsegment number (@pxref{Sub-Sections}).
@ifset ELF
@cindex Section Stack
This is one of the ELF section stack manipulation directives. The others are
-@xref{SubSection}, @pxref{PushSection}@pxref{PopSection}, and
-@pxref{Previous}.
+@code{.subsection} (@pxref{SubSection}), @code{.pushsection}
+(@pxref{PushSection}), @code{.popsection} (@pxref{PopSection}), and
+@code{.previous} (@pxref{Previous}).
@end ifset
For ELF targets, the @code{.section} directive is used like this:
@end smallexample
The optional @var{flags} argument is a quoted string which may contain any
-combintion of the following characters:
+combination of the following characters:
@table @code
@item a
section is allocatable
@cindex @code{.subsection} directive
@cindex Section Stack
This is one of the ELF section stack manipulation directives. The others are
-@pxref{Section}, @xref{PushSection}, @pxref{PopSection}, and
-@pxref{Previous}.
+@code{.section} (@pxref{Section}), @code{.pushsection} (@pxref{PushSection}),
+@code{.popsection} (@pxref{PopSection}), and @code{.previous}
+(@pxref{Previous}).
This directive replaces the current subsection with @code{name}. The current
section is not changed. The replaced subsection is put onto the section stack
.symver @var{name}, @var{name2@@@@nodename}
@end smallexample
In this case, the symbol @var{name} must exist and be defined within
-the file being assembled. It is similiar to @var{name2@@nodename}. The
+the file being assembled. It is similar to @var{name2@@nodename}. The
difference is @var{name2@@@@nodename} will also be used to resolve
references to @var{name2} by the linker.
@cindex symbol type, ELF
@cindex @code{type} directive
This directive is used to set the type of symbol @var{name} to be either a
-function symbol or an ojbect symbol. There are five different syntaxes
+function symbol or an object symbol. There are five different syntaxes
supported for the @var{type description} field, in order to provide
-comptability with various other assemblers. The syntaxes supported are:
+compatibility with various other assemblers. The syntaxes supported are:
@smallexample
.type <name>,#function
@cindex @code{.vtable_inherit}
This directive finds the symbol @code{child} and finds or creates the symbol
@code{parent} and then creates a @code{VTABLE_INHERIT} relocation for the
-parent whoes addend is the value of the child symbol. As a special case the
+parent whose addend is the value of the child symbol. As a special case the
parent name of @code{0} is treated as refering the @code{*ABS*} section.
@end ifset
@section @code{.weak @var{names}}
@cindex @code{.weak}
-This directive sets the weak attribute on the comma seperated list of symbol
+This directive sets the weak attribute on the comma separated list of symbol
@code{names}. If the symbols do not already exist, they will be created.
@end ifset
@end ifset
In order to assemble compiler output into something that works,
-@code{@value{AS}} occasionlly does strange things to @samp{.word} directives.
+@code{@value{AS}} occasionally does strange things to @samp{.word} directives.
Directives of the form @samp{.word sym1-sym2} are often emitted by
compilers as part of jump tables. Therefore, when @code{@value{AS}} assembles a
directive of the form @samp{.word sym1-sym2}, and the difference between
* ESA/390-Dependent:: IBM ESA/390 Dependent Features
@end ifset
@ifset I80386
-* i386-Dependent:: Intel 80386 Dependent Features
+* i386-Dependent:: Intel 80386 and AMD x86-64 Dependent Features
@end ifset
@ifset I860
* i860-Dependent:: Intel 80860 Dependent Features
@ifset M68HC11
* M68HC11-Dependent:: M68HC11 and 68HC12 Dependent Features
@end ifset
+@ifset M880X0
+* M88K-Dependent:: M880x0 Dependent Features
+@end ifset
@ifset MIPS
* MIPS-Dependent:: MIPS Dependent Features
@end ifset
@ifset SH
* SH-Dependent:: Hitachi SH Dependent Features
@end ifset
+@ifset PDP11
+* PDP-11-Dependent:: PDP-11 Dependent Features
+@end ifset
@ifset PJ
* PJ-Dependent:: picoJava Dependent Features
@end ifset
@c in both conditional blocks.
@ifset ARC
-@ifset GENERIC
-@page
-@node ARC-Dependent
-@chapter ARC Dependent Features
-@end ifset
-@ifclear GENERIC
-@node Machine Dependencies
-@chapter ARC Dependent Features
-@end ifclear
-
-@cindex ARC support
-@menu
-* ARC-Opts:: Options
-* ARC-Float:: Floating Point
-* ARC-Directives:: Sparc Machine Directives
-@end menu
-
-@node ARC-Opts
-@section Options
-
-@cindex options for ARC
-@cindex ARC options
-@cindex architectures, ARC
-@cindex ARC architectures
-The ARC chip family includes several successive levels (or other
-variants) of chip, using the same core instruction set, but including
-a few additional instructions at each level.
-
-By default, @code{@value{AS}} assumes the core instruction set (ARC
-base). The @code{.cpu} pseudo-op is intended to be used to select
-the variant.
-
-@table @code
-@cindex @code{-mbig-endian} option (ARC)
-@cindex @code{-mlittle-endian} option (ARC)
-@cindex ARC big-endian output
-@cindex ARC little-endian output
-@cindex big-endian output, ARC
-@cindex little-endian output, ARC
-@item -mbig-endian
-@itemx -mlittle-endian
-Any @sc{arc} configuration of @code{@value{AS}} can select big-endian or
-little-endian output at run time (unlike most other @sc{gnu} development
-tools, which must be configured for one or the other). Use
-@samp{-mbig-endian} to select big-endian output, and @samp{-mlittle-endian}
-for little-endian.
-@end table
-
-@node ARC-Float
-@section Floating Point
-
-@cindex floating point, ARC (@sc{ieee})
-@cindex ARC floating point (@sc{ieee})
-The ARC cpu family currently does not have hardware floating point
-support. Software floating point support is provided by @code{GCC}
-and uses @sc{ieee} floating-point numbers.
-
-@node ARC-Directives
-@section ARC Machine Directives
-
-@cindex ARC machine directives
-@cindex machine directives, ARC
-The ARC version of @code{@value{AS}} supports the following additional
-machine directives:
-
-@table @code
-@item .cpu
-@cindex @code{cpu} directive, SPARC
-This must be followed by the desired cpu.
-The ARC is intended to be customizable, @code{.cpu} is used to
-select the desired variant [though currently there are none].
-
-@end table
-
+@include c-arc.texi
@end ifset
@ifset A29K
@include c-m68hc11.texi
@end ifset
+@ifset M880X0
+@include c-m88k.texi
+@end ifset
+
@ifset MIPS
@include c-mips.texi
@end ifset
@include c-ns32k.texi
@end ifset
+@ifset PDP11
+@include c-pdp11.texi
+@end ifset
+
@ifset PJ
@include c-pj.texi
@end ifset
distribution.
In any event, we also recommend that you send bug reports for @code{@value{AS}}
-to @samp{bug-gnu-utils@@gnu.org}.
+to @samp{bug-binutils@@gnu.org}.
The fundamental principle of reporting bugs usefully is this:
@strong{report all the facts}. If you are not sure whether to state a