Quoted from: http://sources.redhat.com/ml/binutils/2000-08/msg00043.html
-------------------------------------
-------------------------------------
Re: means of .previous directive
- To: qiao guopei <qiaogp at krdl dot org dot sg>
- Subject: Re: means of .previous directive
- From: Alan Modra <alan at linuxcare dot com dot au>
- Date: Fri, 4 Aug 2000 21:23:56 +1000 (EST)
- cc: binutils at sourceware dot cygnus dot com
On Fri, 4 Aug 2000, qiao guopei wrote:
> I saw a lot of .previous directive is used in Linux kernel. But I can
> not find the definition of .previous directive in GAS document. Could
> anyone help me?
It changes the current section (ie. where instructions/data are output) to
the previous section. At least, that is the case when .popsection isn't
used. Things are a little more complicated when .pushsection/.popsection
are used as .pushsection/.popsection saves/restores both the current
section and it's previous section.
eg. (from the gas elf testsuite)
.data
.byte 0
.section A
.byte 1
.previous
.byte 0
.previous
.byte 1
.pushsection B
.byte 2
.previous
.byte 1
.previous
.byte 2
.pushsection C
.byte 3
.previous
.byte 2
.previous
.byte 3
.popsection
.byte 2
.previous
.byte 1
.previous
.byte 2
.popsection
.byte 1
.previous
.byte 0
.previous
.byte 1
will put all the 0's in section .data, all the 1's in section A, all the
2's in section B, and all the 3's in section C
Alan Modra
--
Linuxcare. Support for the Revolution.