In this problem, let REF(x.i) --> DEF(x.k) denote that the linker will associate an arbitrary reference to symbol x in module i to the definition of x in module k. For each example below, use this notation to indicate how the linker would resolve references to the multiply defined symbol in each module. If there is a link-time error (Rule1), write "ERROR". If the linker arbitrarily chooses one of the definitions (Rule 3), write "UNKNOWN".
Rule1: Multiple strong symbols are not allowed
Rule2: Given a strong symbol and multiple weak symbols, choose the strong symbol
Rule3: Given multiple weak symbols, choose any of the weak symbols
A.
/*Module 1*/ /*Module 2*/
int main() static int main=1;
{ int p2()
}
(a) REF(main.1) --> DEF(______._____)
(b) REF(main.2) --> DEF(______._____)
B.
/*Module 1*/ /*Module 2*/
int x; double x;
void main() int p2()
{ { } }
(a) REF(x.1) --> DEF(___.___)
(b) REF(x.2) --> DEF(___.___)
C.
/*Module 1*/ /*Module 2*/
int x=1; double x=1.0;
void main() int p2()
{ {
} }
(a) REF(x.1) --> DEF(___.___)
(b) REF(x.2) --> DEF(___.___)
can someone please help??
Start Free Trial