I am aware of C memory layout and binary formation process. I have a doubt/query regarding the phase when and who assigns address to global variables.
extern int dummy; //Declared in some other file
int * pTest = &dummy;
This code compiles well. Here pTest will have address of dummy only if address is assigned to it. I want to know in which phase (compilation or linker) does dummy variable gets address?