I have a question regarding weak attribute of const variable. I have the following couple of files compiled with gcc:
main.c:
#include
I faced the same issue (cf. GCC optimization bug on weak const variable) and came up with the conclusion that gcc does not handle well the optimization on the weak/const variable within the file where the weak definition is: in your 'main.c' file, my_var is always resolved to 100.
Not sure, but it seems to be a gcc bug (?).
To solve this, you can :
-O0 option to gcc.
-O0 should be the default value, so this might not help...const keyword as you did: gcc cannot optimize no more as my_var can potentially change now.const int my_var __attribute__((weak)) = 100; statement in a separate source file ('main_weak.c' for instance): while building 'main.c', gcc does not know the my_var value and thus won't optimize.