Updates the description of GAS's .set directive, to note that for some targets a...
authorNick Clifton <nickc@redhat.com>
Wed, 29 Apr 2015 10:10:45 +0000 (11:10 +0100)
committerNick Clifton <nickc@redhat.com>
Wed, 29 Apr 2015 10:10:45 +0000 (11:10 +0100)
* doc/as.texinfo (Set): Note that a symbol cannot be set multiple
times if the expression is not constant and the target uses linker
relaxation.

gas/ChangeLog
gas/doc/as.texinfo

index 2266429..1affd22 100644 (file)
@@ -1,3 +1,9 @@
+2015-04-29  Nick Clifton  <nickc@redhat.com>
+
+       * doc/as.texinfo (Set): Note that a symbol cannot be set multiple
+       times if the expression is not constant and the target uses linker
+       relaxation.
+
 2015-04-28  Renlin Li  <renlin.li@arm.com>
 
        * config/tc-arm.c (arm_init_frag): Always emit mapping symbols.
index ffdb978..d09e88c 100644 (file)
@@ -6351,7 +6351,14 @@ changes @var{symbol}'s value and type to conform to
 @var{expression}.  If @var{symbol} was flagged as external, it remains
 flagged (@pxref{Symbol Attributes}).
 
-You may @code{.set} a symbol many times in the same assembly.
+You may @code{.set} a symbol many times in the same assembly provided that the
+values given to the symbol are constants.  Values that are based on expressions
+involving other symbols are allowed, but some targets may restrict this to only
+being done once per assembly.  This is because those targets do not set the
+addresses of symbols at assembly time, but rather delay the assignment until a
+final link is performed.  This allows the linker a chance to change the code in
+the files, changing the location of, and the relative distance between, various
+different symbols.
 
 If you @code{.set} a global symbol, the value stored in the object
 file is the last value stored into it.