ARC: Improve relocation fix-ups
authorAlexey Brodkin <abrodkin@synopsys.com>
Tue, 29 May 2018 15:09:55 +0000 (18:09 +0300)
committerAlexey Brodkin <abrodkin@synopsys.com>
Thu, 31 May 2018 17:13:29 +0000 (20:13 +0300)
commitce3071287e9837b897d49d1be03e00e52050a33e
tree59ea9b588539acf6bdc49d0db63ee3302445bcc3
parent7530bb21753e90208c7a850e6e80376ca489f809
ARC: Improve relocation fix-ups

We used to have the one and only linker script for all ARC boards
and so we relied on a particular order of symbols there.

Because of that we used __ivt_end as the marker of the end of all the
code which won't be true any longer if we move .ivt section to any other
place. That said we'd better check for each section separately.

A couple of other improvements:
 1. There's no point to include the marker of section end in interested
    range because its address is beyond the section, i.e. we should
    compare with "<" but not "<=".

 2. .ivt section for ARCv2 cores is just an array of 32-bit ints and
    they are not swapped even on little-endia cores while in case of
    ARCompact cores .ivt contains valid code so swapping is required.

 3. Just in case add check for ARC600 which is also ARCompact
    and its .ivt is normal code.

Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
arch/arc/lib/relocate.c