# Symbol resolution (ivss) **Symbol resolution** connects a reference in one object to a definition supplied by another. A consumer and producer can be written separately: ```asm # consumer.s .extern answer .section my_code ld answer, %r1 halt ``` ```asm # producer.s .global answer .section my_data answer: .word 42 ``` The consumer's symbol is initially undefined. When both objects are linked, the producer supplies its section and value. The load's relocation then identifies that resolved symbol, allowing the emulator to obtain the address during loading. ivss checks incoming definitions against names already present and reports multiple definitions. For a final link, it also reports symbols that remain undefined. Relocatable mode leaves unresolved references available for inspection. Resolving the name does not itself replace every placeholder byte. This implementation preserves relocation records through linking; [[ivss-relocation-processing|the loader]] applies them using the resolved symbol and section placement. An exported definition and a valid reference are both necessary for the cross-file example to work. Source: [linker.c](https://github.com/yanevskiv/ivss/blob/main/src/linker.c).