From 5d239759c00a60a00986427b46c4f32e7fe3d616 Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Wed, 29 Apr 2015 11:10:45 +0100 Subject: Updates the description of GAS's .set directive, to note that for some targets a symbolic value can only be set once. * 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 | 6 ++++++ gas/doc/as.texinfo | 9 ++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 2266429..1affd22 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,9 @@ +2015-04-29 Nick Clifton + + * 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 * config/tc-arm.c (arm_init_frag): Always emit mapping symbols. diff --git a/gas/doc/as.texinfo b/gas/doc/as.texinfo index ffdb978..d09e88c 100644 --- a/gas/doc/as.texinfo +++ b/gas/doc/as.texinfo @@ -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. -- cgit v1.1