On 2011-08-05, Peter Bigot <pabi...@users.sourceforge.net> wrote: > On Fri, Aug 5, 2011 at 12:06 AM, William "Chops" Westfield ><wes...@mac.com> wrote: >> >> On Aug 4, 2011, at 8:18 AM, Peter Bigot wrote: >> >>> --gc-sections should now be fixed >>> ? : >>> ?Use of "msp430-ar" will work as expected >> >> Hmm. ?So is there a tool that will take a source module >> (with multiple functions) compiled with the relevant compiler >> options (-ffunction-sections and -fdata-sections) and produce >> a random-access library of the sort you would have gotten if >> you had broken down the source to file-per-function? > > I personally don't know of such a tool; it seems --gc-sections is the > way this is need is expected to be met. FWIW, as an experiment I > added the flags to msp430-libc and it seems to work, though the > savings is naturally not particularly impressive (90 bytes of a 28KB > image from a monolithic TinyOS program).
The benefit is seen mainly when you want to reuse code or build multiple versions of a program with different features enabled. For example, you write a "library" module providing a half-dozen publically visible functions: it may have another half-dozen private functions and some private data. In a given program you may only use one or two of the public functions. Without --gc-sections you have come up with a set of preprocessor macros to enable/disable the building of individual public functions. Then inside the module you need even more complex cpp magic to figure out which private functions and data are needed based on which public functions have been enabled. Then you have to re-compile the module everytime the configuration changes. Either that, or you replace your single object file with a dozen plus object files and you expose all of the module's private data to everybody and his dog. If you're just bulding multiple versions of one program with different features enabled, --gc-sections allows you to do that without having to recompile anything -- it's all handled at the link stage. If you want to build the full-fat version, you link in all the files. If you don't want features A and B, you don't link in object files A and B. The linker figures out what other functions/data aren't need now that A and B have been left out, and those functions get left out as well. -- Grant Edwards grant.b.edwards Yow! Somewhere in DOWNTOWN at BURBANK a prostitute is gmail.com OVERCOOKING a LAMB CHOP!! ------------------------------------------------------------------------------ BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA The must-attend event for mobile developers. Connect with experts. Get tools for creating Super Apps. See the latest technologies. Sessions, hands-on labs, demos & much more. Register early & save! http://p.sf.net/sfu/rim-blackberry-1 _______________________________________________ Mspgcc-users mailing list Mspgcc-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mspgcc-users