------- Additional Comments From bygoh at genting dot com dot my  2004-12-08 
04:11 -------
Follow up on the earlier report, the size problem goes away when the global 
variables are declared as static:

struct My_t {
        char            myData[2048];
};
static My_t myArr[10240];

int main ()
{
        return 0;
}

Using nm on the object files that were generated:
without static keyword:
Symbols from foo.o:

[Index]   Value      Size    Type  Bind  Other Shndx   Name

[1]     |         0|       0|FILE |LOCL |0    |ABS    |foo.cpp
[2]     |         0|       0|SECT |LOCL |0    |2      |
[3]     |         0|       0|SECT |LOCL |0    |4      |
[4]     |         0|       0|SECT |LOCL |0    |5      |
[5]     |         0|       0|SECT |LOCL |0    |1      |
[6]     |         0|       0|SECT |LOCL |0    |6      |
[7]     |         0|20971520|OBJT |GLOB |0    |4      |myArr
[8]     |         0|      30|FUNC |GLOB |0    |2      |main

with static keyword:
Symbols from foo.o:

[Index]   Value      Size    Type  Bind  Other Shndx   Name

[1]     |         0|       0|FILE |LOCL |0    |ABS    |foo.cpp
[2]     |         0|       0|SECT |LOCL |0    |2      |
[3]     |         0|       0|SECT |LOCL |0    |4      |
[4]     |         0|       0|SECT |LOCL |0    |5      |
[5]     |         0|20971520|OBJT |LOCL |0    |5      |myArr
[6]     |         0|       0|SECT |LOCL |0    |1      |
[7]     |         0|       0|SECT |LOCL |0    |6      |
[8]     |         0|      30|FUNC |GLOB |0    |2      |main

The array was bound locally. Still doesn't solve the problem but its a work 
around for programs with a main line entry point.

NOTE: static is deprecated in a global context. Not that its going to go away 
or anything...

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18713

Reply via email to