diff options
Diffstat (limited to 'usr.bin/clang/llvm-objcopy/llvm-objcopy.1')
-rw-r--r-- | usr.bin/clang/llvm-objcopy/llvm-objcopy.1 | 748 |
1 files changed, 748 insertions, 0 deletions
diff --git a/usr.bin/clang/llvm-objcopy/llvm-objcopy.1 b/usr.bin/clang/llvm-objcopy/llvm-objcopy.1 new file mode 100644 index 000000000000..34f8f9c7774c --- /dev/null +++ b/usr.bin/clang/llvm-objcopy/llvm-objcopy.1 @@ -0,0 +1,748 @@ +.\" Man page generated from reStructuredText. +. +. +.nr rst2man-indent-level 0 +. +.de1 rstReportMargin +\\$1 \\n[an-margin] +level \\n[rst2man-indent-level] +level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] +- +\\n[rst2man-indent0] +\\n[rst2man-indent1] +\\n[rst2man-indent2] +.. +.de1 INDENT +.\" .rstReportMargin pre: +. RS \\$1 +. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] +. nr rst2man-indent-level +1 +.\" .rstReportMargin post: +.. +.de UNINDENT +. RE +.\" indent \\n[an-margin] +.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] +.nr rst2man-indent-level -1 +.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] +.in \\n[rst2man-indent\\n[rst2man-indent-level]]u +.. +.TH "LLVM-OBJCOPY" "1" "2023-05-24" "16" "LLVM" +.SH NAME +llvm-objcopy \- object copying and editing tool +.SH SYNOPSIS +.sp +\fBllvm\-objcopy\fP [\fIoptions\fP] \fIinput\fP [\fIoutput\fP] +.SH DESCRIPTION +.sp +\fBllvm\-objcopy\fP is a tool to copy and manipulate objects. In basic +usage, it makes a semantic copy of the input to the output. If any options are +specified, the output may be modified along the way, e.g. by removing sections. +.sp +If no output file is specified, the input file is modified in\-place. If \(dq\-\(dq is +specified for the input file, the input is read from the program\(aqs standard +input stream. If \(dq\-\(dq is specified for the output file, the output is written to +the standard output stream of the program. +.sp +If the input is an archive, any requested operations will be applied to each +archive member individually. +.sp +The tool is still in active development, but in most scenarios it works as a +drop\-in replacement for GNU\(aqs \fBobjcopy\fP\&. +.SH GENERIC AND CROSS-PLATFORM OPTIONS +.sp +The following options are either agnostic of the file format, or apply to +multiple file formats. +.INDENT 0.0 +.TP +.B \-\-add\-gnu\-debuglink <debug\-file> +Add a .gnu_debuglink section for \fB<debug\-file>\fP to the output. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-add\-section <section=file> +Add a section named \fB<section>\fP with the contents of \fB<file>\fP to the +output. For ELF objects the section will be of type \fISHT_NOTE\fP, if the name +starts with \(dq.note\(dq. Otherwise, it will have type \fISHT_PROGBITS\fP\&. Can be +specified multiple times to add multiple sections. +.sp +For MachO objects, \fB<section>\fP must be formatted as +\fB<segment name>,<section name>\fP\&. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-binary\-architecture <arch>, \-B +Ignored for compatibility. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-disable\-deterministic\-archives, \-U +Use real values for UIDs, GIDs and timestamps when updating archive member +headers. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-discard\-all, \-x +Remove most local symbols from the output. Different file formats may limit +this to a subset of the local symbols. For example, file and section symbols in +ELF objects will not be discarded. Additionally, remove all debug sections. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-dump\-section <section>=<file> +Dump the contents of section \fB<section>\fP into the file \fB<file>\fP\&. Can be +specified multiple times to dump multiple sections to different files. +\fB<file>\fP is unrelated to the input and output files provided to +\fBllvm\-objcopy\fP and as such the normal copying and editing +operations will still be performed. No operations are performed on the sections +prior to dumping them. +.sp +For MachO objects, \fB<section>\fP must be formatted as +\fB<segment name>,<section name>\fP\&. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-enable\-deterministic\-archives, \-D +Enable deterministic mode when copying archives, i.e. use 0 for archive member +header UIDs, GIDs and timestamp fields. On by default. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-help, \-h +Print a summary of command line options. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-only\-keep\-debug +Produce a debug file as the output that only preserves contents of sections +useful for debugging purposes. +.sp +For ELF objects, this removes the contents of \fISHF_ALLOC\fP sections that are not +\fISHT_NOTE\fP by making them \fISHT_NOBITS\fP and shrinking the program headers where +possible. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-only\-section <section>, \-j +Remove all sections from the output, except for sections named \fB<section>\fP\&. +Can be specified multiple times to keep multiple sections. +.sp +For MachO objects, \fB<section>\fP must be formatted as +\fB<segment name>,<section name>\fP\&. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-redefine\-sym <old>=<new> +Rename symbols called \fB<old>\fP to \fB<new>\fP in the output. Can be specified +multiple times to rename multiple symbols. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-redefine\-syms <filename> +Rename symbols in the output as described in the file \fB<filename>\fP\&. In the +file, each line represents a single symbol to rename, with the old name and new +name separated by whitespace. Leading and trailing whitespace is ignored, as is +anything following a \(aq#\(aq. Can be specified multiple times to read names from +multiple files. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-regex +If specified, symbol and section names specified by other switches are treated +as extended POSIX regular expression patterns. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-remove\-section <section>, \-R +Remove the specified section from the output. Can be specified multiple times +to remove multiple sections simultaneously. +.sp +For MachO objects, \fB<section>\fP must be formatted as +\fB<segment name>,<section name>\fP\&. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-set\-section\-alignment <section>=<align> +Set the alignment of section \fB<section>\fP to \fB<align>\fP\&. Can be specified +multiple times to update multiple sections. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-set\-section\-flags <section>=<flag>[,<flag>,...] +Set section properties in the output of section \fB<section>\fP based on the +specified \fB<flag>\fP values. Can be specified multiple times to update multiple +sections. +.sp +Supported flag names are \fIalloc\fP, \fIload\fP, \fInoload\fP, \fIreadonly\fP, \fIexclude\fP, +\fIdebug\fP, \fIcode\fP, \fIdata\fP, \fIrom\fP, \fIshare\fP, \fIcontents\fP, \fImerge\fP and \fIstrings\fP\&. Not +all flags are meaningful for all object file formats. +.sp +For ELF objects, the flags have the following effects: +.INDENT 7.0 +.IP \(bu 2 +\fIalloc\fP = add the \fISHF_ALLOC\fP flag. +.IP \(bu 2 +\fIload\fP = if the section has \fISHT_NOBITS\fP type, mark it as a \fISHT_PROGBITS\fP +section. +.IP \(bu 2 +\fIreadonly\fP = if this flag is not specified, add the \fISHF_WRITE\fP flag. +.IP \(bu 2 +\fIexclude\fP = add the \fISHF_EXCLUDE\fP flag. +.IP \(bu 2 +\fIcode\fP = add the \fISHF_EXECINSTR\fP flag. +.IP \(bu 2 +\fImerge\fP = add the \fISHF_MERGE\fP flag. +.IP \(bu 2 +\fIstrings\fP = add the \fISHF_STRINGS\fP flag. +.IP \(bu 2 +\fIcontents\fP = if the section has \fISHT_NOBITS\fP type, mark it as a \fISHT_PROGBITS\fP +section. +.UNINDENT +.sp +For COFF objects, the flags have the following effects: +.INDENT 7.0 +.IP \(bu 2 +\fIalloc\fP = add the \fIIMAGE_SCN_CNT_UNINITIALIZED_DATA\fP and \fIIMAGE_SCN_MEM_READ\fP +flags, unless the \fIload\fP flag is specified. +.IP \(bu 2 +\fInoload\fP = add the \fIIMAGE_SCN_LNK_REMOVE\fP and \fIIMAGE_SCN_MEM_READ\fP flags. +.IP \(bu 2 +\fIreadonly\fP = if this flag is not specified, add the \fIIMAGE_SCN_MEM_WRITE\fP +flag. +.IP \(bu 2 +\fIexclude\fP = add the \fIIMAGE_SCN_LNK_REMOVE\fP and \fIIMAGE_SCN_MEM_READ\fP flags. +.IP \(bu 2 +\fIdebug\fP = add the \fIIMAGE_SCN_CNT_INITIALIZED_DATA\fP, +\fIIMAGE_SCN_MEM_DISCARDABLE\fP and \fIIMAGE_SCN_MEM_READ\fP flags. +.IP \(bu 2 +\fIcode\fP = add the \fIIMAGE_SCN_CNT_CODE\fP, \fIIMAGE_SCN_MEM_EXECUTE\fP and +\fIIMAGE_SCN_MEM_READ\fP flags. +.IP \(bu 2 +\fIdata\fP = add the \fIIMAGE_SCN_CNT_INITIALIZED_DATA\fP and \fIIMAGE_SCN_MEM_READ\fP +flags. +.IP \(bu 2 +\fIshare\fP = add the \fIIMAGE_SCN_MEM_SHARED\fP and \fIIMAGE_SCN_MEM_READ\fP flags. +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-strip\-all\-gnu +Remove all symbols, debug sections and relocations from the output. This option +is equivalent to GNU \fBobjcopy\fP\(aqs \fB\-\-strip\-all\fP switch. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-strip\-all, \-S +For ELF objects, remove from the output all symbols and non\-alloc sections not +within segments, except for .gnu.warning, .ARM.attribute sections and the +section name table. +.sp +For COFF and Mach\-O objects, remove all symbols, debug sections, and +relocations from the output. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-strip\-debug, \-g +Remove all debug sections from the output. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-strip\-symbol <symbol>, \-N +Remove all symbols named \fB<symbol>\fP from the output. Can be specified +multiple times to remove multiple symbols. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-strip\-symbols <filename> +Remove all symbols whose names appear in the file \fB<filename>\fP, from the +output. In the file, each line represents a single symbol name, with leading +and trailing whitespace ignored, as is anything following a \(aq#\(aq. Can be +specified multiple times to read names from multiple files. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-strip\-unneeded\-symbol <symbol> +Remove from the output all symbols named \fB<symbol>\fP that are local or +undefined and are not required by any relocation. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-strip\-unneeded\-symbols <filename> +Remove all symbols whose names appear in the file \fB<filename>\fP, from the +output, if they are local or undefined and are not required by any relocation. +In the file, each line represents a single symbol name, with leading and +trailing whitespace ignored, as is anything following a \(aq#\(aq. Can be specified +multiple times to read names from multiple files. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-strip\-unneeded +Remove from the output all local or undefined symbols that are not required by +relocations. Also remove all debug sections. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-update\-section <name>=<file> +Replace the contents of the section \fB<name>\fP with contents from the file +\fB<file>\fP\&. If the section \fB<name>\fP is part of a segment, the new contents +cannot be larger than the existing section. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-version, \-V +Display the version of the \fBllvm\-objcopy\fP executable. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-wildcard, \-w +Allow wildcard syntax for symbol\-related flags. On by default for +section\-related flags. Incompatible with \-\-regex. +.sp +Wildcard syntax allows the following special symbols: +.TS +center; +|l|l|l|. +_ +T{ +Character +T} T{ +Meaning +T} T{ +Equivalent +T} +_ +T{ +\fB*\fP +T} T{ +Any number of characters +T} T{ +\fB\&.*\fP +T} +_ +T{ +\fB?\fP +T} T{ +Any single character +T} T{ +\fB\&.\fP +T} +_ +T{ +\fB\e\fP +T} T{ +Escape the next character +T} T{ +\fB\e\fP +T} +_ +T{ +\fB[a\-z]\fP +T} T{ +Character class +T} T{ +\fB[a\-z]\fP +T} +_ +T{ +\fB[!a\-z]\fP, \fB[^a\-z]\fP +T} T{ +Negated character class +T} T{ +\fB[^a\-z]\fP +T} +_ +.TE +.sp +Additionally, starting a wildcard with \(aq!\(aq will prevent a match, even if +another flag matches. For example \fB\-w \-N \(aq*\(aq \-N \(aq!x\(aq\fP will strip all symbols +except for \fBx\fP\&. +.sp +The order of wildcards does not matter. For example, \fB\-w \-N \(aq*\(aq \-N \(aq!x\(aq\fP is +the same as \fB\-w \-N \(aq!x\(aq \-N \(aq*\(aq\fP\&. +.UNINDENT +.INDENT 0.0 +.TP +.B @<FILE> +Read command\-line options and commands from response file \fI<FILE>\fP\&. +.UNINDENT +.SH ELF-SPECIFIC OPTIONS +.sp +The following options are implemented only for ELF objects. If used with other +objects, \fBllvm\-objcopy\fP will either emit an error or silently ignore +them. +.INDENT 0.0 +.TP +.B \-\-add\-symbol <name>=[<section>:]<value>[,<flags>] +Add a new symbol called \fB<name>\fP to the output symbol table, in the section +named \fB<section>\fP, with value \fB<value>\fP\&. If \fB<section>\fP is not specified, +the symbol is added as an absolute symbol. The \fB<flags>\fP affect the symbol +properties. Accepted values are: +.INDENT 7.0 +.IP \(bu 2 +\fIglobal\fP = the symbol will have global binding. +.IP \(bu 2 +\fIlocal\fP = the symbol will have local binding. +.IP \(bu 2 +\fIweak\fP = the symbol will have weak binding. +.IP \(bu 2 +\fIdefault\fP = the symbol will have default visibility. +.IP \(bu 2 +\fIhidden\fP = the symbol will have hidden visibility. +.IP \(bu 2 +\fIprotected\fP = the symbol will have protected visibility. +.IP \(bu 2 +\fIfile\fP = the symbol will be an \fISTT_FILE\fP symbol. +.IP \(bu 2 +\fIsection\fP = the symbol will be an \fISTT_SECTION\fP symbol. +.IP \(bu 2 +\fIobject\fP = the symbol will be an \fISTT_OBJECT\fP symbol. +.IP \(bu 2 +\fIfunction\fP = the symbol will be an \fISTT_FUNC\fP symbol. +.IP \(bu 2 +\fIindirect\-function\fP = the symbol will be an \fISTT_GNU_IFUNC\fP symbol. +.UNINDENT +.sp +Additionally, the following flags are accepted but ignored: \fIdebug\fP, +\fIconstructor\fP, \fIwarning\fP, \fIindirect\fP, \fIsynthetic\fP, \fIunique\-object\fP, \fIbefore\fP\&. +.sp +Can be specified multiple times to add multiple symbols. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-allow\-broken\-links +Allow \fBllvm\-objcopy\fP to remove sections even if it would leave invalid +section references. Any invalid sh_link fields will be set to zero. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-change\-start <incr>, \-\-adjust\-start +Add \fB<incr>\fP to the program\(aqs start address. Can be specified multiple +times, in which case the values will be applied cumulatively. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-compress\-debug\-sections [<format>] +Compress DWARF debug sections in the output, using the specified format. +Supported formats are \fBzlib\fP and \fBzstd\fP\&. Use \fBzlib\fP if \fB<format>\fP is omitted. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-decompress\-debug\-sections +Decompress any compressed DWARF debug sections in the output. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-discard\-locals, \-X +Remove local symbols starting with \(dq.L\(dq from the output. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-extract\-dwo +Remove all sections that are not DWARF .dwo sections from the output. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-extract\-main\-partition +Extract the main partition from the output. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-extract\-partition <name> +Extract the named partition from the output. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-globalize\-symbol <symbol> +Mark any defined symbols named \fB<symbol>\fP as global symbols in the output. +Can be specified multiple times to mark multiple symbols. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-globalize\-symbols <filename> +Read a list of names from the file \fB<filename>\fP and mark defined symbols with +those names as global in the output. In the file, each line represents a single +symbol, with leading and trailing whitespace ignored, as is anything following +a \(aq#\(aq. Can be specified multiple times to read names from multiple files. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-input\-target <format>, \-I +Read the input as the specified format. See \fI\%SUPPORTED FORMATS\fP for a list of +valid \fB<format>\fP values. If unspecified, \fBllvm\-objcopy\fP will attempt +to determine the format automatically. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-keep\-file\-symbols +Keep symbols of type \fISTT_FILE\fP, even if they would otherwise be stripped. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-keep\-global\-symbol <symbol>, \-G +Make all symbols local in the output, except for symbols with the name +\fB<symbol>\fP\&. Can be specified multiple times to ignore multiple symbols. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-keep\-global\-symbols <filename> +Make all symbols local in the output, except for symbols named in the file +\fB<filename>\fP\&. In the file, each line represents a single symbol, with leading +and trailing whitespace ignored, as is anything following a \(aq#\(aq. Can be +specified multiple times to read names from multiple files. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-keep\-section <section> +When removing sections from the output, do not remove sections named +\fB<section>\fP\&. Can be specified multiple times to keep multiple sections. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-keep\-symbol <symbol>, \-K +When removing symbols from the output, do not remove symbols named +\fB<symbol>\fP\&. Can be specified multiple times to keep multiple symbols. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-keep\-symbols <filename> +When removing symbols from the output do not remove symbols named in the file +\fB<filename>\fP\&. In the file, each line represents a single symbol, with leading +and trailing whitespace ignored, as is anything following a \(aq#\(aq. Can be +specified multiple times to read names from multiple files. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-localize\-hidden +Make all symbols with hidden or internal visibility local in the output. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-localize\-symbol <symbol>, \-L +Mark any defined non\-common symbol named \fB<symbol>\fP as a local symbol in the +output. Can be specified multiple times to mark multiple symbols as local. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-localize\-symbols <filename> +Read a list of names from the file \fB<filename>\fP and mark defined non\-common +symbols with those names as local in the output. In the file, each line +represents a single symbol, with leading and trailing whitespace ignored, as is +anything following a \(aq#\(aq. Can be specified multiple times to read names from +multiple files. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-new\-symbol\-visibility <visibility> +Specify the visibility of the symbols automatically created when using binary +input or \fI\%\-\-add\-symbol\fP\&. Valid options are: +.INDENT 7.0 +.IP \(bu 2 +\fIdefault\fP +.IP \(bu 2 +\fIhidden\fP +.IP \(bu 2 +\fIinternal\fP +.IP \(bu 2 +\fIprotected\fP +.UNINDENT +.sp +The default is \fIdefault\fP\&. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-output\-target <format>, \-O +Write the output as the specified format. See \fI\%SUPPORTED FORMATS\fP for a list +of valid \fB<format>\fP values. If unspecified, the output format is assumed to +be the same as the value specified for \fI\%\-\-input\-target\fP or the input +file\(aqs format if that option is also unspecified. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-prefix\-alloc\-sections <prefix> +Add \fB<prefix>\fP to the front of the names of all allocatable sections in the +output. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-prefix\-symbols <prefix> +Add \fB<prefix>\fP to the front of every symbol name in the output. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-preserve\-dates, \-p +Preserve access and modification timestamps in the output. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-rename\-section <old>=<new>[,<flag>,...] +Rename sections called \fB<old>\fP to \fB<new>\fP in the output, and apply any +specified \fB<flag>\fP values. See \fI\%\-\-set\-section\-flags\fP for a list of +supported flags. Can be specified multiple times to rename multiple sections. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-set\-section\-type <section>=<type> +Set the type of section \fB<section>\fP to the integer \fB<type>\fP\&. Can be +specified multiple times to update multiple sections. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-set\-start\-addr <addr> +Set the start address of the output to \fB<addr>\fP\&. Overrides any previously +specified \fI\%\-\-change\-start\fP or \fI\%\-\-adjust\-start\fP options. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-split\-dwo <dwo\-file> +Equivalent to running \fBllvm\-objcopy\fP with \fI\%\-\-extract\-dwo\fP and +\fB<dwo\-file>\fP as the output file and no other options, and then with +\fI\%\-\-strip\-dwo\fP on the input file. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-strip\-dwo +Remove all DWARF .dwo sections from the output. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-strip\-non\-alloc +Remove from the output all non\-allocatable sections that are not within +segments. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-strip\-sections +Remove from the output all section headers and all section data not within +segments. Note that many tools will not be able to use an object without +section headers. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-target <format>, \-F +Equivalent to \fI\%\-\-input\-target\fP and \fI\%\-\-output\-target\fP for the +specified format. See \fI\%SUPPORTED FORMATS\fP for a list of valid \fB<format>\fP +values. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-weaken\-symbol <symbol>, \-W +Mark any global symbol named \fB<symbol>\fP as a weak symbol in the output. Can +be specified multiple times to mark multiple symbols as weak. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-weaken\-symbols <filename> +Read a list of names from the file \fB<filename>\fP and mark global symbols with +those names as weak in the output. In the file, each line represents a single +symbol, with leading and trailing whitespace ignored, as is anything following +a \(aq#\(aq. Can be specified multiple times to read names from multiple files. +.UNINDENT +.INDENT 0.0 +.TP +.B \-\-weaken +Mark all defined global symbols as weak in the output. +.UNINDENT +.SH MACH-O-SPECIFIC OPTIONS +.INDENT 0.0 +.TP +.B \-\-keep\-undefined +Keep undefined symbols, even if they would otherwise be stripped. +.UNINDENT +.SH COFF-SPECIFIC OPTIONS +.INDENT 0.0 +.TP +.B \-\-subsystem <name>[:<version>] +Set the PE subsystem, and optionally subsystem version. +.UNINDENT +.SH SUPPORTED FORMATS +.sp +The following values are currently supported by \fBllvm\-objcopy\fP for the +\fI\%\-\-input\-target\fP, \fI\%\-\-output\-target\fP, and \fI\%\-\-target\fP +options. For GNU \fBobjcopy\fP compatibility, the values are all bfdnames. +.INDENT 0.0 +.IP \(bu 2 +\fIbinary\fP +.IP \(bu 2 +\fIihex\fP +.IP \(bu 2 +\fIelf32\-i386\fP +.IP \(bu 2 +\fIelf32\-x86\-64\fP +.IP \(bu 2 +\fIelf64\-x86\-64\fP +.IP \(bu 2 +\fIelf32\-iamcu\fP +.IP \(bu 2 +\fIelf32\-littlearm\fP +.IP \(bu 2 +\fIelf64\-aarch64\fP +.IP \(bu 2 +\fIelf64\-littleaarch64\fP +.IP \(bu 2 +\fIelf32\-littleriscv\fP +.IP \(bu 2 +\fIelf64\-littleriscv\fP +.IP \(bu 2 +\fIelf32\-powerpc\fP +.IP \(bu 2 +\fIelf32\-powerpcle\fP +.IP \(bu 2 +\fIelf64\-powerpc\fP +.IP \(bu 2 +\fIelf64\-powerpcle\fP +.IP \(bu 2 +\fIelf32\-bigmips\fP +.IP \(bu 2 +\fIelf32\-ntradbigmips\fP +.IP \(bu 2 +\fIelf32\-ntradlittlemips\fP +.IP \(bu 2 +\fIelf32\-tradbigmips\fP +.IP \(bu 2 +\fIelf32\-tradlittlemips\fP +.IP \(bu 2 +\fIelf64\-tradbigmips\fP +.IP \(bu 2 +\fIelf64\-tradlittlemips\fP +.IP \(bu 2 +\fIelf32\-sparc\fP +.IP \(bu 2 +\fIelf32\-sparcel\fP +.UNINDENT +.sp +Additionally, all targets except \fIbinary\fP and \fIihex\fP can have \fI\-freebsd\fP as a +suffix. +.SH BINARY INPUT AND OUTPUT +.sp +If \fIbinary\fP is used as the value for \fI\%\-\-input\-target\fP, the input file +will be embedded as a data section in an ELF relocatable object, with symbols +\fB_binary_<file_name>_start\fP, \fB_binary_<file_name>_end\fP, and +\fB_binary_<file_name>_size\fP representing the start, end and size of the data, +where \fB<file_name>\fP is the path of the input file as specified on the command +line with non\-alphanumeric characters converted to \fB_\fP\&. +.sp +If \fIbinary\fP is used as the value for \fI\%\-\-output\-target\fP, the output file +will be a raw binary file, containing the memory image of the input file. +Symbols and relocation information will be discarded. The image will start at +the address of the first loadable section in the output. +.SH EXIT STATUS +.sp +\fBllvm\-objcopy\fP exits with a non\-zero exit code if there is an error. +Otherwise, it exits with code 0. +.SH BUGS +.sp +To report bugs, please visit <\fI\%https://github.com/llvm/llvm\-project/labels/tools:llvm\-objcopy/strip/\fP>. +.sp +There is a known issue with \fI\%\-\-input\-target\fP and \fI\%\-\-target\fP +causing only \fBbinary\fP and \fBihex\fP formats to have any effect. Other values +will be ignored and \fBllvm\-objcopy\fP will attempt to guess the input +format. +.SH SEE ALSO +.sp +\fBllvm\-strip(1)\fP +.SH AUTHOR +Maintained by the LLVM Team (https://llvm.org/). +.SH COPYRIGHT +2003-2023, LLVM Project +.\" Generated by docutils manpage writer. +. |