| .\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14 |
| .\" |
| .\" Standard preamble: |
| .\" ======================================================================== |
| .de Sh \" Subsection heading |
| .br |
| .if t .Sp |
| .ne 5 |
| .PP |
| \fB\\$1\fR |
| .PP |
| .. |
| .de Sp \" Vertical space (when we can't use .PP) |
| .if t .sp .5v |
| .if n .sp |
| .. |
| .de Vb \" Begin verbatim text |
| .ft CW |
| .nf |
| .ne \\$1 |
| .. |
| .de Ve \" End verbatim text |
| .ft R |
| .fi |
| .. |
| .\" Set up some character translations and predefined strings. \*(-- will |
| .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left |
| .\" double quote, and \*(R" will give a right double quote. | will give a |
| .\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to |
| .\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' |
| .\" expand to `' in nroff, nothing in troff, for use with C<>. |
| .tr \(*W-|\(bv\*(Tr |
| .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' |
| .ie n \{\ |
| . ds -- \(*W- |
| . ds PI pi |
| . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch |
| . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch |
| . ds L" "" |
| . ds R" "" |
| . ds C` "" |
| . ds C' "" |
| 'br\} |
| .el\{\ |
| . ds -- \|\(em\| |
| . ds PI \(*p |
| . ds L" `` |
| . ds R" '' |
| 'br\} |
| .\" |
| .\" If the F register is turned on, we'll generate index entries on stderr for |
| .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index |
| .\" entries marked with X<> in POD. Of course, you'll have to process the |
| .\" output yourself in some meaningful fashion. |
| .if \nF \{\ |
| . de IX |
| . tm Index:\\$1\t\\n%\t"\\$2" |
| .. |
| . nr % 0 |
| . rr F |
| .\} |
| .\" |
| .\" For nroff, turn off justification. Always turn off hyphenation; it makes |
| .\" way too many mistakes in technical documents. |
| .hy 0 |
| .if n .na |
| .\" |
| .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). |
| .\" Fear. Run. Save yourself. No user-serviceable parts. |
| . \" fudge factors for nroff and troff |
| .if n \{\ |
| . ds #H 0 |
| . ds #V .8m |
| . ds #F .3m |
| . ds #[ \f1 |
| . ds #] \fP |
| .\} |
| .if t \{\ |
| . ds #H ((1u-(\\\\n(.fu%2u))*.13m) |
| . ds #V .6m |
| . ds #F 0 |
| . ds #[ \& |
| . ds #] \& |
| .\} |
| . \" simple accents for nroff and troff |
| .if n \{\ |
| . ds ' \& |
| . ds ` \& |
| . ds ^ \& |
| . ds , \& |
| . ds ~ ~ |
| . ds / |
| .\} |
| .if t \{\ |
| . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" |
| . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' |
| . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' |
| . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' |
| . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' |
| . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' |
| .\} |
| . \" troff and (daisy-wheel) nroff accents |
| .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' |
| .ds 8 \h'\*(#H'\(*b\h'-\*(#H' |
| .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] |
| .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' |
| .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' |
| .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] |
| .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] |
| .ds ae a\h'-(\w'a'u*4/10)'e |
| .ds Ae A\h'-(\w'A'u*4/10)'E |
| . \" corrections for vroff |
| .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' |
| .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' |
| . \" for low resolution devices (crt and lpr) |
| .if \n(.H>23 .if \n(.V>19 \ |
| \{\ |
| . ds : e |
| . ds 8 ss |
| . ds o a |
| . ds d- d\h'-1'\(ga |
| . ds D- D\h'-1'\(hy |
| . ds th \o'bp' |
| . ds Th \o'LP' |
| . ds ae ae |
| . ds Ae AE |
| .\} |
| .rm #[ #] #H #V #F C |
| .\" ======================================================================== |
| .\" |
| .IX Title "LLVM-AR 1" |
| .TH LLVM-AR 1 "2006-11-20" "CVS" "LLVM Command Guide" |
| .SH "NAME" |
| llvm\-ar \- LLVM archiver |
| .SH "SYNOPSIS" |
| .IX Header "SYNOPSIS" |
| \&\fBllvm-ar\fR [\-]{dmpqrtx}[Rabfikouz] [relpos] [count] <archive> [files...] |
| .SH "DESCRIPTION" |
| .IX Header "DESCRIPTION" |
| The \fBllvm-ar\fR command is similar to the common Unix utility, \f(CW\*(C`ar\*(C'\fR. It |
| archives several files together into a single file. The intent for this is |
| to produce archive libraries by \s-1LLVM\s0 bytecode that can be linked into an |
| \&\s-1LLVM\s0 program. However, the archive can contain any kind of file. By default, |
| \&\fBllvm-ar\fR generates a symbol table that makes linking faster because |
| only the symbol table needs to be consulted, not each individual file member |
| of the archive. |
| .PP |
| The \fBllvm-ar\fR command can be used to \fIread\fR both \s-1SVR4\s0 and \s-1BSD\s0 style archive |
| files. However, it cannot be used to write them. While the \fBllvm-ar\fR command |
| produces files that are \fIalmost\fR identical to the format used by other \f(CW\*(C`ar\*(C'\fR |
| implementations, it has two significant departures in order to make the |
| archive appropriate for \s-1LLVM\s0. The first departure is that \fBllvm-ar\fR only |
| uses \s-1BSD4\s0.4 style long path names (stored immediately after the header) and |
| never contains a string table for long names. The second departure is that the |
| symbol table is formated for efficient construction of an in-memory data |
| structure that permits rapid (red\-black tree) lookups. Consequently, archives |
| produced with \fBllvm-ar\fR usually won't be readable or editable with any |
| \&\f(CW\*(C`ar\*(C'\fR implementation or useful for linking. Using the \f(CW\*(C`f\*(C'\fR modifier to flatten |
| file names will make the archive readable by other \f(CW\*(C`ar\*(C'\fR implementations |
| but not for linking because the symbol table format for \s-1LLVM\s0 is unique. If an |
| \&\s-1SVR4\s0 or \s-1BSD\s0 style archive is used with the \f(CW\*(C`r\*(C'\fR (replace) or \f(CW\*(C`q\*(C'\fR (quick |
| update) operations, the archive will be reconstructed in \s-1LLVM\s0 format. This |
| means that the string table will be dropped (in deference to \s-1BSD\s0 4.4 long names) |
| and an \s-1LLVM\s0 symbol table will be added (by default). The system symbol table |
| will be retained. |
| .PP |
| Here's where \fBllvm-ar\fR departs from previous \f(CW\*(C`ar\*(C'\fR implementations: |
| .IP "\fISymbol Table\fR" 4 |
| .IX Item "Symbol Table" |
| Since \fBllvm-ar\fR is intended to archive bytecode files, the symbol table |
| won't make much sense to anything but \s-1LLVM\s0. Consequently, the symbol table's |
| format has been simplified. It consists simply of a sequence of pairs |
| of a file member index number as an \s-1LSB\s0 4byte integer and a null-terminated |
| string. |
| .IP "\fILong Paths\fR" 4 |
| .IX Item "Long Paths" |
| Some \f(CW\*(C`ar\*(C'\fR implementations (\s-1SVR4\s0) use a separate file member to record long |
| path names (> 15 characters). \fBllvm-ar\fR takes the \s-1BSD\s0 4.4 and Mac \s-1OS\s0 X |
| approach which is to simply store the full path name immediately preceding |
| the data for the file. The path name is null terminated and may contain the |
| slash (/) character. |
| .IP "\fICompression\fR" 4 |
| .IX Item "Compression" |
| \&\fBllvm-ar\fR can compress the members of an archive to save space. The |
| compression used depends on what's available on the platform and what choices |
| the \s-1LLVM\s0 Compressor utility makes. It generally favors bzip2 but will select |
| between \*(L"no compression\*(R" or bzip2 depending on what makes sense for the |
| file's content. |
| .IP "\fIDirectory Recursion\fR" 4 |
| .IX Item "Directory Recursion" |
| Most \f(CW\*(C`ar\*(C'\fR implementations do not recurse through directories but simply |
| ignore directories if they are presented to the program in the \fIfiles\fR |
| option. \fBllvm-ar\fR, however, can recurse through directory structures and |
| add all the files under a directory, if requested. |
| .IP "\fI\s-1TOC\s0 Verbose Output\fR" 4 |
| .IX Item "TOC Verbose Output" |
| When \fBllvm-ar\fR prints out the verbose table of contents (\f(CW\*(C`tv\*(C'\fR option), it |
| precedes the usual output with a character indicating the basic kind of |
| content in the file. A blank means the file is a regular file. A 'Z' means |
| the file is compressed. A 'B' means the file is an \s-1LLVM\s0 bytecode file. An |
| \&'S' means the file is the symbol table. |
| .SH "OPTIONS" |
| .IX Header "OPTIONS" |
| The options to \fBllvm-ar\fR are compatible with other \f(CW\*(C`ar\*(C'\fR implementations. |
| However, there are a few modifiers (\fIzR\fR) that are not found in other |
| \&\f(CW\*(C`ar\*(C'\fRs. The options to \fBllvm-ar\fR specify a single basic operation to |
| perform on the archive, a variety of modifiers for that operation, the |
| name of the archive file, and an optional list of file names. These options |
| are used to determine how \fBllvm-ar\fR should process the archive file. |
| .PP |
| The Operations and Modifiers are explained in the sections below. The minimal |
| set of options is at least one operator and the name of the archive. Typically |
| archive files end with a \f(CW\*(C`.a\*(C'\fR suffix, but this is not required. Following |
| the \fIarchive-name\fR comes a list of \fIfiles\fR that indicate the specific members |
| of the archive to operate on. If the \fIfiles\fR option is not specified, it |
| generally means either \*(L"none\*(R" or \*(L"all\*(R" members, depending on the operation. |
| .Sh "Operations" |
| .IX Subsection "Operations" |
| .IP "d" 4 |
| .IX Item "d" |
| Delete files from the archive. No modifiers are applicable to this operation. |
| The \fIfiles\fR options specify which members should be removed from the |
| archive. It is not an error if a specified file does not appear in the archive. |
| If no \fIfiles\fR are specified, the archive is not modified. |
| .IP "m[abi]" 4 |
| .IX Item "m[abi]" |
| Move files from one location in the archive to another. The \fIa\fR, \fIb\fR, and |
| \&\fIi\fR modifiers apply to this operation. The \fIfiles\fR will all be moved |
| to the location given by the modifiers. If no modifiers are used, the files |
| will be moved to the end of the archive. If no \fIfiles\fR are specified, the |
| archive is not modified. |
| .IP "p[k]" 4 |
| .IX Item "p[k]" |
| Print files to the standard output. The \fIk\fR modifier applies to this |
| operation. This operation simply prints the \fIfiles\fR indicated to the |
| standard output. If no \fIfiles\fR are specified, the entire archive is printed. |
| Printing bytecode files is ill-advised as they might confuse your terminal |
| settings. The \fIp\fR operation never modifies the archive. |
| .IP "q[Rfz]" 4 |
| .IX Item "q[Rfz]" |
| Quickly append files to the end of the archive. The \fIR\fR, \fIf\fR, and \fIz\fR |
| modifiers apply to this operation. This operation quickly adds the |
| \&\fIfiles\fR to the archive without checking for duplicates that should be |
| removed first. If no \fIfiles\fR are specified, the archive is not modified. |
| Because of the way that \fBllvm-ar\fR constructs the archive file, its dubious |
| whether the \fIq\fR operation is any faster than the \fIr\fR operation. |
| .IP "r[Rabfuz]" 4 |
| .IX Item "r[Rabfuz]" |
| Replace or insert file members. The \fIR\fR, \fIa\fR, \fIb\fR, \fIf\fR, \fIu\fR, and \fIz\fR |
| modifiers apply to this operation. This operation will replace existing |
| \&\fIfiles\fR or insert them at the end of the archive if they do not exist. If no |
| \&\fIfiles\fR are specified, the archive is not modified. |
| .IP "t[v]" 4 |
| .IX Item "t[v]" |
| Print the table of contents. Without any modifiers, this operation just prints |
| the names of the members to the standard output. With the \fIv\fR modifier, |
| \&\fBllvm-ar\fR also prints out the file type (B=bytecode, Z=compressed, S=symbol |
| table, blank=regular file), the permission mode, the owner and group, the |
| size, and the date. If any \fIfiles\fR are specified, the listing is only for |
| those files. If no \fIfiles\fR are specified, the table of contents for the |
| whole archive is printed. |
| .IP "x[oP]" 4 |
| .IX Item "x[oP]" |
| Extract archive members back to files. The \fIo\fR modifier applies to this |
| operation. This operation retrieves the indicated \fIfiles\fR from the archive |
| and writes them back to the operating system's file system. If no |
| \&\fIfiles\fR are specified, the entire archive is extract. |
| .Sh "Modifiers (operation specific)" |
| .IX Subsection "Modifiers (operation specific)" |
| The modifiers below are specific to certain operations. See the Operations |
| section (above) to determine which modifiers are applicable to which operations. |
| .IP "[a]" 4 |
| .IX Item "[a]" |
| When inserting or moving member files, this option specifies the destination of |
| the new files as being \f(CW\*(C`a\*(C'\fRfter the \fIrelpos\fR member. If \fIrelpos\fR is not found, |
| the files are placed at the end of the archive. |
| .IP "[b]" 4 |
| .IX Item "[b]" |
| When inserting or moving member files, this option specifies the destination of |
| the new files as being \f(CW\*(C`b\*(C'\fRefore the \fIrelpos\fR member. If \fIrelpos\fR is not |
| found, the files are placed at the end of the archive. This modifier is |
| identical to the the \fIi\fR modifier. |
| .IP "[f]" 4 |
| .IX Item "[f]" |
| Normally, \fBllvm-ar\fR stores the full path name to a file as presented to it on |
| the command line. With this option, truncated (15 characters max) names are |
| used. This ensures name compatibility with older versions of \f(CW\*(C`ar\*(C'\fR but may also |
| thwart correct extraction of the files (duplicates may overwrite). If used with |
| the \fIR\fR option, the directory recursion will be performed but the file names |
| will all be \f(CW\*(C`f\*(C'\fRlattened to simple file names. |
| .IP "[i]" 4 |
| .IX Item "[i]" |
| A synonym for the \fIb\fR option. |
| .IP "[k]" 4 |
| .IX Item "[k]" |
| Normally, \fBllvm-ar\fR will not print the contents of bytecode files when the |
| \&\fIp\fR operation is used. This modifier defeats the default and allows the |
| bytecode members to be printed. |
| .IP "[N]" 4 |
| .IX Item "[N]" |
| This option is ignored by \fBllvm-ar\fR but provided for compatibility. |
| .IP "[o]" 4 |
| .IX Item "[o]" |
| When extracting files, this option will cause \fBllvm-ar\fR to preserve the |
| original modification times of the files it writes. |
| .IP "[P]" 4 |
| .IX Item "[P]" |
| use full path names when matching |
| .IP "[R]" 4 |
| .IX Item "[R]" |
| This modifier instructions the \fIr\fR option to recursively process directories. |
| Without \fIR\fR, directories are ignored and only those \fIfiles\fR that refer to |
| files will be added to the archive. When \fIR\fR is used, any directories specified |
| with \fIfiles\fR will be scanned (recursively) to find files to be added to the |
| archive. Any file whose name begins with a dot will not be added. |
| .IP "[u]" 4 |
| .IX Item "[u]" |
| When replacing existing files in the archive, only replace those files that have |
| a time stamp than the time stamp of the member in the archive. |
| .IP "[z]" 4 |
| .IX Item "[z]" |
| When inserting or replacing any file in the archive, compress the file first. |
| This |
| modifier is safe to use when (previously) compressed bytecode files are added to |
| the archive; the compressed bytecode files will not be doubly compressed. |
| .Sh "Modifiers (generic)" |
| .IX Subsection "Modifiers (generic)" |
| The modifiers below may be applied to any operation. |
| .IP "[c]" 4 |
| .IX Item "[c]" |
| For all operations, \fBllvm-ar\fR will always create the archive if it doesn't |
| exist. Normally, \fBllvm-ar\fR will print a warning message indicating that the |
| archive is being created. Using this modifier turns off that warning. |
| .IP "[s]" 4 |
| .IX Item "[s]" |
| This modifier requests that an archive index (or symbol table) be added to the |
| archive. This is the default mode of operation. The symbol table will contain |
| all the externally visible functions and global variables defined by all the |
| bytecode files in the archive. Using this modifier is more efficient that using |
| llvm-ranlib which also creates the symbol table. |
| .IP "[S]" 4 |
| .IX Item "[S]" |
| This modifier is the opposite of the \fIs\fR modifier. It instructs \fBllvm-ar\fR to |
| not build the symbol table. If both \fIs\fR and \fIS\fR are used, the last modifier to |
| occur in the options will prevail. |
| .IP "[v]" 4 |
| .IX Item "[v]" |
| This modifier instructs \fBllvm-ar\fR to be verbose about what it is doing. Each |
| editing operation taken against the archive will produce a line of output saying |
| what is being done. |
| .SH "STANDARDS" |
| .IX Header "STANDARDS" |
| The \fBllvm-ar\fR utility is intended to provide a superset of the \s-1IEEE\s0 Std 1003.2 |
| (\s-1POSIX\s0.2) functionality for \f(CW\*(C`ar\*(C'\fR. \fBllvm-ar\fR can read both \s-1SVR4\s0 and \s-1BSD4\s0.4 (or |
| Mac \s-1OS\s0 X) archives. If the \f(CW\*(C`f\*(C'\fR modifier is given to the \f(CW\*(C`x\*(C'\fR or \f(CW\*(C`r\*(C'\fR operations |
| then \fBllvm-ar\fR will write \s-1SVR4\s0 compatible archives. Without this modifier, |
| \&\fBllvm-ar\fR will write \s-1BSD4\s0.4 compatible archives that have long names |
| immediately after the header and indicated using the \*(L"#1/ddd\*(R" notation for the |
| name in the header. |
| .SH "FILE FORMAT" |
| .IX Header "FILE FORMAT" |
| The file format for \s-1LLVM\s0 Archive files is similar to that of \s-1BSD\s0 4.4 or Mac \s-1OSX\s0 |
| archive files. In fact, except for the symbol table, the \f(CW\*(C`ar\*(C'\fR commands on those |
| operating systems should be able to read \s-1LLVM\s0 archive files. The details of the |
| file format follow. |
| .PP |
| Each archive begins with the archive magic number which is the eight printable |
| characters \*(L"!<arch>\en\*(R" where \en represents the newline character (0x0A). |
| Following the magic number, the file is composed of even length members that |
| begin with an archive header and end with a \en padding character if necessary |
| (to make the length even). Each file member is composed of a header (defined |
| below), an optional newline-terminated \*(L"long file name\*(R" and the contents of |
| the file. |
| .PP |
| The fields of the header are described in the items below. All fields of the |
| header contain only \s-1ASCII\s0 characters, are left justified and are right padded |
| with space characters. |
| .IP "name \- char[16]" 4 |
| .IX Item "name - char[16]" |
| This field of the header provides the name of the archive member. If the name is |
| longer than 15 characters or contains a slash (/) character, then this field |
| contains \f(CW\*(C`#1/nnn\*(C'\fR where \f(CW\*(C`nnn\*(C'\fR provides the length of the name and the \f(CW\*(C`#1/\*(C'\fR |
| is literal. In this case, the actual name of the file is provided in the \f(CW\*(C`nnn\*(C'\fR |
| bytes immediately following the header. If the name is 15 characters or less, it |
| is contained directly in this field and terminated with a slash (/) character. |
| .IP "date \- char[12]" 4 |
| .IX Item "date - char[12]" |
| This field provides the date of modification of the file in the form of a |
| decimal encoded number that provides the number of seconds since the epoch |
| (since 00:00:00 Jan 1, 1970) per Posix specifications. |
| .IP "uid \- char[6]" 4 |
| .IX Item "uid - char[6]" |
| This field provides the user id of the file encoded as a decimal \s-1ASCII\s0 string. |
| This field might not make much sense on non-Unix systems. On Unix, it is the |
| same value as the st_uid field of the stat structure returned by the \fIstat\fR\|(2) |
| operating system call. |
| .IP "gid \- char[6]" 4 |
| .IX Item "gid - char[6]" |
| This field provides the group id of the file encoded as a decimal \s-1ASCII\s0 string. |
| This field might not make much sense on non-Unix systems. On Unix, it is the |
| same value as the st_gid field of the stat structure returned by the \fIstat\fR\|(2) |
| operating system call. |
| .IP "mode \- char[8]" 4 |
| .IX Item "mode - char[8]" |
| This field provides the access mode of the file encoded as an octal \s-1ASCII\s0 |
| string. This field might not make much sense on non-Unix systems. On Unix, it |
| is the same value as the st_mode field of the stat structure returned by the |
| \&\fIstat\fR\|(2) operating system call. |
| .IP "size \- char[10]" 4 |
| .IX Item "size - char[10]" |
| This field provides the size of the file, in bytes, encoded as a decimal \s-1ASCII\s0 |
| string. If the size field is negative (starts with a minus sign, 0x02D), then |
| the archive member is stored in compressed form. The first byte of the archive |
| member's data indicates the compression type used. A value of 0 (0x30) indicates |
| that no compression was used. A value of 2 (0x32) indicates that bzip2 |
| compression was used. |
| .IP "fmag \- char[2]" 4 |
| .IX Item "fmag - char[2]" |
| This field is the archive file member magic number. Its content is always the |
| two characters back tick (0x60) and newline (0x0A). This provides some measure |
| utility in identifying archive files that have been corrupted. |
| .PP |
| The \s-1LLVM\s0 symbol table has the special name \*(L"#_LLVM_SYM_TAB_#\*(R". It is presumed |
| that no regular archive member file will want this name. The \s-1LLVM\s0 symbol table |
| is simply composed of a sequence of triplets: byte offset, length of symbol, |
| and the symbol itself. Symbols are not null or newline terminated. Here are |
| the details on each of these items: |
| .IP "offset \- vbr encoded 32\-bit integer" 4 |
| .IX Item "offset - vbr encoded 32-bit integer" |
| The offset item provides the offset into the archive file where the bytecode |
| member is stored that is associated with the symbol. The offset value is 0 |
| based at the start of the first \*(L"normal\*(R" file member. To derive the actual |
| file offset of the member, you must add the number of bytes occupied by the file |
| signature (8 bytes) and the symbol tables. The value of this item is encoded |
| using variable bit rate encoding to reduce the size of the symbol table. |
| Variable bit rate encoding uses the high bit (0x80) of each byte to indicate |
| if there are more bytes to follow. The remaining 7 bits in each byte carry bits |
| from the value. The final byte does not have the high bit set. |
| .IP "length \- vbr encoded 32\-bit integer" 4 |
| .IX Item "length - vbr encoded 32-bit integer" |
| The length item provides the length of the symbol that follows. Like this |
| \&\fIoffset\fR item, the length is variable bit rate encoded. |
| .IP "symbol \- character array" 4 |
| .IX Item "symbol - character array" |
| The symbol item provides the text of the symbol that is associated with the |
| \&\fIoffset\fR. The symbol is not terminated by any character. Its length is provided |
| by the \fIlength\fR field. Note that is allowed (but unwise) to use non-printing |
| characters (even 0x00) in the symbol. This allows for multiple encodings of |
| symbol names. |
| .SH "EXIT STATUS" |
| .IX Header "EXIT STATUS" |
| If \fBllvm-ar\fR succeeds, it will exit with 0. A usage error, results |
| in an exit code of 1. A hard (file system typically) error results in an |
| exit code of 2. Miscellaneous or unknown errors result in an |
| exit code of 3. |
| .SH "SEE ALSO" |
| .IX Header "SEE ALSO" |
| llvm-ranlib, \fIar\fR\|(1) |
| .SH "AUTHORS" |
| .IX Header "AUTHORS" |
| Maintained by the \s-1LLVM\s0 Team (<http://llvm.org>). |