Linux PARISC architecture development
 help / color / mirror / Atom feed
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

  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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox