Commit Graph

110 Commits

Author SHA1 Message Date
Mario Werner
0ece76b5eb rewrote the segment save logic to not only care about alignment
The initial implementation only made sure that all sections and segments
are properly aligned. This is enough for simple embedded applications
but can not deal with more complex layouts.

The new implementation should be more generic given that it respects the
virtual addresses of the individual sections.

One thing which is currently not supported by this rewrite are segments
which contain the program/segment header or even the whole elf header.
2014-11-14 08:27:36 +01:00
Mario Werner
e5592ddfdd fix: make segment loading similar to readelf's algorithm
ALLOC sections are now matched against the virtual address space of
the segment. Non ALLOC sections still use the offset approach.
2014-11-14 08:04:55 +01:00
Mario Werner
8dda93f2bb fixed a few warnings (signed-unsigned comparisions, unused param) 2014-11-13 18:24:03 +01:00
Mario Werner
22bd7ba77d fix: static class member MAX_DATA_ENTRIES is not defined -> linker error
Static class members usually have to be defined explicitly which plays not
well with header only libraries. Moving the constant into the ELFIO scope
works around that problem.

The problem only shows up at -O0. Higher optimisations levels manage to
completely remove the references to the static member.
2014-11-13 18:23:02 +01:00
Mario Werner
c655d9bbca ignored the generated elf files 2014-11-13 18:20:27 +01:00
Mario Werner
39b67828a2 removed generated elf and object files from the repository 2014-11-13 18:19:56 +01:00
Mario Werner
c9cf1a6f8f updated gitignore file 2014-11-13 18:02:22 +01:00
Serge Lamikhov-Center
49c08c53e8 Release 2.3 2014-11-08 19:07:46 +02:00
Semi Malinen
5000c533ba Add const 2014-10-30 14:47:14 +02:00
Semi Malinen
695a05dc5d Do not index past the end of the chain table 2014-10-30 14:29:33 +02:00
Serge Lamikhov-Center
b830e5e452 Documentation update - new functions are described 2014-08-09 11:22:36 +03:00
Serge Lamikhov-Center
7dd7dade6f Non-significant formatting 2014-08-09 10:56:18 +03:00
Vincent Huang
6d713f4d0a Added iterator for segments and sections
segments and sections were already stored as std::vector<T>.
This change simply exposes the std::vector<T>::iterator functions.
2014-08-07 23:12:35 -04:00
Serge Lamikhov-Center
b227bf1482 Add a test that verifies ARM executable which was generated by CLang and LLVM
Signed-off-by: Serge Lamikhov-Center <to_serge@users.sourceforge.net>
2014-02-27 19:42:57 +02:00
Mario Werner
c95b3395cb add an elf file before and after saving
( requested under https://github.com/serge1/ELFIO/pull/1 )
2014-02-26 18:58:43 +02:00
Serge Lamikhov-Center
33dcaf063f Use [i|o]stream instead of [i|o]fstream; The patch was provided by Jason Hiser
Test's fixes
2014-02-26 18:02:30 +02:00
Serge Lamikhov-Center
d7dfac7e25 Refactoring of a test 2014-02-26 17:41:14 +02:00
Serge Lamikhov-Center
59bde6aafd Switch to cygport conf file for CygWin distribution
Projects were migrated to VS2013
2014-02-26 17:39:33 +02:00
Serge Lamikhov-Center
e8afffece9 Dump for section and segment data added 2014-02-26 17:35:20 +02:00
Serge Lamikhov-Center
17f03740e6 Using macros for header fields access functions
Set segment's index upon its creation
Move to VS2013 projects
2014-02-26 17:30:43 +02:00
Mario Werner
1d2930abc7 redesigned save_segments_and_their_sections
We have some elf files where a section (.ARM.exidx) is located in multiple segments.
To keep this property it is necessary to keep track of the emitted sections.
Furthermore, the correct sequence for the segment emission has to be determined.
This is done by postponing segments which are actually a subsequence of another segment.

Additionally the alignment is not considered as part of the file size of a segment anymore.
2014-02-17 11:52:25 +01:00
Mario Werner
5dd8ba29bd assign sections to the segments during load based on the offsets 2014-02-13 18:59:16 +01:00
Mario Werner
f78a519522 removed const from the segment load function 2014-02-13 18:45:17 +01:00
Serge Lamikhov-Center
fa813b7b18 A minor change of the Web page 2013-05-17 12:24:11 +03:00
Serge Lamikhov-Center
137f0a7ae6 Release 2.2 2013-05-16 18:56:07 +03:00
Serge Lamikhov-Center
ed600e64f3 Ticket #10: Fix section type SHT_NOBITS file_size calculation 2013-05-16 17:58:09 +03:00
Serge Lamikhov-Center
ed6a40ada1 Proper calculate size difference between file_size/memory_size in case of section type SHT_NOBITS 2013-04-21 16:54:07 +03:00
Serge Lamikhov-Center
415b3d9766 Test result change in relation to "Ticket #9: Segment offset written in wrong endianess." 2013-04-20 02:42:07 +03:00
Serge Lamikhov-Center
ec5ca1fa17 Ticket #9: Segment offset written in wrong endianess. 2013-04-20 01:27:29 +03:00
Serge Lamikhov-Center
c219208716 Version number change in the Web page 2013-03-25 11:33:23 +02:00
Serge Lamikhov-Center
5378c1cd02 Version changed to be 2.1 2013-03-25 10:13:06 +02:00
Serge Lamikhov-Center
2ced96026d Remove 'mutable' specification in 'section' class 2013-03-21 02:13:50 +02:00
Serge Lamikhov-Center
3a6014d52e Dynamic section documented
section[string] documented (addresses ticket #8)

Signed-off-by: Serge Lamikhov-Center <to_serge@users.sourceforge.net>
2013-02-15 15:13:51 +02:00
Serge Lamikhov-Center
79ecb3fabc Data size boundary check for dynamic section reader
Permit section data allocation for size equal to 0
2013-01-30 14:45:35 +02:00
Serge Lamikhov-Center
cde39c9d45 Add a validation for the case when dynamic section has no data
Signed-off-by: Serge Lamikhov-Center <to_serge@users.sourceforge.net>
2013-01-30 01:06:00 +02:00
Serge Lamikhov-Center
b217a8a993 Remove extra ";" to prevent warnings at compilation with GCC -pedantic option 2013-01-30 01:05:32 +02:00
Serge Lamikhov-Center
1e82ef11b4 add_entry() functions are implemented for dynamic_section_accessor class
Signed-off-by: Serge Lamikhov-Center <to_serge@users.sourceforge.net>
2013-01-13 19:59:15 +02:00
Serge Lamikhov-Center
4b7061dc92 Dynamic section accessor is implemented
Fix segment header position when no segments are present
Dumper - dynamic section output added
Dynamic section reader tests are added

Signed-off-by: Serge Lamikhov-Center <to_serge@users.sourceforge.net>
2013-01-13 04:29:43 +02:00
Serge Lamikhov-Center
b1f17c5eb0 Don't duplicate elfio.pdf - take it from doc/site directory 2012-12-07 02:21:07 +02:00
Serge Lamikhov-Center
099423c104 - Minor Web site fixes 2012-12-06 09:59:29 +02:00
Serge Lamikhov-Center
abd8a42919 Update doc for the Web site 2012-12-06 01:47:36 +02:00
Serge Lamikhov-Center
f3cdbcba65 - Documentation update 2012-12-05 20:01:31 +02:00
Serge Lamikhov-Center
4383280260 INSTALL description changed
Signed-off-by: Serge Lamikhov-Center <to_serge@users.sourceforge.net>
2012-12-05 11:02:34 +02:00
Serge Lamikhov-Center
06f39c90c2 Add ARM ELF files examples 2012-12-03 06:46:05 +02:00
Serge Lamikhov-Center
0953467246 Added output for 64-bit ELF files 2012-12-02 19:01:05 +02:00
Serge Lamikhov-Center
b78c0aca3d Convert all files to UNIX EOL 2012-11-27 11:45:28 +02:00
Serge Lamikhov-Center
effa95c718 Adding new auto* scripts 2012-11-27 00:00:27 +02:00
Serge Lamikhov-Center
4d165a6d42 Convert to UNIX EOL 2012-11-26 23:48:22 +02:00
Serge Lamikhov-Center
7573aeeef3 - Add forgotten Makefile.* for write_obj
- Delete WriteObj2 example
2012-11-26 23:37:44 +02:00
Serge Lamikhov-Center
f051fc0517 write_obj example implemented 2012-11-26 19:40:03 +02:00