=pod

=head1 NAME

llvm-ar - LLVM archiver

=head1 SYNOPSIS

B<llvm-ar> [-]{dmpqrtx}[Rabfikouz] [relpos] [count] <archive> [files...]


=head1 DESCRIPTION

The B<llvm-ar> command is similar to the common Unix utility, C<ar>. It 
archives several files together into a single file. The intent for this is
to produce archive libraries by LLVM bitcode that can be linked into an
LLVM program. However, the archive can contain any kind of file. By default,
B<llvm-ar> 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. 

The B<llvm-ar> command can be used to I<read> both SVR4 and BSD style archive
files. However, it cannot be used to write them.  While the B<llvm-ar> command 
produces files that are I<almost> identical to the format used by other C<ar> 
implementations, it has two significant departures in order to make the 
archive appropriate for LLVM. The first departure is that B<llvm-ar> only
uses BSD4.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 B<llvm-ar> usually won't be readable or editable with any
C<ar> implementation or useful for linking.  Using the C<f> modifier to flatten
file names will make the archive readable by other C<ar> implementations
but not for linking because the symbol table format for LLVM is unique. If an
SVR4 or BSD style archive is used with the C<r> (replace) or C<q> (quick
update) operations, the archive will be reconstructed in LLVM format. This 
means that the string table will be dropped (in deference to BSD 4.4 long names)
and an LLVM symbol table will be added (by default). The system symbol table
will be retained.

Here's where B<llvm-ar> departs from previous C<ar> implementations:

=over

=item I<Symbol Table>

Since B<llvm-ar> is intended to archive bitcode files, the symbol table
won't make much sense to anything but LLVM. 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 LSB 4byte integer and a null-terminated 
string.

=item I<Long Paths>

Some C<ar> implementations (SVR4) use a separate file member to record long
path names (> 15 characters). B<llvm-ar> takes the BSD 4.4 and Mac OS 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. 

=item I<Compression>

B<llvm-ar> 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 LLVM Compressor utility makes. It generally favors bzip2 but will select
between "no compression" or bzip2 depending on what makes sense for the
file's content.

=item I<Directory Recursion>

Most C<ar> implementations do not recurse through directories but simply
ignore directories if they are presented to the program in the F<files> 
option. B<llvm-ar>, however, can recurse through directory structures and
add all the files under a directory, if requested.

=item I<TOC Verbose Output>

When B<llvm-ar> prints out the verbose table of contents (C<tv> 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 LLVM bitcode file. An
'S' means the file is the symbol table.

=back

=head1 OPTIONS

The options to B<llvm-ar> are compatible with other C<ar> implementations.
However, there are a few modifiers (F<zR>) that are not found in other
C<ar>s. The options to B<llvm-ar> 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 B<llvm-ar> should process the archive file.

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 C<.a> suffix, but this is not required. Following
the F<archive-name> comes a list of F<files> that indicate the specific members
of the archive to operate on. If the F<files> option is not specified, it
generally means either "none" or "all" members, depending on the operation.

=head2 Operations

=over

=item d

Delete files from the archive. No modifiers are applicable to this operation.
The F<files> 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 F<files> are specified, the archive is not modified.

=item m[abi]

Move files from one location in the archive to another. The F<a>, F<b>, and 
F<i> modifiers apply to this operation. The F<files> 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 F<files> are specified, the
archive is not modified.

=item p[k]

Print files to the standard output. The F<k> modifier applies to this
operation. This operation simply prints the F<files> indicated to the
standard output. If no F<files> are specified, the entire archive is printed.
Printing bitcode files is ill-advised as they might confuse your terminal
settings. The F<p> operation never modifies the archive.

=item q[Rfz]

Quickly append files to the end of the archive. The F<R>, F<f>, and F<z>
modifiers apply to this operation.  This operation quickly adds the 
F<files> to the archive without checking for duplicates that should be 
removed first. If no F<files> are specified, the archive is not modified. 
Because of the way that B<llvm-ar> constructs the archive file, its dubious 
whether the F<q> operation is any faster than the F<r> operation.

=item r[Rabfuz]

Replace or insert file members. The F<R>, F<a>, F<b>, F<f>, F<u>, and F<z>
modifiers apply to this operation. This operation will replace existing
F<files> or insert them at the end of the archive if they do not exist. If no
F<files> are specified, the archive is not modified.

=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 F<v> modifier,
B<llvm-ar> also prints out the file type (B=bitcode, Z=compressed, S=symbol
table, blank=regular file), the permission mode, the owner and group, the
size, and the date. If any F<files> are specified, the listing is only for
those files. If no F<files> are specified, the table of contents for the
whole archive is printed.

=item x[oP]

Extract archive members back to files. The F<o> modifier applies to this
operation. This operation retrieves the indicated F<files> from the archive 
and writes them back to the operating system's file system. If no 
F<files> are specified, the entire archive is extract. 

=back

=head2 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.

=over

=item [a] 

When inserting or moving member files, this option specifies the destination of
the new files as being C<a>fter the F<relpos> member. If F<relpos> is not found,
the files are placed at the end of the archive.

=item [b] 

When inserting or moving member files, this option specifies the destination of
the new files as being C<b>efore the F<relpos> member. If F<relpos> is not 
found, the files are placed at the end of the archive. This modifier is 
identical to the the F<i> modifier.

=item [f] 

Normally, B<llvm-ar> 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 C<ar> but may also
thwart correct extraction of the files (duplicates may overwrite). If used with
the F<R> option, the directory recursion will be performed but the file names
will all be C<f>lattened to simple file names.

=item [i] 

A synonym for the F<b> option.

=item [k] 

Normally, B<llvm-ar> will not print the contents of bitcode files when the 
F<p> operation is used. This modifier defeats the default and allows the 
bitcode members to be printed.

=item [N] 

This option is ignored by B<llvm-ar> but provided for compatibility.

=item [o] 

When extracting files, this option will cause B<llvm-ar> to preserve the
original modification times of the files it writes. 

=item [P] 

use full path names when matching

=item [R]

This modifier instructions the F<r> option to recursively process directories.
Without F<R>, directories are ignored and only those F<files> that refer to
files will be added to the archive. When F<R> is used, any directories specified
with F<files> 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.

=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.

=item [z] 

When inserting or replacing any file in the archive, compress the file first.
This
modifier is safe to use when (previously) compressed bitcode files are added to
the archive; the compressed bitcode files will not be doubly compressed.

=back

=head2 Modifiers (generic)

The modifiers below may be applied to any operation.

=over

=item [c]

For all operations, B<llvm-ar> will always create the archive if it doesn't 
exist. Normally, B<llvm-ar> will print a warning message indicating that the
archive is being created. Using this modifier turns off that warning.

=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
bitcode files in the archive. Using this modifier is more efficient that using
L<llvm-ranlib|llvm-ranlib> which also creates the symbol table.

=item [S]

This modifier is the opposite of the F<s> modifier. It instructs B<llvm-ar> to
not build the symbol table. If both F<s> and F<S> are used, the last modifier to
occur in the options will prevail. 

=item [v]

This modifier instructs B<llvm-ar> 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.

=back

=head1 STANDARDS

The B<llvm-ar> utility is intended to provide a superset of the IEEE Std 1003.2
(POSIX.2) functionality for C<ar>. B<llvm-ar> can read both SVR4 and BSD4.4 (or
Mac OS X) archives. If the C<f> modifier is given to the C<x> or C<r> operations
then B<llvm-ar> will write SVR4 compatible archives. Without this modifier, 
B<llvm-ar> will write BSD4.4 compatible archives that have long names
immediately after the header and indicated using the "#1/ddd" notation for the
name in the header.

=head1 FILE FORMAT

The file format for LLVM Archive files is similar to that of BSD 4.4 or Mac OSX
archive files. In fact, except for the symbol table, the C<ar> commands on those
operating systems should be able to read LLVM archive files. The details of the
file format follow.

Each archive begins with the archive magic number which is the eight printable
characters "!<arch>\n" where \n 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 \n padding character if necessary 
(to make the length even). Each file member is composed of a header (defined 
below), an optional newline-terminated "long file name" and the contents of 
the file. 

The fields of the header are described in the items below. All fields of the
header contain only ASCII characters, are left justified and are right padded 
with space characters.

=over

=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 C<#1/nnn> where C<nnn> provides the length of the name and the C<#1/>
is literal.  In this case, the actual name of the file is provided in the C<nnn>
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.

=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.

=item uid - char[6]

This field provides the user id of the file encoded as a decimal ASCII 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 stat(2)
operating system call.

=item gid - char[6]

This field provides the group id of the file encoded as a decimal ASCII 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 stat(2)
operating system call.

=item mode - char[8]

This field provides the access mode of the file encoded as an octal ASCII 
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 
stat(2) operating system call.

=item size - char[10]

This field provides the size of the file, in bytes, encoded as a decimal ASCII
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.

=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.

=back 

The LLVM symbol table has the special name "#_LLVM_SYM_TAB_#". It is presumed
that no regular archive member file will want this name. The LLVM 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:

=over

=item offset - vbr encoded 32-bit integer

The offset item provides the offset into the archive file where the bitcode
member is stored that is associated with the symbol. The offset value is 0
based at the start of the first "normal" 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.

=item length - vbr encoded 32-bit integer

The length item provides the length of the symbol that follows. Like this
I<offset> item, the length is variable bit rate encoded.

=item symbol - character array

The symbol item provides the text of the symbol that is associated with the
I<offset>. The symbol is not terminated by any character. Its length is provided
by the I<length> 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.

=back

=head1 EXIT STATUS

If B<llvm-ar> 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.

=head1 SEE ALSO

L<llvm-ranlib|llvm-ranlib>, ar(1)

=head1 AUTHORS

Maintained by the LLVM Team (L<http://llvm.org/>).

=cut
