Efficient function call tracing with link-time binary rewriting for CE devices
TL;DR: LITIFUT, a function call tracer designed for consumer electronics, is proposed, which rewrites an executable file or a library file to inject profiling code during the linking stage and achieves as little performance overhead as source- level instrumentation and as minor developer-intervention as binary-level instrumentation.
Abstract: As the scale and complexity of software components in consumer electronics increase, the importance of performance optimization is rapidly growing. Consequently, the demand for performance optimization tools tailored for the consumer electronics environment is stronger than ever. A function call tracer is a vital tool for investigating relationships between functions, invocation counts of a function, and elapsed time in a function. Despite its importance in performance optimization, the limited capability of embedded hardware prohibits use of existing dynamic binary instrumentation tools. Moreover, the use of closed proprietary components excludes source-level analysis tools out of viable options. In this paper, LITIFUT, a function call tracer designed for consumer electronics, is proposed. This tool rewrites an executable file or a library file to inject profiling code during the linking stage. This approach achieves as little performance overhead as source-level instrumentation and as minor developer-intervention as binary-level instrumentation. The prototype implementation supports the two most popular embedded processor architectures. The evaluation with a real-world embedded software application showed that LITIFUT successfully profiles program activities with insignificant overhead.
References
More filters
•
15 Jan 1996
TL;DR: This book helps the reader to get started with the ARM chip and get programs running under emulation and discusses assembly level programming, particularly for the ARM.
Abstract: From the Publisher:
Features
allows the reader to get started with the ARM chip and get programs running under emulation discusses assembly level programming, particularly for the ARM provides information on general computer architecture (processor design, caches, memory management) with detailed illustrations based on ARM chips details the architecture development process covers embedded system design principles and case studies
338 citations
•
[...]
TL;DR: This is a tutorial paper on the linking and loading stages of the language transformation process, and the hnking process is treated in terms of the various times at which it may occur.
Abstract: From the Publisher:
Whatever your programming language, whatever your platform, you probably tap into linker and loader functions all the time. But do you know how to use them to their greatest possible advantage? Only now, with the publication of Linkers & Loaders, is there an authoritative book devoted entirely to these deep-seated compile-time and run-time processes.
The book begins with a detailed and comparative account of linking and loading that illustrates the differences among various compilers and operating systems. On top of this foundation, the author presents clear practical advice to help you create faster, cleaner code. Youll learn to avoid the pitfalls associated with Windows DLLs, take advantage of the space-saving, performance-improving techniques supported by many modern linkers, make the best use of the UNIX ELF library scheme, and much more. If youre serious about programming, youll devour this unique guide to one of the fields least understood topics. Linkers & Loaders is also an ideal supplementary text for compiler and operating systems courses.
Features
Includes a linker construction project written in Perl, with project files available for download. Covers dynamic linking in Windows, UNIX, Linux, BeOS, and other operating systems. Explains the Java linking model and how it figures in network applets and extensible Java code. Helps you write more elegant and effective code, and build applications that compile, load, and run more efficiently.
About the Authors
John Levine is the author or co-author of many books, including lex & yac (O'Reilly), Programming for Graphics Files in C and C++ (Wiley), and The Internet for Dummies (IDG). He is also publisher emeritus of the Journal of C Language Translation, long-time moderator of the comp.compilers newsgroup, and the creator of one of the first commercial Fortran 77 compilers. He holds a Ph.D. in Computer Science from Yale University.
285 citations
"Efficient function call tracing wit..." refers background in this paper
...Because of the dynamic nature of runtime addresses, a program linkage table (PLT) and global offset table (GOT) are devised to reference functions and variables in dynamic shared libraries [19]....
[...]
•
11 Aug 1997TL;DR: Etch is a general-purpose tool for rewriting arbitrary Win32/x86 binaries without requiring source code and some of the tools that are built using it are described, including a hierarchical call graph profiler and an instruction layout optimization tool.
Abstract: Etch is a general-purpose tool for rewriting arbitrary Win32/x86 binaries without requiring source code. Etch provides a framework for modifying executables for both measurement and optimization. Etch handles the complexities of the Win32 executable file format and the x86 instruction set, allowing tool builders to focus on specifying transformations. Etch also handles the complexities of the Win32 execution environment, allowing tool users to focus on performing experiments. This paper describes Etch and some of the tools that we have built using Etch, including a hierarchical call graph profiler and an instruction layout optimization tool.
225 citations
"Efficient function call tracing wit..." refers methods in this paper
...A more sophisticated binary rewrite tool [22] analyzes a binary file to discover program components and then inserts instrumentation stubs per instruction basis; however, it is built for a specific desktop environment, unlike LITIFUT, which works for CE devices....
[...]
••
22 Oct 2006TL;DR: The design, implementation, and applications of the ARM version of Pin, a dynamic instrumentation system from Intel, are described and the design decisions that are geared toward the space and processing limitations of embedded systems are highlighted.
Abstract: Dynamic binary instrumentation (DBI) is a powerful technique for analyzing the runtime behavior of software. While numerous DBI frameworks have been developed for general-purpose architectures, work on DBI frameworks for embedded architectures has been fairly limited. In this paper, we describe the design, implementation, and applications of the ARM version of Pin, a dynamic instrumentation system from Intel. In particular, we highlight the design decisions that are geared toward the space and processing limitations of embedded systems. Pin for ARM is publicly available and is shipped with dozens of sample plug-in instrumentation tools. It has been downloaded over 500 times since its release.
72 citations