From: "Jan Beulich" <JBeulich@novell.com>
To: <linux-kernel@vger.kernel.org>
Subject: x86 build issue with software suspend code
Date: Thu, 26 Aug 2004 16:12:00 +0200 [thread overview]
Message-ID: <s12dfdac.061@emea1-mh.id2.novell.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 2315 bytes --]
A piece of code most like "copy-and-paste"d from x86_64 to i386 caused
the section named .data.nosave in arch/i386/power/swsusp.S to become
named .data.nosave.1 in arch/i386/power/built-in.o (due to an attribute
collision with an identically named section from arch/i386/power/cpu.c),
which finally ends up in no-where land (because it doesn't have even the
alloc bit set, and the linker script doesn't know about such a section
either), resulting in the two variables being accessed at (absolute)
addresses 0 and 8 (which shouldn't normally be accessible at all, but
perhaps are mapped for whatever reason at the point execution gets
there, since otherwise problems with this code path should have been
observed much earlier).
The below (also attached for the inline variant most certainly getting
incorrectly line wrapped) patch changes the attributes of the section to
match those of other instances of the section, so the renaming doesn't
happen anymore. It also adds alignment, decreases the fields from 8 to 4
bytes and applies these additional changes also to the appearant
original x86_64 code.
I'm slightly worried by the fact that ld lets both the attribute
collision and the relocation from and alloc section targeting targeting
a non-alloc one completely uncommented; I didn't check its code yet, so
I don't know whether perhaps some diagnostics could simply be turned on
for both of these.
Jan
diff -Napru linux-2.6.8.1/arch/i386/power/swsusp.S
2.6.8.1/arch/i386/power/swsusp.S
--- linux-2.6.8.1/arch/i386/power/swsusp.S 2004-08-14
12:55:19.000000000 +0200
+++ 2.6.8.1/arch/i386/power/swsusp.S 2004-08-26 15:54:35.420154440
+0200
@@ -89,9 +89,10 @@ copy_done:
popl %ebx
ret
- .section .data.nosave
+ .section .data.nosave, "aw"
+ .align 4
loop:
- .quad 0
+ .long 0
loop2:
- .quad 0
+ .long 0
.previous
diff -Napru linux-2.6.8.1/arch/x86_64/kernel/suspend_asm.S
2.6.8.1/arch/x86_64/kernel/suspend_asm.S
--- linux-2.6.8.1/arch/x86_64/kernel/suspend_asm.S 2004-08-14
12:56:22.000000000 +0200
+++ 2.6.8.1/arch/x86_64/kernel/suspend_asm.S 2004-08-26
15:54:56.446957880 +0200
@@ -117,7 +117,8 @@ ENTRY(do_magic)
addq $8, %rsp
jmp do_magic_resume_2
- .section .data.nosave
+ .section .data.nosave, "aw"
+ .align 8
loop:
.quad 0
loop2:
[-- Attachment #2: linux-x86-data_nosave.patch --]
[-- Type: application/octet-stream, Size: 903 bytes --]
diff -Napru linux-2.6.8.1/arch/i386/power/swsusp.S 2.6.8.1/arch/i386/power/swsusp.S
--- linux-2.6.8.1/arch/i386/power/swsusp.S 2004-08-14 12:55:19.000000000 +0200
+++ 2.6.8.1/arch/i386/power/swsusp.S 2004-08-26 15:54:35.420154440 +0200
@@ -89,9 +89,10 @@ copy_done:
popl %ebx
ret
- .section .data.nosave
+ .section .data.nosave, "aw"
+ .align 4
loop:
- .quad 0
+ .long 0
loop2:
- .quad 0
+ .long 0
.previous
diff -Napru linux-2.6.8.1/arch/x86_64/kernel/suspend_asm.S 2.6.8.1/arch/x86_64/kernel/suspend_asm.S
--- linux-2.6.8.1/arch/x86_64/kernel/suspend_asm.S 2004-08-14 12:56:22.000000000 +0200
+++ 2.6.8.1/arch/x86_64/kernel/suspend_asm.S 2004-08-26 15:54:56.446957880 +0200
@@ -117,7 +117,8 @@ ENTRY(do_magic)
addq $8, %rsp
jmp do_magic_resume_2
- .section .data.nosave
+ .section .data.nosave, "aw"
+ .align 8
loop:
.quad 0
loop2:
reply other threads:[~2004-08-26 14:17 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=s12dfdac.061@emea1-mh.id2.novell.com \
--to=jbeulich@novell.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.