From: Cyrill Gorcunov Date: Thu, 12 Aug 2010 15:09:28 +0000 (+0400) Subject: sectalign: Implement on/off mode X-Git-Tag: nasm-2.11.05~545 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8cb43d3f6833fa404cd906497db8bbd7fbca7335;p=platform%2Fupstream%2Fnasm.git sectalign: Implement on/off mode And describe it in documentation. We've introduced sectalign in 2.09rc series and have to provide an ability to steer this feature. Signed-off-by: Cyrill Gorcunov --- diff --git a/doc/nasmdoc.src b/doc/nasmdoc.src index e797329..d6771cf 100644 --- a/doc/nasmdoc.src +++ b/doc/nasmdoc.src @@ -4099,26 +4099,35 @@ boundary, for example, is a waste of effort. Again, NASM does not check that the section's alignment characteristics are sensible for the use of \c{ALIGN} or \c{ALIGNB}. +Both \c{ALIGN} and \c{ALIGNB} do call \c{SECTALIGN} macro implicitly. +See \k{sectalign} for details. + See also the \c{smartalign} standard macro package, \k{pkg_smartalign}. \S{sectalign} \i\c{SECTALIGN}: Section Alignment The \c{SECTALIGN} macros provides a way to modify alignment attribute -of output file section. Unlike the \c{align=} attribute allowed at section -definition only the \c{SECTALIGN} macro may be used any time you need it. +of output file section. Unlike the \c{align=} attribute (which is allowed +at section definition only) the \c{SECTALIGN} macro may be used at any time. -For example the statement +For example the directive -\c \c SECTALIGN 16 -\c -sets a section alignment requirement to 16 bytes. Note that once increased -the section alignment can not be decreased, the magnitude can grow only. +sets the section alignment requirements to 16 bytes. Once increased it can +not be decreased, the magnitude may grow only. + +Note that \c{ALIGN} (see \k{align}) calls the \c{SECTALIGN} macro implicitly +so the active section alignment requirements may be updated. This is by default +behaviour, if for some reason you want the \c{ALIGN} do not call \c{SECTALIGN} +at all use the directive + +\c SECTALIGN OFF + +It is still possible to turn in on again by -It must be also noted that \c{SECTALIGN} gets called implicitly inside \c{ALIGN} -handler and as result \c{ALIGN} may update section alignment. +\c SECTALIGN ON \C{macropkg} \i{Standard Macro Packages} diff --git a/standard.mac b/standard.mac index 0b79896..b2dff8d 100644 --- a/standard.mac +++ b/standard.mac @@ -68,8 +68,19 @@ __SECT__ %endmacro +%define __SECTALIGN_ALIGN_UPDATES_SECTION__ 1 %imacro sectalign 1.nolist - [sectalign %1] + %ifnum %1 + %if __SECTALIGN_ALIGN_UPDATES_SECTION__ = 1 + [sectalign %1] + %endif + %else + %ifidni %1,off + %define __SECTALIGN_ALIGN_UPDATES_SECTION__ 0 + %elifidni %1,on + %define __SECTALIGN_ALIGN_UPDATES_SECTION__ 1 + %endif + %endif %endmacro %imacro absolute 1+.nolist