ABSOLUTE(exp)
- Return the absolute (non-relocatable, as opposed to non-negative) value
of the expression exp.  Primarily useful to assign an absolute
value to a symbol within a section definition, where symbol values are
normally section-relative.
 ADDR(section)
- Return the absolute address of the named section.  Your script must
previously have defined the location of that section. In the following
example, 
symbol_1 and symbol_2 are assigned identical
values:
SECTIONS{ ...
  .output1 :
    { 
    start_of_output_1 = ABSOLUTE(.);
    ...
    }
  .output :
    {
    symbol_1 = ADDR(.output1);
    symbol_2 = start_of_output_1;
    }
... }
 ALIGN(exp)
- Return the result of the current location counter (
.) aligned to
the next exp boundary.  exp must be an expression whose
value is a power of two.  This is equivalent to 
(. + exp - 1) & ~(exp - 1)
ALIGN doesn't change the value of the location counter--it just
does arithmetic on it.  As an example, to align the output .data
section to the next 0x2000 byte boundary after the preceding
section and to set a variable within the section to the next
0x8000 boundary after the input sections:
SECTIONS{ ...
  .data ALIGN(0x2000): {
    *(.data)
    variable = ALIGN(0x8000);
  }
... }
The first use of ALIGN in this example specifies the location of
a section because it is used as the optional start attribute of a
section definition (see section Optional Section Attributes).  The second use simply
defines the value of a variable.
The built-in NEXT is closely related to ALIGN.
 DEFINED(symbol)
- Return 1 if symbol is in the linker global symbol table and is
defined, otherwise return 0.  You can use this function to provide default
values for symbols.  For example, the following command-file fragment shows how
to set a global symbol 
begin to the first location in the
.text section--but if a symbol called begin already
existed, its value is preserved:
SECTIONS{ ...
  .text : {
    begin = DEFINED(begin) ? begin : . ;
    ...
  }
... }
 NEXT(exp)
- Return the next unallocated address that is a multiple of exp.
This function is closely related to 
ALIGN(exp); unless you
use the MEMORY command to define discontinuous memory for the
output file, the two functions are equivalent.
 SIZEOF(section)
- Return the size in bytes of the named section, if that section has
been allocated.  In the following example, 
symbol_1 and
symbol_2 are assigned identical values:
SECTIONS{ ...
  .output {
    .start = . ;
    ...
    .end = . ;
    }
  symbol_1 = .end - .start ;
  symbol_2 = SIZEOF(.output);
... }
 SIZEOF_HEADERS
sizeof_headers
- Return the size in bytes of the output file's headers.  You can use this number
as the start address of the first section, if you choose, to facilitate
paging.