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&reg; 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

Reply via email to