Hi Arnd-Hendrik,
Thanks for your answer, but it did not work. In each file of my
project I have 3 types of variables:
- local variables (declared with static, used only locally)
- global variables (declared in the current .c, also used by other .c)
- extern variables (declared in other .c file, used in current .c file)
The full project has 43 .c files, some of them with these 3 kinds of
variables. I'm getting out of msp ram and need to debug it.
What can I do to show how many bytes each of this 43 files.c are using
in bss section?
(I noticed that I can generate a .s file, and search for ".comm"
keywords inside it, and calculate the bss size, but I supose that
msp430-size was the right tool for this... is this a bug in msp430-size?)
Thanks,
Pedro
On Sun, Sep 12, 2004 at 03:16:23PM +0200, Arnd-Hendrik Mathias wrote:
> Hi Pedro,
> in your first example there is only one step missing in comparison to
> the second one: Your code is assembled but not linked against anything.
> So if you have a look at your assembler file and also at your object
> file (msp430-nm size-test.o) you have one locally linked static int
> variable (size 2Bytes) and two global "common objects" which will be
> resolved on link time (with other objects). The latter ones are not jet
> counted to the bss segment (however they will be positioned there
> later). You can check out this (not for production purposes ;°):
> add a line
> void* __stop_progExec__;
> to your size-test.c file
> do the steps from your first example and finally do
> msp430-ld -o size-test size-test.o
> then look at the object size-test with
> msp430-size size-test
> msp430-nm size-test
> you will find your symbols allocated in the bss segment.
>
> The appropriate steps are included in the complete way (as in your
> second example). You usually use the gcc (msp430-gcc) call as wrapper
> for all of these steps. So you find the same (correct) results as in the
> previous case.
> Best regards
>
> Arnd-Hendrik
>
>
> Pedro Zorzenon Neto wrote:
>
> >Hi,
> >
> > I think I found a bug in msp430-size. I'll show it with an example:
> >
> >/* --- begin of code --- */
> >int i;
> >static int j;
> >volatile int k;
> >
> >int main (void) {
> > return 1;
> >}
> >/* --- end of code --- */
> >
> >
> >msp430-gcc -mmcu=msp430x149 -I/usr/local/msp430/msp430/include -Wall -O1
> >-S size-test.c -o size-test.s
> >msp430-as -mmcu=msp430x149 size-test.s -o size-test.o
> >msp430-size size-test.o
> > text data bss dec hex filename
> > 10 0 2 12 c size-test.o
> >msp430-gcc -mmcu=msp430x149 -B/usr/local/msp430/msp430/lib size-test.o -o
> >size-test
> >msp430-size size-test
> > text data bss dec hex filename
> > 110 0 6 116 74 size-test
> >
> > Why is msp430-size reporting "2" in the "bss" field for file size-test.o?
> >
> > Thanks in advance,
> > Pedro