aboutsummaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorH. Peter Anvin (Intel) <hpa@zytor.com>2018-06-25 18:19:15 -0700
committerH. Peter Anvin (Intel) <hpa@zytor.com>2018-06-25 18:19:15 -0700
commitd558598ebe15279f346f748e8581de24ca63a0c1 (patch)
tree565893e1b37bc367a0fbc324ad880ff3b8d9ea66 /doc
parent70c09f0aac79167a68e51b78b0d4f0061cb79f25 (diff)
downloadnasm-d558598ebe15279f346f748e8581de24ca63a0c1.tar.gz
nasm-d558598ebe15279f346f748e8581de24ca63a0c1.tar.xz
nasm-d558598ebe15279f346f748e8581de24ca63a0c1.zip
doc: add a few more updates
In particular, document the new behavior of EXTERN, GLOBAL and COMMON. Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
Diffstat (limited to 'doc')
-rw-r--r--doc/changes.src24
-rw-r--r--doc/nasmdoc.src20
2 files changed, 22 insertions, 22 deletions
diff --git a/doc/changes.src b/doc/changes.src
index 7c272e0a..8c2d7f18 100644
--- a/doc/changes.src
+++ b/doc/changes.src
@@ -11,12 +11,12 @@ since 2007.
\b Fixed \c{subsections_via_symbols} for \c{macho} object format.
-\b Support to mangle labels based on the types through \c{%pragma}. See
-\k{mangling}.
-
\b Added the \c{--gprefix}, \c{--gpostfix}, \c{--lprefix}, and
\c{--lpostfix} command line options, to allow command line base symbol
-mangling. See \k{opt-pfix}.
+renaming. See \k{opt-pfix}.
+
+\b Allow label renaming to be specified by \c{%pragma} in addition to
+from the command line. See \k{mangling}.
\b Supported generic \c{%pragma} namespaces, \c{output} and \c{debug}. See
\k{gen-namespace}.
@@ -34,6 +34,13 @@ Instruction) instructions.
\b Added the \c{STATIC} directive for local symbols that should be
renamed using global-symbol rules. See \k{static}.
+\b Allow a symbol to be defined as \c{EXTERN} and then later
+overridden as \c{GLOBAL} or \c{COMMON}. Furthermore, a symbol declared
+\c{EXTERN} and then defined will be treated as \c{GLOBAL}. See \k{extern}.
+
+\b The \c{GLOBAL} directive no longer is required to precede the
+definition of the symbol.
+
\b Support \c{private_extern} as \c{macho} specific extension to the
\c{GLOBAL} directive. See \k{macho-pext}.
@@ -42,14 +49,7 @@ renamed using global-symbol rules. See \k{static}.
\b Added the \c{--limit-X} command line option to set execution
limits. See \k{opt-limit}.
-\b Fixed \c{CPU} directive case insensitive
-
-\b Fixed modules name for \c{ELF}, \c{IEEE}, \c{macho}, \c{obj} output format
-
-\b Fixed to build \c{rdoff} tool and resolve to handle dependencies correctly
-with \c{Microsoft Visual Studio}
-
-\b Fixed \c{Codeview} version number to be aligned with \c{MASM}.
+\b Updated the \c{Codeview} version number to be aligned with \c{MASM}.
\b Added the \c{--keep-all} command line option to preserve output
files. See \k{opt-keep-all}.
diff --git a/doc/nasmdoc.src b/doc/nasmdoc.src
index b0db9d59..c2e80a8f 100644
--- a/doc/nasmdoc.src
+++ b/doc/nasmdoc.src
@@ -4604,8 +4604,12 @@ only in that it can take only one argument at a time: the support
for multiple arguments is implemented at the preprocessor level.
You can declare the same variable as \c{EXTERN} more than once: NASM
-will quietly ignore the second and later redeclarations. You can't
-declare a variable as \c{EXTERN} as well as something else, though.
+will quietly ignore the second and later redeclarations.
+
+If a variable is declared both \c{GLOBAL} and \c{EXTERN}, or if it is
+declared as \c{EXTERN} and then defined, it will be treated as
+\c{GLOBAL}. If a variable is declared both as \c{COMMON} and
+\c{EXTERN}, it will be treated as \c{COMMON}.
\H{global} \i\c{GLOBAL}: \i{Exporting Symbols} to Other Modules
@@ -4616,9 +4620,6 @@ linker errors, some other module must actually \e{define} the
symbol and declare it as \c{GLOBAL}. Some assemblers use the name
\i\c{PUBLIC} for this purpose.
-The \c{GLOBAL} directive applying to a symbol must appear \e{before}
-the definition of the symbol.
-
\c{GLOBAL} uses the same syntax as \c{EXTERN}, except that it must
refer to symbols which \e{are} defined in the same module as the
\c{GLOBAL} directive. For example:
@@ -4673,11 +4674,10 @@ only one argument at a time.
\H{static} \i\c{STATIC}: Local Symbols within Modules
-Opposite to \c{EXTERN} and \c{GLOBAL}, \c{STATIC} is local symbol,
-but should be named according to the global mangling rules (named
-by analogy with the C keyword "static" as applied to the functions).
-And like \c{GLOBAL} directive, the directive applying to a symbol
-should be \i{before} the definition of the symbol. For example:
+Opposite to \c{EXTERN} and \c{GLOBAL}, \c{STATIC} is local symbol, but
+should be named according to the global mangling rules (named by
+analogy with the C keyword \c{static} as applied to functions or
+global variables).
\c static foo
\c foo: