ABSTRACT
Unlike general systems, hardware and software of embedded systems are usually customized for specific purposes and many of them are real-time systems. With time changing, their workloads are also changing rapidly and maintaining their software becomes a complicated job. The key is to understand their behaviours so that developers can make changes to them according to the new situations. To trace their runtime behaviours, instrumentation techniques are widely used in general systems. However, applying them on embedded system faces several problems including big size growth rate, long instrumentation time, high runtime overhead, etc. As the hardware performance of embedded system are usually limited, these problems are crucial and cannot be ignored. As far as we know, existing tools can only partly solve all these problems.
In this paper, we propose ELSE, an Efficient and Link-time, Static instrumentation tool for Embedded system. It supports efficient low-level and high-level instrumentation to collect most runtime information developers want. It does not waste any space during instrumentation thus its size growth rate is very small, which is only about 30% of other existing tools. Its processing time is also orders of magnitude less than other existing tools. We optimize the influence of registers and cache which can further reduce its runtime overhead. Overall, ELSE performs the best compared with other state-of-the-art tools on SPEC 2006 benchmarks.
- Andrew R. Bernat and Barton P. Miller. 2011. Anywhere, any-time binary instrumentation. In Proceedings of the 10th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools (PASTE '11). ACM, 9--16.Google Scholar
- Andrew R. Bernat, Kevin Roundy, and Barton P. Miller. 2011. Efficient, sensitivity resistant binary instrumentation. In Proceedings of the 2011 International Symposium on Software Testing and Analysis (ISSTA '11). ACM, 89--99.Google Scholar
- A. Botta, W. de Donato, A. Pescape, and G. Ventre. 2008. Networked Embedded Systems: A Quantitative Performance Comparison. In Global Telecommunications Conference, 2008. IEEE GLOBECOM 2008. IEEE. 1--6.Google Scholar
- D.L. Bruening. 2004. Efficient, transparent, and comprehensive runtime code manipulation. Ph.D. Dissertation. Massachusetts Institute of Technology.Google ScholarDigital Library
- B. Buck and J.K. Hollingsworth. 2000. An API for runtime code patching. International Journal of High Performance Computing Applications 14, 4 (2000), 317--329.Google ScholarDigital Library
- Bruno De Bus, Bjorn De Sutter, Ludo Van Put, Dominique Chanet, and Koen De Bosschere. 2004. Link-time optimization of ARM binaries. In Proceedings of the 2004 ACM SIGPLAN/SIGBED conference on Languages, compilers, and tools for embedded systems (LCTES '04). ACM, 211--220.Google ScholarDigital Library
- Alan Eustace and Amitabh Srivastava. 1995. ATOM: a flexible interface for building high performance program analysis tools. In Proceedings of the USENIX 1995 Technical Conference Proceedings (TCON'95). USENIX Association, 25--25.Google Scholar
- Peter Feiner, Angela Demke Brown, and Ashvin Goel. 2012. Comprehensive kernel instrumentation via dynamic binary translation. In Proceedings of the seventeenth international conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS '12). ACM, 135--146.Google ScholarDigital Library
- S. Fischmeister and P. Lam. 2010. Time-Aware Instrumentation of Embedded Software. IEEE Transactions on Industrial Informatics 6, 4 (2010), 652--663.Google ScholarCross Ref
- Kim Hazelwood and Artur Klauser. 2006. A dynamic binary instrumentation engine for the ARM architecture. In Proceedings of the 2006 international conference on compilers, architecture and synthesis for embedded systems (CASES '06). ACM, 261--270.Google ScholarDigital Library
- Robert Hundt, Easwaran Raman, Martin Thuresson, and Neil Vachharajani. 2011. MAO - An extensible micro-architectural optimizer. In Proceedings of the 9th Annual IEEE/ACM International Symposium on Code Generation and Optimization (CGO '11). IEEE Computer Society, 1--10.Google ScholarDigital Library
- James R. Larus and Eric Schnarr. 1995. EEL: machine-independent executable editing. In Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation (PLDI '95). ACM, New York, NY, USA, 291--300.Google Scholar
- M.A. Laurenzano, M.M. Tikir, L. Carrington, and A. Snavely. 2010. PEBIL: Efficient static binary instrumentation for Linux. In Proceedings of the 2010 IEEE International Symposium on Performance Analysis of Systems Software (ISPASS '10). IEEE Computer Society, 175--183.Google Scholar
- Chi-Keung Luk, Robert Cohn, Robert Muth, Harish Patil, Artur Klauser, Geoff Lowney, Steven Wallace, Vijay Janapa Reddi, and Kim Hazelwood. 2005. Pin: building customized program analysis tools with dynamic instrumentation. In Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation (PLDI '05). ACM, 190--200.Google ScholarDigital Library
- Ryan W. Moore, José A. Baiocchi, Bruce R. Childers, Jack W. Davidson, and Jason D. Hiser. 2009. Addressing the challenges of DBT for the ARM architecture. In Proceedings of the 2009 ACM SIGPLAN/SIGBED conference on Languages, compilers, and tools for embedded systems (LCTES '09). ACM, 147--156.Google Scholar
- S. Nanda, Wei Li, Lap-Chung Lam, and Tzi cker Chiueh. 2006. BIRD: binary interpretation using runtime disassembly. In Proceedings of the 4th annual IEEE/ACM international symposium on Code generation and optimization (CGO '06). ACM, 12 pp.Google ScholarDigital Library
- Nicholas Nethercote and Julian Seward. 2007. Valgrind: a framework for heavyweight dynamic binary instrumentation. In Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation (PLDI '07). ACM, 89--100.Google ScholarDigital Library
- J. Newsome and D. Song. 2005. Dynamic taint analysis for automatic detection, analysis, and signature generation of exploits on commodity software. Proceedings of NDSS 05 (2005).Google Scholar
- Prateek Saxena, R Sekar, and Varun Puranik. 2008. Efficient fine-grained binary instrumentation with applications to taint-tracking. In Proceedings of the 6th annual IEEE/ACM international symposium on Code generation and optimization (CGO '08). ACM, 74--83.Google ScholarDigital Library
- B. Schwarz, S. Debray, G. Andrews, and M. Legendre. 2001. Plto: A link-time optimizer for the Intel IA-32 architecture. In Proc. 2001 Workshop on Binary Translation (WBT-2001). Citeseer.Google Scholar
- J. Seward and N. Nethercote. 2005. Using Valgrind to detect undefined value errors with bit-precision. In USENIX Annual Technical Conference. 17--30.Google Scholar
- Amitabh Srivastava and Alan Eustace. 1994. ATOM: a system for building customized program analysis tools. In Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation (PLDI '94). ACM, 196--205.Google ScholarDigital Library
- Enqiang Sun and David Kaeli. 2009. A binary instrumentation tool for the Blackfin processor. In Proceedings of the Workshop on Binary Instrumentation and Applications (WBIA '09). ACM, 43--51.Google ScholarDigital Library
- Jonas Trmper, Stefan Voigt, and Jrgen Dllner. 2012. Maintenance of Embedded Systems: Supporting Program Comprehension Using Dynamic Analysis. In In Proceedings of the 2nd International ICSE Workshop on Software Engineering for Embedded Systems (SEES). IEEE Computer Society.Google Scholar
Index Terms
- ELSE: an efficient link-time static instrumentation tool for embedded system
Recommendations
MinSIB: Minimized static instrumentation for fuzzing binaries
AbstractCode instrumentation is widely used in software analysis. The coverage-guided fuzzers collect path information by instrumenting additional code into the executable to guide the mutator. Existing instrumentation tools try to instrument ...
Detailed heap profiling
ISMM 2018: Proceedings of the 2018 ACM SIGPLAN International Symposium on Memory ManagementModern software systems heavily use the memory heap. As systems grow more complex and compute with increasing amounts of data, it can be difficult for developers to understand how their programs actually use the bytes that they allocate on the heap and ...
Detailed heap profiling
ISMM '18Modern software systems heavily use the memory heap. As systems grow more complex and compute with increasing amounts of data, it can be difficult for developers to understand how their programs actually use the bytes that they allocate on the heap and ...
Comments