From: Helge Deller <deller@gmx.de>
To: John David Anglin <dave@hiauly1.hia.nrc.ca>
Cc: dave.anglin@nrc-cnrc.gc.ca, linux-parisc@vger.kernel.org,
carlos@systemhalted.org, randolph@tausq.org
Subject: Re: Out of order unwind entry warning
Date: Tue, 03 Nov 2009 23:04:43 +0100 [thread overview]
Message-ID: <4AF0A8FB.2000504@gmx.de> (raw)
In-Reply-To: <20091103215408.7B0AD4E0B@hiauly1.hia.nrc.ca>
On 11/03/2009 10:54 PM, John David Anglin wrote:
>> On 11/03/2009 10:36 PM, John David Anglin wrote:
>>>> Unwind section '.PARISC.unwind' at offset 0x11c contains 3 entries:
>>>>
>>>> <libcrc32c_mod_fini>: [0x0-0x2c]
>>>> Entry_GR=1 Save_SP Save_RP Total_frame_size=8
>>>> <libcrc32c_mod_init>: [0x0-0x44]
>>>> Entry_GR=1 Save_SP Save_RP Total_frame_size=8
>>>> <crc32c>: [0x0-0x6c]
>>>> Entry_GR=2 Save_SP Save_RP Total_frame_size=8
>>>
>>> What do you see for '.rela.PARISC.unwind'?
>>>
>>> I suspect that this is a problem in handling the R_PARISC_SEGREL32
>>> relocations is the kernel loader. The above would be fine if
>>> libcrc32c_mod_fini and libcRc32c_mod_init are in different sections
>>> (.exit.text and .inti.text).
>>
>> Relocation section '.rela.PARISC.unwind' at offset 0x9b8 contains 6 entries:
>> Offset Info Type Sym.Value Sym. Name + Addend
>> 00000000 00000231 R_PARISC_SEGREL32 00000000 .exit.text + 0
>> 00000004 00000231 R_PARISC_SEGREL32 00000000 .exit.text + 2c
>> 00000010 00000331 R_PARISC_SEGREL32 00000000 .init.text + 0
>> 00000014 00000331 R_PARISC_SEGREL32 00000000 .init.text + 44
>> 00000020 00000431 R_PARISC_SEGREL32 00000000 .text.crc32c + 0
>> 00000024 00000431 R_PARISC_SEGREL32 00000000 .text.crc32c + 6c
>
> That's exactly what I expected. There's no overlap. The module
> loader needs to sort the unwind entries after doing the relocations.
It's already sorting the entries, but creating the relocation is currently a hack.
See top of arch/parisc/kernel/module.c:
* - SEGREL32 handling
* We are not doing SEGREL32 handling correctly. According to the ABI, we
* should do a value offset, like this:
* if (in_init(me, (void *)val))
* val -= (uint32_t)me->module_init;
* else
* val -= (uint32_t)me->module_core;
* However, SEGREL32 is used only for PARISC unwind entries, and we want
* those entries to have an absolute address, and not just an offset.
*
* The unwind table mechanism has the ability to specify an offset for
* the unwind table; however, because we split off the init functions into
* a different piece of memory, it is not possible to do this using a
* single offset. Instead, we use the above hack for now.
If we change this, don't we require a binutils update then at the same time from the users?
Helge
next prev parent reply other threads:[~2009-11-03 22:04 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-10-26 22:21 Out of order unwind entry warning Helge Deller
2009-10-26 23:41 ` Kyle McMartin
2009-10-27 1:50 ` Randolph Chung
2009-10-27 2:24 ` Kyle McMartin
2009-10-27 23:19 ` John David Anglin
2009-10-28 21:42 ` Helge Deller
2009-10-28 22:00 ` Helge Deller
2009-10-28 23:10 ` John David Anglin
2009-10-29 20:51 ` Helge Deller
2009-10-29 13:20 ` Carlos O'Donell
2009-10-28 22:18 ` John David Anglin
2009-10-28 22:43 ` Helge Deller
2009-10-28 22:59 ` Helge Deller
2009-10-29 2:11 ` John David Anglin
2009-10-29 16:38 ` John David Anglin
2009-10-29 19:16 ` John David Anglin
2009-10-29 20:46 ` Helge Deller
2009-10-29 21:07 ` John David Anglin
2009-10-29 22:22 ` Helge Deller
2009-10-29 23:35 ` John David Anglin
2009-10-30 22:47 ` Helge Deller
2009-10-31 0:41 ` John David Anglin
2009-10-31 2:19 ` John David Anglin
2009-10-31 7:39 ` Helge Deller
2009-11-01 23:16 ` John David Anglin
2009-11-02 1:40 ` John David Anglin
2009-11-02 2:34 ` John David Anglin
2009-11-02 21:02 ` Helge Deller
2009-11-02 21:50 ` John David Anglin
2009-11-02 22:20 ` Helge Deller
2009-11-02 22:31 ` James Bottomley
2009-11-02 22:43 ` Helge Deller
2009-11-02 22:52 ` Helge Deller
2009-11-02 23:23 ` John David Anglin
2009-11-03 21:10 ` Helge Deller
2009-11-03 21:36 ` John David Anglin
2009-11-03 21:43 ` Helge Deller
2009-11-03 21:54 ` John David Anglin
2009-11-03 22:04 ` Helge Deller [this message]
2009-11-04 0:57 ` John David Anglin
2009-11-06 23:07 ` Helge Deller
2009-11-07 20:11 ` Kyle McMartin
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=4AF0A8FB.2000504@gmx.de \
--to=deller@gmx.de \
--cc=carlos@systemhalted.org \
--cc=dave.anglin@nrc-cnrc.gc.ca \
--cc=dave@hiauly1.hia.nrc.ca \
--cc=linux-parisc@vger.kernel.org \
--cc=randolph@tausq.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.