Changeset c1072919 in rtems


Ignore:
Timestamp:
Jun 6, 2014, 12:54:37 PM (7 years ago)
Author:
Sebastian Huber <sebastian.huber@…>
Branches:
4.11, 5, master
Children:
19260fb
Parents:
d9ff8b3e
Message:

Revert "bsps/powerpc: Fix potential relocation truncation"

This reverts commit d9ff8b3e687a0ec56cac6463ba01ba7775eccd41.

It is not that simple:

https://sourceware.org/ml/binutils/2014-06/msg00062.html

On Fri, Jun 06, 2014 at 01:31:48PM +0200, Sebastian Huber wrote:

On 2014-06-06 13:23, Sebastian Huber wrote:

Ok, so this "cmplwi cr0, rX, ppc_exc_lock_std@sdarel" is illegal,
since
ppc_exc_lock_std@sdarel is signed and the immediate is unsigned
16-bit? The
assembler doesn't issue a warning about this.

Exists there a way to rescue this cmplwi hack without relaxing the
overflow
checks?

Hm, sorry, it was surprisingly simple. This works:

"cmplwi cr0, rX, ppc_exc_lock_std@sdarel@l"

I was not aware that you can add several @ in a row.

That is the wrong thing to use here. sdarel@l translates to a VLE
reloc which applies to a split 16-bit field in VLE insns.

You want

cmpwi cr0, rX, ppc_exc_lock_std@sdarel

to properly compare a 16-bit signed number from sym@sdarel.

Note that the assembler does error if you write something like

cmplwi 3,-30000

or

cmpwi 3,40000

so what the linker is now doing is extending this behaviour to link
time.

File:
1 edited

Legend:

Unmodified
Added
Removed
Note: See TracChangeset for help on using the changeset viewer.