Service installation on a base function and provision of a...

Data processing: software development – installation – and managem – Software installation

Reexamination Certificate

Rate now

  [ 0.00 ] – not rated yet Voters 0   Comments 0

Details

C717S163000, C717S175000, C717S176000, C717S177000, C712S233000, C712S234000, C712S244000, C714S038110

Reexamination Certificate

active

06546553

ABSTRACT:

TECHNICAL FIELD
The present invention pertains to service installation by modifying a base function image to route a call of the base function to a service function. The service function adds a service semantic and can call a pass function. The pass function enables a service-free semantic for the base function.
BACKGROUND OF THE INVENTION
Complex software systems from applications to operating systems include thousands, even millions, of lines of code. Understanding these complex software systems presents a challenge to the original software developers as well as third party software developers and users. The ability to instrument and extend these software systems promotes efficient software development, effective software use, and innovative software research.
Original developers build, debug, and optimize a system. When building and testing a system, the original developers frequently install a service on the system for instrumenting the system. Instrumentation profiles the interaction of various components of the system, times the execution of components, or otherwise measures the system for revision or optimization. Instrumentation can help isolate problems during debugging. After a first generation, developers may extend a software system to include new functions. Still later, when a complex software system has undergone revisions, developers may face legacy problems, having to support earlier versions of the complex system while providing enhanced functionality in later versions.
After a complex software system ships, third party developers and users may not have access to source code for the system. Nevertheless, like the original developers, the third party developers and users may want to instrument the software system for profiling, timing, optimizing, or debugging. Moreover, third party developers and users frequently want a slightly different software system. In this situation, rather than create a whole system from scratch, third party developers and users may prefer to change or extend an existing software system. Given the complexity of such systems and the lack of access to source code, however, third party developers and users must work with a binary version.
Most current software systems use function calls between components. A function performs a task or operation called a semantic. A function call is a request to a component to perform the semantic for a function. A function call typically transfers execution to the called function while saving the necessary information to allow execution to resume at the calling point when the called function has completed execution. One effective way to instrument or extend software systems involves interception of function calls. Techniques for intercepting function calls include source code replacement, binary code replacement, dynamic link library redirection, dynamic link library replacement, breakpoint trapping of function calls, and inline redirection.
Source code replacement involves replacing function calls in source code with calls to, e.g., instrumentation functions. This requires access to source code, which renders it impracticable for many software systems. Binary code replacement entails replacing function calls in a binary of the software system with calls to, e.g., instrumentation functions. While this does not require source code access, it requires the ability to identify all applicable call sites. To facilitate identification of call sites, an application might be linked with substantial symbolic information.
When a software system uses load-time dynamic linking, DLL redirection involves modifying an import table in a binary file to reference an instrumentation library. DLL redirection fails to intercept dynamic function calls, however. DLL replacement involves replacing a DLL with an instrumented version. While this guarantees an instrumented semantic for the library, it penalizes use of the non-instrumented semantic for the library.
Breakpoint trapping involves insertion of breakpoints into an image after it has been loaded into memory space. When execution reaches a breakpoint, an exception is thrown and caught by the instrumentation system. While effective, breakpoint trapping has a very high performance cost.
Inline redirection involves intercepting function calls and rerouting them to instrumentation. Inline redirection is potentially effective and efficient, but the various existing implementations of inline redirection have numerous shortcomings.
Inline redirection falls into the family of techniques known as code patching. Code patching has been used both to instrument and to extend the functionality of software systems. To intercept execution, an unconditional branch, or jump, is inserted into the desired interception point in a base function. Code overwritten by the unconditional branch is moved to a code patch. The code patch includes a call to instrumentation code (or the instrumentation code itself), the moved instructions, and a jump to the first instruction in the base function following the unconditional jump. A code patch can be inserted at the beginning, middle, or end of a base function, but works in a relatively fixed manner—it executes then transfers execution to the base function. A code patch lacks flexibility when working with the semantic for the base function. For example, a code patch does not preserve the semantic for a base function as a sub-routine and does not facilitate invoking the semantic for the base function an arbitrary number of times. Moreover, integration of a code patch with a base function is potentially very complicated. The code patch must ensure consistency in the context (registers, stack pointer, etc.) of the base function before and after instrumentation. A code patch typically saves register values and a stack pointer using hardware specific functions. To simplify state management, code patches are typically only prepended to base functions.
Static binary rewriting tools take as input a software system binary and an instrumentation script. The instrumentation script passes over the software binary inserting code between instructions, basic blocks, or functions. The output of the script is a new, instrumented software binary. This instrumented binary is relatively static. Instrumentation cannot be conveniently applied to an image at any point in execution. Moreover, while static binary rewriters allow insertion of instrumentation around instructions, e.g., through free registry discovery, the task of maintaining state consistency becomes very complicated. Static binary rewriters can use a standard system utility to save and restore states. Like code patching techniques, however, static binary rewriters do not preserve the semantic for a base function as a sub-routine and do not facilitate invocation of the semantic for the base function an arbitrary number of times.
SUMMARY OF THE INVENTION
The present invention pertains to service installation for modifying a base function to introduce therein an additional service provided by a service function. A function semantic relates to the task or operation that the function performs. The base function provides a base function semantic and the service function provides a service function semantic, neither of which is specified by the present invention. A pass function bypasses any installed service as necessary to provide a service-free base function semantic. After installing a service on a base function, calling the base function provides a service-installed semantic for the base function. On the other hand, calling the pass function provides a service-free semantic for the base function.
Service installation according to the present invention creates little overhead, correctly intercepts both statically and dynamically bound invocations, and is flexible. Using techniques of the present invention, inline redirection of any function can be selectively enabled for each process individually at load time based on the needs of the instrumentation.
The present invention pertains to the base, service, and pass func

LandOfFree

Say what you really think

Search LandOfFree.com for the USA inventors and patents. Rate them and share your experience with other people.

Rating

Service installation on a base function and provision of a... does not yet have a rating. At this time, there are no reviews or comments for this patent.

If you have personal experience with Service installation on a base function and provision of a..., we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Service installation on a base function and provision of a... will most certainly appreciate the feedback.

Rate now

     

Profile ID: LFUS-PAI-O-3110198

  Search
All data on this website is collected from public sources. Our data reflects the most accurate information available at the time of publication.