#define START_GOT \
.section ".got2","aw";\
.LCTOC1 = .+32768
Is .LCTOC1 is a directive? Why is there a . before +32768?
#define START_GOT \
.section ".got2","aw";\
.LCTOC1 = .+32768
Is .LCTOC1 is a directive? Why is there a . before +32768?
The .
(dot) is a special symbol that represents the location the current line is assembling into.
So, the expression .+32768
means "32 KB from here", and that value is given the symbolic name .LCTOC1
.
Note that the .section
directive which is also in the macro definition might change the value of .
, i.e. the current location since it begins a new section called .got2
. The "aw"
argument means just "writable" (the a
is ignored).