Add infrastructure to build llvm-objcopy and llvm-objdump.
authorpatrick <patrick@openbsd.org>
Mon, 2 Aug 2021 08:50:51 +0000 (08:50 +0000)
committerpatrick <patrick@openbsd.org>
Mon, 2 Aug 2021 08:50:51 +0000 (08:50 +0000)
ok kettenis@ sthen@

gnu/usr.bin/clang/Makefile
gnu/usr.bin/clang/include/llvm-objcopy/Makefile [new file with mode: 0644]
gnu/usr.bin/clang/libLLVM/Makefile
gnu/usr.bin/clang/libLLVMSymbolize/Makefile [new file with mode: 0644]
gnu/usr.bin/clang/llvm-objcopy/Makefile [new file with mode: 0644]
gnu/usr.bin/clang/llvm-objcopy/llvm-objcopy.1 [new file with mode: 0644]
gnu/usr.bin/clang/llvm-objdump/Makefile [new file with mode: 0644]
gnu/usr.bin/clang/llvm-objdump/llvm-objdump.1 [new file with mode: 0644]

index 6747c05..74cf9f8 100644 (file)
@@ -1,4 +1,4 @@
-# $OpenBSD: Makefile,v 1.14 2021/04/28 12:55:37 patrick Exp $
+# $OpenBSD: Makefile,v 1.15 2021/08/02 08:50:51 patrick Exp $
 
 .include <bsd.own.mk>
 
@@ -99,5 +99,9 @@ SUBDIR+=liblldbUtility
 SUBDIR+=lldb
 SUBDIR+=lldb-server
 
+SUBDIR+=include/llvm-objcopy
+SUBDIR+=llvm-objcopy
+SUBDIR+=llvm-objdump
+
 .include <bsd.obj.mk>
 .include <bsd.subdir.mk>
diff --git a/gnu/usr.bin/clang/include/llvm-objcopy/Makefile b/gnu/usr.bin/clang/include/llvm-objcopy/Makefile
new file mode 100644 (file)
index 0000000..8f820fc
--- /dev/null
@@ -0,0 +1,33 @@
+# $OpenBSD: Makefile,v 1.1 2021/08/02 08:50:51 patrick Exp $
+
+.include <bsd.own.mk>
+
+TBLGEN=        ${.OBJDIR}/../../llvm-tblgen/llvm-tblgen
+OBJCOPY_INC=${.CURDIR}/../../../../llvm/llvm/tools/llvm-objcopy
+
+GEN=   InstallNameToolOpts.inc ObjcopyOpts.inc StripOpts.inc
+
+all: ${GEN}
+
+install:
+       @# Nothing here so far ...
+
+clean cleandir:
+       rm -f ${GEN}
+
+InstallNameToolOpts.inc: ${OBJCOPY_INC}/InstallNameToolOpts.td
+       ${TBLGEN} -I${.CURDIR}/../../../../llvm/llvm/include \
+               -I${.CURDIR}/../../../../llvm/llvm/tools/llvm-objcopy \
+               -gen-opt-parser-defs -o ${.TARGET} ${.ALLSRC}
+
+ObjcopyOpts.inc: ${OBJCOPY_INC}/ObjcopyOpts.td
+       ${TBLGEN} -I${.CURDIR}/../../../../llvm/llvm/include \
+               -I${.CURDIR}/../../../../llvm/llvm/tools/llvm-objcopy \
+               -gen-opt-parser-defs -o ${.TARGET} ${.ALLSRC}
+
+StripOpts.inc: ${OBJCOPY_INC}/StripOpts.td
+       ${TBLGEN} -I${.CURDIR}/../../../../llvm/llvm/include \
+               -I${.CURDIR}/../../../../llvm/llvm/tools/llvm-objcopy \
+               -gen-opt-parser-defs -o ${.TARGET} ${.ALLSRC}
+
+.include <bsd.obj.mk>
index c8f74cb..fee57ee 100644 (file)
@@ -48,6 +48,7 @@
 .include "../libLLVMScalarOpts/Makefile"
 .include "../libLLVMSelectionDAG/Makefile"
 .include "../libLLVMSupport/Makefile.shared"
+.include "../libLLVMSymbolize/Makefile"
 .include "../libLLVMTableGen/Makefile.shared"
 .include "../libLLVMTarget/Makefile"
 .include "../libLLVMTextAPI/Makefile"
diff --git a/gnu/usr.bin/clang/libLLVMSymbolize/Makefile b/gnu/usr.bin/clang/libLLVMSymbolize/Makefile
new file mode 100644 (file)
index 0000000..7c77495
--- /dev/null
@@ -0,0 +1,12 @@
+# $OpenBSD: Makefile,v 1.1 2021/08/02 08:50:52 patrick Exp $
+
+LIB=   LLVMSymbolize
+NOPROFILE=
+
+CPPFLAGS+=     -I${LLVM_SRCS}/include/llvm/DebugInfo/Symbolize
+
+SRCS+= DIPrinter.cpp \
+       SymbolizableObjectFile.cpp \
+       Symbolize.cpp \
+
+.PATH: ${.CURDIR}/../../../llvm/llvm/lib/DebugInfo/Symbolize
diff --git a/gnu/usr.bin/clang/llvm-objcopy/Makefile b/gnu/usr.bin/clang/llvm-objcopy/Makefile
new file mode 100644 (file)
index 0000000..99c5728
--- /dev/null
@@ -0,0 +1,80 @@
+# $OpenBSD: Makefile,v 1.1 2021/08/02 08:50:52 patrick Exp $
+
+.include <bsd.own.mk>
+
+PROG=  llvm-objcopy
+BINDIR=        /usr/bin
+LIBEXECDIR=/usr/libexec
+
+SRCS=  Buffer.cpp \
+       COFFObjcopy.cpp \
+       COFFObject.cpp \
+       COFFReader.cpp \
+       COFFWriter.cpp \
+       CopyConfig.cpp \
+       ELFConfig.cpp \
+       ELFObjcopy.cpp \
+       ELFObject.cpp \
+       MachOLayoutBuilder.cpp \
+       MachOObjcopy.cpp \
+       MachOObject.cpp \
+       MachOReader.cpp \
+       MachOWriter.cpp \
+       WasmObjcopy.cpp \
+       WasmObject.cpp \
+       WasmReader.cpp \
+       WasmWriter.cpp \
+       llvm-objcopy.cpp
+
+COFFObject.cpp:
+       ln -s ${.CURDIR}/../../../llvm/llvm/tools/llvm-objcopy/COFF/Object.cpp $@
+
+COFFReader.cpp:
+       ln -s ${.CURDIR}/../../../llvm/llvm/tools/llvm-objcopy/COFF/Reader.cpp $@
+
+COFFWriter.cpp:
+       ln -s ${.CURDIR}/../../../llvm/llvm/tools/llvm-objcopy/COFF/Writer.cpp $@
+
+ELFObject.cpp:
+       ln -s ${.CURDIR}/../../../llvm/llvm/tools/llvm-objcopy/ELF/Object.cpp $@
+
+MachOObject.cpp:
+       ln -s ${.CURDIR}/../../../llvm/llvm/tools/llvm-objcopy/MachO/Object.cpp $@
+
+WasmObject.cpp:
+       ln -s ${.CURDIR}/../../../llvm/llvm/tools/llvm-objcopy/wasm/Object.cpp $@
+
+WasmReader.cpp:
+       ln -s ${.CURDIR}/../../../llvm/llvm/tools/llvm-objcopy/wasm/Reader.cpp $@
+
+WasmWriter.cpp:
+       ln -s ${.CURDIR}/../../../llvm/llvm/tools/llvm-objcopy/wasm/Writer.cpp $@
+
+CPPFLAGS+=     -I${.OBJDIR}/../include/llvm-objcopy
+CPPFLAGS+=     -I${.CURDIR}/../../../llvm/llvm/tools/llvm-objcopy
+CPPFLAGS+=     ${CPPFLAGS_$*}
+
+CPPFLAGS_COFFObject=   -I${.CURDIR}/../../../llvm/llvm/tools/llvm-objcopy/COFF
+CPPFLAGS_COFFReader=   -I${.CURDIR}/../../../llvm/llvm/tools/llvm-objcopy/COFF
+CPPFLAGS_COFFWriter=   -I${.CURDIR}/../../../llvm/llvm/tools/llvm-objcopy/COFF
+CPPFLAGS_ELFObject=    -I${.CURDIR}/../../../llvm/llvm/tools/llvm-objcopy/ELF
+CPPFLAGS_MachOObject=  -I${.CURDIR}/../../../llvm/llvm/tools/llvm-objcopy/MachO
+CPPFLAGS_WasmObject=   -I${.CURDIR}/../../../llvm/llvm/tools/llvm-objcopy/wasm
+CPPFLAGS_WasmReader=   -I${.CURDIR}/../../../llvm/llvm/tools/llvm-objcopy/wasm
+CPPFLAGS_WasmWriter=   -I${.CURDIR}/../../../llvm/llvm/tools/llvm-objcopy/wasm
+
+.PATH: ${.CURDIR}/../../../llvm/llvm/tools/llvm-objcopy
+.PATH: ${.CURDIR}/../../../llvm/llvm/tools/llvm-objcopy/COFF
+.PATH: ${.CURDIR}/../../../llvm/llvm/tools/llvm-objcopy/ELF
+.PATH: ${.CURDIR}/../../../llvm/llvm/tools/llvm-objcopy/MachO
+.PATH: ${.CURDIR}/../../../llvm/llvm/tools/llvm-objcopy/wasm
+
+LLVM_LIBDEPS=  LLVM
+
+LDADD+= -L ${.OBJDIR}/../libLLVM -lLLVM
+
+CLEANFILES+=   COFFObject.cpp COFFReader.cpp COFFWriter.cpp
+CLEANFILES+=   ELFObject.cpp MachOObject.cpp
+CLEANFILES+=   WasmObject.cpp WasmReader.cpp WasmWriter.cpp
+
+.include <bsd.prog.mk>
diff --git a/gnu/usr.bin/clang/llvm-objcopy/llvm-objcopy.1 b/gnu/usr.bin/clang/llvm-objcopy/llvm-objcopy.1
new file mode 100644 (file)
index 0000000..68868fc
--- /dev/null
@@ -0,0 +1,744 @@
+.\" Man page generated from reStructuredText.
+.
+.TH "LLVM-OBJCOPY" "1" "2021-07-28" "11" "LLVM"
+.SH NAME
+llvm-objcopy \- object copying and editing tool
+.
+.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
+..
+.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 "\-" is
+specified for the input file, the input is read from the program\(aqs standard
+input stream. If "\-" 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 ".note". 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.
+.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 \fI<align>\(ga\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 \-\-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 \-\-build\-id\-link\-dir <dir>
+Set the directory used by \fI\%\-\-build\-id\-link\-input\fP and
+\fI\%\-\-build\-id\-link\-output\fP\&.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-build\-id\-link\-input <suffix>
+Hard\-link the input to \fB<dir>/xx/xxx<suffix>\fP, where \fB<dir>\fP is the directory
+specified by \fI\%\-\-build\-id\-link\-dir\fP\&. The path used is derived from the
+hex build ID.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-build\-id\-link\-output <suffix>
+Hard\-link the output to \fB<dir>/xx/xxx<suffix>\fP, where \fB<dir>\fP is the directory
+specified by \fI\%\-\-build\-id\-link\-dir\fP\&. The path used is derived from the
+hex build ID.
+.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 [<style>]
+Compress DWARF debug sections in the output, using the specified style.
+Supported styles are \fIzlib\-gnu\fP and \fIzlib\fP\&. Defaults to \fIzlib\fP if no style is
+specified.
+.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 ".L" 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>
+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\-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 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://bugs.llvm.org/\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-2021, LLVM Project
+.\" Generated by docutils manpage writer.
+.
diff --git a/gnu/usr.bin/clang/llvm-objdump/Makefile b/gnu/usr.bin/clang/llvm-objdump/Makefile
new file mode 100644 (file)
index 0000000..1d0d146
--- /dev/null
@@ -0,0 +1,22 @@
+# $OpenBSD: Makefile,v 1.1 2021/08/02 08:50:52 patrick Exp $
+
+.include <bsd.own.mk>
+
+PROG=  llvm-objdump
+BINDIR=        /usr/bin
+LIBEXECDIR=/usr/libexec
+
+SRCS=  COFFDump.cpp \
+       ELFDump.cpp \
+       MachODump.cpp \
+       WasmDump.cpp \
+       XCOFFDump.cpp \
+       llvm-objdump.cpp
+
+.PATH: ${.CURDIR}/../../../llvm/llvm/tools/llvm-objdump
+
+LLVM_LIBDEPS=  LLVM
+
+LDADD+= -L ${.OBJDIR}/../libLLVM -lLLVM
+
+.include <bsd.prog.mk>
diff --git a/gnu/usr.bin/clang/llvm-objdump/llvm-objdump.1 b/gnu/usr.bin/clang/llvm-objdump/llvm-objdump.1
new file mode 100644 (file)
index 0000000..520fc03
--- /dev/null
@@ -0,0 +1,447 @@
+.\" Man page generated from reStructuredText.
+.
+.TH "LLVM-OBJDUMP" "1" "2021-07-28" "11" "LLVM"
+.SH NAME
+llvm-objdump \- LLVM's object file dumper
+.
+.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
+..
+.SH SYNOPSIS
+.sp
+\fBllvm\-objdump\fP [\fIcommands\fP] [\fIoptions\fP] [\fIfilenames...\fP]
+.SH DESCRIPTION
+.sp
+The \fBllvm\-objdump\fP utility prints the contents of object files and
+final linked images named on the command line. If no file name is specified,
+\fBllvm\-objdump\fP will attempt to read from \fIa.out\fP\&. If \fI\-\fP is used as a
+file name, \fBllvm\-objdump\fP will process a file on its standard input
+stream.
+.SH COMMANDS
+.sp
+At least one of the following commands are required, and some commands can be
+combined with other commands:
+.INDENT 0.0
+.TP
+.B \-a, \-\-archive\-headers
+Display the information contained within an archive\(aqs headers.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-d, \-\-disassemble
+Disassemble all text sections found in the input files.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-D, \-\-disassemble\-all
+Disassemble all sections found in the input files.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-disassemble\-symbols=<symbol1[,symbol2,...]>
+Disassemble only the specified symbols. Takes demangled symbol names when
+\fI\%\-\-demangle\fP is specified, otherwise takes mangled symbol names.
+Implies \fI\%\-\-disassemble\fP\&.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-dwarf=<value>
+Dump the specified DWARF debug sections. The supported values are:
+.sp
+\fIframes\fP \- .debug_frame
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-f, \-\-file\-headers
+Display the contents of the overall file header.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-fault\-map\-section
+Display the content of the fault map section.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-h, \-\-headers, \-\-section\-headers
+Display summaries of the headers for each section.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-help
+Display usage information and exit. Does not stack with other commands.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-p, \-\-private\-headers
+Display format\-specific file headers.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-r, \-\-reloc
+Display the relocation entries in the file.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-R, \-\-dynamic\-reloc
+Display the dynamic relocation entries in the file.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-raw\-clang\-ast
+Dump the raw binary contents of the clang AST section.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-s, \-\-full\-contents
+Display the contents of each section.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-t, \-\-syms
+Display the symbol table.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-T, \-\-dynamic\-syms
+Display the contents of the dynamic symbol table.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-u, \-\-unwind\-info
+Display the unwind info of the input(s).
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-version
+Display the version of the \fBllvm\-objdump\fP executable. Does not stack
+with other commands.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-x, \-\-all\-headers
+Display all available header information. Equivalent to specifying
+\fI\%\-\-archive\-headers\fP, \fI\%\-\-file\-headers\fP,
+\fI\%\-\-private\-headers\fP, \fI\%\-\-reloc\fP, \fI\%\-\-section\-headers\fP,
+and \fI\%\-\-syms\fP\&.
+.UNINDENT
+.SH OPTIONS
+.sp
+\fBllvm\-objdump\fP supports the following options:
+.INDENT 0.0
+.TP
+.B \-\-adjust\-vma=<offset>
+Increase the displayed address in disassembly or section header printing by
+the specified offset.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-arch\-name=<string>
+Specify the target architecture when disassembling. Use \fI\%\-\-version\fP
+for a list of available targets.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-C, \-\-demangle
+Demangle symbol names in the output.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-debug\-vars=<format>
+Print the locations (in registers or memory) of source\-level variables
+alongside disassembly. \fBformat\fP may be \fBunicode\fP or \fBascii\fP, defaulting
+to \fBunicode\fP if omitted.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-debug\-vars\-indent=<width>
+Distance to indent the source\-level variable display, relative to the start
+of the disassembly. Defaults to 40 characters.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-j, \-\-section=<section1[,section2,...]>
+Perform commands on the specified sections only. For Mach\-O use
+\fIsegment,section\fP to specify the section name.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-l, \-\-line\-numbers
+When disassembling, display source line numbers. Implies
+\fI\%\-\-disassemble\fP\&.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-M, \-\-disassembler\-options=<opt1[,opt2,...]>
+Pass target\-specific disassembler options. Currently supported for ARM targets
+only. Available options are \fBreg\-names\-std\fP and \fBreg\-names\-raw\fP\&.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-mcpu=<cpu\-name>
+Target a specific CPU type for disassembly. Specify \fB\-\-mcpu=help\fP to display
+available CPUs.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-mattr=<a1,+a2,\-a3,...>
+Enable/disable target\-specific attributes. Specify \fB\-\-mcpu=help\fP to display
+the available attributes.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-no\-leading\-addr
+When disassembling, do not print leading addresses.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-no\-show\-raw\-insn
+When disassembling, do not print the raw bytes of each instruction.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-print\-imm\-hex
+Use hex format when printing immediate values in disassembly output.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-S, \-\-source
+When disassembling, display source interleaved with the disassembly. Implies
+\fI\%\-\-disassemble\fP\&.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-show\-lma
+Display the LMA column when dumping ELF section headers. Defaults to off
+unless any section has different VMA and LMAs.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-start\-address=<address>
+When disassembling, only disassemble from the specified address.
+.sp
+When printing relocations, only print the relocations patching offsets from at least \fBaddress\fP\&.
+.sp
+When printing symbols, only print symbols with a value of at least \fBaddress\fP\&.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-stop\-address=<address>
+When disassembling, only disassemble up to, but not including the specified address.
+.sp
+When printing relocations, only print the relocations patching offsets up to \fBaddress\fP\&.
+.sp
+When printing symbols, only print symbols with a value up to \fBaddress\fP\&.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-triple=<string>
+Target triple to disassemble for, see \fB\-\-version\fP for available targets.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-w, \-\-wide
+Ignored for compatibility with GNU objdump.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-x86\-asm\-syntax=<style>
+When used with \fI\%\-\-disassemble\fP, choose style of code to emit from
+X86 backend. Supported values are:
+.INDENT 7.0
+.INDENT 3.5
+.INDENT 0.0
+.TP
+.B att
+AT&T\-style assembly
+.UNINDENT
+.INDENT 0.0
+.TP
+.B intel
+Intel\-style assembly
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.sp
+The default disassembly style is \fBatt\fP\&.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-z, \-\-disassemble\-zeroes
+Do not skip blocks of zeroes when disassembling.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B @<FILE>
+Read command\-line options and commands from response file \fI<FILE>\fP\&.
+.UNINDENT
+.SH MACH-O ONLY OPTIONS AND COMMANDS
+.INDENT 0.0
+.TP
+.B \-\-arch=<architecture>
+Specify the architecture to disassemble. see \fB\-\-version\fP for available
+architectures.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-archive\-member\-offsets
+Print the offset to each archive member for Mach\-O archives (requires
+\fI\%\-\-archive\-headers\fP).
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-bind
+Display binding info
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-cfg
+Create a CFG for every symbol in the object file and write it to a graphviz
+file.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-data\-in\-code
+Display the data in code table.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-dis\-symname=<name>
+Disassemble just the specified symbol\(aqs instructions.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-dylibs\-used
+Display the shared libraries used for linked files.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-dsym=<string>
+Use .dSYM file for debug info.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-dylib\-id
+Display the shared library\(aqs ID for dylib files.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-exports\-trie
+Display exported symbols.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-g
+Print line information from debug info if available.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-full\-leading\-addr
+Print the full leading address when disassembling.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-indirect\-symbols
+Display the indirect symbol table.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-info\-plist
+Display the info plist section as strings.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-lazy\-bind
+Display lazy binding info.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-link\-opt\-hints
+Display the linker optimization hints.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-m, \-\-macho
+Use Mach\-O specific object file parser. Commands and other options may behave
+differently when used with \fB\-\-macho\fP\&.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-no\-leading\-headers
+Do not print any leading headers.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-no\-symbolic\-operands
+Do not print symbolic operands when disassembling.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-non\-verbose
+Display the information for Mach\-O objects in non\-verbose or numeric form.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-objc\-meta\-data
+Display the Objective\-C runtime meta data.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-private\-header
+Display only the first format specific file header.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-rebase
+Display rebasing information.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-universal\-headers
+Display universal headers.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-\-weak\-bind
+Display weak binding information.
+.UNINDENT
+.SH XCOFF ONLY OPTIONS AND COMMANDS
+.INDENT 0.0
+.TP
+.B \-\-symbol\-description
+Add symbol description to disassembly output.
+.UNINDENT
+.SH BUGS
+.sp
+To report bugs, please visit <\fI\%https://bugs.llvm.org/\fP>.
+.SH SEE ALSO
+.sp
+\fBllvm\-nm(1)\fP, \fBllvm\-readelf(1)\fP, \fBllvm\-readobj(1)\fP
+.SH AUTHOR
+Maintained by the LLVM Team (https://llvm.org/).
+.SH COPYRIGHT
+2003-2021, LLVM Project
+.\" Generated by docutils manpage writer.
+.