# String Table

String table sections hold null-terminated character sequences, commonly called strings. The object file uses these strings to represent symbol and section names. One references a string as an index into the string table section. The first byte, which is index zero, is defined to hold a null character. Likewise, a string table's last byte is defined to hold a null character, ensuring null termination for all strings. A string whose index is zero specifies either no name or a null name, depending on the context. An empty string table section is permitted; its section header's `sh_size` member would contain zero. Non-zero indexes are invalid for an empty string table.

A section header's `sh_name` member holds an index into the section header string table section, as designated by the `e_shstrndx` member of the ELF header. The following figures show a string table with 25 bytes and the strings associated with various indexes.

Index | +0 | +1 | +2 | +3 | +4 | +5 | +6 | +7 | +8 | +9
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
0 | `\0` | `n` | `a` | `m` | `e` | `.` | `\0` | `V` | `a` | `r`
10 | `i` | `a` | `b` | `l` | `e` | `\0` | `a` | `b` | `l` | `e`
20 | `\0` | `\0` | `x` | `x` | `\0` | ``

Figure 4-15: String Table Indexes

Index | String
--- | ---
0 | none
1 | name.
7 | Variable
11 | able
16 | able
24 | null string

As the example shows, a string table index may refer to any byte in the section. A string may appear more than once; references to substrings may exist; and a single string may be referenced multiple times. Unreferenced strings also are allowed.

© 1997, 1998, 1999, 2000, 2001 The Santa Cruz Operation, Inc. All rights reserved.