libraries/ltkutils/group/BSYM_file_format.txt
author Tom Sutcliffe <thomas.sutcliffe@accenture.com>
Mon, 25 Oct 2010 10:37:01 +0100
changeset 92 6bffbe8be665
permissions -rw-r--r--
Added bsym file format spec.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
92
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
     1
Copyright (c) 2010 Accenture. All rights reserved.
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
     2
This component and the accompanying materials are made available
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
     3
under the terms of the "Eclipse Public License v1.0"
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
     4
which accompanies this distribution, and is available
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
     5
at the URL "http://www.eclipse.org/legal/epl-v10.html".
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
     6
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
     7
Initial Contributors:
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
     8
Accenture - Initial contribution
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
     9
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    10
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    11
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    12
BSYM file format
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    13
================
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    14
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    15
An indexed binary representation of a *.symbol file, which is amenable to being mmap'd.
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    16
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    17
Filename extension: *.bsym
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    18
All multibyte values in the file are in big-endian format. In this doc a 'word' refers to a unsigned 32-bit big-endian quantity. Unless otherwise stated it can be assumed that words are word-aligned. This document describes version EVersion1_0 (v1.0) of the file format, see 'version differences' below for differences in any more recent version.
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    19
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    20
The use of 32-bit offsets throughout the format means that the maximum file size is 4GB, and you'd hit this before the limit on number of symbols or code segments (both of which are theoretically 2^32-1 as well). The maximum string size is 65535 characters (although highly theoretically the use of prefix and/or token strings could allow a symbol name to be larger than this).
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    21
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    22
Basic format is:
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    23
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    24
Header
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    25
Codeseg Section
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    26
Symbol Section
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    27
Strings And Prefix Tables
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    28
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    29
Header
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    30
======
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    31
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    32
Word 0: Magic identifier 'BSYM' (ie 0x4253594D).
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    33
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    34
Word 1: Version. Top 16 bits major version, bottom 16 bits minor. Different major versions are not BC and any tool encountering a major version it can't handle should bail. Different minor versions are BC. Currently the only version is 1.0, that is 0x00010000.
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    35
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    36
Word 2: CodeSegOffset. Offset from start of file to the codeseg section.
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    37
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    38
Word 3: SymbolOffset. Offset from start of file to the symbol section.
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    39
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    40
Example:
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    41
0x4253594D // Magic id 'BSYM'
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    42
0x00010000 // Version 1.0
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    43
0x00000010 // Codeseg section starts at byte 16
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    44
0x000122B4 // Symbol section starts at byte 0x1222B4
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    45
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    46
Note there is no explicit tracking of where the string table is - it's not necessary since each each symbol/codeseg stores strings as offsets directly from the start of the file.
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    47
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    48
Codeseg section
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    49
===============
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    50
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    51
(currently follows on immediately from the header, but that is an implementation detail and CodeSegOffset should always be used)
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    52
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    53
Word 0: CodeSegCount. Number of codesegments. These follow on immediately from CodeSegCount. Each code segment is defined in the fixed length struct TCodeSeg (see below). The end of the codeseg section is at byte position CodeSegOffset + 4 + CodeSegCount*sizeof(TCodeSeg).
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    54
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    55
Example:
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    56
0x00000E88 // 3720 codesegments
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    57
<TCodeSegs follow>
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    58
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    59
TCodeSeg format
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    60
===============
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    61
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    62
Word 0: Address. Run address of the first symbol in the code segment, whatever was in the original symbol file. Can be zero in the case of a ROFS symbol file.
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    63
Word 1: SymbolCount. Number of symbols in this code segment.
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    64
Word 2: NameOffset. Offset from the start of the file to the string containing the full path of the code segment's binary. (See strings format below).
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    65
Word 3: StartSymbolIndex. Index from the start of the symbols to the first symbol that belongs to this code segment. An index of '1' would indicate this codesegment starts at the second symbol in the symbol table.
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    66
Word 4: PrefixTableOffset. Offset from the start of the file to the prefix table, or 0 if this codeseg doesn't have a prefix table. See later for details of what this table is for.
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    67
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    68
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    69
Symbol section
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    70
==============
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    71
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    72
(currently follows on immediately from the codeseg section, but that is an implementation detail and SymbolOffset should always be used)
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    73
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    74
Word 0: SymbolCount. Total number of symbols in the file. These follow on immediately from SymbolCount. Each symbol is defined in the fixed length struct TSymbol (see below). The end of the symbol section is at byte position SymbolOffset + 4 + SymbolCount*sizeof(TSymbol).
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    75
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    76
TSymbol format
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    77
==============
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    78
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    79
Word 0: Address. Run address of the symbol, whatever was in the original symbol file.
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    80
Word 1: Length. Bottom 16 bits: Length of the symbol, as given in the original symbol file. Zero-length symbols (ie, goto labels and the like) are not preserved in the bsym format. Code segments that have a single, zero-length symbol are changed such that the symbol appears to span the entire length of the code segment. If the code segment size cannot be determined, the code segment is not included. In other words, you don't get any zero-size symbols, or code segments with zero symbols. Top 16 bits: Offset into the parent codeseg's prefix table, or zero if there's no prefix. Prefix offsets are one-based, ie 1 means index 0 of the table, 2 means index 1 etc.
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    81
Word 2: NameOffset. Offset from the start of the file to the string containing the symbol name. Currently the compilation unit and binary section are not stored. (See strings format below.)
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    82
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    83
Prefix tables
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    84
=============
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    85
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    86
As a crude way of compressing symbol names, the TSymbol structure supports specifying a prefix to the symbol name, such that the full symbol name is "prefix::restOfSymbolName". The prefixes are calculated per codeseg and stored in a table at location TCodeSeg::PrefixTableOffset. Each entry in the prefix table is an offset into the string table (relative to the start of the file). For example, if many symbols all belong to the LtkUtils namespace, the SymbolNames would just be the function name and all the TSymbol::Length top 16 bits would point to the same prefix table entry that read "LtkUtils".
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    87
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    88
The prefix table entries are not necessarily word-aligned, because they are interleaved with the string table. Therefore on platforms that can't do unaligned word access, a safe alternative such as memcpy must be used instead of simply dereferencing a pointer.
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    89
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    90
Global Token List (added in v2.0)
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    91
=================================
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    92
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    93
a list of short strings that can be referred to in any other string using a single byte. If item 3 of the token list was "void" then a string "const void *" could replace the "void" with a single byte of value 128+3, and the string stored in the string table would be "const \x131 *" with leading length byte being 9. Since the strings have to be ASCII the byte range 128-255 is not used in version 1.0. The token list is a separate section after the symbol section. Its offset is given by word 4 of the header (this word is added in version 2.0).
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    94
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    95
Word 0: TokenCount. Number of elements in this section. Subsequent words are offsets into the string table. Entries in the token list are guaranteed not to contain any token bytes themselves. Ie it is not necessary to perform recursive expansion of strings in the token list. Because the token list is indexed by a single byte with the top bit set, the maximum token list size is 128. All strings (including prefix strings but excluding tokens themselves) may undergo token substitution.
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    96
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    97
The current token list is given in tokens.cpp.
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    98
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
    99
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
   100
Renames section (added in v2.1)
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
   101
===============================
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
   102
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
   103
This section contains additional information not required for existing use-cases. Therefore it is fully compatible with tools expecting v2.0 format files, (hence it's only a minor version change). It tracks binaries that have been renamed during rombuild, and thus only contains any data if the bsym was generated from a rombuild log using makbsym (or similar tool). Whereas .symbol (and .map) files only contain the name of the exes as they were  on the PC, to do symbol->address lookups you need the codeseg name as it appears on device. For eg a codeseg whose name is "\epoc32\release\armv5\urel\_variant_ekern.exe" this section would be able to tell you that the on-device name is actually "ekern.exe"
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
   104
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
   105
Word 0: RenamesCount. Number of rename entries.
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
   106
Followed by zero or more:
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
   107
Word 1: CodesegIdx. The index into the codeseg section of the code segement which was renamed during rombuild
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
   108
Word 2: NameOffsert. Offset into the string table of the binary name (without path since all binaries should be in \sys\bin - eg "ekern.exe")
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
   109
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
   110
The order of the codesegs in the renames section is guaranteed to be the same as in the codeseg section (although of course not every codeseg will appear in the renames section). In other words CodesegIdx is monotonic, allowing binary search to be used.
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
   111
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
   112
String table
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
   113
============
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
   114
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
   115
Wherever variable-length strings are required (eg, for symbol names) they are referred to by an offset into the string table. The strings in the table can be variable length, and are stored as a leading length byte, followed by the string data. The string is stored 8-bit, without a trailing null byte. Strings that are longer than 254 characters are handled by having the length byte 0xFF, followed by a 16-bit length, followed by the data. The string table is not aligned in any way. A zero-length string is theoretically supported by a length byte of zero without any data following it (so following it would either be End-Of-File or the length byte of the next string.).
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
   116
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
   117
LEN Data               LEN Data 
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
   118
05 'H' 'e' 'l' 'l' 'o' 03  'a' 'l' 'l'
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
   119
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
   120
A really long string:
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
   121
FF 01 00 Two_hundred_and_fifty_six_characters_follow
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
   122
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
   123
Version differences
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
   124
===================
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
   125
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
   126
EVersion2_0
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
   127
===========
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
   128
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
   129
Summary: Header is now 5 words instead of 4, and the addition of the global token list section, described above.
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
   130
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
   131
EVersion2_1
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
   132
===========
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
   133
6bffbe8be665 Added bsym file format spec.
Tom Sutcliffe <thomas.sutcliffe@accenture.com>
parents:
diff changeset
   134
Summary: Header is 6 words instead of 5, and the addition of the renames section, described above.