Oracle® Solaris 11.2 Linkers and Libraries Guide

Exit Print View

Updated: July 2014

Mapfile Structure and Syntax

Mapfile directives can span more than one line, and can have any amount of white space, including new lines.

For all syntax discussions, the following notations apply.

  • Spaces, or newlines, can appear anywhere except in the middle of a name or value.

  • Comments beginning with a hash character (#) and ending at a newline can appear anywhere that a space can appear. Comments are not interpreted by the link-editor, and exist solely for documentation purposes.

  • All directives are terminated by a semicolon (;). The final semicolon within a {....} section can be omitted.

  • All entries in constant width, all colons (:), semicolons (;), assignment (=, +=, -=), and {....} brackets are typed in literally.

  • All entries in italics are substitutable.

  • [ .... ]  brackets are used to delineate optional syntax. The brackets are not literal, and do not appear in the actual directives.

  • Names are case sensitive strings. Table 8–2 contains a list of names and other strings commonly found in mapfiles. Names can be specified in three different forms.

    • Unquoted

      An unquoted name is a sequence of letters and digits. The first character must be a letter, followed by zero or more letters or digits. The characters percent (%), slash (/), period (.), and underscore (_) count as a letter. The characters dollar ($), and hyphen (-) count as a digit.

    • Single Quotes

      Within single quotes ('), a name can contain any character other than a single quote, or newline. All characters are interpreted as literal characters. This form of quoting is convenient when specifying file paths, or other names that contain normal printable characters that are not allowed in an unquoted name.

    • Double Quotes

      Within double quotes ("), a name can contain any character other than a double quote, or newline. Backslash(\) is an escape character which operates similarly to the way it is used in the C programming language within a string literal. Characters prefixed by a backslash are replaced by the character they represent, as shown in Table 8–1. Any character following a backslash, other than the ones shown in Table 8–1 is an error.

  • value represents a numeric value, and can be hexadecimal, decimal, or octal, following the rules used by the C language for integer constants. All values are unsigned integer values, and are 32-bit for 32-bit output objects, and 64-bit for 64-bit output objects.

  • segment_flags specify memory access permissions as a space separated list of one or more of the values given in Table 8–3, which correspond to the PF_ values defined in <sys/elf.h>.

Table 8-1  Double Quoted Text Escape Sequences
Escape Sequence
alert (bell)
horizontal tab
vertical tab
single quote
double quote
An octal constant, where ooo is one to three octal digits (0....7)
Table 8-2  Names And Other Widely Used Strings Found In Mapfiles
Name of ELF segment
Name of ELF section
Name of ELF symbol
A Unix file path of slash (/) delimited names used to reference an ELF object, or an archive that contains ELF objects
Final component (basename(1)) of a file_path
Either a file_basename or the name of an object contained within an archive
Sharable object name, as used for the SONAME of a sharable object (e.g.
Name of a symbol version, as used within an ELF versioning section
Name of a symbol version inherited by another symbol version
Table 8-3  Segment Flags
Flag Value
Segment is readable
Segment is writable
Segment is executable
All permission flags are cleared
The combination of READ, WRITE, and EXECUTE flags appropriate for a data segment on the target platform
The combination of READ, WRITE, and EXECUTE flags appropriate for the target platform, as defined by the platform ABI