Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
LLVM-AR(1)			      LLVM			      LLVM-AR(1)

NAME
     llvm-ar - LLVM archiver

SYNOPSIS
     llvm-ar	[-]{dmpqrstx}[abcDilLNoOPsSTuUvV]   [relpos]   [count]	 archive
     [files...]

DESCRIPTION
     The llvm-ar command is similar to the common Unix utility, ar. It	archives
     several files, such as objects and LLVM bitcode files into a single archive
     library that can be linked into a program. However, the archive can contain
     any  kind	of file. By default, 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  llvm-ar  command can be used to read archive files in SVR4, GNU, BSD ,
     Big Archive, and Darwin format, and write in the GNU, BSD, Big Archive, and
     Darwin style archive files. If an SVR4 format archive is used  with  the  r
     (replace), d (delete), m (move) or q (quick update) operations, the archive
     will be reconstructed in the format defined by --format.

     Here's where llvm-ar departs from previous ar implementations:

     The following option is not supported
	[f] - truncate inserted filenames

     The following options are ignored for compatibility
	--plugin=<string> - load a plugin which adds support for other file for-
	mats

	[l] - ignored in ar

     Symbol Table
	Since  llvm-ar	supports  bitcode files, the symbol table it creates in-
	cludes both native and bitcode symbols.

     Deterministic Archives
	By default, llvm-ar always uses zero for  timestamps  and  UIDs/GIDs  to
	write archives in a deterministic mode. This is equivalent to the D mod-
	ifier  being  enabled  by default. If you wish to maintain compatibility
	with other ar implementations, you can pass the U modifier to write  ac-
	tual timestamps and UIDs/GIDs.

     Windows Paths
	When  on  Windows llvm-ar treats the names of archived files in the same
	case sensitive manner as the operating system. When on a non-Windows ma-
	chine llvm-ar does not consider character case.

OPTIONS
     llvm-ar operations are compatible with other ar  implementations.	However,
     there  are  a  few modifiers (L) that are not found in other ar implementa-
     tions. The options for 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. If the  files  option  is
     not specified, it generally means either "none" or "all" members, depending
     on  the  operation.  The Options, 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.

   Operations
     d [NT]
	    Delete  files  from the archive. The N and T modifiers apply to this
	    operation. The 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 files are specified, the archive is not
	    modified.

     m [abi]
	    Move  files  from  one location in the archive to another. The a, b,
	    and i modifiers apply to this operation. The 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 files are
	    specified, the archive is not modified.

     p [v]  Print files to the standard output stream. If no  files  are  speci-
	    fied,  the	entire	archive is printed. With the v modifier, llvm-ar
	    also prints out the name of the file being output.	Printing  binary
	    files  is  ill-advised as they might confuse your terminal settings.
	    The p operation never modifies the archive.

     q [LT]
	    Quickly append files to the end of the archive without removing  du-
	    plicates.  If  no  files are specified, the archive is not modified.
	    The behavior when appending one  archive  to  another  depends  upon
	    whether the L and T modifiers are used:

	    * Appending  a  regular archive to a regular archive will append the
	      archive file. If the L modifier is specified the members	will  be
	      appended instead.

	    * Appending a regular archive to a thin archive requires the T modi-
	      fier  and will append the archive file. The L modifier is not sup-
	      ported.

	    * Appending a thin archive to a  regular  archive  will  append  the
	      archive  file.  If the L modifier is specified the members will be
	      appended instead.

	    * Appending a thin archive to a thin archive will always  quick  ap-
	      pend its members.

     r [abTu]
	    Replace  existing  files or insert them at the end of the archive if
	    they do not exist. The a, b, T and u modifiers apply to this  opera-
	    tion. If no files are specified, the archive is not modified.

     t[v] .. option:: t [vO]
	Print  the table of contents. Without any modifiers, this operation just
	prints the names of the members to the standard output stream. With  the
	v  modifier,  llvm-ar also prints out the file type (B=bitcode, S=symbol
	table, blank=regular file), the permission mode, the  owner  and  group,
	are  ignored  when  extracting	files and set to placeholder values when
	adding size, and the date. With the O modifier, display member	offsets.
	If  any  files are specified, the listing is only for those files. If no
	files are specified, the table of contents  for  the  whole  archive  is
	printed.

     V	    A synonym for the --version option.

     x [oP]
	    Extract  archive  members  back  to files. The o modifier applies to
	    this operation. This operation retrieves the  indicated  files  from
	    the archive and writes them back to the operating system's file sys-
	    tem. If no files are specified, the entire archive is extracted.

   Modifiers (operation specific)
     The  modifiers below are specific to certain operations. See the Operations
     section to determine which modifiers are applicable to which operations.

     a	    When inserting or moving member files,  this  option  specifies  the
	    destination  of  the  new files as being after the relpos member. If
	    relpos is not found, the files are placed at the end of the archive.
	    relpos cannot be consumed without either a, b or i.

     b	    When inserting or moving member files,  this  option  specifies  the
	    destination  of  the new files as being before the relpos member. If
	    relpos is not found, the files are placed at the end of the archive.
	    relpos cannot be consumed without either a, b or i. This modifier is
	    identical to the i modifier.

     i	    A synonym for the b option.

     L	    When quick appending an archive, instead quick append  its	members.
	    This is a feature for llvm-ar that is not found in gnu-ar.

     N	    When  extracting  or deleting a member that shares its name with an-
	    other member, the count parameter allows you to  supply  a	positive
	    whole  number  that selects the instance of the given name, with "1"
	    indicating the first instance. If N is not specified the first  mem-
	    ber of that name will be selected. If count is not supplied, the op-
	    eration fails.*count* cannot be

     o	    When  extracting  files,  use the modification times of any files as
	    they appear in the archive. By  default  files  extracted  from  the
	    archive use the time of extraction.

     O	    Display member offsets inside the archive.

     T	    Alias for --thin. In many ar implementations T has a different mean-
	    ing, as specified by X/Open System interface.

     v	    When  printing files or the archive table of contents, this modifier
	    instructs llvm-ar to include additional information in the output.

   Modifiers (generic)
     The modifiers below may be applied to any operation.

     c	    For the r (replace)and q (quick update) operations, llvm-ar will al-
	    ways create the archive if it doesn't exist.  Normally, llvm-ar will
	    print a warning message indicating that the archive  is  being  cre-
	    ated. Using this modifier turns off that warning.

     D	    Use zero for timestamps and UIDs/GIDs. This is set by default.

     P	    Use  full paths when matching member names rather than just the file
	    name.  This can be useful when manipulating an archive generated  by
	    another  archiver,	as some allow paths as member names. This is the
	    default behavior for thin archives.

     s	    This modifier requests that an archive index (or  symbol  table)  be
	    added to the archive, as if using ranlib. The symbol table will con-
	    tain  all  the externally visible functions and global variables de-
	    fined by all the bitcode files in the archive.  By	default  llvm-ar
	    generates symbol tables in archives. This can also be used as an op-
	    eration.

     S	    This  modifier  is	the  opposite  of  the	s modifier. It instructs
	    llvm-ar to not build the symbol table. If both s and S are used, the
	    last modifier to occur in the options will prevail.

     u	    Only update archive members with files that have more  recent  time-
	    stamps.

     U	    Use actual timestamps and UIDs/GIDs.

   Other
     --format=<type>
	    This  option allows for default, gnu, darwin or bsd <type> to be se-
	    lected.  When creating an archive, <type> will default  to	that  of
	    the host machine.

     -h, --help
	    Print a summary of command-line options and their meanings.

     -M     This  option  allows for MRI scripts to be read through the standard
	    input stream. No other options are compatible with this option.

     --output=<dir>
	    Specify a directory where archive members should be extracted to. By
	    default the current working directory is used.

     --rsp-quoting=<type>

     This option selects the quoting style ``<type>`` for response files, either

     ``posix`` or ``windows``. The default when on Windows is ``windows``, oth-
     erwise the

     default is ``posix``.

     --thin
	    When creating or modifying an archive, this  option  specifies  that
	    the  archive  will	be thin. By default, archives are not created as
	    thin archives and when modifying a thin archive,  it  will	be  con-
	    verted to a regular archive.

     --version
	    Display the version of the llvm-ar executable.

     -X mode
	    Specifies  the  type of object file llvm-ar will recognise. The mode
	    must be one of the following:

	       32     Process only 32-bit object files.

	       64     Process only 64-bit object files.

	       32_64  Process both 32-bit and 64-bit object files.

	       any    Process all object files.

	    The default is to process 32-bit object  files  (ignore  64-bit  ob-
	    jects).  The  mode	can also be set with the OBJECT_MODE environment
	    variable. For example,  OBJECT_MODE=64  causes  ar	to  process  any
	    64-bit  objects and ignore 32-bit objects. The -X flag overrides the
	    OBJECT_MODE variable.

     @<FILE>
	    Read command-line options and commands from response file <FILE>.

MRI SCRIPTS
     llvm-ar understands a subset of the MRI scripting interface  commonly  sup-
     ported by archivers following in the ar tradition. An MRI script contains a
     sequence  of  commands to be executed by the archiver. The -M option allows
     for an MRI script to be  passed  to  llvm-ar  through  the  standard  input
     stream.

     Note that llvm-ar has known limitations regarding the use of MRI scripts:

     * Each script can only create one archive.

     * Existing archives can not be modified.

   MRI Script Commands
     Each  command  begins  with  the  command's name and must appear on its own
     line.  Some commands have arguments, which must be separated from the  name
     by  whitespace.  An  MRI  script  should  begin  with  either  a  CREATE or
     CREATETHIN command and will typically end with a SAVE command. Any text af-
     ter either '*' or ';' is treated as a comment.

     CREATE archive
	    Begin creation of a regular archive with the specified name.  Subse-
	    quent commands act upon this archive.

     CREATETHIN archive
	    Begin creation of a thin archive with the specified name. Subsequent
	    commands act upon this archive.

     ADDLIB archive
	    Append the contents of archive to the current archive.

     ADDMOD <file>
	    Append <file> to the current archive.

     DELETE <file>
	    Delete  the member of the current archive whose file name, excluding
	    directory components, matches <file>.

     SAVE   Write the current archive to the  path  specified  in  the	previous
	    CREATE/CREATETHIN command.

     END    Ends the MRI script (optional).

EXIT STATUS
     If  llvm-ar  succeeds, it will exit with 0.  Otherwise, if an error occurs,
     it will exit with a non-zero value.

AUTHOR
     Maintained by the LLVM Team (https://llvm.org/).

COPYRIGHT
     2003-2023, LLVM Project

16				   2023-05-24			      LLVM-AR(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=ar&manpath=FreeBSD+15.1-RELEASE+and+Ports.quarterly>

home | help