Commit Graph

286 Commits

Author SHA1 Message Date
Serge Lamikhov-Center
73a241079a Refactor the last commit 2023-08-28 19:35:05 +03:00
Serge Lamikhov-Center
089160c40e Use more portable function memchr()
Use more portable memchr() function instead of strnlen() which is not in ISO standard
2023-08-28 18:43:47 +03:00
Serge Lamikhov-Center
8ae6cec5d6 C++17 refactoring 2023-06-02 17:37:37 +03:00
Nam Cao
d251da09a0 Remove unnecessary initialization that causes GCC warning 2023-02-22 22:25:54 +02:00
Hao Chen
5be0f95443 Update elfio.hpp
Fix a memory leak that misuses unique_ptr
2023-02-12 10:06:22 +02:00
Serge Lamikhov-Center
6fc23e53dd Increase version number for future release 2022-12-18 00:37:56 +02:00
Serge Lamikhov-Center
b2901a51b6 Add missed implementation function for insert_data() 2022-11-30 08:25:01 +02:00
Nam Cao
974e1252ee Rewrite append_data() to call insert_data()
append_data() and insert_data() have almost the same implementation.
Change append_data() to simply call insert_data().
2022-11-29 18:24:32 +02:00
Nam Cao
e533985a3c Add insert_data() to section 2022-11-29 18:24:27 +02:00
Serge Lamikhov-Center
259da37f3a Remove dispersed 'noexcept' specifier 2022-11-24 15:56:37 +02:00
Serge Lamikhov-Center
9827eac948 Implement 'lazy' load for sections 2022-11-13 00:05:25 +02:00
Serge Lamikhov-Center
7c0abb1785 'noexcept' is added to section and segment API 2022-11-12 19:03:39 +02:00
Serge Lamikhov-Center
94505dd637 Add 'lazy' load for own opened streams 2022-11-12 18:19:48 +02:00
Serge Lamikhov-Center
4320ea915e 'noexept' added to upper level API members 2022-11-12 17:00:08 +02:00
Serge Lamikhov-Center
ad8b641f96 Lazy load segment data - load data upon request 2022-11-11 17:49:59 +02:00
Serge Lamikhov-Center
ef56f39379 Remove redundant member initialization 2022-11-11 16:46:49 +02:00
Serge Lamikhov-Center
8409f20a7f Remove output to std::cerr 2022-11-11 01:09:12 +02:00
Serge Lamikhov-Center
705a91c568 Use const referencies in set_xxx arguments 2022-11-10 22:37:55 +02:00
Serge Lamikhov-Center
755f81351f Generilize the section compression calls 2022-11-10 19:26:05 +02:00
Nathan Strong
7608269069 Externalize zlib dependency
== DETAILS

- define an interface/abstract class for zlib implementation
- update the code to reference the implementation, remove zlib dependency
- use constructor injection to provide implementations to elfio
- add a test to validate the injected object gets used properly
`
2022-11-04 18:12:15 +02:00
Nathan Strong
04985836db fix mismatched allocator warning 2022-11-04 18:12:15 +02:00
Nathan Strong
ac542cbb8b Add support for writing RPL/RPX
== DETAILS
Honor the compression flag and write compressed section data.
2022-11-04 18:12:15 +02:00
Nathan Strong
582d929d9d Add support for reading Wii U RPX/RPL
== DETAILS
The Wii U uses a slightly customized ELF format which uses
zlib compression on certain section types.

This commit adds the following:
- add `SHT_` constants for the custom ELF sections
- add `SHF_RPX_DEFLATE` flag used to denote a compressed section
- add code in the section `load()` method to detect the `SHF_RPX_DEFLATE` flag
  and decompress the section
2022-11-04 18:12:15 +02:00
Serge Lamikhov-Center
619c9b6884 Apply advices given by clang-tidy 2022-09-28 20:09:39 +03:00
tgotic
19bfbd5825 Additional SHF flags 2022-09-26 15:34:01 +03:00
Serge Lamikhov-Center
766f5e4dda Address more warnings reported by SonarLint 2022-09-23 17:54:24 +03:00
tgotic
c546c16222 New types and OS/ABI in dump
Added some types and strings, table for OS/ABI, added OS/ABI and ABI version to dump
2022-09-22 16:47:41 +03:00
Serge Lamikhov-Center
cccc78a37b Add 'explicit' keyword 2022-09-17 09:26:05 +03:00
Serge Lamikhov-Center
f21f8ad533 More refactoring 2022-09-16 20:51:20 +03:00
Serge Lamikhov-Center
b57b08409b More refactoring reported by SonarLint 2022-09-16 20:47:27 +03:00
bladchan
b996977925 fix alloc-dealloc-mismatch reported in ASAN 2022-09-04 21:20:43 +03:00
Serge Lamikhov-Center
5468d90e06 Adapt to the new notes interface 2022-09-01 18:56:29 +03:00
Serge Lamikhov-Center
dd425d83c6 Modernize more files 2022-09-01 18:50:02 +03:00
Serge Lamikhov-Center
bd2673db1f Add missing <array> include 2022-09-01 16:20:42 +03:00
Serge Lamikhov-Center
c22276ec1a Modernize 'segment' implementation 2022-08-31 22:14:32 +03:00
Serge Lamikhov-Center
156cac5fa1 Modernize the section implementation 2022-08-30 19:42:28 +03:00
Serge Lamikhov-Center
af080f739e Use unique_ptr instead of raw pointers 2022-08-29 08:20:07 +03:00
Kamay Xutax
7227a0913f Fix sign-compare error
I just noticed that on my compiler;
probably due to recent version, not sure.
2022-07-18 19:01:22 +03:00
Serge Lamikhov-Center
eeb00b60b2 Initial attempt for lazy load - segment loading 2022-07-17 19:13:49 +03:00
Kamay Xutax
e633e80886 Added auxiliary vectors
TODO: We might add examples run-time one day.
2022-07-01 20:13:04 +03:00
Serge Lamikhov-Center
9d6984a59b An attempt to address unusual case where 'note' size is larger than Elf_Word 2022-06-21 08:07:06 +03:00
Serge Lamikhov-Center
ee891ca7c9 Make sure that dynamic section entry size is larger than ElfXX_Dyn structure 2022-06-19 23:21:56 +03:00
Serge Lamikhov-Center
cf954a8d42 Prevent memory access to data out the notes' section 2022-06-19 17:37:22 +03:00
Serge Lamikhov-Center
cb61d172bb Prevent a memory leak 2022-06-19 17:34:28 +03:00
Serge Lamikhov-Center
3aad501f5b Add check for incorrect section/segment entry size 2022-06-18 22:47:37 +03:00
Serge Lamikhov-Center
07ef317550 Check out of the file boundary access attemps 2022-06-16 17:30:22 +03:00
Serge Lamikhov-Center
38d61e30a7 Refactor var declaration 2022-06-11 06:13:41 +00:00
Serge Lamikhov-Center
cfa213d646 Reduce complexity of 'if' nesting 2022-06-11 05:59:51 +00:00
Alan Jowett
f1c7d420e4 Validate that strings in table are null terminated
Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2022-06-11 07:47:44 +03:00
Serge Lamikhov-Center
2879ee62a2 Tiny reformat 2022-06-10 21:29:08 +03:00