xref: /illumos-gate/usr/src/man/man1/mcs.1 (revision afab0816ecb604f0099a09ad8ee398f0d7b77b1c)
te
Copyright 1989 AT&T
Copyright (c) 2007, Sun Microsystems, Inc. All Rights Reserved.
The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
mcs 1 "5 Oct 2007" "SunOS 5.11" "User Commands"
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 TYPEATTRIBUTE VALUE
Interface StabilityStable
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.