* Re: building Rootfs
From: Wolfgang Denk @ 2008-07-09 6:21 UTC (permalink / raw)
To: Linus Walleij; +Cc: linux-embedded
In-Reply-To: <63386a3d0807081653t5e19cae2vd35c03de4bec7fa8@mail.gmail.com>
In message <63386a3d0807081653t5e19cae2vd35c03de4bec7fa8@mail.gmail.com> you wrote:
>
> >> 3. Getting files into the filesystem when the development
> >> system does not allow root access.
>
> > 3. is a non-issue for most common file systems.
>
> The only one thing I ever ran into trouble with was device nodes,
No, this is not a problem.
> these cannot be reproduced any way, not even with fakeroot
Most tools support a "device table", i. e. a plain text file
describing needed device nodes, owners, permissions etc., so no root
permissins are needed.
For details please see
http://www.denx.de/wiki/view/DULG/RootFileSystemOnARamdisk
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de
Beware of the Turing Tar-pit in which everything is possible but
nothing of interest is easy.
^ permalink raw reply
* Re: building Rootfs
From: Robert Schwebel @ 2008-07-09 6:43 UTC (permalink / raw)
To: Linus Walleij; +Cc: linux-embedded
In-Reply-To: <63386a3d0807081653t5e19cae2vd35c03de4bec7fa8@mail.gmail.com>
On Wed, Jul 09, 2008 at 01:53:46AM +0200, Linus Walleij wrote:
> 2008/7/8 Wolfgang Denk <wd@denx.de>:
>
> >> 3. Getting files into the filesystem when the development
> >> system does not allow root access.
>
> > 3. is a non-issue for most common file systems.
>
> The only one thing I ever ran into trouble with was device nodes,
> these cannot be reproduced any way, not even with fakeroot
> environments, just in scratchbox, which in turn needs you to be root.
You can create an image with fakeroot which contains the device nodes,
then flash it into the device as a normal user and boot it there.
> initramfs etc can handle it with special description files. But if
> you want to cook up say a .tar file of your rootfs, you're pretty
> much lost AFAIK.
Right, but it's no real issue.
> The good thing is that you don't need the device nodes
> if you have udev, I think the kernel wants /dev/console
> and a few more at boot but actually it survives just fine
> without them.
Udev is pretty slow, so we have both possibilities in ptxdist. Users
have a choice if they want to be as "normal" as possible (udev) or if
they have faster requirements. For boot time optimized systems, we have
even done mixed systems, with static device nodes in the (quick) boot
phase and udev later on.
> If you know some way of sneaking a device node into a .tar file
> created ENTIRELY running as a regular user, tell me!
The question is: why do you need a tar file?
Hmm, I'm wondering if this discussion isn't off-topic here, as it is a
kernel mailing list. But I know no other list anyway, so if nobody
complains ...
rsc
--
Dipl.-Ing. Robert Schwebel | http://www.pengutronix.de
Pengutronix - Linux Solutions for Science and Industry
Handelsregister: Amtsgericht Hildesheim, HRA 2686
Hannoversche Str. 2, 31134 Hildesheim, Germany
Phone: +49-5121-206917-0 | Fax: +49-5121-206917-9
^ permalink raw reply
* Re: building Rootfs
From: Robert Schwebel @ 2008-07-09 7:06 UTC (permalink / raw)
To: Linus Walleij; +Cc: linux-embedded
In-Reply-To: <63386a3d0807081714x5bbf1f03l3c108adc8243f6d7@mail.gmail.com>
On Wed, Jul 09, 2008 at 02:14:04AM +0200, Linus Walleij wrote:
> > They are both build systems for userlands, or whole embedded linux
> > systems. I cannot speak for OE as I don't really know it in detail.
>
> Anyone have experience with both? I'd really like to have them
> contrasted and, well you know, cross-firtualized.
When we started with ptxdist, OE was not there. When I last tried it, we
still saw the following advantages in our design:
- standard unix technology (make+bash) instead of python did fit our
skills better (yes, a very personal argument)
- we have a "project" pattern: users have their "project workspace"
which can for example be revisioned in the user's own scm.
- ptxdist can be installed as a tool (to be installed with configure &&
make && make install) and contains anything you need, besides the
"project". With OE, we had to checkout bit repositories.
- ptxdist has a clear revision policy, with stable and unstable
development branches. There are numbered releases available.
- ptxdist has full configurability; everything can be configured with
kconfig menues.
Other than that, the OE people have very good ideas and found similar
problems and solutions as the ptxdist team did. They have a similar
patch stack concept which makes it easy to share ideas.
> I really like ptxdist, especially it is beautiful that you have based
> it around just bash and make plus some crosscompiler of choice.
Yup :-)
> I just have some trouble getting it to do what I want. I'll hopefully
> get there. This is not meant as any generic complaining. I'm trying to
> figure out if ptxdist or openembedded is the best starting point.
So if you see problems, just post your ptxconfig file on the ptxdist
mailing list. We will be glad to discuss your problems there.
> I have a situation where the build system would be on top of some SCM
> like git, CVS or whatever and packages being checked out and worked on
> by several people daily.
You can overwrite almost everything in the project that is defined in
ptxdist; for example, if you have a rule set rules/foobar.make and a
corresponding menu rules/foobar.in in ptxdist, you can also have these
files in the project workspace and they overrule the ones which come
from the base package.
So what you can do is:
- have your project workspace, like this:
/home/you/my_project/ptxconfig
/home/you/my_project/rules/my_packet.in
/home/you/my_project/rules/my_packet.make
- If several people shall work on the "local" packages in rules/, just
put the whole workspace into your SCM. That works pretty well in real
life; we have done big projects that way, where several ten people
worked together in a project team, synchronized via SVN.
- You can also make use of svn externals: for example, we have a shared
"technology pool" here at Pengutronix, with packages that are not
ready for mainline but need to be shared. We just bring them into a
project via svn:externals.
- Imagine team member A works on package foobar, has tested it and
released foobar-1.0.0 somwhere in the repository. He then changes
rules/foobar.make to contain the revision number 1.0.0. Then he
continues developing, changing the revision to -trunk or whatever he
uses internally, but only on his workspace, without checking in. This
way he can do all the development, until the point that he has
released 1.0.1. Then he just checks in the changed .make file with the
new revision and everybody else sees the new and tested packet.
What does not work yet out-of-the-box is that one team develops for
example a base platform, which is then made available in binary form,
and everyone else gets just the binary packets foo_x.y.z_arch.ipk
instead of compiling from scratch.
We have ideas how to realize that, as it is a common pattern in our
projects. Will be a ptxdist-2.x issue.
> ptxdist seems
> * hardcoded to run in a users home directory
> with projects in $HOME/foo (stopped me
> right now, perhaps it can easily be fixed or is
> already part of ptxdist 2?)
It is already part of ptxdist-1.0.x. You can put your project workspace
whereever you want.
> * assume only one person builds rootfs. So
> it doesn't really want the project tree to be used
> or modified by more than one person at the time.
> (Same as first more or less.)
If different people are working on it, everyone has his own working
copy. It's not different from other revisioned projects.
> * not store source code, patches and config plus my
> local additions in one place. For most other package
> systems e.g. RPM there is
> /foo/foo.spec
> /foo/foo-1.0.tar.gz
> /foo/foo-patch1.diff
> /foo/foo-patch2.diff
> /foo/my-foo-config.file
>
> In ptxdist these seem to be spread out, some in the installation
> of ptxdist itself in say /usr/lib/ptxdist/patches, /usr/lib/ptxdist/...
> then in my project space $HOME/project/... etc.
Think of it as object orientation, written in make :-) For each packet
(let's say bash), ptxdist brings it's own information with it:
rules/bash.make rule set (what is to be done)
rules/bash.in menu definition (kconfig)
patches/bash-x.y/generic/ patch series (quilt format, canonical
patches, following kernel rules)
PTXdist brings a "set" of such packages with each installation of the
tool itself (i.e. ptxdist-1.0.2 has it's own packet set).
You can overwrite packages (make, in and patches) by simply putting them
into the project. This makes it possible to change things in single
packets, without the need to switch to a new ptxdist version.
> I believe at archivicing time everything including ptxdist itself
> is zipped up and archived on one storage media. But I need to
> keep all files relating to a package in one place while developing,
> and living like that for a long time. Since /usr/lib/ptxdist isn't even
> being backed up normally, only NFS mounts like /home, I then
> need to move the entire ptxdist into the SCM, which it clearly
> doesn't like without a lot of hacking, plus, how would I
> upgrade it?
Archiving is pretty easy: all you need is:
- the ptxdist tarballs you have installed from
- all the source tarballs which have been downloaded on the first run of
the "get" stages
- your project workspace
It was *desinged* to be easily archived, so this is exactly what has to
be done.
HTH,
rsc
--
Dipl.-Ing. Robert Schwebel | http://www.pengutronix.de
Pengutronix - Linux Solutions for Science and Industry
Handelsregister: Amtsgericht Hildesheim, HRA 2686
Hannoversche Str. 2, 31134 Hildesheim, Germany
Phone: +49-5121-206917-0 | Fax: +49-5121-206917-9
^ permalink raw reply
* Re: building Rootfs
From: Robert Schwebel @ 2008-07-09 7:10 UTC (permalink / raw)
To: David VomLehn; +Cc: Linus Walleij, linux-embedded
In-Reply-To: <48740BD2.6090000@cisco.com>
On Tue, Jul 08, 2008 at 05:52:34PM -0700, David VomLehn wrote:
> We do this all the time. We have a very minimal root filesystem and
> aren't currently using any of the frameworks for building root
> filesystems, so everything is done with make. In general, we create tar
> files for each piece. The piece that has device nodes has a make file
> with something like:
>
> all:
> fakeroot make fakeroot-package
>
> fakeroot-package:
> mkdir -p image
> mknod image/dev/null c 1 3
> mknod image/dev/random c 1 8
> tar -C image -czf image.tgz .
That does work fine when packaging the rootfs on the host. It was the
reason why we went the ipkg way: you can put device nodes into them.
> We ran into some issues when we separated running mknod and tar into
> separate fakeroot invocations because there is a bug in fakeroot with
> exporting and importing its state. Fortunately, doing all of this under a
> single fakeroot command works just fine. When we untar the tar files for
> all of the pieces to create a root filesystem image and then run mkcramfs
> to create a CRAMFS image, we do all commands under a single invocation of
> fakeroot.
>
> No stage of the build requires running as root.
The only stage we need root privileges in PTXdist is when creating a
root filesystem which can be booted via nfsroot (which is common during
development). In that case, you *need* /dev/console and /dev/null, which
cannot be created by the user.
We have solved that by using sudo there: the automatic build asks for
the user password, but with a timeout. So in interactive builds, you can
just enter the password and have a rootfs ready to be booted, and it
still works with automatic overnight builds.
rsc
--
Dipl.-Ing. Robert Schwebel | http://www.pengutronix.de
Pengutronix - Linux Solutions for Science and Industry
Handelsregister: Amtsgericht Hildesheim, HRA 2686
Hannoversche Str. 2, 31134 Hildesheim, Germany
Phone: +49-5121-206917-0 | Fax: +49-5121-206917-9
^ permalink raw reply
* Re: building Rootfs
From: Peter Korsgaard @ 2008-07-09 7:22 UTC (permalink / raw)
To: Linus Walleij; +Cc: linux-embedded
In-Reply-To: <63386a3d0807081653t5e19cae2vd35c03de4bec7fa8@mail.gmail.com>
>>>>> "Linus" == Linus Walleij <linus.ml.walleij@gmail.com> writes:
Linus> If you know some way of sneaking a device node into a
Linus> .tar file created ENTIRELY running as a regular user,
Linus> tell me!
You just mentioned it yourself - fakeroot.
--
Bye, Peter Korsgaard
^ permalink raw reply
* Re: building Rootfs
From: Marek Skuczynski @ 2008-07-09 8:22 UTC (permalink / raw)
To: Haller, John H (John); +Cc: Linus Walleij, linux-embedded
In-Reply-To: <B78930B8E34A824993912C39C24569E60141D874@ILEXC3U01.ndc.lucent.com>
Haller, John H (John) pisze:
>> What else is there out there for rootfs, really? A hack
>> from every embedded company there is? I'm more after
>> what people actually *use* and what is community driven
>> here, not so much opinions on what is best (which will
>> probably be the unwanted side effect of this mail
>> anyway...)
>>
>> Linus
>
> There are three issues in building an embedded cross-filesystem:
[--CUT--]
> 3. Getting files into the filesystem when the development
> system does not allow root access.
Couple years ago, I found a simple solution for this issue. The
filesystem image is described in the initramfs_list file format. That is
easy to modify (adding new nodes, fixing paths, etc).
The final image building scenario is as follows:
cat initramfs_list | check_fs_integrity | mk<fs>image > image_file
Of course the initramfs_list file is cooked up dynamically basis on
configuration of kernel, drivers and etc.
mareksk
^ permalink raw reply
* Re: optimal hardware design for an ARM9 based single board computer to work with existing linux drivers
From: Andrés Calderón @ 2008-07-16 1:18 UTC (permalink / raw)
To: Stefan Schoenleitner; +Cc: linux-embedded
In-Reply-To: <486F38CF.40803@gmail.com>
On Sat, Jul 5, 2008 at 4:03 AM, Stefan Schoenleitner
<dev.c0debabe@gmail.com> wrote:
> Hi,
>
> for my project I would like to design an ARM9 based single board computer (SBC)
> using the cirrus logic EP9302 CPU:
>
The AT91SAM9 family is a better choice[1], the ATMEL and community
support is great [2][3].
[1] http://www.atmel.com/dyn/products/devices.asp?family_id=605
[2] http://www.linux4sam.org
[3] http://maxim.org.za/at91_26.html
The AT91SAM9260 and the older AT91RM9200 is available in TQFP208 package.
Both support SD Cards, Ethernet, USB, SPI,I2C, a lot of GPIOs... ADCs
only in the AT91SAM9260.
The at91 lacks of FPU, but the cirrus maverick crunch support is very poor.
> http://www.cirrus.com/en/pubs/proDatasheet/EP9302_PP3.pdf
> http://www.cirrus.com/en/pubs/manual/EP93xx_Users_Guide_UM1.pdf
>
>
> My goal is to use existing linux drivers together with attached peripheral
> hardware without having to patch the driver code.
> For this reason I'm looking for the best way to hook up peripheral hardware to
> the CPU so that the linux kernel can handle it.
>
>
> Among other features the CPU has a SPI bus and a total of 27 GPIO pins.
> Using bit-banging on some of the available GPIO pins the CPU can also do I2C
> communication.
> (AFAIK bit-banging I2C on GPIO pins is already suppored by the linux kernel.)
>
> Peripheral hardware (e.g. some linux-supported bluetooth chipset) can be hooked
> up to the CPU in the following ways:
>
> 1) directly connect it to the CPU's GPIO pins
> 2) connect it to the CPU's GPIO pins in a multiplexed way using a bus
> switch
> 3) hook it up to some existing serial bus (SPI or I2C)
> 4) hook it up to some existing _external_ serial bus (USB, UART)
> 5) connect it to GPIO pins of a linux-supported GPIO expander that can
> be accessed over I2C
>
>
> Now I would like to review the mentioned approaches:
>
>
> 1) directly connect it to the CPU's GPIO pins:
>
> The CPU has 18 standard GPIO pins (usable for I/O) and 19 enhanched GPIO pins
> which also have interrupt support.
> Obviously, I do not wan't to use all of the available GPIO pins for peripheral
> hardware.
> Also, if we consider chipset configuration pins, the number of available CPU
> GPIO pins would not suffice.
> For this reason, IMHO a direct connection of peripheral hardware to the CPU's
> GPIO pins is not a reasonable design decision.
>
>
> 2) connect it to the CPU's GPIO pins in a multiplexed way using a bus switch
>
> This approach is similar to 1) except for the difference that the CPUs GPIO pins
> are multiplexed using a bus switch.
> Thus different peripheral chipsets could be accessed in the following way:
>
> 1. address the according bus switch so that the CPU's required GPIO are
> routed through to the chip we want to talk to
> 2. communicate with the chip
>
> Again to save GPIO pins, the various bus switches could be addressed over a
> serial bus like I2C.
> While this communication is certainly suitable for high-speed devices, it also
> has the drawback that the CPU's GPIO lines need to be routed all over the PCB
> (printed circuit board) to the different bus switches and from there to the
> chips we want to talk to.
> Since I plan to use low-speed devices only, I do not want to make the hardware
> design too complex.
> For this reason I'd rather not take this design decision.
>
>
> 3) hook it up to some existing serial bus (SPI or I2C)
>
> If the peripheral hardware chipset has support for serial communication, this
> would be the easiest way to go.
> Since there's already linux support for SPI as well as for I2C I would like to
> use this way of talking to low-speed hardware whenever possible.
>
>
> 4) hook it up to some existing _external_ serial bus (USB, UART)
>
> The single board computer should have external connections to the "outside world".
> One serial port should be used as serial console while the other one will be
> used for something else.
> The USB connectors should be usable to connect arbitrary devices which are
> supported by the linux kernel (e.g. external harddisk, webcam, whatever ...).
> Also, usually peripheral hardware chips do not support USB.
> For this reason this approach will not be taken for peripheral hardware access.
>
>
> 5) connect it to GPIO pins of a linux-supported GPIO expander that can be
> accessed over I2C
>
> This is IMHO a very promising approach which also has been taken in various
> other (linux-compatible) designs I found on the internet
> (e.g. the "DaVinci prototyping board",
> http://www.linuxdevices.com/news/NS2209350555.html).
>
> The idea is to connect a GPIO expander to the CPU's I2C bus which provides a
> number (i.e. 8, 16, ..) of freely usable GPIO pins.
> These GPIO pins are then connected to the peripheral hardware.
> The linux kernel already has support for various GPIO expanders like the PCA9539
> (16 port) or the PCF8574 (8 port) chips.
> As far as I read in the kernel documentation, the drivers transparently map
> those GPIO pins to the GPIO interface of the linux kernel.
> Thus, from a device driver perspective, it makes no difference whether a device
> is connected to the CPU's "real" GPIO pins or to a GPIO expander chip which can
> be accessed over thr I2C bus.
>
> Another advantage is the simple circuit design: Instead of having to route a
> complete parallel bus over the PCB, only the serial I2C bus has to be routed
> from the CPU to the port expander.
> >From the port expander a rather short bus then goes to the low-speed chip we
> want to talk to.
>
> In my oppinion, from a hardware as well as from a software perspective, this is
> the right way to go.
>
>
>
>
>
> As we saw, from a software perspective, it doesn't seem to make a big difference
> whether peripheral hardware is directly hooked up to the CPU's GPIO pins or
> it is hooked up to GPIO expanders.
>
>
> * However, if we look at existing device drivers, will it be possible to use
> them with this setup without modification ?
>
> * How will the kernel find devices attached to GPIO pins ?
> (There's no way to scan the bus since the kernel doesn't know what and where
> devices are attached to the GPIO pins, right ?)
>
> * What would be the best way to attach peripheral hardware from a linux-kernel
> perspective ?
>
> * Can you suggest any embedded hardware design documentation that considers
> linux compatibility ?
>
>
> sincerly,
> stefan
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-embedded" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
--
Andrés Calderón
Cel: +57 (300) 275 3666
Email: andres.calderon@emqbit.com
Web: www.emqbit.com
"El hombre que produce mientras otros
disponen de su producto, es un esclavo."
-- Ayn Rand
^ permalink raw reply
* [PATCH] (updated, rolled up) make section names compatible with -ffunction-sections -fdata-sections
From: Denys Vlasenko @ 2008-07-17 20:13 UTC (permalink / raw)
To: Andrew Morton, mingo, x86, James Bottomley
Cc: Russell King, David Howells, Ralf Baechle, Lennert Buytenhek,
Josh Boyer, Paul Mackerras, David Woodhouse, Andi Kleen, torvalds,
Paul Gortmaker, linux-embedded, linux-kernel, Tim Bird,
Martin Schwidefsky, Dave Miller
Hi Andrew,
Here is the update against current Linus tree,
rolled up into one patch.
James Bottomley suggested a different naming scheme:
instead of swapping parts (.text.head -> .head.text),
prepend .kernel to our special section names.
This patch implements his idea.
ppc and v850 are dropped per comments from arch people.
parisc and x86 had minor fixes. x86 fix added proper
executable bits to a section:
-.section ".text.head"
+.section ".kernel.text.head","ax",@progbits
Does arch/m68k/kernel/sun3-head.S need the same fix?
The patch is run-tested on x86_64.
I would like to ask arch maintainers to ACK/NAK this patch,
and Andrew to act accordingly.
Changelog follows:
The purpose of these patches is to make kernel buildable
with "gcc -ffunction-sections -fdata-sections".
The problem is that with -ffunction-sections -fdata-sections gcc
creates sections like .text.head and .data.nosave
whenever someone has innocuous code like this:
static void head(...) {...}
or this:
int f(...) { static int nosave; ... }
somewhere in the kernel.
Kernel linker script is confused by such names and puts these sections
in wrong places.
This patch renames all "magic" section names used by kernel
to not have this format, eliminating the possibility of such collisions.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
--
vda
--- gc.0/Documentation/mutex-design.txt Thu Jul 17 16:42:29 2008
+++ gc.1/Documentation/mutex-design.txt Thu Jul 17 21:07:22 2008
@@ -66,14 +66,14 @@
c0377ccb <mutex_lock>:
c0377ccb: f0 ff 08 lock decl (%eax)
- c0377cce: 78 0e js c0377cde <.text.lock.mutex>
+ c0377cce: 78 0e js c0377cde <.kernel.text.lock.mutex>
c0377cd0: c3 ret
the unlocking fastpath is equally tight:
c0377cd1 <mutex_unlock>:
c0377cd1: f0 ff 00 lock incl (%eax)
- c0377cd4: 7e 0f jle c0377ce5 <.text.lock.mutex+0x7>
+ c0377cd4: 7e 0f jle c0377ce5 <.kernel.text.lock.mutex+0x7>
c0377cd6: c3 ret
- 'struct mutex' semantics are well-defined and are enforced if
--- gc.0/arch/alpha/kernel/head.S Thu Jul 17 16:42:29 2008
+++ gc.1/arch/alpha/kernel/head.S Thu Jul 17 21:07:22 2008
@@ -10,7 +10,7 @@
#include <asm/system.h>
#include <asm/asm-offsets.h>
-.section .text.head, "ax"
+.section .kernel.text.head, "ax"
.globl swapper_pg_dir
.globl _stext
swapper_pg_dir=SWAPPER_PGD
--- gc.0/arch/alpha/kernel/init_task.c Thu Jul 17 16:42:29 2008
+++ gc.1/arch/alpha/kernel/init_task.c Thu Jul 17 21:07:22 2008
@@ -18,5 +18,5 @@
EXPORT_SYMBOL(init_task);
union thread_union init_thread_union
- __attribute__((section(".data.init_thread")))
+ __attribute__((section(".kernel.data.init_thread")))
= { INIT_THREAD_INFO(init_task) };
--- gc.0/arch/alpha/kernel/vmlinux.lds.S Thu Jul 17 16:42:29 2008
+++ gc.1/arch/alpha/kernel/vmlinux.lds.S Thu Jul 17 21:07:22 2008
@@ -16,7 +16,7 @@
_text = .; /* Text and read-only data */
.text : {
- *(.text.head)
+ *(.kernel.text.head)
TEXT_TEXT
SCHED_TEXT
LOCK_TEXT
@@ -93,18 +93,18 @@
/* Freed after init ends here */
/* Note 2 page alignment above. */
- .data.init_thread : {
- *(.data.init_thread)
+ .kernel.data.init_thread : {
+ *(.kernel.data.init_thread)
}
. = ALIGN(PAGE_SIZE);
- .data.page_aligned : {
- *(.data.page_aligned)
+ .kernel.data.page_aligned : {
+ *(.kernel.data.page_aligned)
}
. = ALIGN(64);
- .data.cacheline_aligned : {
- *(.data.cacheline_aligned)
+ .kernel.data.cacheline_aligned : {
+ *(.kernel.data.cacheline_aligned)
}
_data = .;
--- gc.0/arch/arm/kernel/head-nommu.S Thu Jul 17 16:42:29 2008
+++ gc.1/arch/arm/kernel/head-nommu.S Thu Jul 17 21:07:22 2008
@@ -33,7 +33,7 @@
* numbers for r1.
*
*/
- .section ".text.head", "ax"
+ .section ".kernel.text.head", "ax"
.type stext, %function
ENTRY(stext)
msr cpsr_c, #PSR_F_BIT | PSR_I_BIT | SVC_MODE @ ensure svc mode
--- gc.0/arch/arm/kernel/head.S Thu Jul 17 16:42:29 2008
+++ gc.1/arch/arm/kernel/head.S Thu Jul 17 21:07:22 2008
@@ -74,7 +74,7 @@
* crap here - that's what the boot loader (or in extreme, well justified
* circumstances, zImage) is for.
*/
- .section ".text.head", "ax"
+ .section ".kernel.text.head", "ax"
.type stext, %function
ENTRY(stext)
msr cpsr_c, #PSR_F_BIT | PSR_I_BIT | SVC_MODE @ ensure svc mode
--- gc.0/arch/arm/kernel/init_task.c Thu Jul 17 16:42:29 2008
+++ gc.1/arch/arm/kernel/init_task.c Thu Jul 17 21:07:22 2008
@@ -30,7 +30,7 @@
* The things we do for performance..
*/
union thread_union init_thread_union
- __attribute__((__section__(".data.init_task"))) =
+ __attribute__((__section__(".kernel.data.init_task"))) =
{ INIT_THREAD_INFO(init_task) };
/*
--- gc.0/arch/arm/kernel/vmlinux.lds.S Thu Jul 17 16:42:29 2008
+++ gc.1/arch/arm/kernel/vmlinux.lds.S Thu Jul 17 21:07:22 2008
@@ -23,10 +23,10 @@
#else
. = PAGE_OFFSET + TEXT_OFFSET;
#endif
- .text.head : {
+ .kernel.text.head : {
_stext = .;
_sinittext = .;
- *(.text.head)
+ *(.kernel.text.head)
}
.init : { /* Init code and data */
@@ -65,8 +65,8 @@
#endif
. = ALIGN(4096);
__per_cpu_start = .;
- *(.data.percpu)
- *(.data.percpu.shared_aligned)
+ *(.kernel.data.percpu)
+ *(.kernel.data.percpu.shared_aligned)
__per_cpu_end = .;
#ifndef CONFIG_XIP_KERNEL
__init_begin = _stext;
@@ -125,7 +125,7 @@
* first, the init task union, aligned
* to an 8192 byte boundary.
*/
- *(.data.init_task)
+ *(.kernel.data.init_task)
#ifdef CONFIG_XIP_KERNEL
. = ALIGN(4096);
@@ -137,7 +137,7 @@
. = ALIGN(4096);
__nosave_begin = .;
- *(.data.nosave)
+ *(.kernel.data.nosave)
. = ALIGN(4096);
__nosave_end = .;
@@ -145,7 +145,7 @@
* then the cacheline aligned data
*/
. = ALIGN(32);
- *(.data.cacheline_aligned)
+ *(.kernel.data.cacheline_aligned)
/*
* The exception fixup table (might need resorting at runtime)
--- gc.0/arch/arm/mm/proc-v6.S Thu Jul 17 16:42:29 2008
+++ gc.1/arch/arm/mm/proc-v6.S Thu Jul 17 21:07:22 2008
@@ -164,7 +164,7 @@
.asciz "ARMv6-compatible processor"
.align
- .section ".text.init", #alloc, #execinstr
+ .section ".kernel.text.init", #alloc, #execinstr
/*
* __v6_setup
--- gc.0/arch/arm/mm/proc-v7.S Thu Jul 17 16:42:29 2008
+++ gc.1/arch/arm/mm/proc-v7.S Thu Jul 17 21:07:22 2008
@@ -146,7 +146,7 @@
.ascii "ARMv7 Processor"
.align
- .section ".text.init", #alloc, #execinstr
+ .section ".kernel.text.init", #alloc, #execinstr
/*
* __v7_setup
--- gc.0/arch/arm/mm/tlb-v6.S Thu Jul 17 16:42:29 2008
+++ gc.1/arch/arm/mm/tlb-v6.S Thu Jul 17 21:07:22 2008
@@ -87,7 +87,7 @@
mcr p15, 0, r2, c7, c5, 4 @ prefetch flush
mov pc, lr
- .section ".text.init", #alloc, #execinstr
+ .section ".kernel.text.init", #alloc, #execinstr
.type v6wbi_tlb_fns, #object
ENTRY(v6wbi_tlb_fns)
--- gc.0/arch/arm/mm/tlb-v7.S Thu Jul 17 16:42:29 2008
+++ gc.1/arch/arm/mm/tlb-v7.S Thu Jul 17 21:07:22 2008
@@ -78,7 +78,7 @@
isb
mov pc, lr
- .section ".text.init", #alloc, #execinstr
+ .section ".kernel.text.init", #alloc, #execinstr
.type v7wbi_tlb_fns, #object
ENTRY(v7wbi_tlb_fns)
--- gc.0/arch/avr32/kernel/init_task.c Thu Jul 17 16:42:29 2008
+++ gc.1/arch/avr32/kernel/init_task.c Thu Jul 17 21:07:22 2008
@@ -24,7 +24,7 @@
* Initial thread structure. Must be aligned on an 8192-byte boundary.
*/
union thread_union init_thread_union
- __attribute__((__section__(".data.init_task"))) =
+ __attribute__((__section__(".kernel.data.init_task"))) =
{ INIT_THREAD_INFO(init_task) };
/*
--- gc.0/arch/avr32/kernel/vmlinux.lds.S Thu Jul 17 16:42:29 2008
+++ gc.1/arch/avr32/kernel/vmlinux.lds.S Thu Jul 17 21:07:22 2008
@@ -95,15 +95,15 @@
/*
* First, the init task union, aligned to an 8K boundary.
*/
- *(.data.init_task)
+ *(.kernel.data.init_task)
/* Then, the page-aligned data */
. = ALIGN(PAGE_SIZE);
- *(.data.page_aligned)
+ *(.kernel.data.page_aligned)
/* Then, the cacheline aligned data */
. = ALIGN(L1_CACHE_BYTES);
- *(.data.cacheline_aligned)
+ *(.kernel.data.cacheline_aligned)
/* And the rest... */
*(.data.rel*)
--- gc.0/arch/avr32/mm/init.c Thu Jul 17 16:42:29 2008
+++ gc.1/arch/avr32/mm/init.c Thu Jul 17 21:07:22 2008
@@ -24,7 +24,7 @@
#include <asm/setup.h>
#include <asm/sections.h>
-#define __page_aligned __attribute__((section(".data.page_aligned")))
+#define __page_aligned __attribute__((section(".kernel.data.page_aligned")))
DEFINE_PER_CPU(struct mmu_gather, mmu_gathers);
--- gc.0/arch/blackfin/kernel/vmlinux.lds.S Thu Jul 17 16:42:29 2008
+++ gc.1/arch/blackfin/kernel/vmlinux.lds.S Thu Jul 17 21:07:22 2008
@@ -91,7 +91,7 @@
__sdata = .;
/* This gets done first, so the glob doesn't suck it in */
. = ALIGN(32);
- *(.data.cacheline_aligned)
+ *(.kernel.data.cacheline_aligned)
#if !L1_DATA_A_LENGTH
. = ALIGN(32);
--- gc.0/arch/cris/arch-v10/vmlinux.lds.S Thu Jul 17 16:42:29 2008
+++ gc.1/arch/cris/arch-v10/vmlinux.lds.S Thu Jul 17 21:07:22 2008
@@ -51,7 +51,7 @@
_edata = . ;
. = ALIGN(PAGE_SIZE); /* init_task and stack, must be aligned */
- .data.init_task : { *(.data.init_task) }
+ .kernel.data.init_task : { *(.kernel.data.init_task) }
. = ALIGN(PAGE_SIZE); /* Init code and data */
__init_begin = .;
--- gc.0/arch/cris/arch-v32/vmlinux.lds.S Thu Jul 17 16:42:29 2008
+++ gc.1/arch/cris/arch-v32/vmlinux.lds.S Thu Jul 17 21:07:22 2008
@@ -63,7 +63,7 @@
_edata = . ;
. = ALIGN(PAGE_SIZE); /* init_task and stack, must be aligned. */
- .data.init_task : { *(.data.init_task) }
+ .kernel.data.init_task : { *(.kernel.data.init_task) }
. = ALIGN(PAGE_SIZE); /* Init code and data. */
__init_begin = .;
--- gc.0/arch/cris/kernel/process.c Thu Jul 17 16:42:29 2008
+++ gc.1/arch/cris/kernel/process.c Thu Jul 17 21:07:22 2008
@@ -52,7 +52,7 @@
* "init_task" linker map entry..
*/
union thread_union init_thread_union
- __attribute__((__section__(".data.init_task"))) =
+ __attribute__((__section__(".kernel.data.init_task"))) =
{ INIT_THREAD_INFO(init_task) };
/*
--- gc.0/arch/frv/kernel/break.S Thu Jul 17 16:42:29 2008
+++ gc.1/arch/frv/kernel/break.S Thu Jul 17 21:07:22 2008
@@ -21,7 +21,7 @@
#
# the break handler has its own stack
#
- .section .bss.stack
+ .section .bss.kernel.stack
.globl __break_user_context
.balign THREAD_SIZE
__break_stack:
@@ -63,7 +63,7 @@
# entry point for Break Exceptions/Interrupts
#
###############################################################################
- .section .text.break
+ .section .kernel.text.break
.balign 4
.globl __entry_break
__entry_break:
--- gc.0/arch/frv/kernel/entry.S Thu Jul 17 16:42:29 2008
+++ gc.1/arch/frv/kernel/entry.S Thu Jul 17 21:07:22 2008
@@ -38,7 +38,7 @@
#define nr_syscalls ((syscall_table_size)/4)
- .section .text.entry
+ .section .kernel.text.entry
.balign 4
.macro LEDS val
--- gc.0/arch/frv/kernel/head-mmu-fr451.S Thu Jul 17 16:42:29 2008
+++ gc.1/arch/frv/kernel/head-mmu-fr451.S Thu Jul 17 21:07:22 2008
@@ -31,7 +31,7 @@
#define __400_LCR 0xfe000100
#define __400_LSBR 0xfe000c00
- .section .text.init,"ax"
+ .section .kernel.text.init,"ax"
.balign 4
###############################################################################
--- gc.0/arch/frv/kernel/head-uc-fr401.S Thu Jul 17 16:42:29 2008
+++ gc.1/arch/frv/kernel/head-uc-fr401.S Thu Jul 17 21:07:22 2008
@@ -30,7 +30,7 @@
#define __400_LCR 0xfe000100
#define __400_LSBR 0xfe000c00
- .section .text.init,"ax"
+ .section .kernel.text.init,"ax"
.balign 4
###############################################################################
--- gc.0/arch/frv/kernel/head-uc-fr451.S Thu Jul 17 16:42:29 2008
+++ gc.1/arch/frv/kernel/head-uc-fr451.S Thu Jul 17 21:07:22 2008
@@ -30,7 +30,7 @@
#define __400_LCR 0xfe000100
#define __400_LSBR 0xfe000c00
- .section .text.init,"ax"
+ .section .kernel.text.init,"ax"
.balign 4
###############################################################################
--- gc.0/arch/frv/kernel/head-uc-fr555.S Thu Jul 17 16:42:29 2008
+++ gc.1/arch/frv/kernel/head-uc-fr555.S Thu Jul 17 21:07:22 2008
@@ -29,7 +29,7 @@
#define __551_LCR 0xfeff1100
#define __551_LSBR 0xfeff1c00
- .section .text.init,"ax"
+ .section .kernel.text.init,"ax"
.balign 4
###############################################################################
--- gc.0/arch/frv/kernel/head.S Thu Jul 17 16:42:29 2008
+++ gc.1/arch/frv/kernel/head.S Thu Jul 17 21:07:22 2008
@@ -27,7 +27,7 @@
# command line string
#
###############################################################################
- .section .text.head,"ax"
+ .section .kernel.text.head,"ax"
.balign 4
.globl _boot, __head_reference
@@ -541,7 +541,7 @@
.size _boot, .-_boot
# provide a point for GDB to place a break
- .section .text.start,"ax"
+ .section .kernel.text.start,"ax"
.globl _start
.balign 4
_start:
--- gc.0/arch/frv/kernel/init_task.c Thu Jul 17 16:42:29 2008
+++ gc.1/arch/frv/kernel/init_task.c Thu Jul 17 21:07:22 2008
@@ -25,7 +25,7 @@
* "init_task" linker map entry..
*/
union thread_union init_thread_union
- __attribute__((__section__(".data.init_task"))) =
+ __attribute__((__section__(".kernel.data.init_task"))) =
{ INIT_THREAD_INFO(init_task) };
/*
--- gc.0/arch/frv/kernel/vmlinux.lds.S Thu Jul 17 16:42:29 2008
+++ gc.1/arch/frv/kernel/vmlinux.lds.S Thu Jul 17 21:07:22 2008
@@ -26,7 +26,7 @@
_sinittext = .;
.init.text : {
- *(.text.head)
+ *(.kernel.text.head)
#ifndef CONFIG_DEBUG_INFO
INIT_TEXT
EXIT_TEXT
@@ -71,13 +71,13 @@
/* put sections together that have massive alignment issues */
. = ALIGN(THREAD_SIZE);
- .data.init_task : {
+ .kernel.data.init_task : {
/* init task record & stack */
- *(.data.init_task)
+ *(.kernel.data.init_task)
}
. = ALIGN(L1_CACHE_BYTES);
- .data.cacheline_aligned : { *(.data.cacheline_aligned) }
+ .kernel.data.cacheline_aligned : { *(.kernel.data.cacheline_aligned) }
.trap : {
/* trap table management - read entry-table.S before modifying */
@@ -94,10 +94,10 @@
_text = .;
_stext = .;
.text : {
- *(.text.start)
- *(.text.entry)
- *(.text.break)
- *(.text.tlbmiss)
+ *(.kernel.text.start)
+ *(.kernel.text.entry)
+ *(.kernel.text.break)
+ *(.kernel.text.tlbmiss)
TEXT_TEXT
SCHED_TEXT
LOCK_TEXT
@@ -152,7 +152,7 @@
.sbss : { *(.sbss .sbss.*) }
.bss : { *(.bss .bss.*) }
- .bss.stack : { *(.bss) }
+ .bss.kernel.stack : { *(.bss) }
__bss_stop = .;
_end = . ;
--- gc.0/arch/frv/mm/tlb-miss.S Thu Jul 17 16:42:29 2008
+++ gc.1/arch/frv/mm/tlb-miss.S Thu Jul 17 21:07:22 2008
@@ -16,7 +16,7 @@
#include <asm/highmem.h>
#include <asm/spr-regs.h>
- .section .text.tlbmiss
+ .section .kernel.text.tlbmiss
.balign 4
.globl __entry_insn_mmu_miss
--- gc.0/arch/h8300/boot/compressed/head.S Thu Jul 17 16:42:29 2008
+++ gc.1/arch/h8300/boot/compressed/head.S Thu Jul 17 21:07:22 2008
@@ -9,7 +9,7 @@
#define SRAM_START 0xff4000
- .section .text.startup
+ .section .kernel.text.startup
.global startup
startup:
mov.l #SRAM_START+0x8000, sp
--- gc.0/arch/h8300/boot/compressed/vmlinux.lds Thu Jul 17 16:42:29 2008
+++ gc.1/arch/h8300/boot/compressed/vmlinux.lds Thu Jul 17 21:07:22 2008
@@ -4,7 +4,7 @@
{
__stext = . ;
__text = .;
- *(.text.startup)
+ *(.kernel.text.startup)
*(.text)
__etext = . ;
}
--- gc.0/arch/h8300/kernel/init_task.c Thu Jul 17 16:42:29 2008
+++ gc.1/arch/h8300/kernel/init_task.c Thu Jul 17 21:07:22 2008
@@ -37,6 +37,6 @@
* "init_task" linker map entry..
*/
union thread_union init_thread_union
- __attribute__((__section__(".data.init_task"))) =
+ __attribute__((__section__(".kernel.data.init_task"))) =
{ INIT_THREAD_INFO(init_task) };
--- gc.0/arch/h8300/kernel/vmlinux.lds.S Thu Jul 17 16:42:29 2008
+++ gc.1/arch/h8300/kernel/vmlinux.lds.S Thu Jul 17 21:07:22 2008
@@ -101,7 +101,7 @@
___data_start = . ;
. = ALIGN(0x2000) ;
- *(.data.init_task)
+ *(.kernel.data.init_task)
. = ALIGN(0x4) ;
DATA_DATA
. = ALIGN(0x4) ;
--- gc.0/arch/ia64/kernel/Makefile Thu Jul 17 16:42:29 2008
+++ gc.1/arch/ia64/kernel/Makefile Thu Jul 17 21:07:22 2008
@@ -66,7 +66,7 @@
$(obj)/gate-syms.o: $(obj)/gate.lds $(obj)/gate.o FORCE
$(call if_changed,gate)
-# gate-data.o contains the gate DSO image as data in section .data.gate.
+# gate-data.o contains the gate DSO image as data in section .kernel.data.gate.
# We must build gate.so before we can assemble it.
# Note: kbuild does not track this dependency due to usage of .incbin
$(obj)/gate-data.o: $(obj)/gate.so
--- gc.0/arch/ia64/kernel/gate-data.S Thu Jul 17 16:42:29 2008
+++ gc.1/arch/ia64/kernel/gate-data.S Thu Jul 17 21:07:22 2008
@@ -1,3 +1,3 @@
- .section .data.gate, "aw"
+ .section .kernel.data.gate, "aw"
.incbin "arch/ia64/kernel/gate.so"
--- gc.0/arch/ia64/kernel/gate.S Thu Jul 17 16:42:29 2008
+++ gc.1/arch/ia64/kernel/gate.S Thu Jul 17 21:07:22 2008
@@ -20,18 +20,18 @@
* to targets outside the shared object) and to avoid multi-phase kernel builds, we
* simply create minimalistic "patch lists" in special ELF sections.
*/
- .section ".data.patch.fsyscall_table", "a"
+ .section ".kernel.data.patch.fsyscall_table", "a"
.previous
#define LOAD_FSYSCALL_TABLE(reg) \
[1:] movl reg=0; \
- .xdata4 ".data.patch.fsyscall_table", 1b-.
+ .xdata4 ".kernel.data.patch.fsyscall_table", 1b-.
- .section ".data.patch.brl_fsys_bubble_down", "a"
+ .section ".kernel.data.patch.brl_fsys_bubble_down", "a"
.previous
#define BRL_COND_FSYS_BUBBLE_DOWN(pr) \
[1:](pr)brl.cond.sptk 0; \
;; \
- .xdata4 ".data.patch.brl_fsys_bubble_down", 1b-.
+ .xdata4 ".kernel.data.patch.brl_fsys_bubble_down", 1b-.
GLOBAL_ENTRY(__kernel_syscall_via_break)
.prologue
--- gc.0/arch/ia64/kernel/gate.lds.S Thu Jul 17 16:42:29 2008
+++ gc.1/arch/ia64/kernel/gate.lds.S Thu Jul 17 21:07:22 2008
@@ -32,21 +32,21 @@
*/
. = GATE_ADDR + 0x600;
- .data.patch : {
+ .kernel.data.patch : {
__start_gate_mckinley_e9_patchlist = .;
- *(.data.patch.mckinley_e9)
+ *(.kernel.data.patch.mckinley_e9)
__end_gate_mckinley_e9_patchlist = .;
__start_gate_vtop_patchlist = .;
- *(.data.patch.vtop)
+ *(.kernel.data.patch.vtop)
__end_gate_vtop_patchlist = .;
__start_gate_fsyscall_patchlist = .;
- *(.data.patch.fsyscall_table)
+ *(.kernel.data.patch.fsyscall_table)
__end_gate_fsyscall_patchlist = .;
__start_gate_brl_fsys_bubble_down_patchlist = .;
- *(.data.patch.brl_fsys_bubble_down)
+ *(.kernel.data.patch.brl_fsys_bubble_down)
__end_gate_brl_fsys_bubble_down_patchlist = .;
} :readable
--- gc.0/arch/ia64/kernel/head.S Thu Jul 17 16:42:29 2008
+++ gc.1/arch/ia64/kernel/head.S Thu Jul 17 21:07:22 2008
@@ -178,7 +178,7 @@
halt_msg:
stringz "Halting kernel\n"
- .section .text.head,"ax"
+ .section .kernel.text.head,"ax"
.global start_ap
--- gc.0/arch/ia64/kernel/init_task.c Thu Jul 17 16:42:29 2008
+++ gc.1/arch/ia64/kernel/init_task.c Thu Jul 17 21:07:22 2008
@@ -28,7 +28,7 @@
* Initial task structure.
*
* We need to make sure that this is properly aligned due to the way process stacks are
- * handled. This is done by having a special ".data.init_task" section...
+ * handled. This is done by having a special ".kernel.data.init_task" section...
*/
#define init_thread_info init_task_mem.s.thread_info
@@ -38,7 +38,7 @@
struct thread_info thread_info;
} s;
unsigned long stack[KERNEL_STACK_SIZE/sizeof (unsigned long)];
-} init_task_mem asm ("init_task") __attribute__((section(".data.init_task"))) = {{
+} init_task_mem asm ("init_task") __attribute__((section(".kernel.data.init_task"))) = {{
.task = INIT_TASK(init_task_mem.s.task),
.thread_info = INIT_THREAD_INFO(init_task_mem.s.task)
}};
--- gc.0/arch/ia64/kernel/ivt.S Thu Jul 17 16:42:29 2008
+++ gc.1/arch/ia64/kernel/ivt.S Thu Jul 17 21:07:22 2008
@@ -75,7 +75,7 @@
mov r19=n;; /* prepare to save predicates */ \
br.sptk.many dispatch_to_fault_handler
- .section .text.ivt,"ax"
+ .section .kernel.text.ivt,"ax"
.align 32768 // align on 32KB boundary
.global ia64_ivt
--- gc.0/arch/ia64/kernel/minstate.h Thu Jul 17 16:42:29 2008
+++ gc.1/arch/ia64/kernel/minstate.h Thu Jul 17 21:07:22 2008
@@ -15,7 +15,7 @@
#define ACCOUNT_SYS_ENTER
#endif
-.section ".data.patch.rse", "a"
+.section ".kernel.data.patch.rse", "a"
.previous
/*
@@ -214,7 +214,7 @@
(pUStk) extr.u r17=r18,3,6; \
(pUStk) sub r16=r18,r22; \
[1:](pKStk) br.cond.sptk.many 1f; \
- .xdata4 ".data.patch.rse",1b-. \
+ .xdata4 ".kernel.data.patch.rse",1b-. \
;; \
cmp.ge p6,p7 = 33,r17; \
;; \
--- gc.0/arch/ia64/kernel/vmlinux.lds.S Thu Jul 17 16:42:29 2008
+++ gc.1/arch/ia64/kernel/vmlinux.lds.S Thu Jul 17 21:07:22 2008
@@ -9,7 +9,7 @@
#define IVT_TEXT \
VMLINUX_SYMBOL(__start_ivt_text) = .; \
- *(.text.ivt) \
+ *(.kernel.text.ivt) \
VMLINUX_SYMBOL(__end_ivt_text) = .;
OUTPUT_FORMAT("elf64-ia64-little")
@@ -52,13 +52,13 @@
KPROBES_TEXT
*(.gnu.linkonce.t*)
}
- .text.head : AT(ADDR(.text.head) - LOAD_OFFSET)
- { *(.text.head) }
+ .kernel.text.head : AT(ADDR(.kernel.text.head) - LOAD_OFFSET)
+ { *(.kernel.text.head) }
.text2 : AT(ADDR(.text2) - LOAD_OFFSET)
{ *(.text2) }
#ifdef CONFIG_SMP
- .text.lock : AT(ADDR(.text.lock) - LOAD_OFFSET)
- { *(.text.lock) }
+ .kernel.text.lock : AT(ADDR(.kernel.text.lock) - LOAD_OFFSET)
+ { *(.kernel.text.lock) }
#endif
_etext = .;
@@ -85,10 +85,10 @@
__stop___mca_table = .;
}
- .data.patch.phys_stack_reg : AT(ADDR(.data.patch.phys_stack_reg) - LOAD_OFFSET)
+ .kernel.data.patch.phys_stack_reg : AT(ADDR(.kernel.data.patch.phys_stack_reg) - LOAD_OFFSET)
{
__start___phys_stack_reg_patchlist = .;
- *(.data.patch.phys_stack_reg)
+ *(.kernel.data.patch.phys_stack_reg)
__end___phys_stack_reg_patchlist = .;
}
@@ -149,24 +149,24 @@
__initcall_end = .;
}
- .data.patch.vtop : AT(ADDR(.data.patch.vtop) - LOAD_OFFSET)
+ .kernel.data.patch.vtop : AT(ADDR(.kernel.data.patch.vtop) - LOAD_OFFSET)
{
__start___vtop_patchlist = .;
- *(.data.patch.vtop)
+ *(.kernel.data.patch.vtop)
__end___vtop_patchlist = .;
}
- .data.patch.rse : AT(ADDR(.data.patch.rse) - LOAD_OFFSET)
+ .kernel.data.patch.rse : AT(ADDR(.kernel.data.patch.rse) - LOAD_OFFSET)
{
__start___rse_patchlist = .;
- *(.data.patch.rse)
+ *(.kernel.data.patch.rse)
__end___rse_patchlist = .;
}
- .data.patch.mckinley_e9 : AT(ADDR(.data.patch.mckinley_e9) - LOAD_OFFSET)
+ .kernel.data.patch.mckinley_e9 : AT(ADDR(.kernel.data.patch.mckinley_e9) - LOAD_OFFSET)
{
__start___mckinley_e9_bundles = .;
- *(.data.patch.mckinley_e9)
+ *(.kernel.data.patch.mckinley_e9)
__end___mckinley_e9_bundles = .;
}
@@ -194,34 +194,34 @@
__init_end = .;
/* The initial task and kernel stack */
- .data.init_task : AT(ADDR(.data.init_task) - LOAD_OFFSET)
- { *(.data.init_task) }
+ .kernel.data.init_task : AT(ADDR(.kernel.data.init_task) - LOAD_OFFSET)
+ { *(.kernel.data.init_task) }
- .data.page_aligned : AT(ADDR(.data.page_aligned) - LOAD_OFFSET)
+ .kernel.data.page_aligned : AT(ADDR(.kernel.data.page_aligned) - LOAD_OFFSET)
{ *(__special_page_section)
__start_gate_section = .;
- *(.data.gate)
+ *(.kernel.data.gate)
__stop_gate_section = .;
}
. = ALIGN(PAGE_SIZE); /* make sure the gate page doesn't expose
* kernel data
*/
- .data.read_mostly : AT(ADDR(.data.read_mostly) - LOAD_OFFSET)
- { *(.data.read_mostly) }
+ .kernel.data.read_mostly : AT(ADDR(.kernel.data.read_mostly) - LOAD_OFFSET)
+ { *(.kernel.data.read_mostly) }
- .data.cacheline_aligned : AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET)
- { *(.data.cacheline_aligned) }
+ .kernel.data.cacheline_aligned : AT(ADDR(.kernel.data.cacheline_aligned) - LOAD_OFFSET)
+ { *(.kernel.data.cacheline_aligned) }
/* Per-cpu data: */
percpu : { } :percpu
. = ALIGN(PERCPU_PAGE_SIZE);
__phys_per_cpu_start = .;
- .data.percpu PERCPU_ADDR : AT(__phys_per_cpu_start - LOAD_OFFSET)
+ .kernel.data.percpu PERCPU_ADDR : AT(__phys_per_cpu_start - LOAD_OFFSET)
{
__per_cpu_start = .;
- *(.data.percpu)
- *(.data.percpu.shared_aligned)
+ *(.kernel.data.percpu)
+ *(.kernel.data.percpu.shared_aligned)
__per_cpu_end = .;
}
. = __phys_per_cpu_start + PERCPU_PAGE_SIZE; /* ensure percpu data fits
--- gc.0/arch/ia64/kvm/vmm_ivt.S Thu Jul 17 16:42:29 2008
+++ gc.1/arch/ia64/kvm/vmm_ivt.S Thu Jul 17 21:07:22 2008
@@ -97,7 +97,7 @@
- .section .text.ivt,"ax"
+ .section .kernel.text.ivt,"ax"
.align 32768 // align on 32KB boundary
.global kvm_ia64_ivt
--- gc.0/arch/m32r/kernel/init_task.c Thu Jul 17 16:42:29 2008
+++ gc.1/arch/m32r/kernel/init_task.c Thu Jul 17 21:07:22 2008
@@ -26,7 +26,7 @@
* "init_task" linker map entry..
*/
union thread_union init_thread_union
- __attribute__((__section__(".data.init_task"))) =
+ __attribute__((__section__(".kernel.data.init_task"))) =
{ INIT_THREAD_INFO(init_task) };
/*
--- gc.0/arch/m32r/kernel/vmlinux.lds.S Thu Jul 17 16:42:29 2008
+++ gc.1/arch/m32r/kernel/vmlinux.lds.S Thu Jul 17 21:07:22 2008
@@ -56,17 +56,17 @@
. = ALIGN(4096);
__nosave_begin = .;
- .data_nosave : { *(.data.nosave) }
+ .data_nosave : { *(.kernel.data.nosave) }
. = ALIGN(4096);
__nosave_end = .;
. = ALIGN(32);
- .data.cacheline_aligned : { *(.data.cacheline_aligned) }
+ .kernel.data.cacheline_aligned : { *(.kernel.data.cacheline_aligned) }
_edata = .; /* End of data section */
. = ALIGN(8192); /* init_task */
- .data.init_task : { *(.data.init_task) }
+ .kernel.data.init_task : { *(.kernel.data.init_task) }
/* will be freed after init */
. = ALIGN(4096); /* Init code and data */
--- gc.0/arch/m68k/kernel/head.S Thu Jul 17 16:42:29 2008
+++ gc.1/arch/m68k/kernel/head.S Thu Jul 17 21:07:22 2008
@@ -577,7 +577,7 @@
#endif
.endm
-.section ".text.head","ax"
+.section ".kernel.text.head","ax"
ENTRY(_stext)
/*
* Version numbers of the bootinfo interface
--- gc.0/arch/m68k/kernel/process.c Thu Jul 17 16:42:29 2008
+++ gc.1/arch/m68k/kernel/process.c Thu Jul 17 21:07:22 2008
@@ -48,7 +48,7 @@
EXPORT_SYMBOL(init_mm);
union thread_union init_thread_union
-__attribute__((section(".data.init_task"), aligned(THREAD_SIZE)))
+__attribute__((section(".kernel.data.init_task"), aligned(THREAD_SIZE)))
= { INIT_THREAD_INFO(init_task) };
/* initial task structure */
--- gc.0/arch/m68k/kernel/sun3-head.S Thu Jul 17 16:42:29 2008
+++ gc.1/arch/m68k/kernel/sun3-head.S Thu Jul 17 21:07:22 2008
@@ -29,7 +29,7 @@
.globl kernel_pg_dir
.equ kernel_pg_dir,kernel_pmd_table
- .section .text.head
+ .section .kernel.text.head
ENTRY(_stext)
ENTRY(_start)
--- gc.0/arch/m68k/kernel/vmlinux-std.lds Thu Jul 17 16:42:29 2008
+++ gc.1/arch/m68k/kernel/vmlinux-std.lds Thu Jul 17 21:07:22 2008
@@ -11,7 +11,7 @@
. = 0x1000;
_text = .; /* Text and read-only data */
.text : {
- *(.text.head)
+ *(.kernel.text.head)
TEXT_TEXT
SCHED_TEXT
LOCK_TEXT
@@ -36,7 +36,7 @@
.bss : { *(.bss) } /* BSS */
. = ALIGN(16);
- .data.cacheline_aligned : { *(.data.cacheline_aligned) } :data
+ .kernel.data.cacheline_aligned : { *(.kernel.data.cacheline_aligned) } :data
_edata = .; /* End of data section */
@@ -76,7 +76,7 @@
. = ALIGN(8192);
__init_end = .;
- .data.init_task : { *(.data.init_task) } /* The initial task and kernel stack */
+ .kernel.data.init_task : { *(.kernel.data.init_task) } /* The initial task and kernel stack */
_end = . ;
--- gc.0/arch/m68k/kernel/vmlinux-sun3.lds Thu Jul 17 16:42:29 2008
+++ gc.1/arch/m68k/kernel/vmlinux-sun3.lds Thu Jul 17 21:07:22 2008
@@ -11,7 +11,7 @@
. = 0xE002000;
_text = .; /* Text and read-only data */
.text : {
- *(.text.head)
+ *(.kernel.text.head)
TEXT_TEXT
SCHED_TEXT
LOCK_TEXT
@@ -68,7 +68,7 @@
#endif
. = ALIGN(8192);
__init_end = .;
- .data.init.task : { *(.data.init_task) }
+ .kernel.data.init.task : { *(.kernel.data.init_task) }
.bss : { *(.bss) } /* BSS */
--- gc.0/arch/m68knommu/kernel/init_task.c Thu Jul 17 16:42:29 2008
+++ gc.1/arch/m68knommu/kernel/init_task.c Thu Jul 17 21:07:22 2008
@@ -37,6 +37,6 @@
* "init_task" linker map entry..
*/
union thread_union init_thread_union
- __attribute__((__section__(".data.init_task"))) =
+ __attribute__((__section__(".kernel.data.init_task"))) =
{ INIT_THREAD_INFO(init_task) };
--- gc.0/arch/m68knommu/kernel/vmlinux.lds.S Thu Jul 17 16:42:29 2008
+++ gc.1/arch/m68knommu/kernel/vmlinux.lds.S Thu Jul 17 21:07:22 2008
@@ -55,7 +55,7 @@
.romvec : {
__rom_start = . ;
_romvec = .;
- *(.data.initvect)
+ *(.kernel.data.initvect)
} > romvec
#endif
@@ -65,7 +65,7 @@
TEXT_TEXT
SCHED_TEXT
LOCK_TEXT
- *(.text.lock)
+ *(.kernel.text.lock)
. = ALIGN(16); /* Exception table */
__start___ex_table = .;
@@ -147,7 +147,7 @@
_sdata = . ;
DATA_DATA
. = ALIGN(8192) ;
- *(.data.init_task)
+ *(.kernel.data.init_task)
_edata = . ;
} > DATA
--- gc.0/arch/m68knommu/platform/68360/head-ram.S Thu Jul 17 16:42:29 2008
+++ gc.1/arch/m68knommu/platform/68360/head-ram.S Thu Jul 17 21:07:22 2008
@@ -280,7 +280,7 @@
* and then overwritten as needed.
*/
-.section ".data.initvect","awx"
+.section ".kernel.data.initvect","awx"
.long RAMEND /* Reset: Initial Stack Pointer - 0. */
.long _start /* Reset: Initial Program Counter - 1. */
.long buserr /* Bus Error - 2. */
--- gc.0/arch/m68knommu/platform/68360/head-rom.S Thu Jul 17 16:42:29 2008
+++ gc.1/arch/m68knommu/platform/68360/head-rom.S Thu Jul 17 21:07:22 2008
@@ -291,7 +291,7 @@
* and then overwritten as needed.
*/
-.section ".data.initvect","awx"
+.section ".kernel.data.initvect","awx"
.long RAMEND /* Reset: Initial Stack Pointer - 0. */
.long _start /* Reset: Initial Program Counter - 1. */
.long buserr /* Bus Error - 2. */
--- gc.0/arch/mips/kernel/init_task.c Thu Jul 17 16:42:29 2008
+++ gc.1/arch/mips/kernel/init_task.c Thu Jul 17 21:07:22 2008
@@ -27,7 +27,7 @@
* The things we do for performance..
*/
union thread_union init_thread_union
- __attribute__((__section__(".data.init_task"),
+ __attribute__((__section__(".kernel.data.init_task"),
__aligned__(THREAD_SIZE))) =
{ INIT_THREAD_INFO(init_task) };
--- gc.0/arch/mips/kernel/vmlinux.lds.S Thu Jul 17 16:42:29 2008
+++ gc.1/arch/mips/kernel/vmlinux.lds.S Thu Jul 17 21:07:22 2008
@@ -76,7 +76,7 @@
* object file alignment. Using 32768
*/
. = ALIGN(_PAGE_SIZE);
- *(.data.init_task)
+ *(.kernel.data.init_task)
DATA_DATA
CONSTRUCTORS
@@ -98,14 +98,14 @@
. = ALIGN(_PAGE_SIZE);
.data_nosave : {
__nosave_begin = .;
- *(.data.nosave)
+ *(.kernel.data.nosave)
}
. = ALIGN(_PAGE_SIZE);
__nosave_end = .;
. = ALIGN(32);
- .data.cacheline_aligned : {
- *(.data.cacheline_aligned)
+ .kernel.data.cacheline_aligned : {
+ *(.kernel.data.cacheline_aligned)
}
_edata = .; /* End of data section */
--- gc.0/arch/mips/lasat/image/head.S Thu Jul 17 16:42:29 2008
+++ gc.1/arch/mips/lasat/image/head.S Thu Jul 17 21:07:22 2008
@@ -1,7 +1,7 @@
#include <asm/lasat/head.h>
.text
- .section .text.start, "ax"
+ .section .kernel.text.start, "ax"
.set noreorder
.set mips3
--- gc.0/arch/mips/lasat/image/romscript.normal Thu Jul 17 16:42:29 2008
+++ gc.1/arch/mips/lasat/image/romscript.normal Thu Jul 17 21:07:22 2008
@@ -4,7 +4,7 @@
{
.text :
{
- *(.text.start)
+ *(.kernel.text.start)
}
/* Data in ROM */
--- gc.0/arch/mn10300/kernel/head.S Thu Jul 17 16:42:30 2008
+++ gc.1/arch/mn10300/kernel/head.S Thu Jul 17 21:07:22 2008
@@ -19,7 +19,7 @@
#include <asm/param.h>
#include <asm/unit/serial.h>
- .section .text.head,"ax"
+ .section .kernel.text.head,"ax"
###############################################################################
#
--- gc.0/arch/mn10300/kernel/init_task.c Thu Jul 17 16:42:30 2008
+++ gc.1/arch/mn10300/kernel/init_task.c Thu Jul 17 21:07:22 2008
@@ -32,7 +32,7 @@
* "init_task" linker map entry..
*/
union thread_union init_thread_union
- __attribute__((__section__(".data.init_task"))) =
+ __attribute__((__section__(".kernel.data.init_task"))) =
{ INIT_THREAD_INFO(init_task) };
/*
--- gc.0/arch/mn10300/kernel/vmlinux.lds.S Thu Jul 17 16:42:30 2008
+++ gc.1/arch/mn10300/kernel/vmlinux.lds.S Thu Jul 17 21:07:22 2008
@@ -27,7 +27,7 @@
_text = .; /* Text and read-only data */
.text : {
*(
- .text.head
+ .kernel.text.head
.text
)
TEXT_TEXT
@@ -57,25 +57,25 @@
. = ALIGN(4096);
__nosave_begin = .;
- .data_nosave : { *(.data.nosave) }
+ .data_nosave : { *(.kernel.data.nosave) }
. = ALIGN(4096);
__nosave_end = .;
. = ALIGN(4096);
- .data.page_aligned : { *(.data.idt) }
+ .kernel.data.page_aligned : { *(.kernel.data.idt) }
. = ALIGN(32);
- .data.cacheline_aligned : { *(.data.cacheline_aligned) }
+ .kernel.data.cacheline_aligned : { *(.kernel.data.cacheline_aligned) }
/* rarely changed data like cpu maps */
. = ALIGN(32);
- .data.read_mostly : AT(ADDR(.data.read_mostly)) {
- *(.data.read_mostly)
+ .kernel.data.read_mostly : AT(ADDR(.kernel.data.read_mostly)) {
+ *(.kernel.data.read_mostly)
_edata = .; /* End of data section */
}
. = ALIGN(THREAD_SIZE); /* init_task */
- .data.init_task : { *(.data.init_task) }
+ .kernel.data.init_task : { *(.kernel.data.init_task) }
/* might get freed after init */
. = ALIGN(4096);
@@ -128,7 +128,7 @@
. = ALIGN(32);
__per_cpu_start = .;
- .data.percpu : { *(.data.percpu) }
+ .kernel.data.percpu : { *(.kernel.data.percpu) }
__per_cpu_end = .;
. = ALIGN(4096);
__init_end = .;
@@ -136,7 +136,7 @@
__bss_start = .; /* BSS */
.bss : {
- *(.bss.page_aligned)
+ *(.bss.kernel.page_aligned)
*(.bss)
}
. = ALIGN(4);
--- gc.0/arch/parisc/kernel/head.S Thu Jul 17 16:42:30 2008
+++ gc.1/arch/parisc/kernel/head.S Thu Jul 17 21:07:22 2008
@@ -345,7 +345,7 @@
ENDPROC(stext)
#ifndef CONFIG_64BIT
- .section .data.read_mostly
+ .section .kernel.data.read_mostly
.align 4
.export $global$,data
--- gc.0/arch/parisc/kernel/init_task.c Thu Jul 17 16:42:30 2008
+++ gc.1/arch/parisc/kernel/init_task.c Thu Jul 17 21:07:22 2008
@@ -49,7 +49,7 @@
* "init_task" linker map entry..
*/
union thread_union init_thread_union
- __attribute__((aligned(128))) __attribute__((__section__(".data.init_task"))) =
+ __attribute__((aligned(128))) __attribute__((__section__(".kernel.data.init_task"))) =
{ INIT_THREAD_INFO(init_task) };
#if PT_NLEVELS == 3
@@ -58,11 +58,11 @@
* guarantee that global objects will be laid out in memory in the same order
* as the order of declaration, so put these in different sections and use
* the linker script to order them. */
-pmd_t pmd0[PTRS_PER_PMD] __attribute__ ((__section__ (".data.vm0.pmd"), aligned(PAGE_SIZE)));
+pmd_t pmd0[PTRS_PER_PMD] __attribute__ ((__section__ (".kernel.data.vm0.pmd"), aligned(PAGE_SIZE)));
#endif
-pgd_t swapper_pg_dir[PTRS_PER_PGD] __attribute__ ((__section__ (".data.vm0.pgd"), aligned(PAGE_SIZE)));
-pte_t pg0[PT_INITIAL * PTRS_PER_PTE] __attribute__ ((__section__ (".data.vm0.pte"), aligned(PAGE_SIZE)));
+pgd_t swapper_pg_dir[PTRS_PER_PGD] __attribute__ ((__section__ (".kernel.data.vm0.pgd"), aligned(PAGE_SIZE)));
+pte_t pg0[PT_INITIAL * PTRS_PER_PTE] __attribute__ ((__section__ (".kernel.data.vm0.pte"), aligned(PAGE_SIZE)));
/*
* Initial task structure.
--- gc.0/arch/parisc/kernel/vmlinux.lds.S Thu Jul 17 16:42:30 2008
+++ gc.1/arch/parisc/kernel/vmlinux.lds.S Thu Jul 17 21:07:22 2008
@@ -94,8 +94,8 @@
/* rarely changed data like cpu maps */
. = ALIGN(16);
- .data.read_mostly : {
- *(.data.read_mostly)
+ .kernel.data.read_mostly : {
+ *(.kernel.data.read_mostly)
}
. = ALIGN(L1_CACHE_BYTES);
@@ -106,14 +106,14 @@
}
. = ALIGN(L1_CACHE_BYTES);
- .data.cacheline_aligned : {
- *(.data.cacheline_aligned)
+ .kernel.data.cacheline_aligned : {
+ *(.kernel.data.cacheline_aligned)
}
/* PA-RISC locks requires 16-byte alignment */
. = ALIGN(16);
- .data.lock_aligned : {
- *(.data.lock_aligned)
+ .kernel.data.lock_aligned : {
+ *(.kernel.data.lock_aligned)
}
/* nosave data is really only used for software suspend...it's here
@@ -122,7 +122,7 @@
. = ALIGN(PAGE_SIZE);
__nosave_begin = .;
.data_nosave : {
- *(.data.nosave)
+ *(.kernel.data.nosave)
}
. = ALIGN(PAGE_SIZE);
__nosave_end = .;
@@ -134,10 +134,10 @@
__bss_start = .;
/* page table entries need to be PAGE_SIZE aligned */
. = ALIGN(PAGE_SIZE);
- .data.vmpages : {
- *(.data.vm0.pmd)
- *(.data.vm0.pgd)
- *(.data.vm0.pte)
+ .kernel.data.vmpages : {
+ *(.kernel.data.vm0.pmd)
+ *(.kernel.data.vm0.pgd)
+ *(.kernel.data.vm0.pte)
}
.bss : {
*(.bss)
@@ -149,8 +149,8 @@
/* assembler code expects init_task to be 16k aligned */
. = ALIGN(16384);
/* init_task */
- .data.init_task : {
- *(.data.init_task)
+ .kernel.data.init_task : {
+ *(.kernel.data.init_task)
}
#ifdef CONFIG_64BIT
--- gc.0/arch/powerpc/kernel/head_32.S Thu Jul 17 16:42:30 2008
+++ gc.1/arch/powerpc/kernel/head_32.S Thu Jul 17 21:07:22 2008
@@ -49,7 +49,7 @@
mtspr SPRN_DBAT##n##L,RB; \
1:
- .section .text.head, "ax"
+ .section .kernel.text.head, "ax"
.stabs "arch/powerpc/kernel/",N_SO,0,0,0f
.stabs "head_32.S",N_SO,0,0,0f
0:
--- gc.0/arch/powerpc/kernel/head_40x.S Thu Jul 17 16:42:30 2008
+++ gc.1/arch/powerpc/kernel/head_40x.S Thu Jul 17 21:07:22 2008
@@ -52,7 +52,7 @@
*
* This is all going to change RSN when we add bi_recs....... -- Dan
*/
- .section .text.head, "ax"
+ .section .kernel.text.head, "ax"
_ENTRY(_stext);
_ENTRY(_start);
--- gc.0/arch/powerpc/kernel/head_44x.S Thu Jul 17 16:42:30 2008
+++ gc.1/arch/powerpc/kernel/head_44x.S Thu Jul 17 21:07:22 2008
@@ -50,7 +50,7 @@
* r7 - End of kernel command line string
*
*/
- .section .text.head, "ax"
+ .section .kernel.text.head, "ax"
_ENTRY(_stext);
_ENTRY(_start);
/*
--- gc.0/arch/powerpc/kernel/head_8xx.S Thu Jul 17 16:42:30 2008
+++ gc.1/arch/powerpc/kernel/head_8xx.S Thu Jul 17 21:07:22 2008
@@ -38,7 +38,7 @@
#else
#define DO_8xx_CPU6(val, reg)
#endif
- .section .text.head, "ax"
+ .section .kernel.text.head, "ax"
_ENTRY(_stext);
_ENTRY(_start);
--- gc.0/arch/powerpc/kernel/head_fsl_booke.S Thu Jul 17 16:42:30 2008
+++ gc.1/arch/powerpc/kernel/head_fsl_booke.S Thu Jul 17 21:07:22 2008
@@ -53,7 +53,7 @@
* r7 - End of kernel command line string
*
*/
- .section .text.head, "ax"
+ .section .kernel.text.head, "ax"
_ENTRY(_stext);
_ENTRY(_start);
/*
--- gc.0/arch/powerpc/kernel/init_task.c Thu Jul 17 16:42:30 2008
+++ gc.1/arch/powerpc/kernel/init_task.c Thu Jul 17 21:07:22 2008
@@ -22,7 +22,7 @@
* "init_task" linker map entry..
*/
union thread_union init_thread_union
- __attribute__((__section__(".data.init_task"))) =
+ __attribute__((__section__(".kernel.data.init_task"))) =
{ INIT_THREAD_INFO(init_task) };
/*
--- gc.0/arch/powerpc/kernel/machine_kexec_64.c Thu Jul 17 16:42:30 2008
+++ gc.1/arch/powerpc/kernel/machine_kexec_64.c Thu Jul 17 21:07:22 2008
@@ -250,7 +250,7 @@
* current, but that audit has not been performed.
*/
static union thread_union kexec_stack
- __attribute__((__section__(".data.init_task"))) = { };
+ __attribute__((__section__(".kernel.data.init_task"))) = { };
/* Our assembly helper, in kexec_stub.S */
extern NORET_TYPE void kexec_sequence(void *newstack, unsigned long start,
--- gc.0/arch/powerpc/kernel/vdso.c Thu Jul 17 16:42:30 2008
+++ gc.1/arch/powerpc/kernel/vdso.c Thu Jul 17 21:07:22 2008
@@ -74,7 +74,7 @@
static union {
struct vdso_data data;
u8 page[PAGE_SIZE];
-} vdso_data_store __attribute__((__section__(".data.page_aligned")));
+} vdso_data_store __attribute__((__section__(".kernel.data.page_aligned")));
struct vdso_data *vdso_data = &vdso_data_store.data;
/* Format of the patch table */
--- gc.0/arch/powerpc/kernel/vdso32/vdso32_wrapper.S Thu Jul 17 16:42:30 2008
+++ gc.1/arch/powerpc/kernel/vdso32/vdso32_wrapper.S Thu Jul 17 21:07:22 2008
@@ -1,7 +1,7 @@
#include <linux/init.h>
#include <asm/page.h>
- .section ".data.page_aligned"
+ .section ".kernel.data.page_aligned"
.globl vdso32_start, vdso32_end
.balign PAGE_SIZE
--- gc.0/arch/powerpc/kernel/vdso64/vdso64_wrapper.S Thu Jul 17 16:42:30 2008
+++ gc.1/arch/powerpc/kernel/vdso64/vdso64_wrapper.S Thu Jul 17 21:07:22 2008
@@ -1,7 +1,7 @@
#include <linux/init.h>
#include <asm/page.h>
- .section ".data.page_aligned"
+ .section ".kernel.data.page_aligned"
.globl vdso64_start, vdso64_end
.balign PAGE_SIZE
--- gc.0/arch/powerpc/kernel/vmlinux.lds.S Thu Jul 17 16:42:30 2008
+++ gc.1/arch/powerpc/kernel/vmlinux.lds.S Thu Jul 17 21:07:22 2008
@@ -33,9 +33,9 @@
/* Text and gots */
.text : AT(ADDR(.text) - LOAD_OFFSET) {
ALIGN_FUNCTION();
- *(.text.head)
+ *(.kernel.text.head)
_text = .;
- *(.text .fixup .text.init.refok .exit.text.refok __ftr_alt_*)
+ *(.text .fixup .kernel.text.init.refok .kernel.exit.text.refok __ftr_alt_*)
SCHED_TEXT
LOCK_TEXT
KPROBES_TEXT
@@ -148,10 +148,10 @@
}
#endif
. = ALIGN(PAGE_SIZE);
- .data.percpu : AT(ADDR(.data.percpu) - LOAD_OFFSET) {
+ .kernel.data.percpu : AT(ADDR(.kernel.data.percpu) - LOAD_OFFSET) {
__per_cpu_start = .;
- *(.data.percpu)
- *(.data.percpu.shared_aligned)
+ *(.kernel.data.percpu)
+ *(.kernel.data.percpu.shared_aligned)
__per_cpu_end = .;
}
@@ -208,28 +208,28 @@
#else
. = ALIGN(16384);
#endif
- .data.init_task : AT(ADDR(.data.init_task) - LOAD_OFFSET) {
- *(.data.init_task)
+ .kernel.data.init_task : AT(ADDR(.kernel.data.init_task) - LOAD_OFFSET) {
+ *(.kernel.data.init_task)
}
. = ALIGN(PAGE_SIZE);
- .data.page_aligned : AT(ADDR(.data.page_aligned) - LOAD_OFFSET) {
- *(.data.page_aligned)
+ .kernel.data.page_aligned : AT(ADDR(.kernel.data.page_aligned) - LOAD_OFFSET) {
+ *(.kernel.data.page_aligned)
}
- .data.cacheline_aligned : AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET) {
- *(.data.cacheline_aligned)
+ .kernel.data.cacheline_aligned : AT(ADDR(.kernel.data.cacheline_aligned) - LOAD_OFFSET) {
+ *(.kernel.data.cacheline_aligned)
}
. = ALIGN(L1_CACHE_BYTES);
- .data.read_mostly : AT(ADDR(.data.read_mostly) - LOAD_OFFSET) {
- *(.data.read_mostly)
+ .kernel.data.read_mostly : AT(ADDR(.kernel.data.read_mostly) - LOAD_OFFSET) {
+ *(.kernel.data.read_mostly)
}
. = ALIGN(PAGE_SIZE);
.data_nosave : AT(ADDR(.data_nosave) - LOAD_OFFSET) {
__nosave_begin = .;
- *(.data.nosave)
+ *(.kernel.data.nosave)
. = ALIGN(PAGE_SIZE);
__nosave_end = .;
}
--- gc.0/arch/s390/kernel/head.S Thu Jul 17 16:42:30 2008
+++ gc.1/arch/s390/kernel/head.S Thu Jul 17 21:07:22 2008
@@ -35,7 +35,7 @@
#define ARCH_OFFSET 0
#endif
-.section ".text.head","ax"
+.section ".kernel.text.head","ax"
#ifndef CONFIG_IPL
.org 0
.long 0x00080000,0x80000000+startup # Just a restart PSW
--- gc.0/arch/s390/kernel/init_task.c Thu Jul 17 16:42:30 2008
+++ gc.1/arch/s390/kernel/init_task.c Thu Jul 17 21:07:22 2008
@@ -31,7 +31,7 @@
* "init_task" linker map entry..
*/
union thread_union init_thread_union
- __attribute__((__section__(".data.init_task"))) =
+ __attribute__((__section__(".kernel.data.init_task"))) =
{ INIT_THREAD_INFO(init_task) };
/*
--- gc.0/arch/s390/kernel/vmlinux.lds.S Thu Jul 17 16:42:30 2008
+++ gc.1/arch/s390/kernel/vmlinux.lds.S Thu Jul 17 21:07:22 2008
@@ -28,7 +28,7 @@
. = 0x00000000;
.text : {
_text = .; /* Text and read-only data */
- *(.text.head)
+ *(.kernel.text.head)
TEXT_TEXT
SCHED_TEXT
LOCK_TEXT
@@ -65,30 +65,30 @@
. = ALIGN(PAGE_SIZE);
.data_nosave : {
__nosave_begin = .;
- *(.data.nosave)
+ *(.kernel.data.nosave)
}
. = ALIGN(PAGE_SIZE);
__nosave_end = .;
. = ALIGN(PAGE_SIZE);
- .data.page_aligned : {
- *(.data.idt)
+ .kernel.data.page_aligned : {
+ *(.kernel.data.idt)
}
. = ALIGN(0x100);
- .data.cacheline_aligned : {
- *(.data.cacheline_aligned)
+ .kernel.data.cacheline_aligned : {
+ *(.kernel.data.cacheline_aligned)
}
. = ALIGN(0x100);
- .data.read_mostly : {
- *(.data.read_mostly)
+ .kernel.data.read_mostly : {
+ *(.kernel.data.read_mostly)
}
_edata = .; /* End of data section */
. = ALIGN(2 * PAGE_SIZE); /* init_task */
- .data.init_task : {
- *(.data.init_task)
+ .kernel.data.init_task : {
+ *(.kernel.data.init_task)
}
/* will be freed after init */
--- gc.0/arch/sh/kernel/cpu/sh5/entry.S Thu Jul 17 16:42:30 2008
+++ gc.1/arch/sh/kernel/cpu/sh5/entry.S Thu Jul 17 21:07:22 2008
@@ -2063,10 +2063,10 @@
/*
- * --- .text.init Section
+ * --- .kernel.text.init Section
*/
- .section .text.init, "ax"
+ .section .kernel.text.init, "ax"
/*
* void trap_init (void)
--- gc.0/arch/sh/kernel/head_32.S Thu Jul 17 16:42:30 2008
+++ gc.1/arch/sh/kernel/head_32.S Thu Jul 17 21:07:22 2008
@@ -40,7 +40,7 @@
1:
.skip PAGE_SIZE - empty_zero_page - 1b
- .section .text.head, "ax"
+ .section .kernel.text.head, "ax"
/*
* Condition at the entry of _stext:
--- gc.0/arch/sh/kernel/head_64.S Thu Jul 17 16:42:30 2008
+++ gc.1/arch/sh/kernel/head_64.S Thu Jul 17 21:07:22 2008
@@ -110,7 +110,7 @@
fpu_in_use: .quad 0
- .section .text.head, "ax"
+ .section .kernel.text.head, "ax"
.balign L1_CACHE_BYTES
/*
* Condition at the entry of __stext:
--- gc.0/arch/sh/kernel/init_task.c Thu Jul 17 16:42:30 2008
+++ gc.1/arch/sh/kernel/init_task.c Thu Jul 17 21:07:22 2008
@@ -22,7 +22,7 @@
* "init_task" linker map entry..
*/
union thread_union init_thread_union
- __attribute__((__section__(".data.init_task"))) =
+ __attribute__((__section__(".kernel.data.init_task"))) =
{ INIT_THREAD_INFO(init_task) };
/*
--- gc.0/arch/sh/kernel/irq.c Thu Jul 17 16:42:30 2008
+++ gc.1/arch/sh/kernel/irq.c Thu Jul 17 21:07:22 2008
@@ -158,10 +158,10 @@
#ifdef CONFIG_IRQSTACKS
static char softirq_stack[NR_CPUS * THREAD_SIZE]
- __attribute__((__section__(".bss.page_aligned")));
+ __attribute__((__section__(".bss.kernel.page_aligned")));
static char hardirq_stack[NR_CPUS * THREAD_SIZE]
- __attribute__((__section__(".bss.page_aligned")));
+ __attribute__((__section__(".bss.kernel.page_aligned")));
/*
* allocate per-cpu stacks for hardirq and for softirq processing
--- gc.0/arch/sh/kernel/vmlinux_32.lds.S Thu Jul 17 16:42:30 2008
+++ gc.1/arch/sh/kernel/vmlinux_32.lds.S Thu Jul 17 21:07:22 2008
@@ -28,7 +28,7 @@
} = 0
.text : {
- *(.text.head)
+ *(.kernel.text.head)
TEXT_TEXT
SCHED_TEXT
LOCK_TEXT
@@ -58,19 +58,19 @@
. = ALIGN(THREAD_SIZE);
.data : { /* Data */
- *(.data.init_task)
+ *(.kernel.data.init_task)
. = ALIGN(L1_CACHE_BYTES);
- *(.data.cacheline_aligned)
+ *(.kernel.data.cacheline_aligned)
. = ALIGN(L1_CACHE_BYTES);
- *(.data.read_mostly)
+ *(.kernel.data.read_mostly)
. = ALIGN(PAGE_SIZE);
- *(.data.page_aligned)
+ *(.kernel.data.page_aligned)
__nosave_begin = .;
- *(.data.nosave)
+ *(.kernel.data.nosave)
. = ALIGN(PAGE_SIZE);
__nosave_end = .;
@@ -128,7 +128,7 @@
.bss : {
__init_end = .;
__bss_start = .; /* BSS */
- *(.bss.page_aligned)
+ *(.bss.kernel.page_aligned)
*(.bss)
*(COMMON)
. = ALIGN(4);
--- gc.0/arch/sh/kernel/vmlinux_64.lds.S Thu Jul 17 16:42:30 2008
+++ gc.1/arch/sh/kernel/vmlinux_64.lds.S Thu Jul 17 21:07:22 2008
@@ -42,7 +42,7 @@
} = 0
.text : C_PHYS(.text) {
- *(.text.head)
+ *(.kernel.text.head)
TEXT_TEXT
*(.text64)
*(.text..SHmedia32)
@@ -70,19 +70,19 @@
. = ALIGN(THREAD_SIZE);
.data : C_PHYS(.data) { /* Data */
- *(.data.init_task)
+ *(.kernel.data.init_task)
. = ALIGN(L1_CACHE_BYTES);
- *(.data.cacheline_aligned)
+ *(.kernel.data.cacheline_aligned)
. = ALIGN(L1_CACHE_BYTES);
- *(.data.read_mostly)
+ *(.kernel.data.read_mostly)
. = ALIGN(PAGE_SIZE);
- *(.data.page_aligned)
+ *(.kernel.data.page_aligned)
__nosave_begin = .;
- *(.data.nosave)
+ *(.kernel.data.nosave)
. = ALIGN(PAGE_SIZE);
__nosave_end = .;
@@ -140,7 +140,7 @@
.bss : C_PHYS(.bss) {
__init_end = .;
__bss_start = .; /* BSS */
- *(.bss.page_aligned)
+ *(.bss.kernel.page_aligned)
*(.bss)
*(COMMON)
. = ALIGN(4);
--- gc.0/arch/sparc/boot/btfixupprep.c Thu Jul 17 16:42:30 2008
+++ gc.1/arch/sparc/boot/btfixupprep.c Thu Jul 17 21:07:22 2008
@@ -171,7 +171,7 @@
}
} else if (buffer[nbase+4] != '_')
continue;
- if (!strcmp (sect, ".text.exit"))
+ if (!strcmp (sect, ".kernel.text.exit"))
continue;
if (strcmp (sect, ".text") &&
strcmp (sect, ".init.text") &&
@@ -325,7 +325,7 @@
(*rr)->next = NULL;
}
printf("! Generated by btfixupprep. Do not edit.\n\n");
- printf("\t.section\t\".data.init\",#alloc,#write\n\t.align\t4\n\n");
+ printf("\t.section\t\".kernel.data.init\",#alloc,#write\n\t.align\t4\n\n");
printf("\t.global\t___btfixup_start\n___btfixup_start:\n\n");
for (i = 0; i < last; i++) {
f = array + i;
--- gc.0/arch/sparc/kernel/head.S Thu Jul 17 16:42:30 2008
+++ gc.1/arch/sparc/kernel/head.S Thu Jul 17 21:07:22 2008
@@ -742,7 +742,7 @@
nop
/* The code above should be at beginning and we have to take care about
- * short jumps, as branching to .text.init section from .text is usually
+ * short jumps, as branching to .kernel.text.init section from .text is usually
* impossible */
__INIT
/* Acquire boot time privileged register values, this will help debugging.
--- gc.0/arch/sparc/kernel/vmlinux.lds.S Thu Jul 17 16:42:30 2008
+++ gc.1/arch/sparc/kernel/vmlinux.lds.S Thu Jul 17 21:07:22 2008
@@ -86,12 +86,12 @@
. = ALIGN(PAGE_SIZE);
__init_end = .;
. = ALIGN(32);
- .data.cacheline_aligned : {
- *(.data.cacheline_aligned)
+ .kernel.data.cacheline_aligned : {
+ *(.kernel.data.cacheline_aligned)
}
. = ALIGN(32);
- .data.read_mostly : {
- *(.data.read_mostly)
+ .kernel.data.read_mostly : {
+ *(.kernel.data.read_mostly)
}
__bss_start = .;
--- gc.0/arch/sparc64/kernel/head.S Thu Jul 17 16:42:30 2008
+++ gc.1/arch/sparc64/kernel/head.S Thu Jul 17 21:07:22 2008
@@ -466,7 +466,7 @@
jmpl %g2 + %g0, %g0
nop
- .section .text.init.refok
+ .section .kernel.text.init.refok
sun4u_init:
BRANCH_IF_SUN4V(g1, sun4v_init)
--- gc.0/arch/sparc64/kernel/vmlinux.lds.S Thu Jul 17 16:42:30 2008
+++ gc.1/arch/sparc64/kernel/vmlinux.lds.S Thu Jul 17 21:07:22 2008
@@ -32,12 +32,12 @@
*(.data1)
}
. = ALIGN(64);
- .data.cacheline_aligned : {
- *(.data.cacheline_aligned)
+ .kernel.data.cacheline_aligned : {
+ *(.kernel.data.cacheline_aligned)
}
. = ALIGN(64);
- .data.read_mostly : {
- *(.data.read_mostly)
+ .kernel.data.read_mostly : {
+ *(.kernel.data.read_mostly)
}
_edata = .;
PROVIDE (edata = .);
--- gc.0/arch/um/kernel/dyn.lds.S Thu Jul 17 16:42:30 2008
+++ gc.1/arch/um/kernel/dyn.lds.S Thu Jul 17 21:07:22 2008
@@ -97,9 +97,9 @@
.fini_array : { *(.fini_array) }
.data : {
. = ALIGN(KERNEL_STACK_SIZE); /* init_task */
- *(.data.init_task)
+ *(.kernel.data.init_task)
. = ALIGN(KERNEL_STACK_SIZE);
- *(.data.init_irqstack)
+ *(.kernel.data.init_irqstack)
DATA_DATA
*(.data.* .gnu.linkonce.d.*)
SORT(CONSTRUCTORS)
--- gc.0/arch/um/kernel/init_task.c Thu Jul 17 16:42:30 2008
+++ gc.1/arch/um/kernel/init_task.c Thu Jul 17 21:07:22 2008
@@ -35,9 +35,9 @@
*/
union thread_union init_thread_union
- __attribute__((__section__(".data.init_task"))) =
+ __attribute__((__section__(".kernel.data.init_task"))) =
{ INIT_THREAD_INFO(init_task) };
union thread_union cpu0_irqstack
- __attribute__((__section__(".data.init_irqstack"))) =
+ __attribute__((__section__(".kernel.data.init_irqstack"))) =
{ INIT_THREAD_INFO(init_task) };
--- gc.0/arch/um/kernel/uml.lds.S Thu Jul 17 16:42:30 2008
+++ gc.1/arch/um/kernel/uml.lds.S Thu Jul 17 21:07:22 2008
@@ -53,9 +53,9 @@
.data :
{
. = ALIGN(KERNEL_STACK_SIZE); /* init_task */
- *(.data.init_task)
+ *(.kernel.data.init_task)
. = ALIGN(KERNEL_STACK_SIZE);
- *(.data.init_irqstack)
+ *(.kernel.data.init_irqstack)
DATA_DATA
*(.gnu.linkonce.d*)
CONSTRUCTORS
--- gc.0/arch/v850/kernel/vmlinux.lds.S Thu Jul 17 16:42:30 2008
+++ gc.1/arch/v850/kernel/vmlinux.lds.S Thu Jul 17 21:07:22 2008
@@ -95,8 +95,8 @@
TEXT_TEXT \
SCHED_TEXT \
*(.exit.text) /* 2.5 convention */ \
- *(.text.exit) /* 2.4 convention */ \
- *(.text.lock) \
+ *(.kernel.text.exit) /* 2.4 convention */ \
+ *(.kernel.text.lock) \
*(.exitcall.exit) \
__real_etext = . ; /* There may be data after here. */ \
RODATA_CONTENTS \
@@ -115,11 +115,11 @@
__sdata = . ; \
DATA_DATA \
EXIT_DATA /* 2.5 convention */ \
- *(.data.exit) /* 2.4 convention */ \
+ *(.kernel.data.exit) /* 2.4 convention */ \
. = ALIGN (16) ; \
- *(.data.cacheline_aligned) \
+ *(.kernel.data.cacheline_aligned) \
. = ALIGN (0x2000) ; \
- *(.data.init_task) \
+ *(.kernel.data.init_task) \
. = ALIGN (0x2000) ; \
__edata = . ;
@@ -160,8 +160,8 @@
INIT_TEXT /* 2.5 convention */ \
__einittext = .; \
INIT_DATA \
- *(.text.init) /* 2.4 convention */ \
- *(.data.init) \
+ *(.kernel.text.init) /* 2.4 convention */ \
+ *(.kernel.data.init) \
INITCALL_CONTENTS \
INITRAMFS_CONTENTS
@@ -171,7 +171,7 @@
. = ALIGN (4096) ; \
__init_start = . ; \
INIT_DATA /* 2.5 convention */ \
- *(.data.init) /* 2.4 convention */ \
+ *(.kernel.data.init) /* 2.4 convention */ \
__init_end = . ; \
. = ALIGN (4096) ;
@@ -181,7 +181,7 @@
_sinittext = .; \
INIT_TEXT /* 2.5 convention */ \
_einittext = .; \
- *(.text.init) /* 2.4 convention */ \
+ *(.kernel.text.init) /* 2.4 convention */ \
INITCALL_CONTENTS \
INITRAMFS_CONTENTS
--- gc.0/arch/x86/boot/compressed/head_32.S Thu Jul 17 16:42:30 2008
+++ gc.1/arch/x86/boot/compressed/head_32.S Thu Jul 17 21:07:22 2008
@@ -29,7 +29,7 @@
#include <asm/boot.h>
#include <asm/asm-offsets.h>
-.section ".text.head","ax",@progbits
+.section ".kernel.text.head","ax",@progbits
.globl startup_32
startup_32:
--- gc.0/arch/x86/boot/compressed/head_64.S Thu Jul 17 16:42:30 2008
+++ gc.1/arch/x86/boot/compressed/head_64.S Thu Jul 17 21:07:22 2008
@@ -33,7 +33,7 @@
#include <asm/processor-flags.h>
#include <asm/asm-offsets.h>
-.section ".text.head"
+.section ".kernel.text.head","ax",@progbits
.code32
.globl startup_32
--- gc.0/arch/x86/boot/compressed/vmlinux.scr Thu Jul 17 16:42:30 2008
+++ gc.1/arch/x86/boot/compressed/vmlinux.scr Thu Jul 17 21:07:22 2008
@@ -1,6 +1,6 @@
SECTIONS
{
- .rodata.compressed : {
+ .kernel.rodata.compressed : {
input_len = .;
LONG(input_data_end - input_data) input_data = .;
*(.data)
--- gc.0/arch/x86/boot/compressed/vmlinux_32.lds Thu Jul 17 16:42:30 2008
+++ gc.1/arch/x86/boot/compressed/vmlinux_32.lds Thu Jul 17 21:08:52 2008
@@ -7,23 +7,23 @@
* address 0.
*/
. = 0;
- .text.head : {
+ .kernel.text.head : {
_head = . ;
- *(.text.head)
+ *(.kernel.text.head)
_ehead = . ;
}
- .rodata.compressed : {
- *(.rodata.compressed)
+ .kernel.rodata.compressed : {
+ *(.kernel.rodata.compressed)
}
.text : {
- _text = .; /* Text */
+ _text = .;
*(.text)
*(.text.*)
_etext = . ;
}
.rodata : {
_rodata = . ;
- *(.rodata) /* read-only data */
+ *(.rodata)
*(.rodata.*)
_erodata = . ;
}
@@ -40,4 +40,6 @@
*(COMMON)
_end = . ;
}
+ /* Be bold, and discard everything not explicitly mentioned */
+ /DISCARD/ : { *(*) }
}
--- gc.0/arch/x86/boot/compressed/vmlinux_64.lds Thu Jul 17 16:42:30 2008
+++ gc.1/arch/x86/boot/compressed/vmlinux_64.lds Thu Jul 17 21:08:35 2008
@@ -7,23 +7,23 @@
* address 0.
*/
. = 0;
- .text.head : {
+ .kernel.text.head : {
_head = . ;
- *(.text.head)
+ *(.kernel.text.head)
_ehead = . ;
}
- .rodata.compressed : {
- *(.rodata.compressed)
+ .kernel.rodata.compressed : {
+ *(.kernel.rodata.compressed)
}
.text : {
- _text = .; /* Text */
+ _text = .;
*(.text)
*(.text.*)
_etext = . ;
}
.rodata : {
_rodata = . ;
- *(.rodata) /* read-only data */
+ *(.rodata)
*(.rodata.*)
_erodata = . ;
}
@@ -45,4 +45,6 @@
. = . + 4096 * 6;
_ebss = .;
}
+ /* Be bold, and discard everything not explicitly mentioned */
+ /DISCARD/ : { *(*) }
}
--- gc.0/arch/x86/kernel/acpi/wakeup_32.S Thu Jul 17 16:42:30 2008
+++ gc.1/arch/x86/kernel/acpi/wakeup_32.S Thu Jul 17 21:07:22 2008
@@ -1,4 +1,4 @@
- .section .text.page_aligned
+ .section .kernel.text.page_aligned
#include <linux/linkage.h>
#include <asm/segment.h>
#include <asm/page.h>
--- gc.0/arch/x86/kernel/cpu/common_64.c Thu Jul 17 16:42:30 2008
+++ gc.1/arch/x86/kernel/cpu/common_64.c Thu Jul 17 21:07:22 2008
@@ -518,7 +518,7 @@
char boot_exception_stacks[(N_EXCEPTION_STACKS - 1) * EXCEPTION_STKSZ +
DEBUG_STKSZ]
-__attribute__((section(".bss.page_aligned")));
+__attribute__((section(".bss.kernel.page_aligned")));
extern asmlinkage void ignore_sysret(void);
--- gc.0/arch/x86/kernel/head_32.S Thu Jul 17 16:42:30 2008
+++ gc.1/arch/x86/kernel/head_32.S Thu Jul 17 21:07:22 2008
@@ -81,7 +81,7 @@
* any particular GDT layout, because we load our own as soon as we
* can.
*/
-.section .text.head,"ax",@progbits
+.section .kernel.text.head,"ax",@progbits
ENTRY(startup_32)
/* test KEEP_SEGMENTS flag to see if the bootloader is asking
us to not reload segments */
@@ -611,7 +611,7 @@
/*
* BSS section
*/
-.section ".bss.page_aligned","wa"
+.section ".bss.kernel.page_aligned","wa"
.align PAGE_SIZE_asm
#ifdef CONFIG_X86_PAE
swapper_pg_pmd:
@@ -628,7 +628,7 @@
* This starts the data section.
*/
#ifdef CONFIG_X86_PAE
-.section ".data.page_aligned","wa"
+.section ".kernel.data.page_aligned","wa"
/* Page-aligned for the benefit of paravirt? */
.align PAGE_SIZE_asm
ENTRY(swapper_pg_dir)
--- gc.0/arch/x86/kernel/head_64.S Thu Jul 17 16:42:30 2008
+++ gc.1/arch/x86/kernel/head_64.S Thu Jul 17 21:07:22 2008
@@ -40,7 +40,7 @@
L3_START_KERNEL = pud_index(__START_KERNEL_map)
.text
- .section .text.head
+ .section .kernel.text.head
.code64
.globl startup_64
startup_64:
@@ -413,7 +413,7 @@
ENTRY(idt_table)
.skip 256 * 16
- .section .bss.page_aligned, "aw", @nobits
+ .section .bss.kernel.page_aligned, "aw", @nobits
.align PAGE_SIZE
ENTRY(empty_zero_page)
.skip PAGE_SIZE
--- gc.0/arch/x86/kernel/init_task.c Thu Jul 17 16:42:30 2008
+++ gc.1/arch/x86/kernel/init_task.c Thu Jul 17 21:07:22 2008
@@ -24,7 +24,7 @@
* "init_task" linker map entry..
*/
union thread_union init_thread_union
- __attribute__((__section__(".data.init_task"))) =
+ __attribute__((__section__(".kernel.data.init_task"))) =
{ INIT_THREAD_INFO(init_task) };
/*
@@ -38,7 +38,7 @@
/*
* per-CPU TSS segments. Threads are completely 'soft' on Linux,
* no more per-task TSS's. The TSS size is kept cacheline-aligned
- * so they are allowed to end up in the .data.cacheline_aligned
+ * so they are allowed to end up in the .kernel.data.cacheline_aligned
* section. Since TSS's are completely CPU-local, we want them
* on exact cacheline boundaries, to eliminate cacheline ping-pong.
*/
--- gc.0/arch/x86/kernel/irq_32.c Thu Jul 17 16:42:30 2008
+++ gc.1/arch/x86/kernel/irq_32.c Thu Jul 17 21:07:22 2008
@@ -84,10 +84,10 @@
static union irq_ctx *softirq_ctx[NR_CPUS] __read_mostly;
static char softirq_stack[NR_CPUS * THREAD_SIZE]
- __attribute__((__section__(".bss.page_aligned")));
+ __attribute__((__section__(".bss.kernel.page_aligned")));
static char hardirq_stack[NR_CPUS * THREAD_SIZE]
- __attribute__((__section__(".bss.page_aligned")));
+ __attribute__((__section__(".bss.kernel.page_aligned")));
static void call_on_stack(void *func, void *stack)
{
--- gc.0/arch/x86/kernel/traps_32.c Thu Jul 17 16:42:30 2008
+++ gc.1/arch/x86/kernel/traps_32.c Thu Jul 17 21:07:22 2008
@@ -75,7 +75,7 @@
* for this.
*/
gate_desc idt_table[256]
- __attribute__((__section__(".data.idt"))) = { { { { 0, 0 } } }, };
+ __attribute__((__section__(".kernel.data.idt"))) = { { { { 0, 0 } } }, };
asmlinkage void divide_error(void);
asmlinkage void debug(void);
--- gc.0/arch/x86/kernel/vmlinux_32.lds.S Thu Jul 17 16:42:30 2008
+++ gc.1/arch/x86/kernel/vmlinux_32.lds.S Thu Jul 17 21:07:22 2008
@@ -31,15 +31,15 @@
. = LOAD_OFFSET + LOAD_PHYSICAL_ADDR;
phys_startup_32 = startup_32 - LOAD_OFFSET;
- .text.head : AT(ADDR(.text.head) - LOAD_OFFSET) {
+ .kernel.text.head : AT(ADDR(.kernel.text.head) - LOAD_OFFSET) {
_text = .; /* Text and read-only data */
- *(.text.head)
+ *(.kernel.text.head)
} :text = 0x9090
/* read-only */
.text : AT(ADDR(.text) - LOAD_OFFSET) {
. = ALIGN(PAGE_SIZE); /* not really needed, already page aligned */
- *(.text.page_aligned)
+ *(.kernel.text.page_aligned)
TEXT_TEXT
SCHED_TEXT
LOCK_TEXT
@@ -70,32 +70,32 @@
. = ALIGN(PAGE_SIZE);
.data_nosave : AT(ADDR(.data_nosave) - LOAD_OFFSET) {
__nosave_begin = .;
- *(.data.nosave)
+ *(.kernel.data.nosave)
. = ALIGN(PAGE_SIZE);
__nosave_end = .;
}
. = ALIGN(PAGE_SIZE);
- .data.page_aligned : AT(ADDR(.data.page_aligned) - LOAD_OFFSET) {
- *(.data.page_aligned)
- *(.data.idt)
+ .kernel.data.page_aligned : AT(ADDR(.kernel.data.page_aligned) - LOAD_OFFSET) {
+ *(.kernel.data.page_aligned)
+ *(.kernel.data.idt)
}
. = ALIGN(32);
- .data.cacheline_aligned : AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET) {
- *(.data.cacheline_aligned)
+ .kernel.data.cacheline_aligned : AT(ADDR(.kernel.data.cacheline_aligned) - LOAD_OFFSET) {
+ *(.kernel.data.cacheline_aligned)
}
/* rarely changed data like cpu maps */
. = ALIGN(32);
- .data.read_mostly : AT(ADDR(.data.read_mostly) - LOAD_OFFSET) {
- *(.data.read_mostly)
+ .kernel.data.read_mostly : AT(ADDR(.kernel.data.read_mostly) - LOAD_OFFSET) {
+ *(.kernel.data.read_mostly)
_edata = .; /* End of data section */
}
. = ALIGN(THREAD_SIZE); /* init_task */
- .data.init_task : AT(ADDR(.data.init_task) - LOAD_OFFSET) {
- *(.data.init_task)
+ .kernel.data.init_task : AT(ADDR(.kernel.data.init_task) - LOAD_OFFSET) {
+ *(.kernel.data.init_task)
}
/* might get freed after init */
@@ -178,10 +178,10 @@
}
#endif
. = ALIGN(PAGE_SIZE);
- .data.percpu : AT(ADDR(.data.percpu) - LOAD_OFFSET) {
+ .kernel.data.percpu : AT(ADDR(.kernel.data.percpu) - LOAD_OFFSET) {
__per_cpu_start = .;
- *(.data.percpu)
- *(.data.percpu.shared_aligned)
+ *(.kernel.data.percpu)
+ *(.kernel.data.percpu.shared_aligned)
__per_cpu_end = .;
}
. = ALIGN(PAGE_SIZE);
@@ -190,7 +190,7 @@
.bss : AT(ADDR(.bss) - LOAD_OFFSET) {
__init_end = .;
__bss_start = .; /* BSS */
- *(.bss.page_aligned)
+ *(.bss.kernel.page_aligned)
*(.bss)
. = ALIGN(4);
__bss_stop = .;
--- gc.0/arch/x86/kernel/vmlinux_64.lds.S Thu Jul 17 16:42:30 2008
+++ gc.1/arch/x86/kernel/vmlinux_64.lds.S Thu Jul 17 21:07:22 2008
@@ -28,7 +28,7 @@
_text = .; /* Text and read-only data */
.text : AT(ADDR(.text) - LOAD_OFFSET) {
/* First the code that has to be first for bootstrapping */
- *(.text.head)
+ *(.kernel.text.head)
_stext = .;
/* Then the rest */
TEXT_TEXT
@@ -62,17 +62,17 @@
. = ALIGN(PAGE_SIZE);
. = ALIGN(CONFIG_X86_L1_CACHE_BYTES);
- .data.cacheline_aligned : AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET) {
- *(.data.cacheline_aligned)
+ .kernel.data.cacheline_aligned : AT(ADDR(.kernel.data.cacheline_aligned) - LOAD_OFFSET) {
+ *(.kernel.data.cacheline_aligned)
}
. = ALIGN(CONFIG_X86_INTERNODE_CACHE_BYTES);
- .data.read_mostly : AT(ADDR(.data.read_mostly) - LOAD_OFFSET) {
- *(.data.read_mostly)
+ .kernel.data.read_mostly : AT(ADDR(.kernel.data.read_mostly) - LOAD_OFFSET) {
+ *(.kernel.data.read_mostly)
}
#define VSYSCALL_ADDR (-10*1024*1024)
-#define VSYSCALL_PHYS_ADDR ((LOADADDR(.data.read_mostly) + SIZEOF(.data.read_mostly) + 4095) & ~(4095))
-#define VSYSCALL_VIRT_ADDR ((ADDR(.data.read_mostly) + SIZEOF(.data.read_mostly) + 4095) & ~(4095))
+#define VSYSCALL_PHYS_ADDR ((LOADADDR(.kernel.data.read_mostly) + SIZEOF(.kernel.data.read_mostly) + 4095) & ~(4095))
+#define VSYSCALL_VIRT_ADDR ((ADDR(.kernel.data.read_mostly) + SIZEOF(.kernel.data.read_mostly) + 4095) & ~(4095))
#define VLOAD_OFFSET (VSYSCALL_ADDR - VSYSCALL_PHYS_ADDR)
#define VLOAD(x) (ADDR(x) - VLOAD_OFFSET)
@@ -121,13 +121,13 @@
#undef VVIRT
. = ALIGN(THREAD_SIZE); /* init_task */
- .data.init_task : AT(ADDR(.data.init_task) - LOAD_OFFSET) {
- *(.data.init_task)
+ .kernel.data.init_task : AT(ADDR(.kernel.data.init_task) - LOAD_OFFSET) {
+ *(.kernel.data.init_task)
}:data.init
. = ALIGN(PAGE_SIZE);
- .data.page_aligned : AT(ADDR(.data.page_aligned) - LOAD_OFFSET) {
- *(.data.page_aligned)
+ .kernel.data.page_aligned : AT(ADDR(.kernel.data.page_aligned) - LOAD_OFFSET) {
+ *(.kernel.data.page_aligned)
}
/* might get freed after init */
@@ -215,13 +215,13 @@
. = ALIGN(PAGE_SIZE);
__nosave_begin = .;
- .data_nosave : AT(ADDR(.data_nosave) - LOAD_OFFSET) { *(.data.nosave) }
+ .data_nosave : AT(ADDR(.data_nosave) - LOAD_OFFSET) { *(.kernel.data.nosave) }
. = ALIGN(PAGE_SIZE);
__nosave_end = .;
__bss_start = .; /* BSS */
.bss : AT(ADDR(.bss) - LOAD_OFFSET) {
- *(.bss.page_aligned)
+ *(.bss.kernel.page_aligned)
*(.bss)
}
__bss_stop = .;
--- gc.0/arch/x86/xen/mmu.c Thu Jul 17 16:42:30 2008
+++ gc.1/arch/x86/xen/mmu.c Thu Jul 17 21:07:22 2008
@@ -61,21 +61,21 @@
/* Placeholder for holes in the address space */
static unsigned long p2m_missing[P2M_ENTRIES_PER_PAGE]
- __attribute__((section(".data.page_aligned"))) =
+ __attribute__((section(".kernel.data.page_aligned"))) =
{ [ 0 ... P2M_ENTRIES_PER_PAGE-1 ] = ~0UL };
/* Array of pointers to pages containing p2m entries */
static unsigned long *p2m_top[TOP_ENTRIES]
- __attribute__((section(".data.page_aligned"))) =
+ __attribute__((section(".kernel.data.page_aligned"))) =
{ [ 0 ... TOP_ENTRIES - 1] = &p2m_missing[0] };
/* Arrays of p2m arrays expressed in mfns used for save/restore */
static unsigned long p2m_top_mfn[TOP_ENTRIES]
- __attribute__((section(".bss.page_aligned")));
+ __attribute__((section(".bss.kernel.page_aligned")));
static unsigned long p2m_top_mfn_list[
PAGE_ALIGN(TOP_ENTRIES / P2M_ENTRIES_PER_PAGE)]
- __attribute__((section(".bss.page_aligned")));
+ __attribute__((section(".bss.kernel.page_aligned")));
static inline unsigned p2m_top_index(unsigned long pfn)
{
--- gc.0/arch/xtensa/kernel/head.S Thu Jul 17 16:42:30 2008
+++ gc.1/arch/xtensa/kernel/head.S Thu Jul 17 21:07:22 2008
@@ -234,7 +234,7 @@
* BSS section
*/
-.section ".bss.page_aligned", "w"
+.section ".bss.kernel.page_aligned", "w"
ENTRY(swapper_pg_dir)
.fill PAGE_SIZE, 1, 0
ENTRY(empty_zero_page)
--- gc.0/arch/xtensa/kernel/init_task.c Thu Jul 17 16:42:30 2008
+++ gc.1/arch/xtensa/kernel/init_task.c Thu Jul 17 21:07:22 2008
@@ -29,7 +29,7 @@
EXPORT_SYMBOL(init_mm);
union thread_union init_thread_union
- __attribute__((__section__(".data.init_task"))) =
+ __attribute__((__section__(".kernel.data.init_task"))) =
{ INIT_THREAD_INFO(init_task) };
struct task_struct init_task = INIT_TASK(init_task);
--- gc.0/arch/xtensa/kernel/vmlinux.lds.S Thu Jul 17 16:42:30 2008
+++ gc.1/arch/xtensa/kernel/vmlinux.lds.S Thu Jul 17 21:07:22 2008
@@ -121,14 +121,14 @@
DATA_DATA
CONSTRUCTORS
. = ALIGN(XCHAL_ICACHE_LINESIZE);
- *(.data.cacheline_aligned)
+ *(.kernel.data.cacheline_aligned)
}
_edata = .;
/* The initial task */
. = ALIGN(8192);
- .data.init_task : { *(.data.init_task) }
+ .kernel.data.init_task : { *(.kernel.data.init_task) }
/* Initialization code and data: */
@@ -259,7 +259,7 @@
/* BSS section */
_bss_start = .;
- .bss : { *(.bss.page_aligned) *(.bss) }
+ .bss : { *(.bss.kernel.page_aligned) *(.bss) }
_bss_end = .;
_end = .;
--- gc.0/include/asm-frv/init.h Thu Jul 17 16:42:35 2008
+++ gc.1/include/asm-frv/init.h Thu Jul 17 21:07:22 2008
@@ -1,12 +1,12 @@
#ifndef _ASM_INIT_H
#define _ASM_INIT_H
-#define __init __attribute__ ((__section__ (".text.init")))
-#define __initdata __attribute__ ((__section__ (".data.init")))
+#define __init __attribute__ ((__section__ (".kernel.text.init")))
+#define __initdata __attribute__ ((__section__ (".kernel.data.init")))
/* For assembly routines */
-#define __INIT .section ".text.init",#alloc,#execinstr
+#define __INIT .section ".kernel.text.init",#alloc,#execinstr
#define __FINIT .previous
-#define __INITDATA .section ".data.init",#alloc,#write
+#define __INITDATA .section ".kernel.data.init",#alloc,#write
#endif
--- gc.0/include/asm-generic/vmlinux.lds.h Thu Jul 17 16:42:35 2008
+++ gc.1/include/asm-generic/vmlinux.lds.h Thu Jul 17 21:07:22 2008
@@ -41,7 +41,7 @@
/* .data section */
#define DATA_DATA \
*(.data) \
- *(.data.init.refok) \
+ *(.kernel.data.init.refok) \
*(.ref.data) \
DEV_KEEP(init.data) \
DEV_KEEP(exit.data) \
@@ -223,8 +223,8 @@
ALIGN_FUNCTION(); \
*(.text) \
*(.ref.text) \
- *(.text.init.refok) \
- *(.exit.text.refok) \
+ *(.kernel.text.init.refok) \
+ *(.kernel.exit.text.refok) \
DEV_KEEP(init.text) \
DEV_KEEP(exit.text) \
CPU_KEEP(init.text) \
@@ -380,8 +380,8 @@
#define PERCPU(align) \
. = ALIGN(align); \
__per_cpu_start = .; \
- .data.percpu : AT(ADDR(.data.percpu) - LOAD_OFFSET) { \
- *(.data.percpu) \
- *(.data.percpu.shared_aligned) \
+ .kernel.data.percpu : AT(ADDR(.kernel.data.percpu) - LOAD_OFFSET) { \
+ *(.kernel.data.percpu) \
+ *(.kernel.data.percpu.shared_aligned) \
} \
__per_cpu_end = .;
--- gc.0/include/asm-ia64/asmmacro.h Thu Jul 17 16:42:35 2008
+++ gc.1/include/asm-ia64/asmmacro.h Thu Jul 17 21:07:22 2008
@@ -70,12 +70,12 @@
* path (ivt.S - TLB miss processing) or in places where it might not be
* safe to use a "tpa" instruction (mca_asm.S - error recovery).
*/
- .section ".data.patch.vtop", "a" // declare section & section attributes
+ .section ".kernel.data.patch.vtop", "a" // declare section & section attributes
.previous
#define LOAD_PHYSICAL(pr, reg, obj) \
[1:](pr)movl reg = obj; \
- .xdata4 ".data.patch.vtop", 1b-.
+ .xdata4 ".kernel.data.patch.vtop", 1b-.
/*
* For now, we always put in the McKinley E9 workaround. On CPUs that don't need it,
@@ -84,11 +84,11 @@
#define DO_MCKINLEY_E9_WORKAROUND
#ifdef DO_MCKINLEY_E9_WORKAROUND
- .section ".data.patch.mckinley_e9", "a"
+ .section ".kernel.data.patch.mckinley_e9", "a"
.previous
/* workaround for Itanium 2 Errata 9: */
# define FSYS_RETURN \
- .xdata4 ".data.patch.mckinley_e9", 1f-.; \
+ .xdata4 ".kernel.data.patch.mckinley_e9", 1f-.; \
1:{ .mib; \
nop.m 0; \
mov r16=ar.pfs; \
@@ -107,11 +107,11 @@
* If physical stack register size is different from DEF_NUM_STACK_REG,
* dynamically patch the kernel for correct size.
*/
- .section ".data.patch.phys_stack_reg", "a"
+ .section ".kernel.data.patch.phys_stack_reg", "a"
.previous
#define LOAD_PHYS_STACK_REG_SIZE(reg) \
[1:] adds reg=IA64_NUM_PHYS_STACK_REG*8+8,r0; \
- .xdata4 ".data.patch.phys_stack_reg", 1b-.
+ .xdata4 ".kernel.data.patch.phys_stack_reg", 1b-.
/*
* Up until early 2004, use of .align within a function caused bad unwind info.
--- gc.0/include/asm-ia64/cache.h Thu Jul 17 16:42:35 2008
+++ gc.1/include/asm-ia64/cache.h Thu Jul 17 21:07:22 2008
@@ -24,6 +24,6 @@
# define SMP_CACHE_BYTES (1 << 3)
#endif
-#define __read_mostly __attribute__((__section__(".data.read_mostly")))
+#define __read_mostly __attribute__((__section__(".kernel.data.read_mostly")))
#endif /* _ASM_IA64_CACHE_H */
--- gc.0/include/asm-ia64/percpu.h Thu Jul 17 16:42:35 2008
+++ gc.1/include/asm-ia64/percpu.h Thu Jul 17 21:07:22 2008
@@ -27,7 +27,7 @@
#else /* ! SMP */
-#define PER_CPU_ATTRIBUTES __attribute__((__section__(".data.percpu")))
+#define PER_CPU_ATTRIBUTES __attribute__((__section__(".kernel.data.percpu")))
#define per_cpu_init() (__phys_per_cpu_start)
--- gc.0/include/asm-parisc/cache.h Thu Jul 17 16:42:36 2008
+++ gc.1/include/asm-parisc/cache.h Thu Jul 17 21:07:22 2008
@@ -28,7 +28,7 @@
#define SMP_CACHE_BYTES L1_CACHE_BYTES
-#define __read_mostly __attribute__((__section__(".data.read_mostly")))
+#define __read_mostly __attribute__((__section__(".kernel.data.read_mostly")))
void parisc_cache_init(void); /* initializes cache-flushing */
void disable_sr_hashing_asm(int); /* low level support for above */
--- gc.0/include/asm-parisc/system.h Thu Jul 17 16:42:36 2008
+++ gc.1/include/asm-parisc/system.h Thu Jul 17 21:07:22 2008
@@ -174,7 +174,7 @@
})
#ifdef CONFIG_SMP
-# define __lock_aligned __attribute__((__section__(".data.lock_aligned")))
+# define __lock_aligned __attribute__((__section__(".kernel.data.lock_aligned")))
#endif
#define arch_align_stack(x) (x)
--- gc.0/include/asm-powerpc/cache.h Thu Jul 17 16:42:36 2008
+++ gc.1/include/asm-powerpc/cache.h Thu Jul 17 21:07:22 2008
@@ -38,7 +38,7 @@
#endif /* __powerpc64__ && ! __ASSEMBLY__ */
#if !defined(__ASSEMBLY__)
-#define __read_mostly __attribute__((__section__(".data.read_mostly")))
+#define __read_mostly __attribute__((__section__(".kernel.data.read_mostly")))
#endif
#endif /* __KERNEL__ */
--- gc.0/include/asm-powerpc/page_64.h Thu Jul 17 16:42:36 2008
+++ gc.1/include/asm-powerpc/page_64.h Thu Jul 17 21:07:22 2008
@@ -156,7 +156,7 @@
#else
#define __page_aligned \
__attribute__((__aligned__(PAGE_SIZE), \
- __section__(".data.page_aligned")))
+ __section__(".kernel.data.page_aligned")))
#endif
#define VM_DATA_DEFAULT_FLAGS \
--- gc.0/include/asm-powerpc/ppc_asm.h Thu Jul 17 16:42:36 2008
+++ gc.1/include/asm-powerpc/ppc_asm.h Thu Jul 17 21:07:22 2008
@@ -193,7 +193,7 @@
GLUE(.,name):
#define _INIT_GLOBAL(name) \
- .section ".text.init.refok"; \
+ .section ".kernel.text.init.refok"; \
.align 2 ; \
.globl name; \
.globl GLUE(.,name); \
@@ -233,7 +233,7 @@
GLUE(.,name):
#define _INIT_STATIC(name) \
- .section ".text.init.refok"; \
+ .section ".kernel.text.init.refok"; \
.align 2 ; \
.section ".opd","aw"; \
name: \
--- gc.0/include/asm-s390/cache.h Thu Jul 17 16:42:36 2008
+++ gc.1/include/asm-s390/cache.h Thu Jul 17 21:07:22 2008
@@ -14,6 +14,6 @@
#define L1_CACHE_BYTES 256
#define L1_CACHE_SHIFT 8
-#define __read_mostly __attribute__((__section__(".data.read_mostly")))
+#define __read_mostly __attribute__((__section__(".kernel.data.read_mostly")))
#endif
--- gc.0/include/asm-sh/cache.h Thu Jul 17 16:42:36 2008
+++ gc.1/include/asm-sh/cache.h Thu Jul 17 21:07:22 2008
@@ -14,7 +14,7 @@
#define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
-#define __read_mostly __attribute__((__section__(".data.read_mostly")))
+#define __read_mostly __attribute__((__section__(".kernel.data.read_mostly")))
#ifndef __ASSEMBLY__
struct cache_info {
--- gc.0/include/asm-sparc/cache.h Thu Jul 17 16:42:36 2008
+++ gc.1/include/asm-sparc/cache.h Thu Jul 17 21:07:22 2008
@@ -19,7 +19,7 @@
#define SMP_CACHE_BYTES (1 << SMP_CACHE_BYTES_SHIFT)
-#define __read_mostly __attribute__((__section__(".data.read_mostly")))
+#define __read_mostly __attribute__((__section__(".kernel.data.read_mostly")))
#ifdef CONFIG_SPARC32
#include <asm/asi.h>
--- gc.0/include/asm-um/common.lds.S Thu Jul 17 16:42:36 2008
+++ gc.1/include/asm-um/common.lds.S Thu Jul 17 21:07:22 2008
@@ -49,9 +49,9 @@
}
. = ALIGN(32);
- .data.percpu : {
+ .kernel.data.percpu : {
__per_cpu_start = . ;
- *(.data.percpu)
+ *(.kernel.data.percpu)
__per_cpu_end = . ;
}
--- gc.0/include/asm-x86/cache.h Thu Jul 17 16:42:36 2008
+++ gc.1/include/asm-x86/cache.h Thu Jul 17 21:07:22 2008
@@ -5,7 +5,7 @@
#define L1_CACHE_SHIFT (CONFIG_X86_L1_CACHE_SHIFT)
#define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
-#define __read_mostly __attribute__((__section__(".data.read_mostly")))
+#define __read_mostly __attribute__((__section__(".kernel.data.read_mostly")))
#ifdef CONFIG_X86_VSMP
/* vSMP Internode cacheline shift */
@@ -13,7 +13,7 @@
#ifdef CONFIG_SMP
#define __cacheline_aligned_in_smp \
__attribute__((__aligned__(1 << (INTERNODE_CACHE_SHIFT)))) \
- __attribute__((__section__(".data.page_aligned")))
+ __attribute__((__section__(".kernel.data.page_aligned")))
#endif
#endif
--- gc.0/include/linux/cache.h Thu Jul 17 16:42:36 2008
+++ gc.1/include/linux/cache.h Thu Jul 17 21:07:22 2008
@@ -31,7 +31,7 @@
#ifndef __cacheline_aligned
#define __cacheline_aligned \
__attribute__((__aligned__(SMP_CACHE_BYTES), \
- __section__(".data.cacheline_aligned")))
+ __section__(".kernel.data.cacheline_aligned")))
#endif /* __cacheline_aligned */
#ifndef __cacheline_aligned_in_smp
--- gc.0/include/linux/init.h Thu Jul 17 16:42:36 2008
+++ gc.1/include/linux/init.h Thu Jul 17 21:07:22 2008
@@ -62,9 +62,9 @@
/* backward compatibility note
* A few places hardcode the old section names:
- * .text.init.refok
- * .data.init.refok
- * .exit.text.refok
+ * .kernel.text.init.refok
+ * .kernel.data.init.refok
+ * .kernel.exit.text.refok
* They should be converted to use the defines from this file
*/
@@ -299,7 +299,7 @@
#endif
/* Data marked not to be saved by software suspend */
-#define __nosavedata __section(.data.nosave)
+#define __nosavedata __section(.kernel.data.nosave)
/* This means "can be init if no module support, otherwise module load
may call it." */
--- gc.0/include/linux/linkage.h Thu Jul 17 16:42:36 2008
+++ gc.1/include/linux/linkage.h Thu Jul 17 21:07:22 2008
@@ -20,8 +20,8 @@
# define asmregparm
#endif
-#define __page_aligned_data __section(.data.page_aligned) __aligned(PAGE_SIZE)
-#define __page_aligned_bss __section(.bss.page_aligned) __aligned(PAGE_SIZE)
+#define __page_aligned_data __section(.kernel.data.page_aligned) __aligned(PAGE_SIZE)
+#define __page_aligned_bss __section(.bss.kernel.page_aligned) __aligned(PAGE_SIZE)
/*
* This is used by architectures to keep arguments on the stack
--- gc.0/include/linux/percpu.h Thu Jul 17 16:42:36 2008
+++ gc.1/include/linux/percpu.h Thu Jul 17 21:07:22 2008
@@ -10,13 +10,13 @@
#ifdef CONFIG_SMP
#define DEFINE_PER_CPU(type, name) \
- __attribute__((__section__(".data.percpu"))) \
+ __attribute__((__section__(".kernel.data.percpu"))) \
PER_CPU_ATTRIBUTES __typeof__(type) per_cpu__##name
#ifdef MODULE
-#define SHARED_ALIGNED_SECTION ".data.percpu"
+#define SHARED_ALIGNED_SECTION ".kernel.data.percpu"
#else
-#define SHARED_ALIGNED_SECTION ".data.percpu.shared_aligned"
+#define SHARED_ALIGNED_SECTION ".kernel.data.percpu.shared_aligned"
#endif
#define DEFINE_PER_CPU_SHARED_ALIGNED(type, name) \
--- gc.0/include/linux/spinlock.h Thu Jul 17 16:42:36 2008
+++ gc.1/include/linux/spinlock.h Thu Jul 17 21:07:22 2008
@@ -59,7 +59,7 @@
/*
* Must define these before including other files, inline functions need them
*/
-#define LOCK_SECTION_NAME ".text.lock."KBUILD_BASENAME
+#define LOCK_SECTION_NAME ".kernel.text.lock."KBUILD_BASENAME
#define LOCK_SECTION_START(extra) \
".subsection 1\n\t" \
--- gc.0/kernel/module.c Thu Jul 17 16:42:37 2008
+++ gc.1/kernel/module.c Thu Jul 17 21:07:22 2008
@@ -433,7 +433,7 @@
Elf_Shdr *sechdrs,
const char *secstrings)
{
- return find_sec(hdr, sechdrs, secstrings, ".data.percpu");
+ return find_sec(hdr, sechdrs, secstrings, ".kernel.data.percpu");
}
static void percpu_modcopy(void *pcpudest, const void *from, unsigned long size)
--- gc.0/scripts/mod/modpost.c Thu Jul 17 16:42:38 2008
+++ gc.1/scripts/mod/modpost.c Thu Jul 17 21:07:22 2008
@@ -794,9 +794,9 @@
/* sections that may refer to an init/exit section with no warning */
static const char *initref_sections[] =
{
- ".text.init.refok*",
- ".exit.text.refok*",
- ".data.init.refok*",
+ ".kernel.text.init.refok*",
+ ".kernel.exit.text.refok*",
+ ".kernel.data.init.refok*",
NULL
};
@@ -915,7 +915,7 @@
* Pattern 0:
* Do not warn if funtion/data are marked with __init_refok/__initdata_refok.
* The pattern is identified by:
- * fromsec = .text.init.refok* | .data.init.refok*
+ * fromsec = .kernel.text.init.refok* | .kernel.data.init.refok*
*
* Pattern 1:
* If a module parameter is declared __initdata and permissions=0
@@ -939,8 +939,8 @@
* *probe_one, *_console, *_timer
*
* Pattern 3:
- * Whitelist all refereces from .text.head to .init.data
- * Whitelist all refereces from .text.head to .init.text
+ * Whitelist all refereces from .kernel.text.head to .init.data
+ * Whitelist all refereces from .kernel.text.head to .init.text
*
* Pattern 4:
* Some symbols belong to init section but still it is ok to reference
^ permalink raw reply
* Re: [PATCH] (updated, rolled up) make section names compatible with -ffunction-sections -fdata-sections
From: Mike Frysinger @ 2008-07-18 1:15 UTC (permalink / raw)
To: Denys Vlasenko
Cc: Andrew Morton, mingo, x86, James Bottomley, Russell King,
David Howells, Ralf Baechle, Lennert Buytenhek, Josh Boyer,
Paul Mackerras, David Woodhouse, Andi Kleen, torvalds,
Paul Gortmaker, linux-embedded, linux-kernel, Tim Bird,
Martin Schwidefsky, Dave Miller, Linux Arch Maintainers, Bryan Wu
In-Reply-To: <200807172213.37411.vda.linux@googlemail.com>
On Thu, Jul 17, 2008 at 4:13 PM, Denys Vlasenko
<vda.linux@googlemail.com> wrote:
> Hi Andrew,
>
> Here is the update against current Linus tree,
> rolled up into one patch.
>
> James Bottomley suggested a different naming scheme:
> instead of swapping parts (.text.head -> .head.text),
> prepend .kernel to our special section names.
> This patch implements his idea.
>
> ppc and v850 are dropped per comments from arch people.
> parisc and x86 had minor fixes. x86 fix added proper
> executable bits to a section:
>
> -.section ".text.head"
> +.section ".kernel.text.head","ax",@progbits
>
> Does arch/m68k/kernel/sun3-head.S need the same fix?
>
> The patch is run-tested on x86_64.
>
> I would like to ask arch maintainers to ACK/NAK this patch,
> and Andrew to act accordingly.
the Blackfin piece is just one line and shouldnt be a problem from our
side. thanks.
btw, arch maintainers have an alias "linux-arch@vger.kernel.org" ...
but it doesnt appear to be in MAINTAINERS ?
-mike
^ permalink raw reply
* Re: [PATCH] (updated, rolled up) make section names compatible with -ffunction-sections -fdata-sections
From: Geert Uytterhoeven @ 2008-07-18 6:17 UTC (permalink / raw)
To: Denys Vlasenko
Cc: Andrew Morton, mingo, x86, James Bottomley, Russell King,
David Howells, Ralf Baechle, Lennert Buytenhek, Josh Boyer,
Paul Mackerras, David Woodhouse, Andi Kleen, Linus Torvalds,
Paul Gortmaker, linux-embedded, Linux Kernel Development,
Tim Bird, Martin Schwidefsky, Dave Miller
In-Reply-To: <200807172213.37411.vda.linux@googlemail.com>
On Thu, 17 Jul 2008, Denys Vlasenko wrote:
> Here is the update against current Linus tree,
> rolled up into one patch.
>
> James Bottomley suggested a different naming scheme:
> instead of swapping parts (.text.head -> .head.text),
> prepend .kernel to our special section names.
> This patch implements his idea.
Why not '.linux'?
> ppc and v850 are dropped per comments from arch people.
> parisc and x86 had minor fixes. x86 fix added proper
> executable bits to a section:
>
> -.section ".text.head"
> +.section ".kernel.text.head","ax",@progbits
>
> Does arch/m68k/kernel/sun3-head.S need the same fix?
Sure, why not?
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
^ permalink raw reply
* Re: [PATCH] (updated, rolled up) make section names compatible with -ffunction-sections -fdata-sections
From: Ralf Baechle @ 2008-07-18 8:14 UTC (permalink / raw)
To: Denys Vlasenko
Cc: Andrew Morton, mingo, x86, James Bottomley, Russell King,
David Howells, Lennert Buytenhek, Josh Boyer, Paul Mackerras,
David Woodhouse, Andi Kleen, torvalds, Paul Gortmaker,
linux-embedded, linux-kernel, Tim Bird, Martin Schwidefsky,
Dave Miller
In-Reply-To: <200807172213.37411.vda.linux@googlemail.com>
On Thu, Jul 17, 2008 at 10:13:37PM +0200, Denys Vlasenko wrote:
> I would like to ask arch maintainers to ACK/NAK this patch,
> and Andrew to act accordingly.
MIPS bits are looking good:
Acked-by: Ralf Baechle <ralf@linux-mips.org>
Is this patch intended to go to Linus for 2.6.27?
Ralf
^ permalink raw reply
* Re: [PATCH] (updated, rolled up) make section names compatible with -ffunction-sections -fdata-sections
From: Ingo Molnar @ 2008-07-18 8:48 UTC (permalink / raw)
To: Denys Vlasenko
Cc: Andrew Morton, x86, James Bottomley, Russell King, David Howells,
Ralf Baechle, Lennert Buytenhek, Josh Boyer, Paul Mackerras,
David Woodhouse, Andi Kleen, torvalds, Paul Gortmaker,
linux-embedded, linux-kernel, Tim Bird, Martin Schwidefsky,
Dave Miller, H. Peter Anvin, Thomas Gleixner
In-Reply-To: <200807172213.37411.vda.linux@googlemail.com>
* Denys Vlasenko <vda.linux@googlemail.com> wrote:
> Hi Andrew,
>
> Here is the update against current Linus tree,
> rolled up into one patch.
>
> James Bottomley suggested a different naming scheme:
> instead of swapping parts (.text.head -> .head.text),
> prepend .kernel to our special section names.
> This patch implements his idea.
>
> ppc and v850 are dropped per comments from arch people.
> parisc and x86 had minor fixes. x86 fix added proper
> executable bits to a section:
>
> -.section ".text.head"
> +.section ".kernel.text.head","ax",@progbits
>
> Does arch/m68k/kernel/sun3-head.S need the same fix?
>
> The patch is run-tested on x86_64.
>
> I would like to ask arch maintainers to ACK/NAK this patch,
> and Andrew to act accordingly.
Acked-by: Ingo Molnar <mingo@elte.hu>
could you please put the ax/progbits fix in front of the queue so that
it becomes bisectable and so that the later patches keep their "it
should not change anything" property?
I.e. do not mix small fixlets into a large set of "no change" patches -
split them out in front. This is really important for the x86 bits as
linker script changes tend to be quite fragile.
Ingo
^ permalink raw reply
* Re: [PATCH] (updated, rolled up) make section names compatible with -ffunction-sections -fdata-sections
From: Greg Ungerer @ 2008-07-18 10:46 UTC (permalink / raw)
To: Denys Vlasenko
Cc: Andrew Morton, mingo, x86, James Bottomley, Russell King,
David Howells, Ralf Baechle, Lennert Buytenhek, Josh Boyer,
Paul Mackerras, David Woodhouse, Andi Kleen, torvalds,
Paul Gortmaker, linux-embedded, linux-kernel, Tim Bird,
Martin Schwidefsky, Dave Miller
In-Reply-To: <200807172213.37411.vda.linux@googlemail.com>
Hi Denys,
Denys Vlasenko wrote:
> Here is the update against current Linus tree,
> rolled up into one patch.
>
> James Bottomley suggested a different naming scheme:
> instead of swapping parts (.text.head -> .head.text),
> prepend .kernel to our special section names.
> This patch implements his idea.
>
> ppc and v850 are dropped per comments from arch people.
> parisc and x86 had minor fixes. x86 fix added proper
> executable bits to a section:
>
> -.section ".text.head"
> +.section ".kernel.text.head","ax",@progbits
>
> Does arch/m68k/kernel/sun3-head.S need the same fix?
>
> The patch is run-tested on x86_64.
>
> I would like to ask arch maintainers to ACK/NAK this patch,
> and Andrew to act accordingly.
I don't see any problems with the m68knommu bits, so for those
Acked-by: Greg Ungerer <gerg@uclinux.org>
Regards
Greg
> Changelog follows:
>
>
>
> The purpose of these patches is to make kernel buildable
> with "gcc -ffunction-sections -fdata-sections".
>
> The problem is that with -ffunction-sections -fdata-sections gcc
> creates sections like .text.head and .data.nosave
> whenever someone has innocuous code like this:
>
> static void head(...) {...}
>
> or this:
>
> int f(...) { static int nosave; ... }
>
> somewhere in the kernel.
>
> Kernel linker script is confused by such names and puts these sections
> in wrong places.
>
> This patch renames all "magic" section names used by kernel
> to not have this format, eliminating the possibility of such collisions.
>
> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
> --
> vda
>
>
> --- gc.0/Documentation/mutex-design.txt Thu Jul 17 16:42:29 2008
> +++ gc.1/Documentation/mutex-design.txt Thu Jul 17 21:07:22 2008
> @@ -66,14 +66,14 @@
>
> c0377ccb <mutex_lock>:
> c0377ccb: f0 ff 08 lock decl (%eax)
> - c0377cce: 78 0e js c0377cde <.text.lock.mutex>
> + c0377cce: 78 0e js c0377cde <.kernel.text.lock.mutex>
> c0377cd0: c3 ret
>
> the unlocking fastpath is equally tight:
>
> c0377cd1 <mutex_unlock>:
> c0377cd1: f0 ff 00 lock incl (%eax)
> - c0377cd4: 7e 0f jle c0377ce5 <.text.lock.mutex+0x7>
> + c0377cd4: 7e 0f jle c0377ce5 <.kernel.text.lock.mutex+0x7>
> c0377cd6: c3 ret
>
> - 'struct mutex' semantics are well-defined and are enforced if
> --- gc.0/arch/alpha/kernel/head.S Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/alpha/kernel/head.S Thu Jul 17 21:07:22 2008
> @@ -10,7 +10,7 @@
> #include <asm/system.h>
> #include <asm/asm-offsets.h>
>
> -.section .text.head, "ax"
> +.section .kernel.text.head, "ax"
> .globl swapper_pg_dir
> .globl _stext
> swapper_pg_dir=SWAPPER_PGD
> --- gc.0/arch/alpha/kernel/init_task.c Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/alpha/kernel/init_task.c Thu Jul 17 21:07:22 2008
> @@ -18,5 +18,5 @@
> EXPORT_SYMBOL(init_task);
>
> union thread_union init_thread_union
> - __attribute__((section(".data.init_thread")))
> + __attribute__((section(".kernel.data.init_thread")))
> = { INIT_THREAD_INFO(init_task) };
> --- gc.0/arch/alpha/kernel/vmlinux.lds.S Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/alpha/kernel/vmlinux.lds.S Thu Jul 17 21:07:22 2008
> @@ -16,7 +16,7 @@
>
> _text = .; /* Text and read-only data */
> .text : {
> - *(.text.head)
> + *(.kernel.text.head)
> TEXT_TEXT
> SCHED_TEXT
> LOCK_TEXT
> @@ -93,18 +93,18 @@
> /* Freed after init ends here */
>
> /* Note 2 page alignment above. */
> - .data.init_thread : {
> - *(.data.init_thread)
> + .kernel.data.init_thread : {
> + *(.kernel.data.init_thread)
> }
>
> . = ALIGN(PAGE_SIZE);
> - .data.page_aligned : {
> - *(.data.page_aligned)
> + .kernel.data.page_aligned : {
> + *(.kernel.data.page_aligned)
> }
>
> . = ALIGN(64);
> - .data.cacheline_aligned : {
> - *(.data.cacheline_aligned)
> + .kernel.data.cacheline_aligned : {
> + *(.kernel.data.cacheline_aligned)
> }
>
> _data = .;
> --- gc.0/arch/arm/kernel/head-nommu.S Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/arm/kernel/head-nommu.S Thu Jul 17 21:07:22 2008
> @@ -33,7 +33,7 @@
> * numbers for r1.
> *
> */
> - .section ".text.head", "ax"
> + .section ".kernel.text.head", "ax"
> .type stext, %function
> ENTRY(stext)
> msr cpsr_c, #PSR_F_BIT | PSR_I_BIT | SVC_MODE @ ensure svc mode
> --- gc.0/arch/arm/kernel/head.S Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/arm/kernel/head.S Thu Jul 17 21:07:22 2008
> @@ -74,7 +74,7 @@
> * crap here - that's what the boot loader (or in extreme, well justified
> * circumstances, zImage) is for.
> */
> - .section ".text.head", "ax"
> + .section ".kernel.text.head", "ax"
> .type stext, %function
> ENTRY(stext)
> msr cpsr_c, #PSR_F_BIT | PSR_I_BIT | SVC_MODE @ ensure svc mode
> --- gc.0/arch/arm/kernel/init_task.c Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/arm/kernel/init_task.c Thu Jul 17 21:07:22 2008
> @@ -30,7 +30,7 @@
> * The things we do for performance..
> */
> union thread_union init_thread_union
> - __attribute__((__section__(".data.init_task"))) =
> + __attribute__((__section__(".kernel.data.init_task"))) =
> { INIT_THREAD_INFO(init_task) };
>
> /*
> --- gc.0/arch/arm/kernel/vmlinux.lds.S Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/arm/kernel/vmlinux.lds.S Thu Jul 17 21:07:22 2008
> @@ -23,10 +23,10 @@
> #else
> . = PAGE_OFFSET + TEXT_OFFSET;
> #endif
> - .text.head : {
> + .kernel.text.head : {
> _stext = .;
> _sinittext = .;
> - *(.text.head)
> + *(.kernel.text.head)
> }
>
> .init : { /* Init code and data */
> @@ -65,8 +65,8 @@
> #endif
> . = ALIGN(4096);
> __per_cpu_start = .;
> - *(.data.percpu)
> - *(.data.percpu.shared_aligned)
> + *(.kernel.data.percpu)
> + *(.kernel.data.percpu.shared_aligned)
> __per_cpu_end = .;
> #ifndef CONFIG_XIP_KERNEL
> __init_begin = _stext;
> @@ -125,7 +125,7 @@
> * first, the init task union, aligned
> * to an 8192 byte boundary.
> */
> - *(.data.init_task)
> + *(.kernel.data.init_task)
>
> #ifdef CONFIG_XIP_KERNEL
> . = ALIGN(4096);
> @@ -137,7 +137,7 @@
>
> . = ALIGN(4096);
> __nosave_begin = .;
> - *(.data.nosave)
> + *(.kernel.data.nosave)
> . = ALIGN(4096);
> __nosave_end = .;
>
> @@ -145,7 +145,7 @@
> * then the cacheline aligned data
> */
> . = ALIGN(32);
> - *(.data.cacheline_aligned)
> + *(.kernel.data.cacheline_aligned)
>
> /*
> * The exception fixup table (might need resorting at runtime)
> --- gc.0/arch/arm/mm/proc-v6.S Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/arm/mm/proc-v6.S Thu Jul 17 21:07:22 2008
> @@ -164,7 +164,7 @@
> .asciz "ARMv6-compatible processor"
> .align
>
> - .section ".text.init", #alloc, #execinstr
> + .section ".kernel.text.init", #alloc, #execinstr
>
> /*
> * __v6_setup
> --- gc.0/arch/arm/mm/proc-v7.S Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/arm/mm/proc-v7.S Thu Jul 17 21:07:22 2008
> @@ -146,7 +146,7 @@
> .ascii "ARMv7 Processor"
> .align
>
> - .section ".text.init", #alloc, #execinstr
> + .section ".kernel.text.init", #alloc, #execinstr
>
> /*
> * __v7_setup
> --- gc.0/arch/arm/mm/tlb-v6.S Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/arm/mm/tlb-v6.S Thu Jul 17 21:07:22 2008
> @@ -87,7 +87,7 @@
> mcr p15, 0, r2, c7, c5, 4 @ prefetch flush
> mov pc, lr
>
> - .section ".text.init", #alloc, #execinstr
> + .section ".kernel.text.init", #alloc, #execinstr
>
> .type v6wbi_tlb_fns, #object
> ENTRY(v6wbi_tlb_fns)
> --- gc.0/arch/arm/mm/tlb-v7.S Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/arm/mm/tlb-v7.S Thu Jul 17 21:07:22 2008
> @@ -78,7 +78,7 @@
> isb
> mov pc, lr
>
> - .section ".text.init", #alloc, #execinstr
> + .section ".kernel.text.init", #alloc, #execinstr
>
> .type v7wbi_tlb_fns, #object
> ENTRY(v7wbi_tlb_fns)
> --- gc.0/arch/avr32/kernel/init_task.c Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/avr32/kernel/init_task.c Thu Jul 17 21:07:22 2008
> @@ -24,7 +24,7 @@
> * Initial thread structure. Must be aligned on an 8192-byte boundary.
> */
> union thread_union init_thread_union
> - __attribute__((__section__(".data.init_task"))) =
> + __attribute__((__section__(".kernel.data.init_task"))) =
> { INIT_THREAD_INFO(init_task) };
>
> /*
> --- gc.0/arch/avr32/kernel/vmlinux.lds.S Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/avr32/kernel/vmlinux.lds.S Thu Jul 17 21:07:22 2008
> @@ -95,15 +95,15 @@
> /*
> * First, the init task union, aligned to an 8K boundary.
> */
> - *(.data.init_task)
> + *(.kernel.data.init_task)
>
> /* Then, the page-aligned data */
> . = ALIGN(PAGE_SIZE);
> - *(.data.page_aligned)
> + *(.kernel.data.page_aligned)
>
> /* Then, the cacheline aligned data */
> . = ALIGN(L1_CACHE_BYTES);
> - *(.data.cacheline_aligned)
> + *(.kernel.data.cacheline_aligned)
>
> /* And the rest... */
> *(.data.rel*)
> --- gc.0/arch/avr32/mm/init.c Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/avr32/mm/init.c Thu Jul 17 21:07:22 2008
> @@ -24,7 +24,7 @@
> #include <asm/setup.h>
> #include <asm/sections.h>
>
> -#define __page_aligned __attribute__((section(".data.page_aligned")))
> +#define __page_aligned __attribute__((section(".kernel.data.page_aligned")))
>
> DEFINE_PER_CPU(struct mmu_gather, mmu_gathers);
>
> --- gc.0/arch/blackfin/kernel/vmlinux.lds.S Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/blackfin/kernel/vmlinux.lds.S Thu Jul 17 21:07:22 2008
> @@ -91,7 +91,7 @@
> __sdata = .;
> /* This gets done first, so the glob doesn't suck it in */
> . = ALIGN(32);
> - *(.data.cacheline_aligned)
> + *(.kernel.data.cacheline_aligned)
>
> #if !L1_DATA_A_LENGTH
> . = ALIGN(32);
> --- gc.0/arch/cris/arch-v10/vmlinux.lds.S Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/cris/arch-v10/vmlinux.lds.S Thu Jul 17 21:07:22 2008
> @@ -51,7 +51,7 @@
> _edata = . ;
>
> . = ALIGN(PAGE_SIZE); /* init_task and stack, must be aligned */
> - .data.init_task : { *(.data.init_task) }
> + .kernel.data.init_task : { *(.kernel.data.init_task) }
>
> . = ALIGN(PAGE_SIZE); /* Init code and data */
> __init_begin = .;
> --- gc.0/arch/cris/arch-v32/vmlinux.lds.S Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/cris/arch-v32/vmlinux.lds.S Thu Jul 17 21:07:22 2008
> @@ -63,7 +63,7 @@
> _edata = . ;
>
> . = ALIGN(PAGE_SIZE); /* init_task and stack, must be aligned. */
> - .data.init_task : { *(.data.init_task) }
> + .kernel.data.init_task : { *(.kernel.data.init_task) }
>
> . = ALIGN(PAGE_SIZE); /* Init code and data. */
> __init_begin = .;
> --- gc.0/arch/cris/kernel/process.c Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/cris/kernel/process.c Thu Jul 17 21:07:22 2008
> @@ -52,7 +52,7 @@
> * "init_task" linker map entry..
> */
> union thread_union init_thread_union
> - __attribute__((__section__(".data.init_task"))) =
> + __attribute__((__section__(".kernel.data.init_task"))) =
> { INIT_THREAD_INFO(init_task) };
>
> /*
> --- gc.0/arch/frv/kernel/break.S Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/frv/kernel/break.S Thu Jul 17 21:07:22 2008
> @@ -21,7 +21,7 @@
> #
> # the break handler has its own stack
> #
> - .section .bss.stack
> + .section .bss.kernel.stack
> .globl __break_user_context
> .balign THREAD_SIZE
> __break_stack:
> @@ -63,7 +63,7 @@
> # entry point for Break Exceptions/Interrupts
> #
> ###############################################################################
> - .section .text.break
> + .section .kernel.text.break
> .balign 4
> .globl __entry_break
> __entry_break:
> --- gc.0/arch/frv/kernel/entry.S Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/frv/kernel/entry.S Thu Jul 17 21:07:22 2008
> @@ -38,7 +38,7 @@
>
> #define nr_syscalls ((syscall_table_size)/4)
>
> - .section .text.entry
> + .section .kernel.text.entry
> .balign 4
>
> .macro LEDS val
> --- gc.0/arch/frv/kernel/head-mmu-fr451.S Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/frv/kernel/head-mmu-fr451.S Thu Jul 17 21:07:22 2008
> @@ -31,7 +31,7 @@
> #define __400_LCR 0xfe000100
> #define __400_LSBR 0xfe000c00
>
> - .section .text.init,"ax"
> + .section .kernel.text.init,"ax"
> .balign 4
>
> ###############################################################################
> --- gc.0/arch/frv/kernel/head-uc-fr401.S Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/frv/kernel/head-uc-fr401.S Thu Jul 17 21:07:22 2008
> @@ -30,7 +30,7 @@
> #define __400_LCR 0xfe000100
> #define __400_LSBR 0xfe000c00
>
> - .section .text.init,"ax"
> + .section .kernel.text.init,"ax"
> .balign 4
>
> ###############################################################################
> --- gc.0/arch/frv/kernel/head-uc-fr451.S Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/frv/kernel/head-uc-fr451.S Thu Jul 17 21:07:22 2008
> @@ -30,7 +30,7 @@
> #define __400_LCR 0xfe000100
> #define __400_LSBR 0xfe000c00
>
> - .section .text.init,"ax"
> + .section .kernel.text.init,"ax"
> .balign 4
>
> ###############################################################################
> --- gc.0/arch/frv/kernel/head-uc-fr555.S Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/frv/kernel/head-uc-fr555.S Thu Jul 17 21:07:22 2008
> @@ -29,7 +29,7 @@
> #define __551_LCR 0xfeff1100
> #define __551_LSBR 0xfeff1c00
>
> - .section .text.init,"ax"
> + .section .kernel.text.init,"ax"
> .balign 4
>
> ###############################################################################
> --- gc.0/arch/frv/kernel/head.S Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/frv/kernel/head.S Thu Jul 17 21:07:22 2008
> @@ -27,7 +27,7 @@
> # command line string
> #
> ###############################################################################
> - .section .text.head,"ax"
> + .section .kernel.text.head,"ax"
> .balign 4
>
> .globl _boot, __head_reference
> @@ -541,7 +541,7 @@
> .size _boot, .-_boot
>
> # provide a point for GDB to place a break
> - .section .text.start,"ax"
> + .section .kernel.text.start,"ax"
> .globl _start
> .balign 4
> _start:
> --- gc.0/arch/frv/kernel/init_task.c Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/frv/kernel/init_task.c Thu Jul 17 21:07:22 2008
> @@ -25,7 +25,7 @@
> * "init_task" linker map entry..
> */
> union thread_union init_thread_union
> - __attribute__((__section__(".data.init_task"))) =
> + __attribute__((__section__(".kernel.data.init_task"))) =
> { INIT_THREAD_INFO(init_task) };
>
> /*
> --- gc.0/arch/frv/kernel/vmlinux.lds.S Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/frv/kernel/vmlinux.lds.S Thu Jul 17 21:07:22 2008
> @@ -26,7 +26,7 @@
>
> _sinittext = .;
> .init.text : {
> - *(.text.head)
> + *(.kernel.text.head)
> #ifndef CONFIG_DEBUG_INFO
> INIT_TEXT
> EXIT_TEXT
> @@ -71,13 +71,13 @@
>
> /* put sections together that have massive alignment issues */
> . = ALIGN(THREAD_SIZE);
> - .data.init_task : {
> + .kernel.data.init_task : {
> /* init task record & stack */
> - *(.data.init_task)
> + *(.kernel.data.init_task)
> }
>
> . = ALIGN(L1_CACHE_BYTES);
> - .data.cacheline_aligned : { *(.data.cacheline_aligned) }
> + .kernel.data.cacheline_aligned : { *(.kernel.data.cacheline_aligned) }
>
> .trap : {
> /* trap table management - read entry-table.S before modifying */
> @@ -94,10 +94,10 @@
> _text = .;
> _stext = .;
> .text : {
> - *(.text.start)
> - *(.text.entry)
> - *(.text.break)
> - *(.text.tlbmiss)
> + *(.kernel.text.start)
> + *(.kernel.text.entry)
> + *(.kernel.text.break)
> + *(.kernel.text.tlbmiss)
> TEXT_TEXT
> SCHED_TEXT
> LOCK_TEXT
> @@ -152,7 +152,7 @@
>
> .sbss : { *(.sbss .sbss.*) }
> .bss : { *(.bss .bss.*) }
> - .bss.stack : { *(.bss) }
> + .bss.kernel.stack : { *(.bss) }
>
> __bss_stop = .;
> _end = . ;
> --- gc.0/arch/frv/mm/tlb-miss.S Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/frv/mm/tlb-miss.S Thu Jul 17 21:07:22 2008
> @@ -16,7 +16,7 @@
> #include <asm/highmem.h>
> #include <asm/spr-regs.h>
>
> - .section .text.tlbmiss
> + .section .kernel.text.tlbmiss
> .balign 4
>
> .globl __entry_insn_mmu_miss
> --- gc.0/arch/h8300/boot/compressed/head.S Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/h8300/boot/compressed/head.S Thu Jul 17 21:07:22 2008
> @@ -9,7 +9,7 @@
>
> #define SRAM_START 0xff4000
>
> - .section .text.startup
> + .section .kernel.text.startup
> .global startup
> startup:
> mov.l #SRAM_START+0x8000, sp
> --- gc.0/arch/h8300/boot/compressed/vmlinux.lds Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/h8300/boot/compressed/vmlinux.lds Thu Jul 17 21:07:22 2008
> @@ -4,7 +4,7 @@
> {
> __stext = . ;
> __text = .;
> - *(.text.startup)
> + *(.kernel.text.startup)
> *(.text)
> __etext = . ;
> }
> --- gc.0/arch/h8300/kernel/init_task.c Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/h8300/kernel/init_task.c Thu Jul 17 21:07:22 2008
> @@ -37,6 +37,6 @@
> * "init_task" linker map entry..
> */
> union thread_union init_thread_union
> - __attribute__((__section__(".data.init_task"))) =
> + __attribute__((__section__(".kernel.data.init_task"))) =
> { INIT_THREAD_INFO(init_task) };
>
> --- gc.0/arch/h8300/kernel/vmlinux.lds.S Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/h8300/kernel/vmlinux.lds.S Thu Jul 17 21:07:22 2008
> @@ -101,7 +101,7 @@
> ___data_start = . ;
>
> . = ALIGN(0x2000) ;
> - *(.data.init_task)
> + *(.kernel.data.init_task)
> . = ALIGN(0x4) ;
> DATA_DATA
> . = ALIGN(0x4) ;
> --- gc.0/arch/ia64/kernel/Makefile Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/ia64/kernel/Makefile Thu Jul 17 21:07:22 2008
> @@ -66,7 +66,7 @@
> $(obj)/gate-syms.o: $(obj)/gate.lds $(obj)/gate.o FORCE
> $(call if_changed,gate)
>
> -# gate-data.o contains the gate DSO image as data in section .data.gate.
> +# gate-data.o contains the gate DSO image as data in section .kernel.data.gate.
> # We must build gate.so before we can assemble it.
> # Note: kbuild does not track this dependency due to usage of .incbin
> $(obj)/gate-data.o: $(obj)/gate.so
> --- gc.0/arch/ia64/kernel/gate-data.S Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/ia64/kernel/gate-data.S Thu Jul 17 21:07:22 2008
> @@ -1,3 +1,3 @@
> - .section .data.gate, "aw"
> + .section .kernel.data.gate, "aw"
>
> .incbin "arch/ia64/kernel/gate.so"
> --- gc.0/arch/ia64/kernel/gate.S Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/ia64/kernel/gate.S Thu Jul 17 21:07:22 2008
> @@ -20,18 +20,18 @@
> * to targets outside the shared object) and to avoid multi-phase kernel builds, we
> * simply create minimalistic "patch lists" in special ELF sections.
> */
> - .section ".data.patch.fsyscall_table", "a"
> + .section ".kernel.data.patch.fsyscall_table", "a"
> .previous
> #define LOAD_FSYSCALL_TABLE(reg) \
> [1:] movl reg=0; \
> - .xdata4 ".data.patch.fsyscall_table", 1b-.
> + .xdata4 ".kernel.data.patch.fsyscall_table", 1b-.
>
> - .section ".data.patch.brl_fsys_bubble_down", "a"
> + .section ".kernel.data.patch.brl_fsys_bubble_down", "a"
> .previous
> #define BRL_COND_FSYS_BUBBLE_DOWN(pr) \
> [1:](pr)brl.cond.sptk 0; \
> ;; \
> - .xdata4 ".data.patch.brl_fsys_bubble_down", 1b-.
> + .xdata4 ".kernel.data.patch.brl_fsys_bubble_down", 1b-.
>
> GLOBAL_ENTRY(__kernel_syscall_via_break)
> .prologue
> --- gc.0/arch/ia64/kernel/gate.lds.S Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/ia64/kernel/gate.lds.S Thu Jul 17 21:07:22 2008
> @@ -32,21 +32,21 @@
> */
> . = GATE_ADDR + 0x600;
>
> - .data.patch : {
> + .kernel.data.patch : {
> __start_gate_mckinley_e9_patchlist = .;
> - *(.data.patch.mckinley_e9)
> + *(.kernel.data.patch.mckinley_e9)
> __end_gate_mckinley_e9_patchlist = .;
>
> __start_gate_vtop_patchlist = .;
> - *(.data.patch.vtop)
> + *(.kernel.data.patch.vtop)
> __end_gate_vtop_patchlist = .;
>
> __start_gate_fsyscall_patchlist = .;
> - *(.data.patch.fsyscall_table)
> + *(.kernel.data.patch.fsyscall_table)
> __end_gate_fsyscall_patchlist = .;
>
> __start_gate_brl_fsys_bubble_down_patchlist = .;
> - *(.data.patch.brl_fsys_bubble_down)
> + *(.kernel.data.patch.brl_fsys_bubble_down)
> __end_gate_brl_fsys_bubble_down_patchlist = .;
> } :readable
>
> --- gc.0/arch/ia64/kernel/head.S Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/ia64/kernel/head.S Thu Jul 17 21:07:22 2008
> @@ -178,7 +178,7 @@
> halt_msg:
> stringz "Halting kernel\n"
>
> - .section .text.head,"ax"
> + .section .kernel.text.head,"ax"
>
> .global start_ap
>
> --- gc.0/arch/ia64/kernel/init_task.c Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/ia64/kernel/init_task.c Thu Jul 17 21:07:22 2008
> @@ -28,7 +28,7 @@
> * Initial task structure.
> *
> * We need to make sure that this is properly aligned due to the way process stacks are
> - * handled. This is done by having a special ".data.init_task" section...
> + * handled. This is done by having a special ".kernel.data.init_task" section...
> */
> #define init_thread_info init_task_mem.s.thread_info
>
> @@ -38,7 +38,7 @@
> struct thread_info thread_info;
> } s;
> unsigned long stack[KERNEL_STACK_SIZE/sizeof (unsigned long)];
> -} init_task_mem asm ("init_task") __attribute__((section(".data.init_task"))) = {{
> +} init_task_mem asm ("init_task") __attribute__((section(".kernel.data.init_task"))) = {{
> .task = INIT_TASK(init_task_mem.s.task),
> .thread_info = INIT_THREAD_INFO(init_task_mem.s.task)
> }};
> --- gc.0/arch/ia64/kernel/ivt.S Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/ia64/kernel/ivt.S Thu Jul 17 21:07:22 2008
> @@ -75,7 +75,7 @@
> mov r19=n;; /* prepare to save predicates */ \
> br.sptk.many dispatch_to_fault_handler
>
> - .section .text.ivt,"ax"
> + .section .kernel.text.ivt,"ax"
>
> .align 32768 // align on 32KB boundary
> .global ia64_ivt
> --- gc.0/arch/ia64/kernel/minstate.h Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/ia64/kernel/minstate.h Thu Jul 17 21:07:22 2008
> @@ -15,7 +15,7 @@
> #define ACCOUNT_SYS_ENTER
> #endif
>
> -.section ".data.patch.rse", "a"
> +.section ".kernel.data.patch.rse", "a"
> .previous
>
> /*
> @@ -214,7 +214,7 @@
> (pUStk) extr.u r17=r18,3,6; \
> (pUStk) sub r16=r18,r22; \
> [1:](pKStk) br.cond.sptk.many 1f; \
> - .xdata4 ".data.patch.rse",1b-. \
> + .xdata4 ".kernel.data.patch.rse",1b-. \
> ;; \
> cmp.ge p6,p7 = 33,r17; \
> ;; \
> --- gc.0/arch/ia64/kernel/vmlinux.lds.S Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/ia64/kernel/vmlinux.lds.S Thu Jul 17 21:07:22 2008
> @@ -9,7 +9,7 @@
>
> #define IVT_TEXT \
> VMLINUX_SYMBOL(__start_ivt_text) = .; \
> - *(.text.ivt) \
> + *(.kernel.text.ivt) \
> VMLINUX_SYMBOL(__end_ivt_text) = .;
>
> OUTPUT_FORMAT("elf64-ia64-little")
> @@ -52,13 +52,13 @@
> KPROBES_TEXT
> *(.gnu.linkonce.t*)
> }
> - .text.head : AT(ADDR(.text.head) - LOAD_OFFSET)
> - { *(.text.head) }
> + .kernel.text.head : AT(ADDR(.kernel.text.head) - LOAD_OFFSET)
> + { *(.kernel.text.head) }
> .text2 : AT(ADDR(.text2) - LOAD_OFFSET)
> { *(.text2) }
> #ifdef CONFIG_SMP
> - .text.lock : AT(ADDR(.text.lock) - LOAD_OFFSET)
> - { *(.text.lock) }
> + .kernel.text.lock : AT(ADDR(.kernel.text.lock) - LOAD_OFFSET)
> + { *(.kernel.text.lock) }
> #endif
> _etext = .;
>
> @@ -85,10 +85,10 @@
> __stop___mca_table = .;
> }
>
> - .data.patch.phys_stack_reg : AT(ADDR(.data.patch.phys_stack_reg) - LOAD_OFFSET)
> + .kernel.data.patch.phys_stack_reg : AT(ADDR(.kernel.data.patch.phys_stack_reg) - LOAD_OFFSET)
> {
> __start___phys_stack_reg_patchlist = .;
> - *(.data.patch.phys_stack_reg)
> + *(.kernel.data.patch.phys_stack_reg)
> __end___phys_stack_reg_patchlist = .;
> }
>
> @@ -149,24 +149,24 @@
> __initcall_end = .;
> }
>
> - .data.patch.vtop : AT(ADDR(.data.patch.vtop) - LOAD_OFFSET)
> + .kernel.data.patch.vtop : AT(ADDR(.kernel.data.patch.vtop) - LOAD_OFFSET)
> {
> __start___vtop_patchlist = .;
> - *(.data.patch.vtop)
> + *(.kernel.data.patch.vtop)
> __end___vtop_patchlist = .;
> }
>
> - .data.patch.rse : AT(ADDR(.data.patch.rse) - LOAD_OFFSET)
> + .kernel.data.patch.rse : AT(ADDR(.kernel.data.patch.rse) - LOAD_OFFSET)
> {
> __start___rse_patchlist = .;
> - *(.data.patch.rse)
> + *(.kernel.data.patch.rse)
> __end___rse_patchlist = .;
> }
>
> - .data.patch.mckinley_e9 : AT(ADDR(.data.patch.mckinley_e9) - LOAD_OFFSET)
> + .kernel.data.patch.mckinley_e9 : AT(ADDR(.kernel.data.patch.mckinley_e9) - LOAD_OFFSET)
> {
> __start___mckinley_e9_bundles = .;
> - *(.data.patch.mckinley_e9)
> + *(.kernel.data.patch.mckinley_e9)
> __end___mckinley_e9_bundles = .;
> }
>
> @@ -194,34 +194,34 @@
> __init_end = .;
>
> /* The initial task and kernel stack */
> - .data.init_task : AT(ADDR(.data.init_task) - LOAD_OFFSET)
> - { *(.data.init_task) }
> + .kernel.data.init_task : AT(ADDR(.kernel.data.init_task) - LOAD_OFFSET)
> + { *(.kernel.data.init_task) }
>
> - .data.page_aligned : AT(ADDR(.data.page_aligned) - LOAD_OFFSET)
> + .kernel.data.page_aligned : AT(ADDR(.kernel.data.page_aligned) - LOAD_OFFSET)
> { *(__special_page_section)
> __start_gate_section = .;
> - *(.data.gate)
> + *(.kernel.data.gate)
> __stop_gate_section = .;
> }
> . = ALIGN(PAGE_SIZE); /* make sure the gate page doesn't expose
> * kernel data
> */
>
> - .data.read_mostly : AT(ADDR(.data.read_mostly) - LOAD_OFFSET)
> - { *(.data.read_mostly) }
> + .kernel.data.read_mostly : AT(ADDR(.kernel.data.read_mostly) - LOAD_OFFSET)
> + { *(.kernel.data.read_mostly) }
>
> - .data.cacheline_aligned : AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET)
> - { *(.data.cacheline_aligned) }
> + .kernel.data.cacheline_aligned : AT(ADDR(.kernel.data.cacheline_aligned) - LOAD_OFFSET)
> + { *(.kernel.data.cacheline_aligned) }
>
> /* Per-cpu data: */
> percpu : { } :percpu
> . = ALIGN(PERCPU_PAGE_SIZE);
> __phys_per_cpu_start = .;
> - .data.percpu PERCPU_ADDR : AT(__phys_per_cpu_start - LOAD_OFFSET)
> + .kernel.data.percpu PERCPU_ADDR : AT(__phys_per_cpu_start - LOAD_OFFSET)
> {
> __per_cpu_start = .;
> - *(.data.percpu)
> - *(.data.percpu.shared_aligned)
> + *(.kernel.data.percpu)
> + *(.kernel.data.percpu.shared_aligned)
> __per_cpu_end = .;
> }
> . = __phys_per_cpu_start + PERCPU_PAGE_SIZE; /* ensure percpu data fits
> --- gc.0/arch/ia64/kvm/vmm_ivt.S Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/ia64/kvm/vmm_ivt.S Thu Jul 17 21:07:22 2008
> @@ -97,7 +97,7 @@
>
>
>
> - .section .text.ivt,"ax"
> + .section .kernel.text.ivt,"ax"
>
> .align 32768 // align on 32KB boundary
> .global kvm_ia64_ivt
> --- gc.0/arch/m32r/kernel/init_task.c Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/m32r/kernel/init_task.c Thu Jul 17 21:07:22 2008
> @@ -26,7 +26,7 @@
> * "init_task" linker map entry..
> */
> union thread_union init_thread_union
> - __attribute__((__section__(".data.init_task"))) =
> + __attribute__((__section__(".kernel.data.init_task"))) =
> { INIT_THREAD_INFO(init_task) };
>
> /*
> --- gc.0/arch/m32r/kernel/vmlinux.lds.S Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/m32r/kernel/vmlinux.lds.S Thu Jul 17 21:07:22 2008
> @@ -56,17 +56,17 @@
>
> . = ALIGN(4096);
> __nosave_begin = .;
> - .data_nosave : { *(.data.nosave) }
> + .data_nosave : { *(.kernel.data.nosave) }
> . = ALIGN(4096);
> __nosave_end = .;
>
> . = ALIGN(32);
> - .data.cacheline_aligned : { *(.data.cacheline_aligned) }
> + .kernel.data.cacheline_aligned : { *(.kernel.data.cacheline_aligned) }
>
> _edata = .; /* End of data section */
>
> . = ALIGN(8192); /* init_task */
> - .data.init_task : { *(.data.init_task) }
> + .kernel.data.init_task : { *(.kernel.data.init_task) }
>
> /* will be freed after init */
> . = ALIGN(4096); /* Init code and data */
> --- gc.0/arch/m68k/kernel/head.S Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/m68k/kernel/head.S Thu Jul 17 21:07:22 2008
> @@ -577,7 +577,7 @@
> #endif
> .endm
>
> -.section ".text.head","ax"
> +.section ".kernel.text.head","ax"
> ENTRY(_stext)
> /*
> * Version numbers of the bootinfo interface
> --- gc.0/arch/m68k/kernel/process.c Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/m68k/kernel/process.c Thu Jul 17 21:07:22 2008
> @@ -48,7 +48,7 @@
> EXPORT_SYMBOL(init_mm);
>
> union thread_union init_thread_union
> -__attribute__((section(".data.init_task"), aligned(THREAD_SIZE)))
> +__attribute__((section(".kernel.data.init_task"), aligned(THREAD_SIZE)))
> = { INIT_THREAD_INFO(init_task) };
>
> /* initial task structure */
> --- gc.0/arch/m68k/kernel/sun3-head.S Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/m68k/kernel/sun3-head.S Thu Jul 17 21:07:22 2008
> @@ -29,7 +29,7 @@
> .globl kernel_pg_dir
> .equ kernel_pg_dir,kernel_pmd_table
>
> - .section .text.head
> + .section .kernel.text.head
> ENTRY(_stext)
> ENTRY(_start)
>
> --- gc.0/arch/m68k/kernel/vmlinux-std.lds Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/m68k/kernel/vmlinux-std.lds Thu Jul 17 21:07:22 2008
> @@ -11,7 +11,7 @@
> . = 0x1000;
> _text = .; /* Text and read-only data */
> .text : {
> - *(.text.head)
> + *(.kernel.text.head)
> TEXT_TEXT
> SCHED_TEXT
> LOCK_TEXT
> @@ -36,7 +36,7 @@
> .bss : { *(.bss) } /* BSS */
>
> . = ALIGN(16);
> - .data.cacheline_aligned : { *(.data.cacheline_aligned) } :data
> + .kernel.data.cacheline_aligned : { *(.kernel.data.cacheline_aligned) } :data
>
> _edata = .; /* End of data section */
>
> @@ -76,7 +76,7 @@
> . = ALIGN(8192);
> __init_end = .;
>
> - .data.init_task : { *(.data.init_task) } /* The initial task and kernel stack */
> + .kernel.data.init_task : { *(.kernel.data.init_task) } /* The initial task and kernel stack */
>
> _end = . ;
>
> --- gc.0/arch/m68k/kernel/vmlinux-sun3.lds Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/m68k/kernel/vmlinux-sun3.lds Thu Jul 17 21:07:22 2008
> @@ -11,7 +11,7 @@
> . = 0xE002000;
> _text = .; /* Text and read-only data */
> .text : {
> - *(.text.head)
> + *(.kernel.text.head)
> TEXT_TEXT
> SCHED_TEXT
> LOCK_TEXT
> @@ -68,7 +68,7 @@
> #endif
> . = ALIGN(8192);
> __init_end = .;
> - .data.init.task : { *(.data.init_task) }
> + .kernel.data.init.task : { *(.kernel.data.init_task) }
>
>
> .bss : { *(.bss) } /* BSS */
> --- gc.0/arch/m68knommu/kernel/init_task.c Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/m68knommu/kernel/init_task.c Thu Jul 17 21:07:22 2008
> @@ -37,6 +37,6 @@
> * "init_task" linker map entry..
> */
> union thread_union init_thread_union
> - __attribute__((__section__(".data.init_task"))) =
> + __attribute__((__section__(".kernel.data.init_task"))) =
> { INIT_THREAD_INFO(init_task) };
>
> --- gc.0/arch/m68knommu/kernel/vmlinux.lds.S Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/m68knommu/kernel/vmlinux.lds.S Thu Jul 17 21:07:22 2008
> @@ -55,7 +55,7 @@
> .romvec : {
> __rom_start = . ;
> _romvec = .;
> - *(.data.initvect)
> + *(.kernel.data.initvect)
> } > romvec
> #endif
>
> @@ -65,7 +65,7 @@
> TEXT_TEXT
> SCHED_TEXT
> LOCK_TEXT
> - *(.text.lock)
> + *(.kernel.text.lock)
>
> . = ALIGN(16); /* Exception table */
> __start___ex_table = .;
> @@ -147,7 +147,7 @@
> _sdata = . ;
> DATA_DATA
> . = ALIGN(8192) ;
> - *(.data.init_task)
> + *(.kernel.data.init_task)
> _edata = . ;
> } > DATA
>
> --- gc.0/arch/m68knommu/platform/68360/head-ram.S Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/m68knommu/platform/68360/head-ram.S Thu Jul 17 21:07:22 2008
> @@ -280,7 +280,7 @@
> * and then overwritten as needed.
> */
>
> -.section ".data.initvect","awx"
> +.section ".kernel.data.initvect","awx"
> .long RAMEND /* Reset: Initial Stack Pointer - 0. */
> .long _start /* Reset: Initial Program Counter - 1. */
> .long buserr /* Bus Error - 2. */
> --- gc.0/arch/m68knommu/platform/68360/head-rom.S Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/m68knommu/platform/68360/head-rom.S Thu Jul 17 21:07:22 2008
> @@ -291,7 +291,7 @@
> * and then overwritten as needed.
> */
>
> -.section ".data.initvect","awx"
> +.section ".kernel.data.initvect","awx"
> .long RAMEND /* Reset: Initial Stack Pointer - 0. */
> .long _start /* Reset: Initial Program Counter - 1. */
> .long buserr /* Bus Error - 2. */
> --- gc.0/arch/mips/kernel/init_task.c Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/mips/kernel/init_task.c Thu Jul 17 21:07:22 2008
> @@ -27,7 +27,7 @@
> * The things we do for performance..
> */
> union thread_union init_thread_union
> - __attribute__((__section__(".data.init_task"),
> + __attribute__((__section__(".kernel.data.init_task"),
> __aligned__(THREAD_SIZE))) =
> { INIT_THREAD_INFO(init_task) };
>
> --- gc.0/arch/mips/kernel/vmlinux.lds.S Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/mips/kernel/vmlinux.lds.S Thu Jul 17 21:07:22 2008
> @@ -76,7 +76,7 @@
> * object file alignment. Using 32768
> */
> . = ALIGN(_PAGE_SIZE);
> - *(.data.init_task)
> + *(.kernel.data.init_task)
>
> DATA_DATA
> CONSTRUCTORS
> @@ -98,14 +98,14 @@
> . = ALIGN(_PAGE_SIZE);
> .data_nosave : {
> __nosave_begin = .;
> - *(.data.nosave)
> + *(.kernel.data.nosave)
> }
> . = ALIGN(_PAGE_SIZE);
> __nosave_end = .;
>
> . = ALIGN(32);
> - .data.cacheline_aligned : {
> - *(.data.cacheline_aligned)
> + .kernel.data.cacheline_aligned : {
> + *(.kernel.data.cacheline_aligned)
> }
> _edata = .; /* End of data section */
>
> --- gc.0/arch/mips/lasat/image/head.S Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/mips/lasat/image/head.S Thu Jul 17 21:07:22 2008
> @@ -1,7 +1,7 @@
> #include <asm/lasat/head.h>
>
> .text
> - .section .text.start, "ax"
> + .section .kernel.text.start, "ax"
> .set noreorder
> .set mips3
>
> --- gc.0/arch/mips/lasat/image/romscript.normal Thu Jul 17 16:42:29 2008
> +++ gc.1/arch/mips/lasat/image/romscript.normal Thu Jul 17 21:07:22 2008
> @@ -4,7 +4,7 @@
> {
> .text :
> {
> - *(.text.start)
> + *(.kernel.text.start)
> }
>
> /* Data in ROM */
> --- gc.0/arch/mn10300/kernel/head.S Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/mn10300/kernel/head.S Thu Jul 17 21:07:22 2008
> @@ -19,7 +19,7 @@
> #include <asm/param.h>
> #include <asm/unit/serial.h>
>
> - .section .text.head,"ax"
> + .section .kernel.text.head,"ax"
>
> ###############################################################################
> #
> --- gc.0/arch/mn10300/kernel/init_task.c Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/mn10300/kernel/init_task.c Thu Jul 17 21:07:22 2008
> @@ -32,7 +32,7 @@
> * "init_task" linker map entry..
> */
> union thread_union init_thread_union
> - __attribute__((__section__(".data.init_task"))) =
> + __attribute__((__section__(".kernel.data.init_task"))) =
> { INIT_THREAD_INFO(init_task) };
>
> /*
> --- gc.0/arch/mn10300/kernel/vmlinux.lds.S Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/mn10300/kernel/vmlinux.lds.S Thu Jul 17 21:07:22 2008
> @@ -27,7 +27,7 @@
> _text = .; /* Text and read-only data */
> .text : {
> *(
> - .text.head
> + .kernel.text.head
> .text
> )
> TEXT_TEXT
> @@ -57,25 +57,25 @@
>
> . = ALIGN(4096);
> __nosave_begin = .;
> - .data_nosave : { *(.data.nosave) }
> + .data_nosave : { *(.kernel.data.nosave) }
> . = ALIGN(4096);
> __nosave_end = .;
>
> . = ALIGN(4096);
> - .data.page_aligned : { *(.data.idt) }
> + .kernel.data.page_aligned : { *(.kernel.data.idt) }
>
> . = ALIGN(32);
> - .data.cacheline_aligned : { *(.data.cacheline_aligned) }
> + .kernel.data.cacheline_aligned : { *(.kernel.data.cacheline_aligned) }
>
> /* rarely changed data like cpu maps */
> . = ALIGN(32);
> - .data.read_mostly : AT(ADDR(.data.read_mostly)) {
> - *(.data.read_mostly)
> + .kernel.data.read_mostly : AT(ADDR(.kernel.data.read_mostly)) {
> + *(.kernel.data.read_mostly)
> _edata = .; /* End of data section */
> }
>
> . = ALIGN(THREAD_SIZE); /* init_task */
> - .data.init_task : { *(.data.init_task) }
> + .kernel.data.init_task : { *(.kernel.data.init_task) }
>
> /* might get freed after init */
> . = ALIGN(4096);
> @@ -128,7 +128,7 @@
>
> . = ALIGN(32);
> __per_cpu_start = .;
> - .data.percpu : { *(.data.percpu) }
> + .kernel.data.percpu : { *(.kernel.data.percpu) }
> __per_cpu_end = .;
> . = ALIGN(4096);
> __init_end = .;
> @@ -136,7 +136,7 @@
>
> __bss_start = .; /* BSS */
> .bss : {
> - *(.bss.page_aligned)
> + *(.bss.kernel.page_aligned)
> *(.bss)
> }
> . = ALIGN(4);
> --- gc.0/arch/parisc/kernel/head.S Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/parisc/kernel/head.S Thu Jul 17 21:07:22 2008
> @@ -345,7 +345,7 @@
> ENDPROC(stext)
>
> #ifndef CONFIG_64BIT
> - .section .data.read_mostly
> + .section .kernel.data.read_mostly
>
> .align 4
> .export $global$,data
> --- gc.0/arch/parisc/kernel/init_task.c Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/parisc/kernel/init_task.c Thu Jul 17 21:07:22 2008
> @@ -49,7 +49,7 @@
> * "init_task" linker map entry..
> */
> union thread_union init_thread_union
> - __attribute__((aligned(128))) __attribute__((__section__(".data.init_task"))) =
> + __attribute__((aligned(128))) __attribute__((__section__(".kernel.data.init_task"))) =
> { INIT_THREAD_INFO(init_task) };
>
> #if PT_NLEVELS == 3
> @@ -58,11 +58,11 @@
> * guarantee that global objects will be laid out in memory in the same order
> * as the order of declaration, so put these in different sections and use
> * the linker script to order them. */
> -pmd_t pmd0[PTRS_PER_PMD] __attribute__ ((__section__ (".data.vm0.pmd"), aligned(PAGE_SIZE)));
> +pmd_t pmd0[PTRS_PER_PMD] __attribute__ ((__section__ (".kernel.data.vm0.pmd"), aligned(PAGE_SIZE)));
> #endif
>
> -pgd_t swapper_pg_dir[PTRS_PER_PGD] __attribute__ ((__section__ (".data.vm0.pgd"), aligned(PAGE_SIZE)));
> -pte_t pg0[PT_INITIAL * PTRS_PER_PTE] __attribute__ ((__section__ (".data.vm0.pte"), aligned(PAGE_SIZE)));
> +pgd_t swapper_pg_dir[PTRS_PER_PGD] __attribute__ ((__section__ (".kernel.data.vm0.pgd"), aligned(PAGE_SIZE)));
> +pte_t pg0[PT_INITIAL * PTRS_PER_PTE] __attribute__ ((__section__ (".kernel.data.vm0.pte"), aligned(PAGE_SIZE)));
>
> /*
> * Initial task structure.
> --- gc.0/arch/parisc/kernel/vmlinux.lds.S Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/parisc/kernel/vmlinux.lds.S Thu Jul 17 21:07:22 2008
> @@ -94,8 +94,8 @@
>
> /* rarely changed data like cpu maps */
> . = ALIGN(16);
> - .data.read_mostly : {
> - *(.data.read_mostly)
> + .kernel.data.read_mostly : {
> + *(.kernel.data.read_mostly)
> }
>
> . = ALIGN(L1_CACHE_BYTES);
> @@ -106,14 +106,14 @@
> }
>
> . = ALIGN(L1_CACHE_BYTES);
> - .data.cacheline_aligned : {
> - *(.data.cacheline_aligned)
> + .kernel.data.cacheline_aligned : {
> + *(.kernel.data.cacheline_aligned)
> }
>
> /* PA-RISC locks requires 16-byte alignment */
> . = ALIGN(16);
> - .data.lock_aligned : {
> - *(.data.lock_aligned)
> + .kernel.data.lock_aligned : {
> + *(.kernel.data.lock_aligned)
> }
>
> /* nosave data is really only used for software suspend...it's here
> @@ -122,7 +122,7 @@
> . = ALIGN(PAGE_SIZE);
> __nosave_begin = .;
> .data_nosave : {
> - *(.data.nosave)
> + *(.kernel.data.nosave)
> }
> . = ALIGN(PAGE_SIZE);
> __nosave_end = .;
> @@ -134,10 +134,10 @@
> __bss_start = .;
> /* page table entries need to be PAGE_SIZE aligned */
> . = ALIGN(PAGE_SIZE);
> - .data.vmpages : {
> - *(.data.vm0.pmd)
> - *(.data.vm0.pgd)
> - *(.data.vm0.pte)
> + .kernel.data.vmpages : {
> + *(.kernel.data.vm0.pmd)
> + *(.kernel.data.vm0.pgd)
> + *(.kernel.data.vm0.pte)
> }
> .bss : {
> *(.bss)
> @@ -149,8 +149,8 @@
> /* assembler code expects init_task to be 16k aligned */
> . = ALIGN(16384);
> /* init_task */
> - .data.init_task : {
> - *(.data.init_task)
> + .kernel.data.init_task : {
> + *(.kernel.data.init_task)
> }
>
> #ifdef CONFIG_64BIT
> --- gc.0/arch/powerpc/kernel/head_32.S Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/powerpc/kernel/head_32.S Thu Jul 17 21:07:22 2008
> @@ -49,7 +49,7 @@
> mtspr SPRN_DBAT##n##L,RB; \
> 1:
>
> - .section .text.head, "ax"
> + .section .kernel.text.head, "ax"
> .stabs "arch/powerpc/kernel/",N_SO,0,0,0f
> .stabs "head_32.S",N_SO,0,0,0f
> 0:
> --- gc.0/arch/powerpc/kernel/head_40x.S Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/powerpc/kernel/head_40x.S Thu Jul 17 21:07:22 2008
> @@ -52,7 +52,7 @@
> *
> * This is all going to change RSN when we add bi_recs....... -- Dan
> */
> - .section .text.head, "ax"
> + .section .kernel.text.head, "ax"
> _ENTRY(_stext);
> _ENTRY(_start);
>
> --- gc.0/arch/powerpc/kernel/head_44x.S Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/powerpc/kernel/head_44x.S Thu Jul 17 21:07:22 2008
> @@ -50,7 +50,7 @@
> * r7 - End of kernel command line string
> *
> */
> - .section .text.head, "ax"
> + .section .kernel.text.head, "ax"
> _ENTRY(_stext);
> _ENTRY(_start);
> /*
> --- gc.0/arch/powerpc/kernel/head_8xx.S Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/powerpc/kernel/head_8xx.S Thu Jul 17 21:07:22 2008
> @@ -38,7 +38,7 @@
> #else
> #define DO_8xx_CPU6(val, reg)
> #endif
> - .section .text.head, "ax"
> + .section .kernel.text.head, "ax"
> _ENTRY(_stext);
> _ENTRY(_start);
>
> --- gc.0/arch/powerpc/kernel/head_fsl_booke.S Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/powerpc/kernel/head_fsl_booke.S Thu Jul 17 21:07:22 2008
> @@ -53,7 +53,7 @@
> * r7 - End of kernel command line string
> *
> */
> - .section .text.head, "ax"
> + .section .kernel.text.head, "ax"
> _ENTRY(_stext);
> _ENTRY(_start);
> /*
> --- gc.0/arch/powerpc/kernel/init_task.c Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/powerpc/kernel/init_task.c Thu Jul 17 21:07:22 2008
> @@ -22,7 +22,7 @@
> * "init_task" linker map entry..
> */
> union thread_union init_thread_union
> - __attribute__((__section__(".data.init_task"))) =
> + __attribute__((__section__(".kernel.data.init_task"))) =
> { INIT_THREAD_INFO(init_task) };
>
> /*
> --- gc.0/arch/powerpc/kernel/machine_kexec_64.c Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/powerpc/kernel/machine_kexec_64.c Thu Jul 17 21:07:22 2008
> @@ -250,7 +250,7 @@
> * current, but that audit has not been performed.
> */
> static union thread_union kexec_stack
> - __attribute__((__section__(".data.init_task"))) = { };
> + __attribute__((__section__(".kernel.data.init_task"))) = { };
>
> /* Our assembly helper, in kexec_stub.S */
> extern NORET_TYPE void kexec_sequence(void *newstack, unsigned long start,
> --- gc.0/arch/powerpc/kernel/vdso.c Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/powerpc/kernel/vdso.c Thu Jul 17 21:07:22 2008
> @@ -74,7 +74,7 @@
> static union {
> struct vdso_data data;
> u8 page[PAGE_SIZE];
> -} vdso_data_store __attribute__((__section__(".data.page_aligned")));
> +} vdso_data_store __attribute__((__section__(".kernel.data.page_aligned")));
> struct vdso_data *vdso_data = &vdso_data_store.data;
>
> /* Format of the patch table */
> --- gc.0/arch/powerpc/kernel/vdso32/vdso32_wrapper.S Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/powerpc/kernel/vdso32/vdso32_wrapper.S Thu Jul 17 21:07:22 2008
> @@ -1,7 +1,7 @@
> #include <linux/init.h>
> #include <asm/page.h>
>
> - .section ".data.page_aligned"
> + .section ".kernel.data.page_aligned"
>
> .globl vdso32_start, vdso32_end
> .balign PAGE_SIZE
> --- gc.0/arch/powerpc/kernel/vdso64/vdso64_wrapper.S Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/powerpc/kernel/vdso64/vdso64_wrapper.S Thu Jul 17 21:07:22 2008
> @@ -1,7 +1,7 @@
> #include <linux/init.h>
> #include <asm/page.h>
>
> - .section ".data.page_aligned"
> + .section ".kernel.data.page_aligned"
>
> .globl vdso64_start, vdso64_end
> .balign PAGE_SIZE
> --- gc.0/arch/powerpc/kernel/vmlinux.lds.S Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/powerpc/kernel/vmlinux.lds.S Thu Jul 17 21:07:22 2008
> @@ -33,9 +33,9 @@
> /* Text and gots */
> .text : AT(ADDR(.text) - LOAD_OFFSET) {
> ALIGN_FUNCTION();
> - *(.text.head)
> + *(.kernel.text.head)
> _text = .;
> - *(.text .fixup .text.init.refok .exit.text.refok __ftr_alt_*)
> + *(.text .fixup .kernel.text.init.refok .kernel.exit.text.refok __ftr_alt_*)
> SCHED_TEXT
> LOCK_TEXT
> KPROBES_TEXT
> @@ -148,10 +148,10 @@
> }
> #endif
> . = ALIGN(PAGE_SIZE);
> - .data.percpu : AT(ADDR(.data.percpu) - LOAD_OFFSET) {
> + .kernel.data.percpu : AT(ADDR(.kernel.data.percpu) - LOAD_OFFSET) {
> __per_cpu_start = .;
> - *(.data.percpu)
> - *(.data.percpu.shared_aligned)
> + *(.kernel.data.percpu)
> + *(.kernel.data.percpu.shared_aligned)
> __per_cpu_end = .;
> }
>
> @@ -208,28 +208,28 @@
> #else
> . = ALIGN(16384);
> #endif
> - .data.init_task : AT(ADDR(.data.init_task) - LOAD_OFFSET) {
> - *(.data.init_task)
> + .kernel.data.init_task : AT(ADDR(.kernel.data.init_task) - LOAD_OFFSET) {
> + *(.kernel.data.init_task)
> }
>
> . = ALIGN(PAGE_SIZE);
> - .data.page_aligned : AT(ADDR(.data.page_aligned) - LOAD_OFFSET) {
> - *(.data.page_aligned)
> + .kernel.data.page_aligned : AT(ADDR(.kernel.data.page_aligned) - LOAD_OFFSET) {
> + *(.kernel.data.page_aligned)
> }
>
> - .data.cacheline_aligned : AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET) {
> - *(.data.cacheline_aligned)
> + .kernel.data.cacheline_aligned : AT(ADDR(.kernel.data.cacheline_aligned) - LOAD_OFFSET) {
> + *(.kernel.data.cacheline_aligned)
> }
>
> . = ALIGN(L1_CACHE_BYTES);
> - .data.read_mostly : AT(ADDR(.data.read_mostly) - LOAD_OFFSET) {
> - *(.data.read_mostly)
> + .kernel.data.read_mostly : AT(ADDR(.kernel.data.read_mostly) - LOAD_OFFSET) {
> + *(.kernel.data.read_mostly)
> }
>
> . = ALIGN(PAGE_SIZE);
> .data_nosave : AT(ADDR(.data_nosave) - LOAD_OFFSET) {
> __nosave_begin = .;
> - *(.data.nosave)
> + *(.kernel.data.nosave)
> . = ALIGN(PAGE_SIZE);
> __nosave_end = .;
> }
> --- gc.0/arch/s390/kernel/head.S Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/s390/kernel/head.S Thu Jul 17 21:07:22 2008
> @@ -35,7 +35,7 @@
> #define ARCH_OFFSET 0
> #endif
>
> -.section ".text.head","ax"
> +.section ".kernel.text.head","ax"
> #ifndef CONFIG_IPL
> .org 0
> .long 0x00080000,0x80000000+startup # Just a restart PSW
> --- gc.0/arch/s390/kernel/init_task.c Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/s390/kernel/init_task.c Thu Jul 17 21:07:22 2008
> @@ -31,7 +31,7 @@
> * "init_task" linker map entry..
> */
> union thread_union init_thread_union
> - __attribute__((__section__(".data.init_task"))) =
> + __attribute__((__section__(".kernel.data.init_task"))) =
> { INIT_THREAD_INFO(init_task) };
>
> /*
> --- gc.0/arch/s390/kernel/vmlinux.lds.S Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/s390/kernel/vmlinux.lds.S Thu Jul 17 21:07:22 2008
> @@ -28,7 +28,7 @@
> . = 0x00000000;
> .text : {
> _text = .; /* Text and read-only data */
> - *(.text.head)
> + *(.kernel.text.head)
> TEXT_TEXT
> SCHED_TEXT
> LOCK_TEXT
> @@ -65,30 +65,30 @@
> . = ALIGN(PAGE_SIZE);
> .data_nosave : {
> __nosave_begin = .;
> - *(.data.nosave)
> + *(.kernel.data.nosave)
> }
> . = ALIGN(PAGE_SIZE);
> __nosave_end = .;
>
> . = ALIGN(PAGE_SIZE);
> - .data.page_aligned : {
> - *(.data.idt)
> + .kernel.data.page_aligned : {
> + *(.kernel.data.idt)
> }
>
> . = ALIGN(0x100);
> - .data.cacheline_aligned : {
> - *(.data.cacheline_aligned)
> + .kernel.data.cacheline_aligned : {
> + *(.kernel.data.cacheline_aligned)
> }
>
> . = ALIGN(0x100);
> - .data.read_mostly : {
> - *(.data.read_mostly)
> + .kernel.data.read_mostly : {
> + *(.kernel.data.read_mostly)
> }
> _edata = .; /* End of data section */
>
> . = ALIGN(2 * PAGE_SIZE); /* init_task */
> - .data.init_task : {
> - *(.data.init_task)
> + .kernel.data.init_task : {
> + *(.kernel.data.init_task)
> }
>
> /* will be freed after init */
> --- gc.0/arch/sh/kernel/cpu/sh5/entry.S Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/sh/kernel/cpu/sh5/entry.S Thu Jul 17 21:07:22 2008
> @@ -2063,10 +2063,10 @@
>
>
> /*
> - * --- .text.init Section
> + * --- .kernel.text.init Section
> */
>
> - .section .text.init, "ax"
> + .section .kernel.text.init, "ax"
>
> /*
> * void trap_init (void)
> --- gc.0/arch/sh/kernel/head_32.S Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/sh/kernel/head_32.S Thu Jul 17 21:07:22 2008
> @@ -40,7 +40,7 @@
> 1:
> .skip PAGE_SIZE - empty_zero_page - 1b
>
> - .section .text.head, "ax"
> + .section .kernel.text.head, "ax"
>
> /*
> * Condition at the entry of _stext:
> --- gc.0/arch/sh/kernel/head_64.S Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/sh/kernel/head_64.S Thu Jul 17 21:07:22 2008
> @@ -110,7 +110,7 @@
> fpu_in_use: .quad 0
>
>
> - .section .text.head, "ax"
> + .section .kernel.text.head, "ax"
> .balign L1_CACHE_BYTES
> /*
> * Condition at the entry of __stext:
> --- gc.0/arch/sh/kernel/init_task.c Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/sh/kernel/init_task.c Thu Jul 17 21:07:22 2008
> @@ -22,7 +22,7 @@
> * "init_task" linker map entry..
> */
> union thread_union init_thread_union
> - __attribute__((__section__(".data.init_task"))) =
> + __attribute__((__section__(".kernel.data.init_task"))) =
> { INIT_THREAD_INFO(init_task) };
>
> /*
> --- gc.0/arch/sh/kernel/irq.c Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/sh/kernel/irq.c Thu Jul 17 21:07:22 2008
> @@ -158,10 +158,10 @@
>
> #ifdef CONFIG_IRQSTACKS
> static char softirq_stack[NR_CPUS * THREAD_SIZE]
> - __attribute__((__section__(".bss.page_aligned")));
> + __attribute__((__section__(".bss.kernel.page_aligned")));
>
> static char hardirq_stack[NR_CPUS * THREAD_SIZE]
> - __attribute__((__section__(".bss.page_aligned")));
> + __attribute__((__section__(".bss.kernel.page_aligned")));
>
> /*
> * allocate per-cpu stacks for hardirq and for softirq processing
> --- gc.0/arch/sh/kernel/vmlinux_32.lds.S Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/sh/kernel/vmlinux_32.lds.S Thu Jul 17 21:07:22 2008
> @@ -28,7 +28,7 @@
> } = 0
>
> .text : {
> - *(.text.head)
> + *(.kernel.text.head)
> TEXT_TEXT
> SCHED_TEXT
> LOCK_TEXT
> @@ -58,19 +58,19 @@
>
> . = ALIGN(THREAD_SIZE);
> .data : { /* Data */
> - *(.data.init_task)
> + *(.kernel.data.init_task)
>
> . = ALIGN(L1_CACHE_BYTES);
> - *(.data.cacheline_aligned)
> + *(.kernel.data.cacheline_aligned)
>
> . = ALIGN(L1_CACHE_BYTES);
> - *(.data.read_mostly)
> + *(.kernel.data.read_mostly)
>
> . = ALIGN(PAGE_SIZE);
> - *(.data.page_aligned)
> + *(.kernel.data.page_aligned)
>
> __nosave_begin = .;
> - *(.data.nosave)
> + *(.kernel.data.nosave)
> . = ALIGN(PAGE_SIZE);
> __nosave_end = .;
>
> @@ -128,7 +128,7 @@
> .bss : {
> __init_end = .;
> __bss_start = .; /* BSS */
> - *(.bss.page_aligned)
> + *(.bss.kernel.page_aligned)
> *(.bss)
> *(COMMON)
> . = ALIGN(4);
> --- gc.0/arch/sh/kernel/vmlinux_64.lds.S Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/sh/kernel/vmlinux_64.lds.S Thu Jul 17 21:07:22 2008
> @@ -42,7 +42,7 @@
> } = 0
>
> .text : C_PHYS(.text) {
> - *(.text.head)
> + *(.kernel.text.head)
> TEXT_TEXT
> *(.text64)
> *(.text..SHmedia32)
> @@ -70,19 +70,19 @@
>
> . = ALIGN(THREAD_SIZE);
> .data : C_PHYS(.data) { /* Data */
> - *(.data.init_task)
> + *(.kernel.data.init_task)
>
> . = ALIGN(L1_CACHE_BYTES);
> - *(.data.cacheline_aligned)
> + *(.kernel.data.cacheline_aligned)
>
> . = ALIGN(L1_CACHE_BYTES);
> - *(.data.read_mostly)
> + *(.kernel.data.read_mostly)
>
> . = ALIGN(PAGE_SIZE);
> - *(.data.page_aligned)
> + *(.kernel.data.page_aligned)
>
> __nosave_begin = .;
> - *(.data.nosave)
> + *(.kernel.data.nosave)
> . = ALIGN(PAGE_SIZE);
> __nosave_end = .;
>
> @@ -140,7 +140,7 @@
> .bss : C_PHYS(.bss) {
> __init_end = .;
> __bss_start = .; /* BSS */
> - *(.bss.page_aligned)
> + *(.bss.kernel.page_aligned)
> *(.bss)
> *(COMMON)
> . = ALIGN(4);
> --- gc.0/arch/sparc/boot/btfixupprep.c Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/sparc/boot/btfixupprep.c Thu Jul 17 21:07:22 2008
> @@ -171,7 +171,7 @@
> }
> } else if (buffer[nbase+4] != '_')
> continue;
> - if (!strcmp (sect, ".text.exit"))
> + if (!strcmp (sect, ".kernel.text.exit"))
> continue;
> if (strcmp (sect, ".text") &&
> strcmp (sect, ".init.text") &&
> @@ -325,7 +325,7 @@
> (*rr)->next = NULL;
> }
> printf("! Generated by btfixupprep. Do not edit.\n\n");
> - printf("\t.section\t\".data.init\",#alloc,#write\n\t.align\t4\n\n");
> + printf("\t.section\t\".kernel.data.init\",#alloc,#write\n\t.align\t4\n\n");
> printf("\t.global\t___btfixup_start\n___btfixup_start:\n\n");
> for (i = 0; i < last; i++) {
> f = array + i;
> --- gc.0/arch/sparc/kernel/head.S Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/sparc/kernel/head.S Thu Jul 17 21:07:22 2008
> @@ -742,7 +742,7 @@
> nop
>
> /* The code above should be at beginning and we have to take care about
> - * short jumps, as branching to .text.init section from .text is usually
> + * short jumps, as branching to .kernel.text.init section from .text is usually
> * impossible */
> __INIT
> /* Acquire boot time privileged register values, this will help debugging.
> --- gc.0/arch/sparc/kernel/vmlinux.lds.S Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/sparc/kernel/vmlinux.lds.S Thu Jul 17 21:07:22 2008
> @@ -86,12 +86,12 @@
> . = ALIGN(PAGE_SIZE);
> __init_end = .;
> . = ALIGN(32);
> - .data.cacheline_aligned : {
> - *(.data.cacheline_aligned)
> + .kernel.data.cacheline_aligned : {
> + *(.kernel.data.cacheline_aligned)
> }
> . = ALIGN(32);
> - .data.read_mostly : {
> - *(.data.read_mostly)
> + .kernel.data.read_mostly : {
> + *(.kernel.data.read_mostly)
> }
>
> __bss_start = .;
> --- gc.0/arch/sparc64/kernel/head.S Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/sparc64/kernel/head.S Thu Jul 17 21:07:22 2008
> @@ -466,7 +466,7 @@
> jmpl %g2 + %g0, %g0
> nop
>
> - .section .text.init.refok
> + .section .kernel.text.init.refok
> sun4u_init:
> BRANCH_IF_SUN4V(g1, sun4v_init)
>
> --- gc.0/arch/sparc64/kernel/vmlinux.lds.S Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/sparc64/kernel/vmlinux.lds.S Thu Jul 17 21:07:22 2008
> @@ -32,12 +32,12 @@
> *(.data1)
> }
> . = ALIGN(64);
> - .data.cacheline_aligned : {
> - *(.data.cacheline_aligned)
> + .kernel.data.cacheline_aligned : {
> + *(.kernel.data.cacheline_aligned)
> }
> . = ALIGN(64);
> - .data.read_mostly : {
> - *(.data.read_mostly)
> + .kernel.data.read_mostly : {
> + *(.kernel.data.read_mostly)
> }
> _edata = .;
> PROVIDE (edata = .);
> --- gc.0/arch/um/kernel/dyn.lds.S Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/um/kernel/dyn.lds.S Thu Jul 17 21:07:22 2008
> @@ -97,9 +97,9 @@
> .fini_array : { *(.fini_array) }
> .data : {
> . = ALIGN(KERNEL_STACK_SIZE); /* init_task */
> - *(.data.init_task)
> + *(.kernel.data.init_task)
> . = ALIGN(KERNEL_STACK_SIZE);
> - *(.data.init_irqstack)
> + *(.kernel.data.init_irqstack)
> DATA_DATA
> *(.data.* .gnu.linkonce.d.*)
> SORT(CONSTRUCTORS)
> --- gc.0/arch/um/kernel/init_task.c Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/um/kernel/init_task.c Thu Jul 17 21:07:22 2008
> @@ -35,9 +35,9 @@
> */
>
> union thread_union init_thread_union
> - __attribute__((__section__(".data.init_task"))) =
> + __attribute__((__section__(".kernel.data.init_task"))) =
> { INIT_THREAD_INFO(init_task) };
>
> union thread_union cpu0_irqstack
> - __attribute__((__section__(".data.init_irqstack"))) =
> + __attribute__((__section__(".kernel.data.init_irqstack"))) =
> { INIT_THREAD_INFO(init_task) };
> --- gc.0/arch/um/kernel/uml.lds.S Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/um/kernel/uml.lds.S Thu Jul 17 21:07:22 2008
> @@ -53,9 +53,9 @@
> .data :
> {
> . = ALIGN(KERNEL_STACK_SIZE); /* init_task */
> - *(.data.init_task)
> + *(.kernel.data.init_task)
> . = ALIGN(KERNEL_STACK_SIZE);
> - *(.data.init_irqstack)
> + *(.kernel.data.init_irqstack)
> DATA_DATA
> *(.gnu.linkonce.d*)
> CONSTRUCTORS
> --- gc.0/arch/v850/kernel/vmlinux.lds.S Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/v850/kernel/vmlinux.lds.S Thu Jul 17 21:07:22 2008
> @@ -95,8 +95,8 @@
> TEXT_TEXT \
> SCHED_TEXT \
> *(.exit.text) /* 2.5 convention */ \
> - *(.text.exit) /* 2.4 convention */ \
> - *(.text.lock) \
> + *(.kernel.text.exit) /* 2.4 convention */ \
> + *(.kernel.text.lock) \
> *(.exitcall.exit) \
> __real_etext = . ; /* There may be data after here. */ \
> RODATA_CONTENTS \
> @@ -115,11 +115,11 @@
> __sdata = . ; \
> DATA_DATA \
> EXIT_DATA /* 2.5 convention */ \
> - *(.data.exit) /* 2.4 convention */ \
> + *(.kernel.data.exit) /* 2.4 convention */ \
> . = ALIGN (16) ; \
> - *(.data.cacheline_aligned) \
> + *(.kernel.data.cacheline_aligned) \
> . = ALIGN (0x2000) ; \
> - *(.data.init_task) \
> + *(.kernel.data.init_task) \
> . = ALIGN (0x2000) ; \
> __edata = . ;
>
> @@ -160,8 +160,8 @@
> INIT_TEXT /* 2.5 convention */ \
> __einittext = .; \
> INIT_DATA \
> - *(.text.init) /* 2.4 convention */ \
> - *(.data.init) \
> + *(.kernel.text.init) /* 2.4 convention */ \
> + *(.kernel.data.init) \
> INITCALL_CONTENTS \
> INITRAMFS_CONTENTS
>
> @@ -171,7 +171,7 @@
> . = ALIGN (4096) ; \
> __init_start = . ; \
> INIT_DATA /* 2.5 convention */ \
> - *(.data.init) /* 2.4 convention */ \
> + *(.kernel.data.init) /* 2.4 convention */ \
> __init_end = . ; \
> . = ALIGN (4096) ;
>
> @@ -181,7 +181,7 @@
> _sinittext = .; \
> INIT_TEXT /* 2.5 convention */ \
> _einittext = .; \
> - *(.text.init) /* 2.4 convention */ \
> + *(.kernel.text.init) /* 2.4 convention */ \
> INITCALL_CONTENTS \
> INITRAMFS_CONTENTS
>
> --- gc.0/arch/x86/boot/compressed/head_32.S Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/x86/boot/compressed/head_32.S Thu Jul 17 21:07:22 2008
> @@ -29,7 +29,7 @@
> #include <asm/boot.h>
> #include <asm/asm-offsets.h>
>
> -.section ".text.head","ax",@progbits
> +.section ".kernel.text.head","ax",@progbits
> .globl startup_32
>
> startup_32:
> --- gc.0/arch/x86/boot/compressed/head_64.S Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/x86/boot/compressed/head_64.S Thu Jul 17 21:07:22 2008
> @@ -33,7 +33,7 @@
> #include <asm/processor-flags.h>
> #include <asm/asm-offsets.h>
>
> -.section ".text.head"
> +.section ".kernel.text.head","ax",@progbits
> .code32
> .globl startup_32
>
> --- gc.0/arch/x86/boot/compressed/vmlinux.scr Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/x86/boot/compressed/vmlinux.scr Thu Jul 17 21:07:22 2008
> @@ -1,6 +1,6 @@
> SECTIONS
> {
> - .rodata.compressed : {
> + .kernel.rodata.compressed : {
> input_len = .;
> LONG(input_data_end - input_data) input_data = .;
> *(.data)
> --- gc.0/arch/x86/boot/compressed/vmlinux_32.lds Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/x86/boot/compressed/vmlinux_32.lds Thu Jul 17 21:08:52 2008
> @@ -7,23 +7,23 @@
> * address 0.
> */
> . = 0;
> - .text.head : {
> + .kernel.text.head : {
> _head = . ;
> - *(.text.head)
> + *(.kernel.text.head)
> _ehead = . ;
> }
> - .rodata.compressed : {
> - *(.rodata.compressed)
> + .kernel.rodata.compressed : {
> + *(.kernel.rodata.compressed)
> }
> .text : {
> - _text = .; /* Text */
> + _text = .;
> *(.text)
> *(.text.*)
> _etext = . ;
> }
> .rodata : {
> _rodata = . ;
> - *(.rodata) /* read-only data */
> + *(.rodata)
> *(.rodata.*)
> _erodata = . ;
> }
> @@ -40,4 +40,6 @@
> *(COMMON)
> _end = . ;
> }
> + /* Be bold, and discard everything not explicitly mentioned */
> + /DISCARD/ : { *(*) }
> }
> --- gc.0/arch/x86/boot/compressed/vmlinux_64.lds Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/x86/boot/compressed/vmlinux_64.lds Thu Jul 17 21:08:35 2008
> @@ -7,23 +7,23 @@
> * address 0.
> */
> . = 0;
> - .text.head : {
> + .kernel.text.head : {
> _head = . ;
> - *(.text.head)
> + *(.kernel.text.head)
> _ehead = . ;
> }
> - .rodata.compressed : {
> - *(.rodata.compressed)
> + .kernel.rodata.compressed : {
> + *(.kernel.rodata.compressed)
> }
> .text : {
> - _text = .; /* Text */
> + _text = .;
> *(.text)
> *(.text.*)
> _etext = . ;
> }
> .rodata : {
> _rodata = . ;
> - *(.rodata) /* read-only data */
> + *(.rodata)
> *(.rodata.*)
> _erodata = . ;
> }
> @@ -45,4 +45,6 @@
> . = . + 4096 * 6;
> _ebss = .;
> }
> + /* Be bold, and discard everything not explicitly mentioned */
> + /DISCARD/ : { *(*) }
> }
> --- gc.0/arch/x86/kernel/acpi/wakeup_32.S Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/x86/kernel/acpi/wakeup_32.S Thu Jul 17 21:07:22 2008
> @@ -1,4 +1,4 @@
> - .section .text.page_aligned
> + .section .kernel.text.page_aligned
> #include <linux/linkage.h>
> #include <asm/segment.h>
> #include <asm/page.h>
> --- gc.0/arch/x86/kernel/cpu/common_64.c Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/x86/kernel/cpu/common_64.c Thu Jul 17 21:07:22 2008
> @@ -518,7 +518,7 @@
>
> char boot_exception_stacks[(N_EXCEPTION_STACKS - 1) * EXCEPTION_STKSZ +
> DEBUG_STKSZ]
> -__attribute__((section(".bss.page_aligned")));
> +__attribute__((section(".bss.kernel.page_aligned")));
>
> extern asmlinkage void ignore_sysret(void);
>
> --- gc.0/arch/x86/kernel/head_32.S Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/x86/kernel/head_32.S Thu Jul 17 21:07:22 2008
> @@ -81,7 +81,7 @@
> * any particular GDT layout, because we load our own as soon as we
> * can.
> */
> -.section .text.head,"ax",@progbits
> +.section .kernel.text.head,"ax",@progbits
> ENTRY(startup_32)
> /* test KEEP_SEGMENTS flag to see if the bootloader is asking
> us to not reload segments */
> @@ -611,7 +611,7 @@
> /*
> * BSS section
> */
> -.section ".bss.page_aligned","wa"
> +.section ".bss.kernel.page_aligned","wa"
> .align PAGE_SIZE_asm
> #ifdef CONFIG_X86_PAE
> swapper_pg_pmd:
> @@ -628,7 +628,7 @@
> * This starts the data section.
> */
> #ifdef CONFIG_X86_PAE
> -.section ".data.page_aligned","wa"
> +.section ".kernel.data.page_aligned","wa"
> /* Page-aligned for the benefit of paravirt? */
> .align PAGE_SIZE_asm
> ENTRY(swapper_pg_dir)
> --- gc.0/arch/x86/kernel/head_64.S Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/x86/kernel/head_64.S Thu Jul 17 21:07:22 2008
> @@ -40,7 +40,7 @@
> L3_START_KERNEL = pud_index(__START_KERNEL_map)
>
> .text
> - .section .text.head
> + .section .kernel.text.head
> .code64
> .globl startup_64
> startup_64:
> @@ -413,7 +413,7 @@
> ENTRY(idt_table)
> .skip 256 * 16
>
> - .section .bss.page_aligned, "aw", @nobits
> + .section .bss.kernel.page_aligned, "aw", @nobits
> .align PAGE_SIZE
> ENTRY(empty_zero_page)
> .skip PAGE_SIZE
> --- gc.0/arch/x86/kernel/init_task.c Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/x86/kernel/init_task.c Thu Jul 17 21:07:22 2008
> @@ -24,7 +24,7 @@
> * "init_task" linker map entry..
> */
> union thread_union init_thread_union
> - __attribute__((__section__(".data.init_task"))) =
> + __attribute__((__section__(".kernel.data.init_task"))) =
> { INIT_THREAD_INFO(init_task) };
>
> /*
> @@ -38,7 +38,7 @@
> /*
> * per-CPU TSS segments. Threads are completely 'soft' on Linux,
> * no more per-task TSS's. The TSS size is kept cacheline-aligned
> - * so they are allowed to end up in the .data.cacheline_aligned
> + * so they are allowed to end up in the .kernel.data.cacheline_aligned
> * section. Since TSS's are completely CPU-local, we want them
> * on exact cacheline boundaries, to eliminate cacheline ping-pong.
> */
> --- gc.0/arch/x86/kernel/irq_32.c Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/x86/kernel/irq_32.c Thu Jul 17 21:07:22 2008
> @@ -84,10 +84,10 @@
> static union irq_ctx *softirq_ctx[NR_CPUS] __read_mostly;
>
> static char softirq_stack[NR_CPUS * THREAD_SIZE]
> - __attribute__((__section__(".bss.page_aligned")));
> + __attribute__((__section__(".bss.kernel.page_aligned")));
>
> static char hardirq_stack[NR_CPUS * THREAD_SIZE]
> - __attribute__((__section__(".bss.page_aligned")));
> + __attribute__((__section__(".bss.kernel.page_aligned")));
>
> static void call_on_stack(void *func, void *stack)
> {
> --- gc.0/arch/x86/kernel/traps_32.c Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/x86/kernel/traps_32.c Thu Jul 17 21:07:22 2008
> @@ -75,7 +75,7 @@
> * for this.
> */
> gate_desc idt_table[256]
> - __attribute__((__section__(".data.idt"))) = { { { { 0, 0 } } }, };
> + __attribute__((__section__(".kernel.data.idt"))) = { { { { 0, 0 } } }, };
>
> asmlinkage void divide_error(void);
> asmlinkage void debug(void);
> --- gc.0/arch/x86/kernel/vmlinux_32.lds.S Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/x86/kernel/vmlinux_32.lds.S Thu Jul 17 21:07:22 2008
> @@ -31,15 +31,15 @@
> . = LOAD_OFFSET + LOAD_PHYSICAL_ADDR;
> phys_startup_32 = startup_32 - LOAD_OFFSET;
>
> - .text.head : AT(ADDR(.text.head) - LOAD_OFFSET) {
> + .kernel.text.head : AT(ADDR(.kernel.text.head) - LOAD_OFFSET) {
> _text = .; /* Text and read-only data */
> - *(.text.head)
> + *(.kernel.text.head)
> } :text = 0x9090
>
> /* read-only */
> .text : AT(ADDR(.text) - LOAD_OFFSET) {
> . = ALIGN(PAGE_SIZE); /* not really needed, already page aligned */
> - *(.text.page_aligned)
> + *(.kernel.text.page_aligned)
> TEXT_TEXT
> SCHED_TEXT
> LOCK_TEXT
> @@ -70,32 +70,32 @@
> . = ALIGN(PAGE_SIZE);
> .data_nosave : AT(ADDR(.data_nosave) - LOAD_OFFSET) {
> __nosave_begin = .;
> - *(.data.nosave)
> + *(.kernel.data.nosave)
> . = ALIGN(PAGE_SIZE);
> __nosave_end = .;
> }
>
> . = ALIGN(PAGE_SIZE);
> - .data.page_aligned : AT(ADDR(.data.page_aligned) - LOAD_OFFSET) {
> - *(.data.page_aligned)
> - *(.data.idt)
> + .kernel.data.page_aligned : AT(ADDR(.kernel.data.page_aligned) - LOAD_OFFSET) {
> + *(.kernel.data.page_aligned)
> + *(.kernel.data.idt)
> }
>
> . = ALIGN(32);
> - .data.cacheline_aligned : AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET) {
> - *(.data.cacheline_aligned)
> + .kernel.data.cacheline_aligned : AT(ADDR(.kernel.data.cacheline_aligned) - LOAD_OFFSET) {
> + *(.kernel.data.cacheline_aligned)
> }
>
> /* rarely changed data like cpu maps */
> . = ALIGN(32);
> - .data.read_mostly : AT(ADDR(.data.read_mostly) - LOAD_OFFSET) {
> - *(.data.read_mostly)
> + .kernel.data.read_mostly : AT(ADDR(.kernel.data.read_mostly) - LOAD_OFFSET) {
> + *(.kernel.data.read_mostly)
> _edata = .; /* End of data section */
> }
>
> . = ALIGN(THREAD_SIZE); /* init_task */
> - .data.init_task : AT(ADDR(.data.init_task) - LOAD_OFFSET) {
> - *(.data.init_task)
> + .kernel.data.init_task : AT(ADDR(.kernel.data.init_task) - LOAD_OFFSET) {
> + *(.kernel.data.init_task)
> }
>
> /* might get freed after init */
> @@ -178,10 +178,10 @@
> }
> #endif
> . = ALIGN(PAGE_SIZE);
> - .data.percpu : AT(ADDR(.data.percpu) - LOAD_OFFSET) {
> + .kernel.data.percpu : AT(ADDR(.kernel.data.percpu) - LOAD_OFFSET) {
> __per_cpu_start = .;
> - *(.data.percpu)
> - *(.data.percpu.shared_aligned)
> + *(.kernel.data.percpu)
> + *(.kernel.data.percpu.shared_aligned)
> __per_cpu_end = .;
> }
> . = ALIGN(PAGE_SIZE);
> @@ -190,7 +190,7 @@
> .bss : AT(ADDR(.bss) - LOAD_OFFSET) {
> __init_end = .;
> __bss_start = .; /* BSS */
> - *(.bss.page_aligned)
> + *(.bss.kernel.page_aligned)
> *(.bss)
> . = ALIGN(4);
> __bss_stop = .;
> --- gc.0/arch/x86/kernel/vmlinux_64.lds.S Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/x86/kernel/vmlinux_64.lds.S Thu Jul 17 21:07:22 2008
> @@ -28,7 +28,7 @@
> _text = .; /* Text and read-only data */
> .text : AT(ADDR(.text) - LOAD_OFFSET) {
> /* First the code that has to be first for bootstrapping */
> - *(.text.head)
> + *(.kernel.text.head)
> _stext = .;
> /* Then the rest */
> TEXT_TEXT
> @@ -62,17 +62,17 @@
>
> . = ALIGN(PAGE_SIZE);
> . = ALIGN(CONFIG_X86_L1_CACHE_BYTES);
> - .data.cacheline_aligned : AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET) {
> - *(.data.cacheline_aligned)
> + .kernel.data.cacheline_aligned : AT(ADDR(.kernel.data.cacheline_aligned) - LOAD_OFFSET) {
> + *(.kernel.data.cacheline_aligned)
> }
> . = ALIGN(CONFIG_X86_INTERNODE_CACHE_BYTES);
> - .data.read_mostly : AT(ADDR(.data.read_mostly) - LOAD_OFFSET) {
> - *(.data.read_mostly)
> + .kernel.data.read_mostly : AT(ADDR(.kernel.data.read_mostly) - LOAD_OFFSET) {
> + *(.kernel.data.read_mostly)
> }
>
> #define VSYSCALL_ADDR (-10*1024*1024)
> -#define VSYSCALL_PHYS_ADDR ((LOADADDR(.data.read_mostly) + SIZEOF(.data.read_mostly) + 4095) & ~(4095))
> -#define VSYSCALL_VIRT_ADDR ((ADDR(.data.read_mostly) + SIZEOF(.data.read_mostly) + 4095) & ~(4095))
> +#define VSYSCALL_PHYS_ADDR ((LOADADDR(.kernel.data.read_mostly) + SIZEOF(.kernel.data.read_mostly) + 4095) & ~(4095))
> +#define VSYSCALL_VIRT_ADDR ((ADDR(.kernel.data.read_mostly) + SIZEOF(.kernel.data.read_mostly) + 4095) & ~(4095))
>
> #define VLOAD_OFFSET (VSYSCALL_ADDR - VSYSCALL_PHYS_ADDR)
> #define VLOAD(x) (ADDR(x) - VLOAD_OFFSET)
> @@ -121,13 +121,13 @@
> #undef VVIRT
>
> . = ALIGN(THREAD_SIZE); /* init_task */
> - .data.init_task : AT(ADDR(.data.init_task) - LOAD_OFFSET) {
> - *(.data.init_task)
> + .kernel.data.init_task : AT(ADDR(.kernel.data.init_task) - LOAD_OFFSET) {
> + *(.kernel.data.init_task)
> }:data.init
>
> . = ALIGN(PAGE_SIZE);
> - .data.page_aligned : AT(ADDR(.data.page_aligned) - LOAD_OFFSET) {
> - *(.data.page_aligned)
> + .kernel.data.page_aligned : AT(ADDR(.kernel.data.page_aligned) - LOAD_OFFSET) {
> + *(.kernel.data.page_aligned)
> }
>
> /* might get freed after init */
> @@ -215,13 +215,13 @@
>
> . = ALIGN(PAGE_SIZE);
> __nosave_begin = .;
> - .data_nosave : AT(ADDR(.data_nosave) - LOAD_OFFSET) { *(.data.nosave) }
> + .data_nosave : AT(ADDR(.data_nosave) - LOAD_OFFSET) { *(.kernel.data.nosave) }
> . = ALIGN(PAGE_SIZE);
> __nosave_end = .;
>
> __bss_start = .; /* BSS */
> .bss : AT(ADDR(.bss) - LOAD_OFFSET) {
> - *(.bss.page_aligned)
> + *(.bss.kernel.page_aligned)
> *(.bss)
> }
> __bss_stop = .;
> --- gc.0/arch/x86/xen/mmu.c Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/x86/xen/mmu.c Thu Jul 17 21:07:22 2008
> @@ -61,21 +61,21 @@
>
> /* Placeholder for holes in the address space */
> static unsigned long p2m_missing[P2M_ENTRIES_PER_PAGE]
> - __attribute__((section(".data.page_aligned"))) =
> + __attribute__((section(".kernel.data.page_aligned"))) =
> { [ 0 ... P2M_ENTRIES_PER_PAGE-1 ] = ~0UL };
>
> /* Array of pointers to pages containing p2m entries */
> static unsigned long *p2m_top[TOP_ENTRIES]
> - __attribute__((section(".data.page_aligned"))) =
> + __attribute__((section(".kernel.data.page_aligned"))) =
> { [ 0 ... TOP_ENTRIES - 1] = &p2m_missing[0] };
>
> /* Arrays of p2m arrays expressed in mfns used for save/restore */
> static unsigned long p2m_top_mfn[TOP_ENTRIES]
> - __attribute__((section(".bss.page_aligned")));
> + __attribute__((section(".bss.kernel.page_aligned")));
>
> static unsigned long p2m_top_mfn_list[
> PAGE_ALIGN(TOP_ENTRIES / P2M_ENTRIES_PER_PAGE)]
> - __attribute__((section(".bss.page_aligned")));
> + __attribute__((section(".bss.kernel.page_aligned")));
>
> static inline unsigned p2m_top_index(unsigned long pfn)
> {
> --- gc.0/arch/xtensa/kernel/head.S Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/xtensa/kernel/head.S Thu Jul 17 21:07:22 2008
> @@ -234,7 +234,7 @@
> * BSS section
> */
>
> -.section ".bss.page_aligned", "w"
> +.section ".bss.kernel.page_aligned", "w"
> ENTRY(swapper_pg_dir)
> .fill PAGE_SIZE, 1, 0
> ENTRY(empty_zero_page)
> --- gc.0/arch/xtensa/kernel/init_task.c Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/xtensa/kernel/init_task.c Thu Jul 17 21:07:22 2008
> @@ -29,7 +29,7 @@
> EXPORT_SYMBOL(init_mm);
>
> union thread_union init_thread_union
> - __attribute__((__section__(".data.init_task"))) =
> + __attribute__((__section__(".kernel.data.init_task"))) =
> { INIT_THREAD_INFO(init_task) };
>
> struct task_struct init_task = INIT_TASK(init_task);
> --- gc.0/arch/xtensa/kernel/vmlinux.lds.S Thu Jul 17 16:42:30 2008
> +++ gc.1/arch/xtensa/kernel/vmlinux.lds.S Thu Jul 17 21:07:22 2008
> @@ -121,14 +121,14 @@
> DATA_DATA
> CONSTRUCTORS
> . = ALIGN(XCHAL_ICACHE_LINESIZE);
> - *(.data.cacheline_aligned)
> + *(.kernel.data.cacheline_aligned)
> }
>
> _edata = .;
>
> /* The initial task */
> . = ALIGN(8192);
> - .data.init_task : { *(.data.init_task) }
> + .kernel.data.init_task : { *(.kernel.data.init_task) }
>
> /* Initialization code and data: */
>
> @@ -259,7 +259,7 @@
>
> /* BSS section */
> _bss_start = .;
> - .bss : { *(.bss.page_aligned) *(.bss) }
> + .bss : { *(.bss.kernel.page_aligned) *(.bss) }
> _bss_end = .;
>
> _end = .;
> --- gc.0/include/asm-frv/init.h Thu Jul 17 16:42:35 2008
> +++ gc.1/include/asm-frv/init.h Thu Jul 17 21:07:22 2008
> @@ -1,12 +1,12 @@
> #ifndef _ASM_INIT_H
> #define _ASM_INIT_H
>
> -#define __init __attribute__ ((__section__ (".text.init")))
> -#define __initdata __attribute__ ((__section__ (".data.init")))
> +#define __init __attribute__ ((__section__ (".kernel.text.init")))
> +#define __initdata __attribute__ ((__section__ (".kernel.data.init")))
> /* For assembly routines */
> -#define __INIT .section ".text.init",#alloc,#execinstr
> +#define __INIT .section ".kernel.text.init",#alloc,#execinstr
> #define __FINIT .previous
> -#define __INITDATA .section ".data.init",#alloc,#write
> +#define __INITDATA .section ".kernel.data.init",#alloc,#write
>
> #endif
>
> --- gc.0/include/asm-generic/vmlinux.lds.h Thu Jul 17 16:42:35 2008
> +++ gc.1/include/asm-generic/vmlinux.lds.h Thu Jul 17 21:07:22 2008
> @@ -41,7 +41,7 @@
> /* .data section */
> #define DATA_DATA \
> *(.data) \
> - *(.data.init.refok) \
> + *(.kernel.data.init.refok) \
> *(.ref.data) \
> DEV_KEEP(init.data) \
> DEV_KEEP(exit.data) \
> @@ -223,8 +223,8 @@
> ALIGN_FUNCTION(); \
> *(.text) \
> *(.ref.text) \
> - *(.text.init.refok) \
> - *(.exit.text.refok) \
> + *(.kernel.text.init.refok) \
> + *(.kernel.exit.text.refok) \
> DEV_KEEP(init.text) \
> DEV_KEEP(exit.text) \
> CPU_KEEP(init.text) \
> @@ -380,8 +380,8 @@
> #define PERCPU(align) \
> . = ALIGN(align); \
> __per_cpu_start = .; \
> - .data.percpu : AT(ADDR(.data.percpu) - LOAD_OFFSET) { \
> - *(.data.percpu) \
> - *(.data.percpu.shared_aligned) \
> + .kernel.data.percpu : AT(ADDR(.kernel.data.percpu) - LOAD_OFFSET) { \
> + *(.kernel.data.percpu) \
> + *(.kernel.data.percpu.shared_aligned) \
> } \
> __per_cpu_end = .;
> --- gc.0/include/asm-ia64/asmmacro.h Thu Jul 17 16:42:35 2008
> +++ gc.1/include/asm-ia64/asmmacro.h Thu Jul 17 21:07:22 2008
> @@ -70,12 +70,12 @@
> * path (ivt.S - TLB miss processing) or in places where it might not be
> * safe to use a "tpa" instruction (mca_asm.S - error recovery).
> */
> - .section ".data.patch.vtop", "a" // declare section & section attributes
> + .section ".kernel.data.patch.vtop", "a" // declare section & section attributes
> .previous
>
> #define LOAD_PHYSICAL(pr, reg, obj) \
> [1:](pr)movl reg = obj; \
> - .xdata4 ".data.patch.vtop", 1b-.
> + .xdata4 ".kernel.data.patch.vtop", 1b-.
>
> /*
> * For now, we always put in the McKinley E9 workaround. On CPUs that don't need it,
> @@ -84,11 +84,11 @@
> #define DO_MCKINLEY_E9_WORKAROUND
>
> #ifdef DO_MCKINLEY_E9_WORKAROUND
> - .section ".data.patch.mckinley_e9", "a"
> + .section ".kernel.data.patch.mckinley_e9", "a"
> .previous
> /* workaround for Itanium 2 Errata 9: */
> # define FSYS_RETURN \
> - .xdata4 ".data.patch.mckinley_e9", 1f-.; \
> + .xdata4 ".kernel.data.patch.mckinley_e9", 1f-.; \
> 1:{ .mib; \
> nop.m 0; \
> mov r16=ar.pfs; \
> @@ -107,11 +107,11 @@
> * If physical stack register size is different from DEF_NUM_STACK_REG,
> * dynamically patch the kernel for correct size.
> */
> - .section ".data.patch.phys_stack_reg", "a"
> + .section ".kernel.data.patch.phys_stack_reg", "a"
> .previous
> #define LOAD_PHYS_STACK_REG_SIZE(reg) \
> [1:] adds reg=IA64_NUM_PHYS_STACK_REG*8+8,r0; \
> - .xdata4 ".data.patch.phys_stack_reg", 1b-.
> + .xdata4 ".kernel.data.patch.phys_stack_reg", 1b-.
>
> /*
> * Up until early 2004, use of .align within a function caused bad unwind info.
> --- gc.0/include/asm-ia64/cache.h Thu Jul 17 16:42:35 2008
> +++ gc.1/include/asm-ia64/cache.h Thu Jul 17 21:07:22 2008
> @@ -24,6 +24,6 @@
> # define SMP_CACHE_BYTES (1 << 3)
> #endif
>
> -#define __read_mostly __attribute__((__section__(".data.read_mostly")))
> +#define __read_mostly __attribute__((__section__(".kernel.data.read_mostly")))
>
> #endif /* _ASM_IA64_CACHE_H */
> --- gc.0/include/asm-ia64/percpu.h Thu Jul 17 16:42:35 2008
> +++ gc.1/include/asm-ia64/percpu.h Thu Jul 17 21:07:22 2008
> @@ -27,7 +27,7 @@
>
> #else /* ! SMP */
>
> -#define PER_CPU_ATTRIBUTES __attribute__((__section__(".data.percpu")))
> +#define PER_CPU_ATTRIBUTES __attribute__((__section__(".kernel.data.percpu")))
>
> #define per_cpu_init() (__phys_per_cpu_start)
>
> --- gc.0/include/asm-parisc/cache.h Thu Jul 17 16:42:36 2008
> +++ gc.1/include/asm-parisc/cache.h Thu Jul 17 21:07:22 2008
> @@ -28,7 +28,7 @@
>
> #define SMP_CACHE_BYTES L1_CACHE_BYTES
>
> -#define __read_mostly __attribute__((__section__(".data.read_mostly")))
> +#define __read_mostly __attribute__((__section__(".kernel.data.read_mostly")))
>
> void parisc_cache_init(void); /* initializes cache-flushing */
> void disable_sr_hashing_asm(int); /* low level support for above */
> --- gc.0/include/asm-parisc/system.h Thu Jul 17 16:42:36 2008
> +++ gc.1/include/asm-parisc/system.h Thu Jul 17 21:07:22 2008
> @@ -174,7 +174,7 @@
> })
>
> #ifdef CONFIG_SMP
> -# define __lock_aligned __attribute__((__section__(".data.lock_aligned")))
> +# define __lock_aligned __attribute__((__section__(".kernel.data.lock_aligned")))
> #endif
>
> #define arch_align_stack(x) (x)
> --- gc.0/include/asm-powerpc/cache.h Thu Jul 17 16:42:36 2008
> +++ gc.1/include/asm-powerpc/cache.h Thu Jul 17 21:07:22 2008
> @@ -38,7 +38,7 @@
> #endif /* __powerpc64__ && ! __ASSEMBLY__ */
>
> #if !defined(__ASSEMBLY__)
> -#define __read_mostly __attribute__((__section__(".data.read_mostly")))
> +#define __read_mostly __attribute__((__section__(".kernel.data.read_mostly")))
> #endif
>
> #endif /* __KERNEL__ */
> --- gc.0/include/asm-powerpc/page_64.h Thu Jul 17 16:42:36 2008
> +++ gc.1/include/asm-powerpc/page_64.h Thu Jul 17 21:07:22 2008
> @@ -156,7 +156,7 @@
> #else
> #define __page_aligned \
> __attribute__((__aligned__(PAGE_SIZE), \
> - __section__(".data.page_aligned")))
> + __section__(".kernel.data.page_aligned")))
> #endif
>
> #define VM_DATA_DEFAULT_FLAGS \
> --- gc.0/include/asm-powerpc/ppc_asm.h Thu Jul 17 16:42:36 2008
> +++ gc.1/include/asm-powerpc/ppc_asm.h Thu Jul 17 21:07:22 2008
> @@ -193,7 +193,7 @@
> GLUE(.,name):
>
> #define _INIT_GLOBAL(name) \
> - .section ".text.init.refok"; \
> + .section ".kernel.text.init.refok"; \
> .align 2 ; \
> .globl name; \
> .globl GLUE(.,name); \
> @@ -233,7 +233,7 @@
> GLUE(.,name):
>
> #define _INIT_STATIC(name) \
> - .section ".text.init.refok"; \
> + .section ".kernel.text.init.refok"; \
> .align 2 ; \
> .section ".opd","aw"; \
> name: \
> --- gc.0/include/asm-s390/cache.h Thu Jul 17 16:42:36 2008
> +++ gc.1/include/asm-s390/cache.h Thu Jul 17 21:07:22 2008
> @@ -14,6 +14,6 @@
> #define L1_CACHE_BYTES 256
> #define L1_CACHE_SHIFT 8
>
> -#define __read_mostly __attribute__((__section__(".data.read_mostly")))
> +#define __read_mostly __attribute__((__section__(".kernel.data.read_mostly")))
>
> #endif
> --- gc.0/include/asm-sh/cache.h Thu Jul 17 16:42:36 2008
> +++ gc.1/include/asm-sh/cache.h Thu Jul 17 21:07:22 2008
> @@ -14,7 +14,7 @@
>
> #define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
>
> -#define __read_mostly __attribute__((__section__(".data.read_mostly")))
> +#define __read_mostly __attribute__((__section__(".kernel.data.read_mostly")))
>
> #ifndef __ASSEMBLY__
> struct cache_info {
> --- gc.0/include/asm-sparc/cache.h Thu Jul 17 16:42:36 2008
> +++ gc.1/include/asm-sparc/cache.h Thu Jul 17 21:07:22 2008
> @@ -19,7 +19,7 @@
>
> #define SMP_CACHE_BYTES (1 << SMP_CACHE_BYTES_SHIFT)
>
> -#define __read_mostly __attribute__((__section__(".data.read_mostly")))
> +#define __read_mostly __attribute__((__section__(".kernel.data.read_mostly")))
>
> #ifdef CONFIG_SPARC32
> #include <asm/asi.h>
> --- gc.0/include/asm-um/common.lds.S Thu Jul 17 16:42:36 2008
> +++ gc.1/include/asm-um/common.lds.S Thu Jul 17 21:07:22 2008
> @@ -49,9 +49,9 @@
> }
>
> . = ALIGN(32);
> - .data.percpu : {
> + .kernel.data.percpu : {
> __per_cpu_start = . ;
> - *(.data.percpu)
> + *(.kernel.data.percpu)
> __per_cpu_end = . ;
> }
>
> --- gc.0/include/asm-x86/cache.h Thu Jul 17 16:42:36 2008
> +++ gc.1/include/asm-x86/cache.h Thu Jul 17 21:07:22 2008
> @@ -5,7 +5,7 @@
> #define L1_CACHE_SHIFT (CONFIG_X86_L1_CACHE_SHIFT)
> #define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
>
> -#define __read_mostly __attribute__((__section__(".data.read_mostly")))
> +#define __read_mostly __attribute__((__section__(".kernel.data.read_mostly")))
>
> #ifdef CONFIG_X86_VSMP
> /* vSMP Internode cacheline shift */
> @@ -13,7 +13,7 @@
> #ifdef CONFIG_SMP
> #define __cacheline_aligned_in_smp \
> __attribute__((__aligned__(1 << (INTERNODE_CACHE_SHIFT)))) \
> - __attribute__((__section__(".data.page_aligned")))
> + __attribute__((__section__(".kernel.data.page_aligned")))
> #endif
> #endif
>
> --- gc.0/include/linux/cache.h Thu Jul 17 16:42:36 2008
> +++ gc.1/include/linux/cache.h Thu Jul 17 21:07:22 2008
> @@ -31,7 +31,7 @@
> #ifndef __cacheline_aligned
> #define __cacheline_aligned \
> __attribute__((__aligned__(SMP_CACHE_BYTES), \
> - __section__(".data.cacheline_aligned")))
> + __section__(".kernel.data.cacheline_aligned")))
> #endif /* __cacheline_aligned */
>
> #ifndef __cacheline_aligned_in_smp
> --- gc.0/include/linux/init.h Thu Jul 17 16:42:36 2008
> +++ gc.1/include/linux/init.h Thu Jul 17 21:07:22 2008
> @@ -62,9 +62,9 @@
>
> /* backward compatibility note
> * A few places hardcode the old section names:
> - * .text.init.refok
> - * .data.init.refok
> - * .exit.text.refok
> + * .kernel.text.init.refok
> + * .kernel.data.init.refok
> + * .kernel.exit.text.refok
> * They should be converted to use the defines from this file
> */
>
> @@ -299,7 +299,7 @@
> #endif
>
> /* Data marked not to be saved by software suspend */
> -#define __nosavedata __section(.data.nosave)
> +#define __nosavedata __section(.kernel.data.nosave)
>
> /* This means "can be init if no module support, otherwise module load
> may call it." */
> --- gc.0/include/linux/linkage.h Thu Jul 17 16:42:36 2008
> +++ gc.1/include/linux/linkage.h Thu Jul 17 21:07:22 2008
> @@ -20,8 +20,8 @@
> # define asmregparm
> #endif
>
> -#define __page_aligned_data __section(.data.page_aligned) __aligned(PAGE_SIZE)
> -#define __page_aligned_bss __section(.bss.page_aligned) __aligned(PAGE_SIZE)
> +#define __page_aligned_data __section(.kernel.data.page_aligned) __aligned(PAGE_SIZE)
> +#define __page_aligned_bss __section(.bss.kernel.page_aligned) __aligned(PAGE_SIZE)
>
> /*
> * This is used by architectures to keep arguments on the stack
> --- gc.0/include/linux/percpu.h Thu Jul 17 16:42:36 2008
> +++ gc.1/include/linux/percpu.h Thu Jul 17 21:07:22 2008
> @@ -10,13 +10,13 @@
>
> #ifdef CONFIG_SMP
> #define DEFINE_PER_CPU(type, name) \
> - __attribute__((__section__(".data.percpu"))) \
> + __attribute__((__section__(".kernel.data.percpu"))) \
> PER_CPU_ATTRIBUTES __typeof__(type) per_cpu__##name
>
> #ifdef MODULE
> -#define SHARED_ALIGNED_SECTION ".data.percpu"
> +#define SHARED_ALIGNED_SECTION ".kernel.data.percpu"
> #else
> -#define SHARED_ALIGNED_SECTION ".data.percpu.shared_aligned"
> +#define SHARED_ALIGNED_SECTION ".kernel.data.percpu.shared_aligned"
> #endif
>
> #define DEFINE_PER_CPU_SHARED_ALIGNED(type, name) \
> --- gc.0/include/linux/spinlock.h Thu Jul 17 16:42:36 2008
> +++ gc.1/include/linux/spinlock.h Thu Jul 17 21:07:22 2008
> @@ -59,7 +59,7 @@
> /*
> * Must define these before including other files, inline functions need them
> */
> -#define LOCK_SECTION_NAME ".text.lock."KBUILD_BASENAME
> +#define LOCK_SECTION_NAME ".kernel.text.lock."KBUILD_BASENAME
>
> #define LOCK_SECTION_START(extra) \
> ".subsection 1\n\t" \
> --- gc.0/kernel/module.c Thu Jul 17 16:42:37 2008
> +++ gc.1/kernel/module.c Thu Jul 17 21:07:22 2008
> @@ -433,7 +433,7 @@
> Elf_Shdr *sechdrs,
> const char *secstrings)
> {
> - return find_sec(hdr, sechdrs, secstrings, ".data.percpu");
> + return find_sec(hdr, sechdrs, secstrings, ".kernel.data.percpu");
> }
>
> static void percpu_modcopy(void *pcpudest, const void *from, unsigned long size)
> --- gc.0/scripts/mod/modpost.c Thu Jul 17 16:42:38 2008
> +++ gc.1/scripts/mod/modpost.c Thu Jul 17 21:07:22 2008
> @@ -794,9 +794,9 @@
> /* sections that may refer to an init/exit section with no warning */
> static const char *initref_sections[] =
> {
> - ".text.init.refok*",
> - ".exit.text.refok*",
> - ".data.init.refok*",
> + ".kernel.text.init.refok*",
> + ".kernel.exit.text.refok*",
> + ".kernel.data.init.refok*",
> NULL
> };
>
> @@ -915,7 +915,7 @@
> * Pattern 0:
> * Do not warn if funtion/data are marked with __init_refok/__initdata_refok.
> * The pattern is identified by:
> - * fromsec = .text.init.refok* | .data.init.refok*
> + * fromsec = .kernel.text.init.refok* | .kernel.data.init.refok*
> *
> * Pattern 1:
> * If a module parameter is declared __initdata and permissions=0
> @@ -939,8 +939,8 @@
> * *probe_one, *_console, *_timer
> *
> * Pattern 3:
> - * Whitelist all refereces from .text.head to .init.data
> - * Whitelist all refereces from .text.head to .init.text
> + * Whitelist all refereces from .kernel.text.head to .init.data
> + * Whitelist all refereces from .kernel.text.head to .init.text
> *
> * Pattern 4:
> * Some symbols belong to init section but still it is ok to reference
> --
> To unsubscribe from this list: send the line "unsubscribe linux-embedded" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
--
------------------------------------------------------------------------
Greg Ungerer -- Chief Software Dude EMAIL: gerg@snapgear.com
SnapGear -- a Secure Computing Company PHONE: +61 7 3435 2888
825 Stanley St, FAX: +61 7 3891 3630
Woolloongabba, QLD, 4102, Australia WEB: http://www.SnapGear.com
^ permalink raw reply
* Re: [PATCH] (updated, rolled up) make section names compatible with -ffunction-sections -fdata-sections
From: David Howells @ 2008-07-18 11:53 UTC (permalink / raw)
To: Denys Vlasenko
Cc: dhowells, Andrew Morton, mingo, x86, James Bottomley,
Russell King, Ralf Baechle, Lennert Buytenhek, Josh Boyer,
Paul Mackerras, David Woodhouse, Andi Kleen, torvalds,
Paul Gortmaker, linux-embedded, linux-kernel, Tim Bird,
Martin Schwidefsky, Dave Miller
In-Reply-To: <200807172213.37411.vda.linux@googlemail.com>
Denys Vlasenko <vda.linux@googlemail.com> wrote:
> The purpose of these patches is to make kernel buildable
> with "gcc -ffunction-sections -fdata-sections".
>
> The problem is that with -ffunction-sections -fdata-sections gcc
> creates sections like .text.head and .data.nosave
> whenever someone has innocuous code like this:
>
> static void head(...) {...}
>
> or this:
>
> int f(...) { static int nosave; ... }
>
> somewhere in the kernel.
>
> Kernel linker script is confused by such names and puts these sections
> in wrong places.
>
> This patch renames all "magic" section names used by kernel
> to not have this format, eliminating the possibility of such collisions.
>
> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Acked-by: David Howells <dhowells@redhat.com> [FRV and MN10300]
^ permalink raw reply
* RFC: prevent auto binding for some platform devices
From: Uwe Kleine-König @ 2008-07-21 6:42 UTC (permalink / raw)
To: linux-embedded
Hello,
I have an emedded machine here on my desk and want to stop some
driver/device pairs from binding. There are two types of reason for it:
a) pin muxing doesn't allow attaching e.g. spi and serial at the same
time. In this case I want a defined "winner" that doesn't depend
on link (or module load) order.
b) the devboard has attached an led on a line that is also available
on a header. So I don't want to bind the led driver by default
because there might be another device connected to the gpio line.
Still I want to provide the led device and driver such that
userspace can bind these two via sysfs and use it.
I think a patch would be easy:
- add a flag to struct device(?) settable by platform code that would
indicate that the device should not autoprobe.
- change bus_attach_device to check that flag and only call
device_attach if it's not set.
Would this be sensible? Would it help anyone else?
Best regards
Uwe
--
Uwe Kleine-König, Software Engineer
Digi International GmbH Branch Breisach, Küferstrasse 8, 79206 Breisach, Germany
Tax: 315/5781/0242 / VAT: DE153662976 / Reg. Amtsgericht Dortmund HRB 13962
^ permalink raw reply
* RE: prevent auto binding for some platform devices
From: Dasgupta, Romit @ 2008-07-21 7:24 UTC (permalink / raw)
To: Uwe Kleine-König, linux-embedded@vger.kernel.org
In-Reply-To: <20080721064224.GA28238@digi.com>
Hi,
I think with 2.6.18 or so onwards, there are two entries under /sys/bus/<bus_type>/
drivers_autoprobe, drivers_probe. (Here bus_type is platform, usb, pci, etc...)
By default drivers_autoprobe is 1. You need to disable autprobing of the driver by writing a 0 to that entry.
Once you do that you need to write the name of the device that you want the driver to bind to in the drivers_probe entry.
Hope this is useful.
Thanks,
-Romit
>-----Original Message-----
>From: linux-embedded-owner@vger.kernel.org [mailto:linux-embedded-
>owner@vger.kernel.org] On Behalf Of Uwe Kleine-König
>Sent: Monday, July 21, 2008 12:12 PM
>To: linux-embedded@vger.kernel.org
>Subject: RFC: prevent auto binding for some platform devices
>
>Hello,
>
>I have an emedded machine here on my desk and want to stop some
>driver/device pairs from binding. There are two types of reason for it:
>
> a) pin muxing doesn't allow attaching e.g. spi and serial at the same
> time. In this case I want a defined "winner" that doesn't depend
> on link (or module load) order.
>
> b) the devboard has attached an led on a line that is also available
> on a header. So I don't want to bind the led driver by default
> because there might be another device connected to the gpio line.
> Still I want to provide the led device and driver such that
> userspace can bind these two via sysfs and use it.
>
>I think a patch would be easy:
>
> - add a flag to struct device(?) settable by platform code that would
> indicate that the device should not autoprobe.
>
> - change bus_attach_device to check that flag and only call
> device_attach if it's not set.
>
>Would this be sensible? Would it help anyone else?
>
>Best regards
>Uwe
>
>--
>Uwe Kleine-König, Software Engineer
>Digi International GmbH Branch Breisach, Küferstrasse 8, 79206 Breisach, Germany
>Tax: 315/5781/0242 / VAT: DE153662976 / Reg. Amtsgericht Dortmund HRB 13962
>--
>To unsubscribe from this list: send the line "unsubscribe linux-embedded" in
>the body of a message to majordomo@vger.kernel.org
>More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
* Re: RFC: prevent auto binding for some platform devices
From: Alexey Zaytsev @ 2008-07-21 7:31 UTC (permalink / raw)
To: Uwe Kleine-König; +Cc: linux-embedded
In-Reply-To: <20080721064224.GA28238@digi.com>
^ permalink raw reply
* Re: prevent auto binding for some platform devices
From: Uwe Kleine-König @ 2008-07-21 7:33 UTC (permalink / raw)
To: Dasgupta, Romit; +Cc: linux-embedded@vger.kernel.org
In-Reply-To: <B85A65D85D7EB246BE421B3FB0FBB5930111C4F31C@dbde02.ent.ti.com>
Hello Romit,
Dasgupta, Romit wrote:
> I think with 2.6.18 or so onwards, there are two entries under /sys/bus/<bus_type>/
> drivers_autoprobe, drivers_probe. (Here bus_type is platform, usb, pci, etc...)
> By default drivers_autoprobe is 1. You need to disable autprobing of the driver by writing a 0 to that entry.
I saw that, too, but this fails in two ways: First if the drivers are
compiled in (as usual with an embedded machine) it's too late when
userspace is able to do that because then the drivers are already bound.
(The underlain kernel data is currently not available to platform code.)
And I don't want to stop the whole bus from binding, only the
conflicting devices.
Thanks
Uwe
--
Uwe Kleine-König, Software Engineer
Digi International GmbH Branch Breisach, Küferstrasse 8, 79206 Breisach, Germany
Tax: 315/5781/0242 / VAT: DE153662976 / Reg. Amtsgericht Dortmund HRB 13962
^ permalink raw reply
* Re: RFC: prevent auto binding for some platform devices
From: Alexey Zaytsev @ 2008-07-21 7:38 UTC (permalink / raw)
To: Uwe Kleine-König; +Cc: linux-embedded
In-Reply-To: <20080721064224.GA28238@digi.com>
[Sorry, probably a gmail web-interface bug?]
On Mon, Jul 21, 2008 at 10:42 AM, Uwe Kleine-König
<Uwe.Kleine-Koenig@digi.com> wrote:
> Hello,
>
> I have an emedded machine here on my desk and want to stop some
> driver/device pairs from binding. There are two types of reason for it:
>
> a) pin muxing doesn't allow attaching e.g. spi and serial at the same
> time. In this case I want a defined "winner" that doesn't depend
> on link (or module load) order.
>
> b) the devboard has attached an led on a line that is also available
> on a header. So I don't want to bind the led driver by default
> because there might be another device connected to the gpio line.
> Still I want to provide the led device and driver such that
> userspace can bind these two via sysfs and use it.
>
> I think a patch would be easy:
>
> - add a flag to struct device(?) settable by platform code that would
> indicate that the device should not autoprobe.
>
> - change bus_attach_device to check that flag and only call
> device_attach if it's not set.
>
> Would this be sensible? Would it help anyone else?
How about simply not registering the missing devices in your
board setup code?
>
> Best regards
> Uwe
>
> --
> Uwe Kleine-König, Software Engineer
> Digi International GmbH Branch Breisach, Küferstrasse 8, 79206 Breisach, Germany
> Tax: 315/5781/0242 / VAT: DE153662976 / Reg. Amtsgericht Dortmund HRB 13962
> --
> To unsubscribe from this list: send the line "unsubscribe linux-embedded" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
^ permalink raw reply
* Re: RFC: prevent auto binding for some platform devices
From: Ben Nizette @ 2008-07-21 7:44 UTC (permalink / raw)
To: Uwe Kleine-König; +Cc: linux-embedded
In-Reply-To: <20080721064224.GA28238@digi.com>
On Mon, 2008-07-21 at 08:42 +0200, Uwe Kleine-König wrote:
> Hello,
>
> I have an emedded machine here on my desk and want to stop some
> driver/device pairs from binding. There are two types of reason for it:
>
> a) pin muxing doesn't allow attaching e.g. spi and serial at the same
> time. In this case I want a defined "winner" that doesn't depend
> on link (or module load) order.
>
> b) the devboard has attached an led on a line that is also available
> on a header. So I don't want to bind the led driver by default
> because there might be another device connected to the gpio line.
> Still I want to provide the led device and driver such that
> userspace can bind these two via sysfs and use it.
>
While most boards probably have these decisions make in platform code
and compiled in, I certainly see value in being able to keep dev-board
owners out of the kernel source.
> I think a patch would be easy:
>
> - add a flag to struct device(?) settable by platform code that would
> indicate that the device should not autoprobe.
>
> - change bus_attach_device to check that flag and only call
> device_attach if it's not set.
>
> Would this be sensible? Would it help anyone else?
This would be a good first step but it still requires a source change
and recompile if you want to change any device in the boot branch.
Anything not in the boot path can be probed later by sysfs interaction
which I like. This would solve (most of?) the "deferred module init"
problems which have come across this list [1] as well as things like the
recent mmc-over-spi-over-gpio-fake-hotplug thing [2].
That said, I don't have any sensible comments on how to implement the
below, but my $0.02 would be to go about things a bit differently.
I reckon some arch-independent version of FDT kinda thing would be a
good way to go. That is, some easy way for the user to specify the
whole hardware layout and tell the kernel about it without that tedious
mucking about inside kernel source.
If not the whole hardware layout (which I guess is quite arch-dependant)
then at least the list of devices to probe in a way which allows you to
play with the boot devices too (and doesn't need an initramfs).
So yes, I reckon it'd help others, certainly a worthy topic for
discussion :-D
>
> Best regards
> Uwe
>
Thanks,
--Ben.
[1]
http://www.mail-archive.com/linux-embedded@vger.kernel.org/msg00370.html
[2]
http://groups.google.com/group/linux.kernel/browse_thread/thread/f57ac93bd37626eb/587d1302f0f497ad?lnk=raot
^ permalink raw reply
* Re: RFC: prevent auto binding for some platform devices
From: Uwe Kleine-König @ 2008-07-21 7:44 UTC (permalink / raw)
To: Alexey Zaytsev; +Cc: linux-embedded@vger.kernel.org
In-Reply-To: <f19298770807210038u76b62f28uea55a631f7e13834@mail.gmail.com>
Hello Alexey,
Alexey Zaytsev wrote:
> [Sorry, probably a gmail web-interface bug?]
>
> On Mon, Jul 21, 2008 at 10:42 AM, Uwe Kleine-König
> <Uwe.Kleine-Koenig@digi.com> wrote:
> > Hello,
> >
> > I have an emedded machine here on my desk and want to stop some
> > driver/device pairs from binding. There are two types of reason for it:
> >
> > a) pin muxing doesn't allow attaching e.g. spi and serial at the same
> > time. In this case I want a defined "winner" that doesn't depend
> > on link (or module load) order.
> >
> > b) the devboard has attached an led on a line that is also available
> > on a header. So I don't want to bind the led driver by default
> > because there might be another device connected to the gpio line.
> > Still I want to provide the led device and driver such that
> > userspace can bind these two via sysfs and use it.
> >
> > I think a patch would be easy:
> >
> > - add a flag to struct device(?) settable by platform code that would
> > indicate that the device should not autoprobe.
> >
> > - change bus_attach_device to check that flag and only call
> > device_attach if it's not set.
> >
> > Would this be sensible? Would it help anyone else?
>
> How about simply not registering the missing devices in your
> board setup code?
They are not missing. In the a) case above they just conflict and I
want to provide a way to change the default from userspace. E.g.
echo "serialdevice.1" > /sys/bus/platform/drivers/serialdriver/unbind
echo "spidevice.1" > /sys/bus/platform/drivers/spidriver/bind
and for b) I want to be able to enable the led if nothing else is
connected to the line.
Best regards
Uwe
--
Uwe Kleine-König, Software Engineer
Digi International GmbH Branch Breisach, Küferstrasse 8, 79206 Breisach, Germany
Tax: 315/5781/0242 / VAT: DE153662976 / Reg. Amtsgericht Dortmund HRB 13962
^ permalink raw reply
* UIO not working on ppc405 onchip registers
From: Markus Brunner @ 2008-07-21 19:52 UTC (permalink / raw)
To: linuxppc-dev; +Cc: linux-embedded
Hi,
I'm unable to get UIO working on the ppc405ep onchip registers (e.g. gpio/iic)
however it's working fine on peripherals.
It seems to me to be a problem with UIO on powerpc, because if I change the
address (and nothing more) to point to a external FPGA it's working fine.
I also tried the generic uio_pdrv which had the same problems.
Sometimes I get a "bus error" sometimes it only produces wrong results.
The "bus error" occurred when not a full 32 bit register was read (e.g. only a
byte of it), but I'm not sure if it doesn't occur for other reasons as well.
Here is a simple example against 2.6.26. It should toggle the GPIO pin 0 on
ppc405ep, but can be changed easily to work on other ppc variants.
Can anyone reproduce this problem, did anyone already succeed in writing a UIO
driver for the onchip registers? How can I fix this?
Might this be something like commit c9698d6b1a90929e427a165bd8283f803f57d9bd which
added pgprot_noncached() to UIO mmap code to get it work on ppc?
Regards
Markus
diff -upNr linux-2.6.26/drivers/uio-orig/Kconfig linux-2.6.26/drivers/uio/Kconfig
--- linux-2.6.26/drivers/uio-orig/Kconfig 2008-07-18 09:15:51.000000000 +0200
+++ linux-2.6.26/drivers/uio/Kconfig 2008-07-18 09:16:18.000000000 +0200
@@ -39,4 +39,12 @@ config UIO_SMX
If you compile this as a module, it will be called uio_smx.
+config UIO_GPIO
+ tristate "Driver for PPC_4xx GPIO"
+ depends on UIO
+ default n
+ help
+ Driver for PPC_4xx GPIO Registers
+
endif
+
diff -upNr linux-2.6.26/drivers/uio-orig/Makefile linux-2.6.26/drivers/uio/Makefile
--- linux-2.6.26/drivers/uio-orig/Makefile 2008-07-18 09:27:18.000000000 +0200
+++ linux-2.6.26/drivers/uio/Makefile 2008-07-18 09:16:50.000000000 +0200
@@ -1,3 +1,4 @@
obj-$(CONFIG_UIO) += uio.o
obj-$(CONFIG_UIO_CIF) += uio_cif.o
obj-$(CONFIG_UIO_SMX) += uio_smx.o
+obj-$(CONFIG_UIO_GPIO) += uio_ppc_4xx-gpio.o
diff -upNr linux-2.6.26/drivers/uio-orig/uio-gpio.c linux-2.6.26/drivers/uio/uio-gpio.c
--- linux-2.6.26/drivers/uio-orig/uio-gpio.c 1970-01-01 01:00:00.000000000 +0100
+++ linux-2.6.26/drivers/uio/uio-gpio.c 2008-07-18 09:18:56.000000000 +0200
@@ -0,0 +1,59 @@
+#include <sys/types.h>
+#include <sys/time.h>
+#include <sys/stat.h>
+#include <sys/mman.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+const unsigned long pin_mask( unsigned int pin) { return (0x80000000 >> (pin));}
+
+const char UIO_DEV[] = "/dev/uio0";
+const unsigned int UIO_SIZE = 0x1000;
+const unsigned int UIO_ADDR = 0xef600700;
+
+const int or = 0;
+const int tcr = 1;
+
+const unsigned int gpio_pin = 0; /* What gpio pin do you want to toggle? */
+
+volatile unsigned long *gpio_regs;
+
+int main(int argc, char *argv[])
+{
+ int uiofd = open(UIO_DEV,O_RDWR);
+ if (uiofd < 0)
+ return uiofd;
+
+ unsigned long* map_addr = mmap(NULL,
+ UIO_SIZE,
+ PROT_READ | PROT_WRITE,
+ MAP_SHARED,
+ uiofd,
+ 0);
+ if (map_addr == ((unsigned long*) -1))
+ return -1;
+ gpio_regs = (volatile unsigned long*) map_addr;
+ printf("Mapped %0lx bytes from %08lx to %08lx\n", UIO_SIZE, UIO_ADDR, (unsigned long)map_addr);
+
+ printf("TCR = %08lx\n", gpio_regs[tcr]);
+ printf("TCR = %08lx\n", gpio_regs[tcr]);
+ printf("setting TCR\n");
+ gpio_regs[tcr] = gpio_regs[tcr] | pin_mask( gpio_pin ); // set tcr for pin to 1
+ printf("TCR = %08lx\n", gpio_regs[tcr]);
+ printf("TCR = %08lx\n", gpio_regs[tcr]);
+
+ printf("OR = %08lx\n", gpio_regs[or]);
+ printf("OR = %08lx\n", gpio_regs[or]);
+ printf("setting OR\n");
+ gpio_regs[or] = gpio_regs[or] | pin_mask( gpio_pin ); // set tcr for pin to 1
+ printf("OR = %08lx\n", gpio_regs[or]);
+ printf("OR = %08lx\n", gpio_regs[or]);
+ sleep( 3 );
+ printf("setting OR\n");
+ gpio_regs[or] = gpio_regs[or] & ~pin_mask( gpio_pin ); // set tcr for pin to 0
+ printf("OR = %08lx\n", gpio_regs[or]);
+ printf("OR = %08lx\n", gpio_regs[or]);
+
+}
diff -upNr linux-2.6.26/drivers/uio-orig/uio_ppc_4xx-gpio.c linux-2.6.26/drivers/uio/uio_ppc_4xx-gpio.c
--- linux-2.6.26/drivers/uio-orig/uio_ppc_4xx-gpio.c 1970-01-01 01:00:00.000000000 +0100
+++ linux-2.6.26/drivers/uio/uio_ppc_4xx-gpio.c 2008-07-18 09:23:32.000000000 +0200
@@ -0,0 +1,74 @@
+/*
+ * simple UIO GPIO driver.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ */
+
+#include <linux/device.h>
+#include <linux/module.h>
+#include <linux/platform_device.h>
+#include <linux/uio_driver.h>
+
+#include <asm/io.h>
+
+static struct uio_info info = {
+ .name = "uio_gpio",
+ .version = "0.0.0",
+ .irq = UIO_IRQ_NONE,
+ .irq_flags = 0,
+ .mem[0].addr = 0xef600700,
+ .mem[0].size = 0x1000,
+ .mem[0].memtype = UIO_MEM_PHYS,
+};
+
+static int __devinit uio_gpio_probe(struct device *dev)
+{
+ if (uio_register_device(dev, &info)){
+ printk(KERN_ERR "uio_gpio: uio_register_device failed\n");
+ return -ENODEV;
+ }
+ return 0;
+}
+
+static int uio_gpio_remove(struct device *dev)
+{
+ uio_unregister_device(&info);
+ info.mem[0].addr = 0;
+ info.mem[0].size = 0;
+ return 0;
+}
+
+static struct platform_device *uio_gpio_device;
+
+static struct device_driver uio_gpio_driver = {
+ .name = "uio_gpio",
+ .bus = &platform_bus_type,
+ .probe = uio_gpio_probe,
+ .remove = uio_gpio_remove,
+};
+
+
+static int __init uio_gpio_init(void)
+{
+ uio_gpio_device = platform_device_register_simple("uio_gpio", -1,
+ NULL, 0);
+ if (IS_ERR(uio_gpio_device))
+ return PTR_ERR(uio_gpio_device);
+
+ return driver_register(&uio_gpio_driver);
+}
+
+static void __exit uio_gpio_exit(void)
+{
+ platform_device_unregister(uio_gpio_device);
+ driver_unregister(&uio_gpio_driver);
+}
+
+module_init(uio_gpio_init);
+module_exit(uio_gpio_exit);
+
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Markus Brunner");
^ permalink raw reply
* Re: UIO not working on ppc405 onchip registers
From: Uwe Kleine-König @ 2008-07-22 6:17 UTC (permalink / raw)
To: Markus Brunner; +Cc: linuxppc-dev@ozlabs.org, linux-embedded@vger.kernel.org
In-Reply-To: <200807212152.16080.super.firetwister@gmail.com>
Hello Markus,
Markus Brunner wrote:
> I'm unable to get UIO working on the ppc405ep onchip registers (e.g. gpio/iic)
> however it's working fine on peripherals.
I don't know powerpc in general nor ppc405ep in detail but IIRC arm has
problems if some memory is mapped twice. Might this be the problem
here?
> It seems to me to be a problem with UIO on powerpc, because if I change the
> address (and nothing more) to point to a external FPGA it's working fine.
> I also tried the generic uio_pdrv which had the same problems.
> Sometimes I get a "bus error" sometimes it only produces wrong results.
> The "bus error" occurred when not a full 32 bit register was read (e.g. only a
> byte of it), but I'm not sure if it doesn't occur for other reasons as well.
Well, if this is a 32bit memory mapped device and you do a non-32 bit
access strage things can happen.
>
> diff -upNr linux-2.6.26/drivers/uio-orig/Kconfig linux-2.6.26/drivers/uio/Kconfig
> --- linux-2.6.26/drivers/uio-orig/Kconfig 2008-07-18 09:15:51.000000000 +0200
> +++ linux-2.6.26/drivers/uio/Kconfig 2008-07-18 09:16:18.000000000 +0200
> @@ -39,4 +39,12 @@ config UIO_SMX
>
> If you compile this as a module, it will be called uio_smx.
>
> +config UIO_GPIO
> + tristate "Driver for PPC_4xx GPIO"
> + depends on UIO
> + default n
> + help
> + Driver for PPC_4xx GPIO Registers
> +
> endif
This endif matches an "if UIO", so there is no need to depend on UIO
explicitly.
> diff -upNr linux-2.6.26/drivers/uio-orig/Makefile linux-2.6.26/drivers/uio/Makefile
> --- linux-2.6.26/drivers/uio-orig/Makefile 2008-07-18 09:27:18.000000000 +0200
> +++ linux-2.6.26/drivers/uio/Makefile 2008-07-18 09:16:50.000000000 +0200
> @@ -1,3 +1,4 @@
> obj-$(CONFIG_UIO) += uio.o
> obj-$(CONFIG_UIO_CIF) += uio_cif.o
> obj-$(CONFIG_UIO_SMX) += uio_smx.o
> +obj-$(CONFIG_UIO_GPIO) += uio_ppc_4xx-gpio.o
> diff -upNr linux-2.6.26/drivers/uio-orig/uio-gpio.c linux-2.6.26/drivers/uio/uio-gpio.c
> --- linux-2.6.26/drivers/uio-orig/uio-gpio.c 1970-01-01 01:00:00.000000000 +0100
> +++ linux-2.6.26/drivers/uio/uio-gpio.c 2008-07-18 09:18:56.000000000 +0200
> @@ -0,0 +1,59 @@
> +#include <sys/types.h>
> +#include <sys/time.h>
> +#include <sys/stat.h>
> +#include <sys/mman.h>
> +#include <fcntl.h>
> +#include <unistd.h>
> +#include <stdio.h>
> +#include <stdlib.h>
> +
> +const unsigned long pin_mask( unsigned int pin) { return (0x80000000 >> (pin));}
> +
> +const char UIO_DEV[] = "/dev/uio0";
> +const unsigned int UIO_SIZE = 0x1000;
> +const unsigned int UIO_ADDR = 0xef600700;
> +
> +const int or = 0;
> +const int tcr = 1;
> +
> +const unsigned int gpio_pin = 0; /* What gpio pin do you want to toggle? */
> +
> +volatile unsigned long *gpio_regs;
> +
> +int main(int argc, char *argv[])
> +{
> + int uiofd = open(UIO_DEV,O_RDWR);
For debugging this is OK, in the final application you should add some
tests. Check the UIO documentation for the details.
> + if (uiofd < 0)
> + return uiofd;
> +
> + unsigned long* map_addr = mmap(NULL,
> + UIO_SIZE,
> + PROT_READ | PROT_WRITE,
> + MAP_SHARED,
> + uiofd,
> + 0);
> + if (map_addr == ((unsigned long*) -1))
> + return -1;
> [...]
> diff -upNr linux-2.6.26/drivers/uio-orig/uio_ppc_4xx-gpio.c linux-2.6.26/drivers/uio/uio_ppc_4xx-gpio.c
> --- linux-2.6.26/drivers/uio-orig/uio_ppc_4xx-gpio.c 1970-01-01 01:00:00.000000000 +0100
> +++ linux-2.6.26/drivers/uio/uio_ppc_4xx-gpio.c 2008-07-18 09:23:32.000000000 +0200
> @@ -0,0 +1,74 @@
> +/*
> + * simple UIO GPIO driver.
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + *
> + */
> +
> +#include <linux/device.h>
> +#include <linux/module.h>
> +#include <linux/platform_device.h>
> +#include <linux/uio_driver.h>
> +
> +#include <asm/io.h>
> +
> +static struct uio_info info = {
> + .name = "uio_gpio",
> + .version = "0.0.0",
> + .irq = UIO_IRQ_NONE,
> + .irq_flags = 0,
> + .mem[0].addr = 0xef600700,
> + .mem[0].size = 0x1000,
> + .mem[0].memtype = UIO_MEM_PHYS,
> +};
IIRC you should initialise the other mem members.
> +static int __devinit uio_gpio_probe(struct device *dev)
> +{
> + if (uio_register_device(dev, &info)){
> + printk(KERN_ERR "uio_gpio: uio_register_device failed\n");
> + return -ENODEV;
> + }
> + return 0;
> +}
> +
> +static int uio_gpio_remove(struct device *dev)
> +{
> + uio_unregister_device(&info);
> + info.mem[0].addr = 0;
> + info.mem[0].size = 0;
> + return 0;
> +}
Are you sure that overwriting info.mem[0].addr is a good idea? Then
unbinding the platform device and rebinding it fails to do the right
thing for sure.
> +static struct platform_device *uio_gpio_device;
> +
> +static struct device_driver uio_gpio_driver = {
> + .name = "uio_gpio",
> + .bus = &platform_bus_type,
> + .probe = uio_gpio_probe,
> + .remove = uio_gpio_remove,
> +};
> +
> +
> +static int __init uio_gpio_init(void)
> +{
> + uio_gpio_device = platform_device_register_simple("uio_gpio", -1,
> + NULL, 0);
> + if (IS_ERR(uio_gpio_device))
> + return PTR_ERR(uio_gpio_device);
> +
> + return driver_register(&uio_gpio_driver);
> +}
> +
> +static void __exit uio_gpio_exit(void)
> +{
> + platform_device_unregister(uio_gpio_device);
> + driver_unregister(&uio_gpio_driver);
> +}
> +
> +module_init(uio_gpio_init);
> +module_exit(uio_gpio_exit);
> +
> +MODULE_LICENSE("GPL");
The header says this is GPL v2. So you should use "GPL v2" here, too.
Best regards
Uwe
--
Uwe Kleine-König, Software Engineer
Digi International GmbH Branch Breisach, Küferstrasse 8, 79206 Breisach, Germany
Tax: 315/5781/0242 / VAT: DE153662976 / Reg. Amtsgericht Dortmund HRB 13962
^ permalink raw reply
* Re: UIO not working on ppc405 onchip registers
From: Ben Nizette @ 2008-07-22 6:42 UTC (permalink / raw)
To: Markus Brunner; +Cc: linuxppc-dev@ozlabs.org, linux-embedded@vger.kernel.org
In-Reply-To: <20080722061730.GB12576@digi.com>
Hey Markus,
> >
> > +config UIO_GPIO
> > + tristate "Driver for PPC_4xx GPIO"
As an aside, you sure you want to do this anyway? I'd suggest that you
just do a gpio chip driver for this, tie it in to gpiolib and use the
gpiolib user interface (which IIRC has only made it as far as -mm but is
on the way up). This gives kernel internals nice access to the pins as
well through the standard gpio framework.
Thanks :-)
--Ben.
^ permalink raw reply
* Re: UIO not working on ppc405 onchip registers
From: super.firetwister @ 2008-07-22 7:47 UTC (permalink / raw)
To: Uwe Kleine-König
Cc: linuxppc-dev@ozlabs.org, linux-embedded@vger.kernel.org
In-Reply-To: <20080722061730.GB12576@digi.com>
Hello Uwe,
On Tuesday 22 July 2008, Uwe Kleine-König wrote:
> I don't know powerpc in general nor ppc405ep in detail but IIRC arm has
> problems if some memory is mapped twice. Might this be the problem
> here?
Maybee, the emac0 (0xef600800) and emac1 (0xef600900) get mapped as well,
because AFAIK I have to map a whole pagesize (0x1000).
> > + int uiofd = open(UIO_DEV,O_RDWR);
>
> For debugging this is OK, in the final application you should add some
> tests. Check the UIO documentation for the details.
The whole example was meant to be short.
> > +static int uio_gpio_remove(struct device *dev)
> > +{
> > + uio_unregister_device(&info);
> > + info.mem[0].addr = 0;
> > + info.mem[0].size = 0;
> > + return 0;
> > +}
>
> Are you sure that overwriting info.mem[0].addr is a good idea? Then
> unbinding the platform device and rebinding it fails to do the right
> thing for sure.
This was stolen from uio_dummy. So this might become a common error :(
Thanks a lot for your comments, I will try to get an exclusive memory region
mapped.
Markus
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox