diff options
Diffstat (limited to 'docs/CommandGuide/man/man1/llvm-ar.1')
-rw-r--r-- | docs/CommandGuide/man/man1/llvm-ar.1 | 461 |
1 files changed, 461 insertions, 0 deletions
diff --git a/docs/CommandGuide/man/man1/llvm-ar.1 b/docs/CommandGuide/man/man1/llvm-ar.1 new file mode 100644 index 0000000000..a624f46f9c --- /dev/null +++ b/docs/CommandGuide/man/man1/llvm-ar.1 @@ -0,0 +1,461 @@ +.\" 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>). |