EnglishFrenchSpanish

OnWorks favicon

icheck - Online in the Cloud

Run icheck in OnWorks free hosting provider over Ubuntu Online, Fedora Online, Windows online emulator or MAC OS online emulator

This is the command icheck that can be run in the OnWorks free hosting provider using one of our multiple free online workstations such as Ubuntu Online, Fedora Online, Windows online emulator or MAC OS online emulator

PROGRAM:

NAME


icheck - C interface ABI/API checker

SYNOPSIS


icheck --canonify [[--baseline FILE] ...] [OPTIONS] [GCC_OPTIONS] [--] files

icheck --compare [OPTIONS] old_file new_file

DESCRIPTION


A tool for statically checking C interfaces for API and ABI changes. All changes to type
declarations that can cause ABI changes should be detected, along with most API changes.

icheck is intended for use with libraries, as a method of preventing ABI drift.

COMMANDS


Reduce a set of source files to a canonical interface file with --canonify, then compare
two such interface files with --compare. If there are interface changes between them,
icheck will describe the changes and fail.

--canonify [[--baseline FILE] ...] [OPTIONS] [GCC_OPTIONS] [--] files

Canonify the source code files (typically .h headers) to be compared later with
--compare. Usually used with the -o option to save the summary to a file.

--compare [OPTIONS] old_file new_file

Reads two canonical interface files generated with --canonify and compares the
structure of the source code to the changes in the Application Public Interface
(the developer interface or API) and the Application Binary Interface (ABI) used to
link against other programs or libraries.

OPTIONS


ICHECK OPTIONS
-o, --output FILE

Emit output to FILE, rather than stdout.

--debug N

Dump debugging information.

--only THING

Only process the given THING.

--skip-from FILE

Skip unnecessary things from FILE.

--skip-from-re regexp

Skip unnecessary things from files matching the regular expression.

--only-from FILE

Only take things from FILE.

--only-from-re regexp

Only take things from files matching the regular expression.

GCC_OPTIONS

GCC_OPTIONS are passed through to gcc -E

HELP OPTIONS
--help
Display the help synopsis for icheck.

EXAMPLES


All source files are preprocessed with gcc, so canonify needs the same include information
as the source code - follow the syntax from the Makefile to include -I options to cpp (or
gcc) so that all necessary headers can be located. icheck will abort if any required
headers cannot be found. The source must be compileable; icheck cannot process files which
cannot be directly compiled. If a header is missing #include statements, or otherwise
requires being used in a special way, then it cannot be directly processed with icheck.
Instead, write a stub C file that sets things up appropriately and then #includes the
header.

icheck --canonify -o ~/icheck/oldversion -I/usr/include/foo-2.0 /usr/src/bar/src/foobar.h

Prepare a text summary of the foobar.h file and all files it includes. The summary is
written out to ~/icheck/oldversion. Repeat for /usr/src/bar1/src/foobar.h - the same file
in the newer source directory, outputting to a new file, e.g. ~/icheck/newversion.

icheck --compare -o ~/icheck/results.txt ~/icheck/oldversion ~/icheck/newversion

Writes the report of the comparison of the two summary files. The report indicates all the
changes in the ABI and/or API found during the comparison.

icheck --canonify -o debian/icheck.canonical -Idebian/foo-dev/usr/include debian/foo-
dev/usr/include/foobar.h

icheck --compare debian/icheck.manifest debian/icheck.canonical

These two statements, included in a debian/rules file, will cause the package build to
fail if the API or ABI has changed in unexpected ways, where icheck.manifest is a copy of
the expected interface, included in the package.

Note that the arguments to --compare are themselves valid C files which are preprocessed,
so icheck.manifest can contain C preprocessor logic. This can be useful when a package
exports different interfaces depending on the host architecture. In this case, you can't
replace it with a new copy of icheck.canonical when the interface changes and you need to
update the manifest. Rather than updating the entire manifest by hand, put the hand-
written interface descriptions in one file (icheck.static-manifest) and then use:

icheck --canonify --baseline debian/icheck.static-manifest -o debian/icheck.dynamic-
manifest

Lastly, create icheck.manifest containing:
#include "icheck.static-manifest"
#include "icheck.dynamic-manifest"
This allows you to update some parts of the manifest by hand, while still automatically
generating the rest.

OUTPUT


icheck generates a lengthly description of every possible API or ABI change, based on type
information. It does not investigate the actual program code, and so it is possible that
some type changes it detects are not actual ABI or API changes. However, this normally
only happens when the program code was explicitly written for it. If in doubt, assume it's
changed.

At the end, icheck provides a summary of the changes. Note that the directions here are
dependent on the order of the arguments to --compare: the older interface must come first,
or the directions will be the other way around. The meanings of the various terms are as
follows:

ABI The ABI is compatible if things compiled against one version of the
interface will work when run using the other version.

API The API is compatible if things compiled against one version of the
interface can be compiled against the other.

forwards-compatible
An interface is forwards-compatible if things compiled against the old
version will work with the new. This is the important feature for soname
changes.

backwards-compatible
An interface is backwards-compatible if things compiled against the new
version will work with the old. This is the important feature for shlibs
version changes. If you aren't building Debian packages, you probably don't
care about changes which aren't backwards-compatible.

Use icheck online using onworks.net services


Free Servers & Workstations

Download Windows & Linux apps

  • 1
    Psi
    Psi
    Psi is cross-platform powerful XMPP
    client designed for experienced users.
    There are builds available for MS
    Windows, GNU/Linux and macOS.. Audience:
    End Users...
    Download Psi
  • 2
    Blobby Volley 2
    Blobby Volley 2
    Official continuation of the famous
    Blobby Volley 1.x arcade game..
    Audience: End Users/Desktop. User
    interface: OpenGL, SDL. Programming
    Language: C++, Lua. C...
    Download Blobby Volley 2
  • 3
    SuiteCRM
    SuiteCRM
    SuiteCRM is the award-winning Customer
    Relationship Management (CRM)
    application brought to you by authors
    and maintainers, SalesAgility. It is the
    world�s mos...
    Download SuiteCRM
  • 4
    Poweradmin
    Poweradmin
    Poweradmin is a web-based DNS
    administration tool for PowerDNS server.
    The interface has full support for most
    of the features of PowerDNS. It has full
    support...
    Download Poweradmin
  • 5
    Gin Web Framework
    Gin Web Framework
    Gin is an incredibly fast web framework
    written in Golang that can perform up to
    40 times faster, thanks to its
    martini-like API and custom version of
    httprout...
    Download Gin Web Framework
  • 6
    CEREUS LINUX
    CEREUS LINUX
    CEREUS LINUX basado en MX LINUX con
    varios entornos de escritorios. This is
    an application that can also be fetched
    from
    https://sourceforge.net/projects/cereu...
    Download CEREUS LINUX
  • More »

Linux commands

  • 1
    aa-clickquery
    aa-clickquery
    aa-clickquery - program for querying
    click-apparmor DESCRIPTION: This program
    is used to query click-apparmor for
    information. USAGE: aa-clickquery
    --click-fra...
    Run aa-clickquery
  • 2
    aa-exec-click
    aa-exec-click
    aa-exec-click - program for executing
    click packages under confinement
    DESCRIPTION: This program is used to
    execute click package under AppArmor
    confinement. I...
    Run aa-exec-click
  • 3
    cpio
    cpio
    cpio - copy files to and from archives ...
    Run cpio
  • 4
    cpipe
    cpipe
    cpipe - copy stdin to stdout while
    counting bytes and reporting progress ...
    Run cpipe
  • 5
    FvwmSave
    FvwmSave
    FvwmSave - the Fvwm desktop-layout
    saving module ...
    Run FvwmSave
  • 6
    FvwmSave1
    FvwmSave1
    FvwmSave - the FVWM desktop-layout
    saving module ...
    Run FvwmSave1
  • More »

Ad