KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
This question follows on from another question I asked before. In short, this is one of my attempts at merging two fully linked executables into a single fully linked executable. The difference is that the previous question deals with merging an object file to a full linked executable which is even harder because it means I need to manually deal with relocations. What I have are the following files: example-target.c : #include <stdlib.h> #include <stdio.h> int main(void) { puts("1234"); return EXIT_SUCCESS; } example-embed.c : #include <stdlib.h> #include <stdio.h> /* * Fake main. Never used, just there so we can perform a full link. */ int main(void) { return EXIT_SUCCESS; } void func1(void) { puts("asdf"); } My goal is to merge these two executables to produce a final executable which is the same as example-target , but additionally has another main and func1 . From the point of view of the BFD library, each binary is composed (amongst other things) of a set of sections. One of the first problems I faced was that these sections had conflicting load addresses (such that if I was to merge them, the sections would overlap). What I did to solve this was to analyse example-target programmatically to get a list of the load address and sizes of each of its sections. I then did the same for example-embed and used this information to dynamically generate a linker command for example-embed.c which ensures that all of its sections are linked at addresses that do not overlap with any of
Tags (comma-separated)
Save Edits
Cancel