diff options
author | Andre McCurdy <armccurdy@gmail.com> | 2016-10-12 17:16:30 -0700 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-10-15 10:01:43 +0100 |
commit | 76f42d622bab13c674faa6c1a67163e40086051f (patch) | |
tree | 8479b7493cb33983d4bf4f90df3a54f90f36c229 /meta/recipes-devtools/binutils | |
parent | ee835e1c6383d8879db42040556482207a018880 (diff) | |
download | poky-76f42d622bab13c674faa6c1a67163e40086051f.tar.gz |
binutils: fix for MIPS "Can't find matching LO16 reloc" errors
Patch taken from Binutils Bugzilla:
https://sourceware.org/bugzilla/show_bug.cgi?id=20649
(From OE-Core rev: a31eff6894099ee1d0ce7ccf2972f7276ca12743)
Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-devtools/binutils')
-rw-r--r-- | meta/recipes-devtools/binutils/binutils-2.27.inc | 1 | ||||
-rw-r--r-- | meta/recipes-devtools/binutils/binutils/0015-binutils-mips-gas-pic-relax-linkonce.diff | 65 |
2 files changed, 66 insertions, 0 deletions
diff --git a/meta/recipes-devtools/binutils/binutils-2.27.inc b/meta/recipes-devtools/binutils/binutils-2.27.inc index 03b7bedd25..b0c5267456 100644 --- a/meta/recipes-devtools/binutils/binutils-2.27.inc +++ b/meta/recipes-devtools/binutils/binutils-2.27.inc | |||
@@ -34,6 +34,7 @@ SRC_URI = "\ | |||
34 | file://0012-Add-support-for-Netlogic-XLP.patch \ | 34 | file://0012-Add-support-for-Netlogic-XLP.patch \ |
35 | file://0013-fix-the-incorrect-assembling-for-ppc-wait-mnemonic.patch \ | 35 | file://0013-fix-the-incorrect-assembling-for-ppc-wait-mnemonic.patch \ |
36 | file://0014-libtool-remove-rpath.patch \ | 36 | file://0014-libtool-remove-rpath.patch \ |
37 | file://0015-binutils-mips-gas-pic-relax-linkonce.diff \ | ||
37 | " | 38 | " |
38 | S = "${WORKDIR}/git" | 39 | S = "${WORKDIR}/git" |
39 | 40 | ||
diff --git a/meta/recipes-devtools/binutils/binutils/0015-binutils-mips-gas-pic-relax-linkonce.diff b/meta/recipes-devtools/binutils/binutils/0015-binutils-mips-gas-pic-relax-linkonce.diff new file mode 100644 index 0000000000..78b971a996 --- /dev/null +++ b/meta/recipes-devtools/binutils/binutils/0015-binutils-mips-gas-pic-relax-linkonce.diff | |||
@@ -0,0 +1,65 @@ | |||
1 | Patch taken from Binutils Bugzilla: | ||
2 | |||
3 | https://sourceware.org/bugzilla/show_bug.cgi?id=20649 | ||
4 | |||
5 | Upstream-Status: Pending | ||
6 | |||
7 | Signed-off-by: Andre McCurdy <armccurdy@gmail.com> | ||
8 | |||
9 | Index: binutils/gas/config/tc-mips.c | ||
10 | =================================================================== | ||
11 | --- binutils.orig/gas/config/tc-mips.c 2016-09-29 05:12:31.000000000 +0100 | ||
12 | +++ binutils/gas/config/tc-mips.c 2016-09-29 20:05:13.257411084 +0100 | ||
13 | @@ -1353,7 +1353,7 @@ static void s_mips_stab (int); | ||
14 | static void s_mips_weakext (int); | ||
15 | static void s_mips_file (int); | ||
16 | static void s_mips_loc (int); | ||
17 | -static bfd_boolean pic_need_relax (symbolS *, asection *); | ||
18 | +static bfd_boolean pic_need_relax (symbolS *); | ||
19 | static int relaxed_branch_length (fragS *, asection *, int); | ||
20 | static int relaxed_micromips_16bit_branch_length (fragS *, asection *, int); | ||
21 | static int relaxed_micromips_32bit_branch_length (fragS *, asection *, int); | ||
22 | @@ -4258,6 +4258,8 @@ mips_move_text_labels (void) | ||
23 | mips_move_labels (seg_info (now_seg)->label_list, TRUE); | ||
24 | } | ||
25 | |||
26 | +/* Duplicate the test for LINK_ONCE sections as in `adjust_reloc_syms'. */ | ||
27 | + | ||
28 | static bfd_boolean | ||
29 | s_is_linkonce (symbolS *sym, segT from_seg) | ||
30 | { | ||
31 | @@ -14823,7 +14825,7 @@ mips_frob_file (void) | ||
32 | constants; we'll report an error for those later. */ | ||
33 | if (got16_reloc_p (l->fixp->fx_r_type) | ||
34 | && !(l->fixp->fx_addsy | ||
35 | - && pic_need_relax (l->fixp->fx_addsy, l->seg))) | ||
36 | + && pic_need_relax (l->fixp->fx_addsy))) | ||
37 | continue; | ||
38 | |||
39 | /* Check quickly whether the next fixup happens to be a matching %lo. */ | ||
40 | @@ -17043,7 +17045,7 @@ nopic_need_relax (symbolS *sym, int befo | ||
41 | /* Return true if the given symbol should be considered local for SVR4 PIC. */ | ||
42 | |||
43 | static bfd_boolean | ||
44 | -pic_need_relax (symbolS *sym, asection *segtype) | ||
45 | +pic_need_relax (symbolS *sym) | ||
46 | { | ||
47 | asection *symsec; | ||
48 | |||
49 | @@ -17068,7 +17070,6 @@ pic_need_relax (symbolS *sym, asection * | ||
50 | return (!bfd_is_und_section (symsec) | ||
51 | && !bfd_is_abs_section (symsec) | ||
52 | && !bfd_is_com_section (symsec) | ||
53 | - && !s_is_linkonce (sym, segtype) | ||
54 | /* A global or weak symbol is treated as external. */ | ||
55 | && (!S_IS_WEAK (sym) && !S_IS_EXTERNAL (sym))); | ||
56 | } | ||
57 | @@ -17507,7 +17508,7 @@ md_estimate_size_before_relax (fragS *fr | ||
58 | if (mips_pic == NO_PIC) | ||
59 | change = nopic_need_relax (fragp->fr_symbol, 0); | ||
60 | else if (mips_pic == SVR4_PIC) | ||
61 | - change = pic_need_relax (fragp->fr_symbol, segtype); | ||
62 | + change = pic_need_relax (fragp->fr_symbol); | ||
63 | else if (mips_pic == VXWORKS_PIC) | ||
64 | /* For vxworks, GOT16 relocations never have a corresponding LO16. */ | ||
65 | change = 0; | ||