MCS(1) User Commands MCS(1)


NAME


mcs - manipulate the comment section of an object file

SYNOPSIS


mcs [-cdpVz] [-a string] [-n name] file...


DESCRIPTION


The mcs command is used to manipulate a section, by default the .comment
section, in an ELF object file. It is used to add to, delete, print, and
compress the contents of a section in an ELF object file, and print only
the contents of a section in a COFF object file. mcs cannot add, delete,
or compress the contents of a section that is contained within a segment.


If the input file is an archive (see ar.h(3HEAD)), the archive is treated
as a set of individual files. For example, if the -a option is specified,
the string is appended to the comment section of each ELF object file in
the archive; if the archive member is not an ELF object file, then it is
left unchanged.


mcs must be given one or more of the options described below. It applies,
in order, each of the specified options to each file.


For operations other than delete, if the object does not already contain
a section with the specified name, mcs will create a new empty section
with that name before performing the specified operation.

OPTIONS


The following options are supported:

-a string
Appends string to the comment section of the ELF object
files. If string contains embedded blanks, it must be
enclosed in quotation marks.


-c
Compresses the contents of the comment section of the ELF
object files. All duplicate entries are removed. The
ordering of the remaining entries is not disturbed.


-d
Deletes the contents of the specified section from the ELF
object files. The section header for the comment section is
also removed.


-n name
Specifies the name of the section to access if other than
.comment. By default, mcs deals with the section named
.comment. This option can be used to specify another
section. mcs can take multiple -n options to allow for
specification of multiple sections.


-p
Prints the contents of the comment section on the standard
output. Each section printed is tagged by the name of the
file from which it was extracted, using the format
file[member_name]: for archive files and file: for other
files.


-V
Prints on standard error the version number of mcs.


-z
Replaces any SHT_PROGBITS sections with zeros while
retaining the original attributes of the sections.


EXAMPLES


Example 1: Printing a file's comment section




The following entry


example% mcs -p elf.file


prints the comment section of the file elf.file.


Example 2: Appending a string to a comment section




The following entry


example% mcs -a xyz elf.file


appends string xyz to elf.file's comment section.


Example 3: Stripping a specified non-allocable section




Although used primarily with comment sections, mcs can operate on any
non-allocable section. In contrast to the strip command, which removes a
predefined selection of non-allocable sections, mcs can be used to delete
a specific section. The following entry


example% mcs -d -n .annotate elf.file


removes the section named .annotate from the file elf.file.


FILES


/tmp/mcs*
temporary files


ATTRIBUTES


See attributes(5) for descriptions of the following attributes:


+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Stable |
+--------------------+-----------------+

SEE ALSO


ar(1), as(1), ld(1), strip(1), ar.h(3HEAD), elf(3ELF), tmpnam(3C),
a.out(4), attributes(5)

NOTES


When mcs deletes a section using the -d option, it tries to bind together
sections of type SHT_REL and target sections pointed to by the sh_info
section header field. If one is to be deleted, mcs attempts to delete the
other of the pair.


By using the -z option, it is possible to make an object file by removing
the contents of SHT_PROGBITS sections while retaining the object file's
original structure as an ELF file. The need for use of the -z option is
limited. However, the option can be used to deliver an object file when
the contents of SHT_PROGBITS sections are not relevant.


October 5, 2007 MCS(1)