-
Notifications
You must be signed in to change notification settings - Fork 0
skarra/export-locals
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
-*- Outline -*- Created : Thu Nov 11 17:24:15 IST 2004 Last Modified : Sun Oct 23 17:11:01 IST 2011 * Introduction By definition, symbols marked 'static' are not accessible outside the compilation unit. This is just as well. However there are certain applications where we might want linker access to exactly these shy chappies. This is a hack alright; but trust me, there are 'genuine' applications for such use. This program extracts a specified set of static symbols from a given object file's symbol table and outputs them to a new binary object file. The new binary can be linked with other object files thereby providing linkage access to once-static symbols of a program. Duplicate static symbols should be resolved using some user-provided, or, alternately, some sensible default heuristics. * Usage ./export_locals <input_obj_file> -syms a,b,c [-all] [-out <filename>] Where the symbols a, b, c, d etc. are to be extracted and exported. The output elf file `foo'. Since we are dealing with symbols having local scope, it is possile for multiple symbols to be present with the same name. For now we handle this case by selecting the 'first' symbol we encounter. More sophisticated things may be made available in future. If the -out flag is not specified, the extracted symbols will be written to a filename called 'foo'. * LICENSE This program is distributed under the terms of GNU General Public License v2. Note - this program depends on libbfd, which is itself GPLed (*not* LGPL), and as such one doesn't have much choice in the matter of licensing of derivative works. I would like make special mention of the following fact: During the period this program was developed I was employed by HCL Technologies India Ltd., working as a consultant for Cisco Inc. However this program was written completely in my free time on my home computer and as such no resources (time/computers/etc.) of either of the two mentioned companies were used for development purposes. * Status ** Oct 23, 2011 Uploaded to Git. Not been tested or used since I left HCL-CODC. I have no idea if this technique is still in use at Cisco or not. ** Nov 27, 2004 There is a small problem with the address of the symbols after the output file is linked with an external file. The output file contains the right address, but after linking with another file, the address of the externally linked symbol differs. Need to verify if this is really a problem or not. Certainly looks like a problem... But let's see. * Potential Issues This has been tested with libbfd-2.15. It is bound to have issues with older versions. You _could_ run into certain type mismatch issues with older versions of bfd as certain types have been made long long in recent versions. This has been tested only on ELF object files. The whole point of bfd being portability across obejct formats, I would expect this stuff to 'just work' for coff/a.out. But do not sue me if doesn't. * Source Contents Files in this directory and their purpose in life: export_locals.c - the main C source file. example.c - a sample program that uses libbfd to create a new ELF object file with a symbols table containing a global symbol. data/ - some misc. files I have used to test the functionality.
About
Extracts static symbols from a given object file's symbol table and output them to a new binary object file so they can be linked to.
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published