binutils-2.22: Backport PR fixes from 2.22 branch

These are fixes mainly cherrypicks for mips/ppc/x86
mainly fixing PRs in ld and gold

(From OE-Core rev: f098cfc24bae8e0685bcae53ea4fdc3326ddc6c4)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Khem Raj 2012-09-13 14:59:10 -07:00 committed by Richard Purdie
parent 268177e4e6
commit 97bb9c5b67
15 changed files with 6281 additions and 1 deletions

View File

@ -1,4 +1,4 @@
PR = "r15"
PR = "r16"
LIC_FILES_CHKSUM="\
file://src-release;endline=17;md5=4830a9ef968f3b18dd5e9f2c00db2d35\
@ -32,6 +32,20 @@ SRC_URI = "\
file://mips64-default-ld-emulation.patch \
file://0001-PR-ld-13470.patch \
file://rpath-sysroot.patch \
file://0006-mips-dis.c-print_insn_micromips-Rename-local-variabl.patch \
file://0019-PR-ld-13468.patch \
file://0028-Backport-from-mainline.patch \
file://0035-2011-12-19-Chung-Lin-Tang-cltang-codesourcery.com.patch \
file://0036-2011-12-19-Chung-Lin-Tang-cltang-codesourcery.com.patch \
file://0037-2011-12-19-Chung-Lin-Tang-cltang-codesourcery.com.patch \
file://0038-Copy-from-mainline-to-binutils-2.22-branch.patch \
file://0039-emulparams-elf32bmip.sh-OTHER_SECTIONS-Put-.mdebug.-.patch \
file://0052-gas.patch \
file://0055-Remove-ABI_64_P-check-on-R_X86_64_PCXX.patch \
file://0078-PR-binutils-13622.patch \
file://0144-timer.cc-include-unistd.h.patch \
file://0166-2012-04-27-Doug-Kwan-dougkwan-google.com.patch \
file://0182-PR-ld-13991.patch \
"
SRC_URI[md5sum] = "ee0f10756c84979622b992a4a61ea3f5"

View File

@ -0,0 +1,634 @@
Upstream-Status: Backport
From f72b2c498bc98f42048a3bf7f7d7891db9cabcfc Mon Sep 17 00:00:00 2001
From: Pierre Muller <muller@ics.u-strasbg.fr>
Date: Fri, 25 Nov 2011 16:57:32 +0000
Subject: [PATCH 006/262] * mips-dis.c (print_insn_micromips): Rename
local variable iprintf to infprintf to
avoid shadow warning.
---
opcodes/ChangeLog | 5 ++
opcodes/mips-dis.c | 188 ++++++++++++++++++++++++++--------------------------
2 files changed, 99 insertions(+), 94 deletions(-)
2011-11-25 Pierre Muller <muller@ics.u-strasbg.fr>
* mips-dis.c (print_insn_micromips): Rename local variable iprintf
to infprintf to avoid shadow warning.
diff --git a/opcodes/mips-dis.c b/opcodes/mips-dis.c
index 4e18d8a..72285de 100644
--- a/opcodes/mips-dis.c
+++ b/opcodes/mips-dis.c
@@ -2260,7 +2260,7 @@ print_insn_mips16 (bfd_vma memaddr, struct disassemble_info *info)
static int
print_insn_micromips (bfd_vma memaddr, struct disassemble_info *info)
{
- const fprintf_ftype iprintf = info->fprintf_func;
+ const fprintf_ftype infprintf = info->fprintf_func;
const struct mips_opcode *op, *opend;
unsigned int lsb, msbd, msb;
void *is = info->stream;
@@ -2307,7 +2307,7 @@ print_insn_micromips (bfd_vma memaddr, struct disassemble_info *info)
status = (*info->read_memory_func) (memaddr + 2, buffer, 2, info);
if (status != 0)
{
- iprintf (is, "micromips 0x%x", higher);
+ infprintf (is, "micromips 0x%x", higher);
(*info->memory_error_func) (status, memaddr + 2, info);
return -1;
}
@@ -2320,7 +2320,7 @@ print_insn_micromips (bfd_vma memaddr, struct disassemble_info *info)
status = (*info->read_memory_func) (memaddr + 4, buffer, 2, info);
if (status != 0)
{
- iprintf (is, "micromips 0x%x", higher);
+ infprintf (is, "micromips 0x%x", higher);
(*info->memory_error_func) (status, memaddr + 4, info);
return -1;
}
@@ -2328,7 +2328,7 @@ print_insn_micromips (bfd_vma memaddr, struct disassemble_info *info)
insn = bfd_getb16 (buffer);
else
insn = bfd_getl16 (buffer);
- iprintf (is, "0x%x%04x (48-bit insn)", higher, insn);
+ infprintf (is, "0x%x%04x (48-bit insn)", higher, insn);
info->insn_type = dis_noninsn;
return 6;
@@ -2341,7 +2341,7 @@ print_insn_micromips (bfd_vma memaddr, struct disassemble_info *info)
status = (*info->read_memory_func) (memaddr + 2, buffer, 2, info);
if (status != 0)
{
- iprintf (is, "micromips 0x%x", higher);
+ infprintf (is, "micromips 0x%x", higher);
(*info->memory_error_func) (status, memaddr + 2, info);
return -1;
}
@@ -2371,9 +2371,9 @@ print_insn_micromips (bfd_vma memaddr, struct disassemble_info *info)
{
const char *s;
- iprintf (is, "%s", op->name);
+ infprintf (is, "%s", op->name);
if (op->args[0] != '\0')
- iprintf (is, "\t");
+ infprintf (is, "\t");
for (s = op->args; *s != '\0'; s++)
{
@@ -2382,37 +2382,37 @@ print_insn_micromips (bfd_vma memaddr, struct disassemble_info *info)
case ',':
case '(':
case ')':
- iprintf (is, "%c", *s);
+ infprintf (is, "%c", *s);
break;
case '.':
delta = GET_OP (insn, OFFSET10);
if (delta & 0x200)
delta |= ~0x3ff;
- iprintf (is, "%d", delta);
+ infprintf (is, "%d", delta);
break;
case '1':
- iprintf (is, "0x%lx", GET_OP (insn, STYPE));
+ infprintf (is, "0x%lx", GET_OP (insn, STYPE));
break;
case '<':
- iprintf (is, "0x%lx", GET_OP (insn, SHAMT));
+ infprintf (is, "0x%lx", GET_OP (insn, SHAMT));
break;
case '\\':
- iprintf (is, "0x%lx", GET_OP (insn, 3BITPOS));
+ infprintf (is, "0x%lx", GET_OP (insn, 3BITPOS));
break;
case '|':
- iprintf (is, "0x%lx", GET_OP (insn, TRAP));
+ infprintf (is, "0x%lx", GET_OP (insn, TRAP));
break;
case '~':
delta = GET_OP (insn, OFFSET12);
if (delta & 0x800)
delta |= ~0x7ff;
- iprintf (is, "%d", delta);
+ infprintf (is, "%d", delta);
break;
case 'a':
@@ -2433,34 +2433,34 @@ print_insn_micromips (bfd_vma memaddr, struct disassemble_info *info)
case 'r':
case 's':
case 'v':
- iprintf (is, "%s", mips_gpr_names[GET_OP (insn, RS)]);
+ infprintf (is, "%s", mips_gpr_names[GET_OP (insn, RS)]);
break;
case 'c':
- iprintf (is, "0x%lx", GET_OP (insn, CODE));
+ infprintf (is, "0x%lx", GET_OP (insn, CODE));
break;
case 'd':
- iprintf (is, "%s", mips_gpr_names[GET_OP (insn, RD)]);
+ infprintf (is, "%s", mips_gpr_names[GET_OP (insn, RD)]);
break;
case 'h':
- iprintf (is, "0x%lx", GET_OP (insn, PREFX));
+ infprintf (is, "0x%lx", GET_OP (insn, PREFX));
break;
case 'i':
case 'u':
- iprintf (is, "0x%lx", GET_OP (insn, IMMEDIATE));
+ infprintf (is, "0x%lx", GET_OP (insn, IMMEDIATE));
break;
case 'j': /* Same as i, but sign-extended. */
case 'o':
delta = (GET_OP (insn, DELTA) ^ 0x8000) - 0x8000;
- iprintf (is, "%d", delta);
+ infprintf (is, "%d", delta);
break;
case 'k':
- iprintf (is, "0x%x", GET_OP (insn, CACHE));
+ infprintf (is, "0x%x", GET_OP (insn, CACHE));
break;
case 'n':
@@ -2472,26 +2472,26 @@ print_insn_micromips (bfd_vma memaddr, struct disassemble_info *info)
if (s_reg_encode != 0)
{
if (s_reg_encode == 1)
- iprintf (is, "%s", mips_gpr_names[16]);
+ infprintf (is, "%s", mips_gpr_names[16]);
else if (s_reg_encode < 9)
- iprintf (is, "%s-%s",
+ infprintf (is, "%s-%s",
mips_gpr_names[16],
mips_gpr_names[15 + s_reg_encode]);
else if (s_reg_encode == 9)
- iprintf (is, "%s-%s,%s",
+ infprintf (is, "%s-%s,%s",
mips_gpr_names[16],
mips_gpr_names[23],
mips_gpr_names[30]);
else
- iprintf (is, "UNKNOWN");
+ infprintf (is, "UNKNOWN");
}
if (immed & 0x10) /* For ra. */
{
if (s_reg_encode == 0)
- iprintf (is, "%s", mips_gpr_names[31]);
+ infprintf (is, "%s", mips_gpr_names[31]);
else
- iprintf (is, ",%s", mips_gpr_names[31]);
+ infprintf (is, ",%s", mips_gpr_names[31]);
}
break;
}
@@ -2504,32 +2504,32 @@ print_insn_micromips (bfd_vma memaddr, struct disassemble_info *info)
break;
case 'q':
- iprintf (is, "0x%lx", GET_OP (insn, CODE2));
+ infprintf (is, "0x%lx", GET_OP (insn, CODE2));
break;
case 't':
case 'w':
- iprintf (is, "%s", mips_gpr_names[GET_OP (insn, RT)]);
+ infprintf (is, "%s", mips_gpr_names[GET_OP (insn, RT)]);
break;
case 'y':
- iprintf (is, "%s", mips_gpr_names[GET_OP (insn, RS3)]);
+ infprintf (is, "%s", mips_gpr_names[GET_OP (insn, RS3)]);
break;
case 'z':
- iprintf (is, "%s", mips_gpr_names[0]);
+ infprintf (is, "%s", mips_gpr_names[0]);
break;
case 'B':
- iprintf (is, "0x%lx", GET_OP (insn, CODE10));
+ infprintf (is, "0x%lx", GET_OP (insn, CODE10));
break;
case 'C':
- iprintf (is, "0x%lx", GET_OP (insn, COPZ));
+ infprintf (is, "0x%lx", GET_OP (insn, COPZ));
break;
case 'D':
- iprintf (is, "%s", mips_fpr_names[GET_OP (insn, FD)]);
+ infprintf (is, "%s", mips_fpr_names[GET_OP (insn, FD)]);
break;
case 'E':
@@ -2540,7 +2540,7 @@ print_insn_micromips (bfd_vma memaddr, struct disassemble_info *info)
'T' format. Therefore, until we gain understanding of
cp2 register names, we can simply print the register
numbers. */
- iprintf (is, "$%ld", GET_OP (insn, RT));
+ infprintf (is, "$%ld", GET_OP (insn, RT));
break;
case 'G':
@@ -2559,44 +2559,44 @@ print_insn_micromips (bfd_vma memaddr, struct disassemble_info *info)
case 0x000002fc: /* mtc0 */
case 0x580000fc: /* dmfc0 */
case 0x580002fc: /* dmtc0 */
- iprintf (is, "%s", mips_cp0_names[GET_OP (insn, RS)]);
+ infprintf (is, "%s", mips_cp0_names[GET_OP (insn, RS)]);
break;
default:
- iprintf (is, "$%ld", GET_OP (insn, RS));
+ infprintf (is, "$%ld", GET_OP (insn, RS));
break;
}
break;
case 'H':
- iprintf (is, "%ld", GET_OP (insn, SEL));
+ infprintf (is, "%ld", GET_OP (insn, SEL));
break;
case 'K':
- iprintf (is, "%s", mips_hwr_names[GET_OP (insn, RS)]);
+ infprintf (is, "%s", mips_hwr_names[GET_OP (insn, RS)]);
break;
case 'M':
- iprintf (is, "$fcc%ld", GET_OP (insn, CCC));
+ infprintf (is, "$fcc%ld", GET_OP (insn, CCC));
break;
case 'N':
- iprintf (is,
+ infprintf (is,
(op->pinfo & (FP_D | FP_S)) != 0
? "$fcc%ld" : "$cc%ld",
GET_OP (insn, BCC));
break;
case 'R':
- iprintf (is, "%s", mips_fpr_names[GET_OP (insn, FR)]);
+ infprintf (is, "%s", mips_fpr_names[GET_OP (insn, FR)]);
break;
case 'S':
case 'V':
- iprintf (is, "%s", mips_fpr_names[GET_OP (insn, FS)]);
+ infprintf (is, "%s", mips_fpr_names[GET_OP (insn, FS)]);
break;
case 'T':
- iprintf (is, "%s", mips_fpr_names[GET_OP (insn, FT)]);
+ infprintf (is, "%s", mips_fpr_names[GET_OP (insn, FT)]);
break;
case '+':
@@ -2606,18 +2606,18 @@ print_insn_micromips (bfd_vma memaddr, struct disassemble_info *info)
{
case 'A':
lsb = GET_OP (insn, EXTLSB);
- iprintf (is, "0x%x", lsb);
+ infprintf (is, "0x%x", lsb);
break;
case 'B':
msb = GET_OP (insn, INSMSB);
- iprintf (is, "0x%x", msb - lsb + 1);
+ infprintf (is, "0x%x", msb - lsb + 1);
break;
case 'C':
case 'H':
msbd = GET_OP (insn, EXTMSBD);
- iprintf (is, "0x%x", msbd + 1);
+ infprintf (is, "0x%x", msbd + 1);
break;
case 'D':
@@ -2637,30 +2637,30 @@ print_insn_micromips (bfd_vma memaddr, struct disassemble_info *info)
mips_cp0sel_names_len,
cp0reg, sel);
if (n != NULL)
- iprintf (is, "%s", n->name);
+ infprintf (is, "%s", n->name);
else
- iprintf (is, "$%d,%d", cp0reg, sel);
+ infprintf (is, "$%d,%d", cp0reg, sel);
break;
}
case 'E':
lsb = GET_OP (insn, EXTLSB) + 32;
- iprintf (is, "0x%x", lsb);
+ infprintf (is, "0x%x", lsb);
break;
case 'F':
msb = GET_OP (insn, INSMSB) + 32;
- iprintf (is, "0x%x", msb - lsb + 1);
+ infprintf (is, "0x%x", msb - lsb + 1);
break;
case 'G':
msbd = GET_OP (insn, EXTMSBD) + 32;
- iprintf (is, "0x%x", msbd + 1);
+ infprintf (is, "0x%x", msbd + 1);
break;
default:
/* xgettext:c-format */
- iprintf (is,
+ infprintf (is,
_("# internal disassembler error, "
"unrecognized modifier (+%c)"),
*s);
@@ -2674,111 +2674,111 @@ print_insn_micromips (bfd_vma memaddr, struct disassemble_info *info)
switch (*s)
{
case 'a': /* global pointer. */
- iprintf (is, "%s", mips_gpr_names[28]);
+ infprintf (is, "%s", mips_gpr_names[28]);
break;
case 'b':
regno = micromips_to_32_reg_b_map[GET_OP (insn, MB)];
- iprintf (is, "%s", mips_gpr_names[regno]);
+ infprintf (is, "%s", mips_gpr_names[regno]);
break;
case 'c':
regno = micromips_to_32_reg_c_map[GET_OP (insn, MC)];
- iprintf (is, "%s", mips_gpr_names[regno]);
+ infprintf (is, "%s", mips_gpr_names[regno]);
break;
case 'd':
regno = micromips_to_32_reg_d_map[GET_OP (insn, MD)];
- iprintf (is, "%s", mips_gpr_names[regno]);
+ infprintf (is, "%s", mips_gpr_names[regno]);
break;
case 'e':
regno = micromips_to_32_reg_e_map[GET_OP (insn, ME)];
- iprintf (is, "%s", mips_gpr_names[regno]);
+ infprintf (is, "%s", mips_gpr_names[regno]);
break;
case 'f':
/* Save lastregno for "mt" to print out later. */
lastregno = micromips_to_32_reg_f_map[GET_OP (insn, MF)];
- iprintf (is, "%s", mips_gpr_names[lastregno]);
+ infprintf (is, "%s", mips_gpr_names[lastregno]);
break;
case 'g':
regno = micromips_to_32_reg_g_map[GET_OP (insn, MG)];
- iprintf (is, "%s", mips_gpr_names[regno]);
+ infprintf (is, "%s", mips_gpr_names[regno]);
break;
case 'h':
regno = micromips_to_32_reg_h_map[GET_OP (insn, MH)];
- iprintf (is, "%s", mips_gpr_names[regno]);
+ infprintf (is, "%s", mips_gpr_names[regno]);
break;
case 'i':
regno = micromips_to_32_reg_i_map[GET_OP (insn, MI)];
- iprintf (is, "%s", mips_gpr_names[regno]);
+ infprintf (is, "%s", mips_gpr_names[regno]);
break;
case 'j':
- iprintf (is, "%s", mips_gpr_names[GET_OP (insn, MJ)]);
+ infprintf (is, "%s", mips_gpr_names[GET_OP (insn, MJ)]);
break;
case 'l':
regno = micromips_to_32_reg_l_map[GET_OP (insn, ML)];
- iprintf (is, "%s", mips_gpr_names[regno]);
+ infprintf (is, "%s", mips_gpr_names[regno]);
break;
case 'm':
regno = micromips_to_32_reg_m_map[GET_OP (insn, MM)];
- iprintf (is, "%s", mips_gpr_names[regno]);
+ infprintf (is, "%s", mips_gpr_names[regno]);
break;
case 'n':
regno = micromips_to_32_reg_n_map[GET_OP (insn, MN)];
- iprintf (is, "%s", mips_gpr_names[regno]);
+ infprintf (is, "%s", mips_gpr_names[regno]);
break;
case 'p':
/* Save lastregno for "mt" to print out later. */
lastregno = GET_OP (insn, MP);
- iprintf (is, "%s", mips_gpr_names[lastregno]);
+ infprintf (is, "%s", mips_gpr_names[lastregno]);
break;
case 'q':
regno = micromips_to_32_reg_q_map[GET_OP (insn, MQ)];
- iprintf (is, "%s", mips_gpr_names[regno]);
+ infprintf (is, "%s", mips_gpr_names[regno]);
break;
case 'r': /* program counter. */
- iprintf (is, "$pc");
+ infprintf (is, "$pc");
break;
case 's': /* stack pointer. */
lastregno = 29;
- iprintf (is, "%s", mips_gpr_names[29]);
+ infprintf (is, "%s", mips_gpr_names[29]);
break;
case 't':
- iprintf (is, "%s", mips_gpr_names[lastregno]);
+ infprintf (is, "%s", mips_gpr_names[lastregno]);
break;
case 'z': /* $0. */
- iprintf (is, "%s", mips_gpr_names[0]);
+ infprintf (is, "%s", mips_gpr_names[0]);
break;
case 'A':
/* Sign-extend the immediate. */
immed = ((GET_OP (insn, IMMA) ^ 0x40) - 0x40) << 2;
- iprintf (is, "%d", immed);
+ infprintf (is, "%d", immed);
break;
case 'B':
immed = micromips_imm_b_map[GET_OP (insn, IMMB)];
- iprintf (is, "%d", immed);
+ infprintf (is, "%d", immed);
break;
case 'C':
immed = micromips_imm_c_map[GET_OP (insn, IMMC)];
- iprintf (is, "0x%lx", immed);
+ infprintf (is, "0x%lx", immed);
break;
case 'D':
@@ -2797,50 +2797,50 @@ print_insn_micromips (bfd_vma memaddr, struct disassemble_info *info)
case 'F':
immed = GET_OP (insn, IMMF);
- iprintf (is, "0x%x", immed);
+ infprintf (is, "0x%x", immed);
break;
case 'G':
immed = (insn >> MICROMIPSOP_SH_IMMG) + 1;
immed = (immed & MICROMIPSOP_MASK_IMMG) - 1;
- iprintf (is, "%d", immed);
+ infprintf (is, "%d", immed);
break;
case 'H':
immed = GET_OP (insn, IMMH) << 1;
- iprintf (is, "%d", immed);
+ infprintf (is, "%d", immed);
break;
case 'I':
immed = (insn >> MICROMIPSOP_SH_IMMI) + 1;
immed = (immed & MICROMIPSOP_MASK_IMMI) - 1;
- iprintf (is, "%d", immed);
+ infprintf (is, "%d", immed);
break;
case 'J':
immed = GET_OP (insn, IMMJ) << 2;
- iprintf (is, "%d", immed);
+ infprintf (is, "%d", immed);
break;
case 'L':
immed = GET_OP (insn, IMML);
- iprintf (is, "%d", immed);
+ infprintf (is, "%d", immed);
break;
case 'M':
immed = (insn >> MICROMIPSOP_SH_IMMM) - 1;
immed = (immed & MICROMIPSOP_MASK_IMMM) + 1;
- iprintf (is, "%d", immed);
+ infprintf (is, "%d", immed);
break;
case 'N':
immed = GET_OP (insn, IMMN);
if (immed == 0)
- iprintf (is, "%s,%s",
+ infprintf (is, "%s,%s",
mips_gpr_names[16],
mips_gpr_names[31]);
else
- iprintf (is, "%s-%s,%s",
+ infprintf (is, "%s-%s,%s",
mips_gpr_names[16],
mips_gpr_names[16 + immed],
mips_gpr_names[31]);
@@ -2848,35 +2848,35 @@ print_insn_micromips (bfd_vma memaddr, struct disassemble_info *info)
case 'O':
immed = GET_OP (insn, IMMO);
- iprintf (is, "0x%x", immed);
+ infprintf (is, "0x%x", immed);
break;
case 'P':
immed = GET_OP (insn, IMMP) << 2;
- iprintf (is, "%d", immed);
+ infprintf (is, "%d", immed);
break;
case 'Q':
/* Sign-extend the immediate. */
immed = (GET_OP (insn, IMMQ) ^ 0x400000) - 0x400000;
immed <<= 2;
- iprintf (is, "%d", immed);
+ infprintf (is, "%d", immed);
break;
case 'U':
immed = GET_OP (insn, IMMU) << 2;
- iprintf (is, "%d", immed);
+ infprintf (is, "%d", immed);
break;
case 'W':
immed = GET_OP (insn, IMMW) << 2;
- iprintf (is, "%d", immed);
+ infprintf (is, "%d", immed);
break;
case 'X':
/* Sign-extend the immediate. */
immed = (GET_OP (insn, IMMX) ^ 0x8) - 0x8;
- iprintf (is, "%d", immed);
+ infprintf (is, "%d", immed);
break;
case 'Y':
@@ -2885,12 +2885,12 @@ print_insn_micromips (bfd_vma memaddr, struct disassemble_info *info)
if (immed >= -2 && immed <= 1)
immed ^= 0x100;
immed = immed << 2;
- iprintf (is, "%d", immed);
+ infprintf (is, "%d", immed);
break;
default:
/* xgettext:c-format */
- iprintf (is,
+ infprintf (is,
_("# internal disassembler error, "
"unrecognized modifier (m%c)"),
*s);
@@ -2900,7 +2900,7 @@ print_insn_micromips (bfd_vma memaddr, struct disassemble_info *info)
default:
/* xgettext:c-format */
- iprintf (is,
+ infprintf (is,
_("# internal disassembler error, "
"unrecognized modifier (%c)"),
*s);
@@ -2937,7 +2937,7 @@ print_insn_micromips (bfd_vma memaddr, struct disassemble_info *info)
}
#undef GET_OP
- iprintf (is, "0x%x", insn);
+ infprintf (is, "0x%x", insn);
info->insn_type = dis_noninsn;
return length;
--
1.7.9.5

View File

@ -0,0 +1,46 @@
Upstream-Status: Backport
From 4c362e4511c4046e230fc9e330bf086753f04338 Mon Sep 17 00:00:00 2001
From: Alan Modra <amodra@bigpond.net.au>
Date: Sat, 3 Dec 2011 10:29:17 +0000
Subject: [PATCH 019/262] PR ld/13468 * elflink.c
(bfd_elf_final_link): Don't segfault when checking
for DT_TEXTREL and .dynamic does not exist.
---
bfd/ChangeLog | 6 ++++++
bfd/elflink.c | 9 +++------
2 files changed, 9 insertions(+), 6 deletions(-)
2011-12-03 Alan Modra <amodra@gmail.com>
PR ld/13468
* elflink.c (bfd_elf_final_link): Don't segfault when checking
for DT_TEXTREL and .dynamic does not exist.
diff --git a/bfd/elflink.c b/bfd/elflink.c
index fc4266b..8556cec 100644
--- a/bfd/elflink.c
+++ b/bfd/elflink.c
@@ -11188,15 +11188,12 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info)
goto error_return;
/* Check for DT_TEXTREL (late, in case the backend removes it). */
- if ((info->warn_shared_textrel && info->shared)
- || info->error_textrel)
+ if (((info->warn_shared_textrel && info->shared)
+ || info->error_textrel)
+ && (o = bfd_get_section_by_name (dynobj, ".dynamic")) != NULL)
{
bfd_byte *dyncon, *dynconend;
- /* Fix up .dynamic entries. */
- o = bfd_get_section_by_name (dynobj, ".dynamic");
- BFD_ASSERT (o != NULL);
-
dyncon = o->contents;
dynconend = o->contents + o->size;
for (; dyncon < dynconend; dyncon += bed->s->sizeof_dyn)
--
1.7.9.5

View File

@ -0,0 +1,139 @@
Upstream-Status: Backport
From fbd07e4e15de7a81a2de7f9583fa3240302e2867 Mon Sep 17 00:00:00 2001
From: David Daney <ddaney@avtrex.com>
Date: Sun, 11 Dec 2011 02:28:10 +0000
Subject: [PATCH 028/262] Backport from mainline:
2011-12-10 David Daney <david.daney@cavium.com>
* elfxx-mips.c (mips_elf_link_hash_table.rld_value): Remove.
(mips_elf_link_hash_table.rld_symbol): New field;
(MIPS_ELF_RLD_MAP_SIZE): New macro.
(_bfd_mips_elf_add_symbol_hook): Remember __rld_obj_head symbol
in rld_symbol.
(_bfd_mips_elf_create_dynamic_sections): Remember __rld_map symbol
in rld_symbol.
(_bfd_mips_elf_size_dynamic_sections): Set correct size for .rld_map.
(_bfd_mips_elf_finish_dynamic_symbol): Remove .rld_map handling.
(_bfd_mips_elf_finish_dynamic_sections): Use rld_symbol to
calculate DT_MIPS_RLD_MAP value.
(_bfd_mips_elf_link_hash_table_create): Initialize rld_symbol,
quit initializing rld_value.
diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c
index 33a454d..6b908ad 100644
--- a/bfd/elfxx-mips.c
+++ b/bfd/elfxx-mips.c
@@ -436,8 +436,8 @@ struct mips_elf_link_hash_table
entry is set to the address of __rld_obj_head as in IRIX5. */
bfd_boolean use_rld_obj_head;
- /* This is the value of the __rld_map or __rld_obj_head symbol. */
- bfd_vma rld_value;
+ /* The __rld_map or __rld_obj_head symbol. */
+ struct elf_link_hash_entry *rld_symbol;
/* This is set if we see any mips16 stub sections. */
bfd_boolean mips16_stubs_seen;
@@ -768,6 +768,10 @@ static bfd *reldyn_sorting_bfd;
#define MIPS_ELF_GOT_SIZE(abfd) \
(get_elf_backend_data (abfd)->s->arch_size / 8)
+/* The size of the .rld_map section. */
+#define MIPS_ELF_RLD_MAP_SIZE(abfd) \
+ (get_elf_backend_data (abfd)->s->arch_size / 8)
+
/* The size of a symbol-table entry. */
#define MIPS_ELF_SYM_SIZE(abfd) \
(get_elf_backend_data (abfd)->s->sizeof_sym)
@@ -7081,6 +7085,7 @@ _bfd_mips_elf_add_symbol_hook (bfd *abfd, struct bfd_link_info *info,
return FALSE;
mips_elf_hash_table (info)->use_rld_obj_head = TRUE;
+ mips_elf_hash_table (info)->rld_symbol = h;
}
/* If this is a mips16 text symbol, add 1 to the value to make it
@@ -7266,6 +7271,7 @@ _bfd_mips_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
if (! bfd_elf_link_record_dynamic_symbol (info, h))
return FALSE;
+ mips_elf_hash_table (info)->rld_symbol = h;
}
}
@@ -9027,7 +9033,7 @@ _bfd_mips_elf_size_dynamic_sections (bfd *output_bfd,
{
/* We add a room for __rld_map. It will be filled in by the
rtld to contain a pointer to the _r_debug structure. */
- s->size += 4;
+ s->size += MIPS_ELF_RLD_MAP_SIZE (output_bfd);
}
else if (SGI_COMPAT (output_bfd)
&& CONST_STRNEQ (name, ".compact_rel"))
@@ -10030,31 +10036,6 @@ _bfd_mips_elf_finish_dynamic_symbol (bfd *output_bfd,
if (IRIX_COMPAT (output_bfd) == ict_irix6)
mips_elf_irix6_finish_dynamic_symbol (output_bfd, name, sym);
- if (! info->shared)
- {
- if (! mips_elf_hash_table (info)->use_rld_obj_head
- && (strcmp (name, "__rld_map") == 0
- || strcmp (name, "__RLD_MAP") == 0))
- {
- asection *s = bfd_get_section_by_name (dynobj, ".rld_map");
- BFD_ASSERT (s != NULL);
- sym->st_value = s->output_section->vma + s->output_offset;
- bfd_put_32 (output_bfd, 0, s->contents);
- if (mips_elf_hash_table (info)->rld_value == 0)
- mips_elf_hash_table (info)->rld_value = sym->st_value;
- }
- else if (mips_elf_hash_table (info)->use_rld_obj_head
- && strcmp (name, "__rld_obj_head") == 0)
- {
- /* IRIX6 does not use a .rld_map section. */
- if (IRIX_COMPAT (output_bfd) == ict_irix5
- || IRIX_COMPAT (output_bfd) == ict_none)
- BFD_ASSERT (bfd_get_section_by_name (dynobj, ".rld_map")
- != NULL);
- mips_elf_hash_table (info)->rld_value = sym->st_value;
- }
- }
-
/* Keep dynamic MIPS16 symbols odd. This allows the dynamic linker to
treat MIPS16 symbols like any other. */
if (ELF_ST_IS_MIPS16 (sym->st_other))
@@ -10517,7 +10498,19 @@ _bfd_mips_elf_finish_dynamic_sections (bfd *output_bfd,
break;
case DT_MIPS_RLD_MAP:
- dyn.d_un.d_ptr = mips_elf_hash_table (info)->rld_value;
+ {
+ struct elf_link_hash_entry *h;
+ h = mips_elf_hash_table (info)->rld_symbol;
+ if (!h)
+ {
+ dyn_to_skip = MIPS_ELF_DYN_SIZE (dynobj);
+ swap_out_p = FALSE;
+ break;
+ }
+ s = h->root.u.def.section;
+ dyn.d_un.d_ptr = (s->output_section->vma + s->output_offset
+ + h->root.u.def.value);
+ }
break;
case DT_MIPS_OPTIONS:
@@ -12794,7 +12787,7 @@ _bfd_mips_elf_link_hash_table_create (bfd *abfd)
ret->procedure_count = 0;
ret->compact_rel_size = 0;
ret->use_rld_obj_head = FALSE;
- ret->rld_value = 0;
+ ret->rld_symbol = NULL;
ret->mips16_stubs_seen = FALSE;
ret->use_plts_and_copy_relocs = FALSE;
ret->is_vxworks = FALSE;
--
1.7.9.5

View File

@ -0,0 +1,47 @@
Upstream-Status: Backport
From 97beee82f0e45e65308083a7e4cfaab57623733c Mon Sep 17 00:00:00 2001
From: cltang <cltang>
Date: Mon, 19 Dec 2011 10:34:15 +0000
Subject: [PATCH 035/262] 2011-12-19 Chung-Lin Tang
<cltang@codesourcery.com>
Backport from mainline:
2011-12-13 Chung-Lin Tang <cltang@codesourcery.com>
* elfxx-mips.c (mips_elf_calculate_relocation): Correct
R_MIPS16_HI16/R_MIPS16_LO16 handling of two cleared lower bits,
update comments.
diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c
index 6b908ad..3939183 100644
--- a/bfd/elfxx-mips.c
+++ b/bfd/elfxx-mips.c
@@ -5531,10 +5531,11 @@ mips_elf_calculate_relocation (bfd *abfd, bfd *input_bfd,
12: addu $v0,$v1
14: move $gp,$v0
So the offsets of hi and lo relocs are the same, but the
- $pc is four higher than $t9 would be, so reduce
- both reloc addends by 4. */
+ base $pc is that used by the ADDIUPC instruction at $t9 + 4.
+ ADDIUPC clears the low two bits of the instruction address,
+ so the base is ($t9 + 4) & ~3. */
if (r_type == R_MIPS16_HI16)
- value = mips_elf_high (addend + gp - p - 4);
+ value = mips_elf_high (addend + gp - ((p + 4) & ~(bfd_vma) 0x3));
/* The microMIPS .cpload sequence uses the same assembly
instructions as the traditional psABI version, but the
incoming $t9 has the low bit set. */
@@ -5557,7 +5558,7 @@ mips_elf_calculate_relocation (bfd *abfd, bfd *input_bfd,
/* See the comment for R_MIPS16_HI16 above for the reason
for this conditional. */
if (r_type == R_MIPS16_LO16)
- value = addend + gp - p;
+ value = addend + gp - (p & ~(bfd_vma) 0x3);
else if (r_type == R_MICROMIPS_LO16
|| r_type == R_MICROMIPS_HI0_LO16)
value = addend + gp - p + 3;
--
1.7.9.5

View File

@ -0,0 +1,214 @@
Upstream-Status: Backport
From 26e802720ccd055d70addadbc39f4119716f8573 Mon Sep 17 00:00:00 2001
From: cltang <cltang>
Date: Mon, 19 Dec 2011 10:39:27 +0000
Subject: [PATCH 036/262] 2011-12-19 Chung-Lin Tang
<cltang@codesourcery.com>
Backport from mainline:
2011-12-19 Chung-Lin Tang <cltang@codesourcery.com>
Catherine Moore <clm@codesourcery.com>
Sandra Loosemore <sandra@codesourcery.com>
Richard Sandiford <rdsandiford@googlemail.com>
* elfxx-mips.c (mips_elf_local_pic_function_p): Return true when
H is a MIPS16 function with a kept 32-bit stub. Update comments.
(mips_elf_get_la25_target): New function.
(mips_elf_add_la25_intro): Change to use mips_elf_get_la25_target().
(mips_elf_add_la25_stub): Move compute of use_trampoline_p down,
change to use mips_elf_get_la25_target().
(mips_elf_relocation_needs_la25_stub): Add target_is_16_bit_code_p
parameter, add switch case for R_MIPS16_26.
(mips_elf_calculate_relocation): Redirect relocation to point to the
LA25 stub if it exists, instead of the MIPS16 stub. Update arguments
of call to mips_elf_relocation_needs_la25_stub(), don't use la25 stub
for mips16->mips16 calls.
(_bfd_mips_elf_check_relocs): Update arguments of call to
mips_elf_relocation_needs_la25_stub().
(mips_elf_create_la25_stub): Change to use mips_elf_get_la25_target().
diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c
index 3939183..9f3833b 100644
--- a/bfd/elfxx-mips.c
+++ b/bfd/elfxx-mips.c
@@ -1575,9 +1575,10 @@ _bfd_mips_elf_init_stubs (struct bfd_link_info *info,
}
/* Return true if H is a locally-defined PIC function, in the sense
- that it might need $25 to be valid on entry. Note that MIPS16
- functions never need $25 to be valid on entry; they set up $gp
- using PC-relative instructions instead. */
+ that it or its fn_stub might need $25 to be valid on entry.
+ Note that MIPS16 functions set up $gp using PC-relative instructions,
+ so they themselves never need $25 to be valid. Only non-MIPS16
+ entry points are of interest here. */
static bfd_boolean
mips_elf_local_pic_function_p (struct mips_elf_link_hash_entry *h)
@@ -1586,11 +1587,32 @@ mips_elf_local_pic_function_p (struct mips_elf_link_hash_entry *h)
|| h->root.root.type == bfd_link_hash_defweak)
&& h->root.def_regular
&& !bfd_is_abs_section (h->root.root.u.def.section)
- && !ELF_ST_IS_MIPS16 (h->root.other)
+ && (!ELF_ST_IS_MIPS16 (h->root.other)
+ || (h->fn_stub && h->need_fn_stub))
&& (PIC_OBJECT_P (h->root.root.u.def.section->owner)
|| ELF_ST_IS_MIPS_PIC (h->root.other)));
}
+/* Set *SEC to the input section that contains the target of STUB.
+ Return the offset of the target from the start of that section. */
+
+static bfd_vma
+mips_elf_get_la25_target (struct mips_elf_la25_stub *stub,
+ asection **sec)
+{
+ if (ELF_ST_IS_MIPS16 (stub->h->root.other))
+ {
+ BFD_ASSERT (stub->h->need_fn_stub);
+ *sec = stub->h->fn_stub;
+ return 0;
+ }
+ else
+ {
+ *sec = stub->h->root.root.u.def.section;
+ return stub->h->root.root.u.def.value;
+ }
+}
+
/* STUB describes an la25 stub that we have decided to implement
by inserting an LUI/ADDIU pair before the target function.
Create the section and redirect the function symbol to it. */
@@ -1615,7 +1637,7 @@ mips_elf_add_la25_intro (struct mips_elf_la25_stub *stub,
sprintf (name, ".text.stub.%d", (int) htab_elements (htab->la25_stubs));
/* Create the section. */
- input_section = stub->h->root.root.u.def.section;
+ mips_elf_get_la25_target (stub, &input_section);
s = htab->add_stub_section (name, input_section,
input_section->output_section);
if (s == NULL)
@@ -1689,12 +1711,6 @@ mips_elf_add_la25_stub (struct bfd_link_info *info,
bfd_vma value;
void **slot;
- /* Prefer to use LUI/ADDIU stubs if the function is at the beginning
- of the section and if we would need no more than 2 nops. */
- s = h->root.root.u.def.section;
- value = h->root.root.u.def.value;
- use_trampoline_p = (value != 0 || s->alignment_power > 4);
-
/* Describe the stub we want. */
search.stub_section = NULL;
search.offset = 0;
@@ -1724,6 +1740,11 @@ mips_elf_add_la25_stub (struct bfd_link_info *info,
*stub = search;
*slot = stub;
+ /* Prefer to use LUI/ADDIU stubs if the function is at the beginning
+ of the section and if we would need no more than 2 nops. */
+ value = mips_elf_get_la25_target (stub, &s);
+ use_trampoline_p = (value != 0 || s->alignment_power > 4);
+
h->la25_stub = stub;
return (use_trampoline_p
? mips_elf_add_la25_trampoline (stub, info)
@@ -4911,7 +4932,8 @@ is_gott_symbol (struct bfd_link_info *info, struct elf_link_hash_entry *h)
stub. */
static bfd_boolean
-mips_elf_relocation_needs_la25_stub (bfd *input_bfd, int r_type)
+mips_elf_relocation_needs_la25_stub (bfd *input_bfd, int r_type,
+ bfd_boolean target_is_16_bit_code_p)
{
/* We specifically ignore branches and jumps from EF_PIC objects,
where the onus is on the compiler or programmer to perform any
@@ -4925,7 +4947,6 @@ mips_elf_relocation_needs_la25_stub (bfd *input_bfd, int r_type)
{
case R_MIPS_26:
case R_MIPS_PC16:
- case R_MIPS16_26:
case R_MICROMIPS_26_S1:
case R_MICROMIPS_PC7_S1:
case R_MICROMIPS_PC10_S1:
@@ -4933,6 +4954,9 @@ mips_elf_relocation_needs_la25_stub (bfd *input_bfd, int r_type)
case R_MICROMIPS_PC23_S2:
return TRUE;
+ case R_MIPS16_26:
+ return !target_is_16_bit_code_p;
+
default:
return FALSE;
}
@@ -5193,14 +5217,28 @@ mips_elf_calculate_relocation (bfd *abfd, bfd *input_bfd,
have already noticed that we were going to need the
stub. */
if (local_p)
- sec = elf_tdata (input_bfd)->local_stubs[r_symndx];
+ {
+ sec = elf_tdata (input_bfd)->local_stubs[r_symndx];
+ value = 0;
+ }
else
{
BFD_ASSERT (h->need_fn_stub);
- sec = h->fn_stub;
+ if (h->la25_stub)
+ {
+ /* If a LA25 header for the stub itself exists, point to the
+ prepended LUI/ADDIU sequence. */
+ sec = h->la25_stub->stub_section;
+ value = h->la25_stub->offset;
+ }
+ else
+ {
+ sec = h->fn_stub;
+ value = 0;
+ }
}
- symbol = sec->output_section->vma + sec->output_offset;
+ symbol = sec->output_section->vma + sec->output_offset + value;
/* The target is 16-bit, but the stub isn't. */
target_is_16_bit_code_p = FALSE;
}
@@ -5250,7 +5288,8 @@ mips_elf_calculate_relocation (bfd *abfd, bfd *input_bfd,
/* If this is a direct call to a PIC function, redirect to the
non-PIC stub. */
else if (h != NULL && h->la25_stub
- && mips_elf_relocation_needs_la25_stub (input_bfd, r_type))
+ && mips_elf_relocation_needs_la25_stub (input_bfd, r_type,
+ target_is_16_bit_code_p))
symbol = (h->la25_stub->stub_section->output_section->vma
+ h->la25_stub->stub_section->output_offset
+ h->la25_stub->offset);
@@ -7925,7 +7964,9 @@ _bfd_mips_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
return FALSE;
}
- if (h != NULL && mips_elf_relocation_needs_la25_stub (abfd, r_type))
+ if (h != NULL
+ && mips_elf_relocation_needs_la25_stub (abfd, r_type,
+ ELF_ST_IS_MIPS16 (h->other)))
((struct mips_elf_link_hash_entry *) h)->has_nonpic_branches = TRUE;
switch (r_type)
@@ -9622,9 +9663,9 @@ mips_elf_create_la25_stub (void **slot, void *data)
offset = stub->offset;
/* Work out the target address. */
- target = (stub->h->root.root.u.def.section->output_section->vma
- + stub->h->root.root.u.def.section->output_offset
- + stub->h->root.root.u.def.value);
+ target = mips_elf_get_la25_target (stub, &s);
+ target += s->output_section->vma + s->output_offset;
+
target_high = ((target + 0x8000) >> 16) & 0xffff;
target_low = (target & 0xffff);
--
1.7.9.5

View File

@ -0,0 +1,49 @@
Upstream-Status: Backport
From 80041361bf80194da35c5efb842125f3ce1d2bf2 Mon Sep 17 00:00:00 2001
From: Joseph Myers <joseph@codesourcery.com>
Date: Tue, 20 Dec 2011 18:00:03 +0000
Subject: [PATCH 039/262] * emulparams/elf32bmip.sh (OTHER_SECTIONS):
Put .mdebug.* and .gcc_compiled_long* sections
at address 0.
---
ld/ChangeLog | 5 +++++
ld/emulparams/elf32bmip.sh | 16 ++++++++--------
2 files changed, 13 insertions(+), 8 deletions(-)
2011-12-20 Joseph Myers <joseph@codesourcery.com>
* emulparams/elf32bmip.sh (OTHER_SECTIONS): Put .mdebug.* and
.gcc_compiled_long* sections at address 0.
diff --git a/ld/emulparams/elf32bmip.sh b/ld/emulparams/elf32bmip.sh
index 44a0b8a..f0fcd2c 100644
--- a/ld/emulparams/elf32bmip.sh
+++ b/ld/emulparams/elf32bmip.sh
@@ -64,14 +64,14 @@ OTHER_BSS_SYMBOLS='_fbss = .;'
OTHER_SECTIONS='
.gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
.gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
- .mdebug.abi32 : { KEEP(*(.mdebug.abi32)) }
- .mdebug.abiN32 : { KEEP(*(.mdebug.abiN32)) }
- .mdebug.abi64 : { KEEP(*(.mdebug.abi64)) }
- .mdebug.abiO64 : { KEEP(*(.mdebug.abiO64)) }
- .mdebug.eabi32 : { KEEP(*(.mdebug.eabi32)) }
- .mdebug.eabi64 : { KEEP(*(.mdebug.eabi64)) }
- .gcc_compiled_long32 : { KEEP(*(.gcc_compiled_long32)) }
- .gcc_compiled_long64 : { KEEP(*(.gcc_compiled_long64)) }
+ .mdebug.abi32 0 : { KEEP(*(.mdebug.abi32)) }
+ .mdebug.abiN32 0 : { KEEP(*(.mdebug.abiN32)) }
+ .mdebug.abi64 0 : { KEEP(*(.mdebug.abi64)) }
+ .mdebug.abiO64 0 : { KEEP(*(.mdebug.abiO64)) }
+ .mdebug.eabi32 0 : { KEEP(*(.mdebug.eabi32)) }
+ .mdebug.eabi64 0 : { KEEP(*(.mdebug.eabi64)) }
+ .gcc_compiled_long32 0 : { KEEP(*(.gcc_compiled_long32)) }
+ .gcc_compiled_long64 0 : { KEEP(*(.gcc_compiled_long64)) }
'
ARCH=mips
MACHINE=
--
1.7.9.5

View File

@ -0,0 +1,83 @@
Upstream-Status: Backport
From e45a3a5695408d472e8f0ca6c21eb03e5fd42817 Mon Sep 17 00:00:00 2001
From: Richard Sandiford <rsandifo@nildram.co.uk>
Date: Sun, 8 Jan 2012 12:34:30 +0000
Subject: [PATCH 052/262] gas/ * config/tc-mips.c (s_tls_rel_directive):
Call mips_clear_insn_labels.
gas/testsuite/
* gas/mips/tls-relw.s, gas/mips/tls-relw.d: New test.
* gas/mips/mips.exp: Run it.
---
gas/ChangeLog | 4 ++++
gas/config/tc-mips.c | 1 +
gas/testsuite/ChangeLog | 5 +++++
gas/testsuite/gas/mips/mips.exp | 1 +
gas/testsuite/gas/mips/tls-relw.d | 8 ++++++++
gas/testsuite/gas/mips/tls-relw.s | 12 ++++++++++++
6 files changed, 31 insertions(+)
create mode 100644 gas/testsuite/gas/mips/tls-relw.d
create mode 100644 gas/testsuite/gas/mips/tls-relw.s
2012-01-08 Richard Sandiford <rdsandiford@googlemail.com>
* config/tc-mips.c (s_tls_rel_directive): Call mips_clear_insn_labels.
diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c
index 0fb3a6e..5324450 100644
--- a/gas/config/tc-mips.c
+++ b/gas/config/tc-mips.c
@@ -16591,6 +16591,7 @@ s_tls_rel_directive (const size_t bytes, const char *dirstr,
md_number_to_chars (p, 0, bytes);
fix_new_exp (frag_now, p - frag_now->fr_literal, bytes, &ex, FALSE, rtype);
demand_empty_rest_of_line ();
+ mips_clear_insn_labels ();
}
/* Handle .dtprelword. */
--- a/gas/testsuite/gas/mips/mips.exp
+++ b/gas/testsuite/gas/mips/mips.exp
@@ -878,6 +878,7 @@ if { [istarget mips*-*-vxworks*] } {
run_list_test "tls-ill" "-32"
run_dump_test "tls-o32"
+ run_dump_test "tls-relw"
run_dump_test "jalr2"
run_dump_test_arches "aent" [mips_arch_list_matching mips1]
diff --git a/gas/testsuite/gas/mips/tls-relw.d b/gas/testsuite/gas/mips/tls-relw.d
new file mode 100644
index 0000000..bc13b43
--- /dev/null
+++ b/gas/testsuite/gas/mips/tls-relw.d
@@ -0,0 +1,8 @@
+# as: -EB
+# objdump: -sj.data
+
+.*
+
+Contents of section \.data:
+ 0000 00000001 00000000 00000002 00000004 ................
+ 0010 00000000 00000003 00000010 00000000 ................
diff --git a/gas/testsuite/gas/mips/tls-relw.s b/gas/testsuite/gas/mips/tls-relw.s
new file mode 100644
index 0000000..6890685
--- /dev/null
+++ b/gas/testsuite/gas/mips/tls-relw.s
@@ -0,0 +1,12 @@
+ .data
+start:
+ .word 1
+a:
+ .tprelword t1
+ .word 2
+ .word a-start
+b:
+ .dtprelword t2
+ .word 3
+ .word b-start
+ .word 0
--
1.7.9.5

View File

@ -0,0 +1,176 @@
Upstream-Status: Backport
From fee27086a7592c1812253e9c1c26f412dd87f3a2 Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Tue, 10 Jan 2012 20:34:56 +0000
Subject: [PATCH 055/262] Remove ABI_64_P check on R_X86_64_PCXX
bfd/
2012-01-10 H.J. Lu <hongjiu.lu@intel.com>
PR ld/13581
* elf64-x86-64.c (elf_x86_64_relocate_section): Remove ABI_64_P
check on R_X86_64_PCXX.
ld/testsuite/
2012-01-10 H.J. Lu <hongjiu.lu@intel.com>
PR ld/13581
* ld-x86-64/ilp32-4.s: New.
* ld-x86-64/ilp32-10.d: Likewise.
* ld-x86-64/ilp32-10.s: Likewise.
* ld-x86-64/ilp32-4.d: Adjusted.
* ld-x86-64/ilp32-5.d: Likewise.
* ld-x86-64/ilp32-5.s: Likewise.
* ld-x86-64/x86-64.exp: Run ilp32-10.
---
bfd/ChangeLog | 7 +++++++
bfd/elf64-x86-64.c | 1 -
ld/testsuite/ChangeLog | 14 ++++++++++++++
ld/testsuite/ld-x86-64/ilp32-10.d | 3 +++
ld/testsuite/ld-x86-64/ilp32-10.s | 3 +++
ld/testsuite/ld-x86-64/ilp32-4.d | 32 +++++++++++++-------------------
ld/testsuite/ld-x86-64/ilp32-4.s | 3 +++
ld/testsuite/ld-x86-64/ilp32-5.d | 2 +-
ld/testsuite/ld-x86-64/ilp32-5.s | 2 +-
ld/testsuite/ld-x86-64/x86-64.exp | 1 +
10 files changed, 46 insertions(+), 22 deletions(-)
create mode 100644 ld/testsuite/ld-x86-64/ilp32-10.d
create mode 100644 ld/testsuite/ld-x86-64/ilp32-10.s
create mode 100644 ld/testsuite/ld-x86-64/ilp32-4.s
diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c
index 3a2444b..bdb3ae6 100644
--- a/bfd/elf64-x86-64.c
+++ b/bfd/elf64-x86-64.c
@@ -3460,7 +3460,6 @@ elf_x86_64_relocate_section (bfd *output_bfd,
case R_X86_64_PC16:
case R_X86_64_PC32:
if (info->shared
- && ABI_64_P (output_bfd)
&& (input_section->flags & SEC_ALLOC) != 0
&& (input_section->flags & SEC_READONLY) != 0
&& h != NULL)
diff --git a/ld/testsuite/ld-x86-64/ilp32-10.d b/ld/testsuite/ld-x86-64/ilp32-10.d
new file mode 100644
index 0000000..43d9fbd
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/ilp32-10.d
@@ -0,0 +1,3 @@
+#as: --x32
+#ld: -shared -melf32_x86_64
+#error: .*relocation R_X86_64_PC32 against undefined symbol `bar' can not be used when making a shared object; recompile with -fPIC
diff --git a/ld/testsuite/ld-x86-64/ilp32-10.s b/ld/testsuite/ld-x86-64/ilp32-10.s
new file mode 100644
index 0000000..70e4a90
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/ilp32-10.s
@@ -0,0 +1,3 @@
+ .globl foo
+foo:
+ mov bar(%rip), %rax
diff --git a/ld/testsuite/ld-x86-64/ilp32-4.d b/ld/testsuite/ld-x86-64/ilp32-4.d
index 84dc7b2..92d8a67 100644
--- a/ld/testsuite/ld-x86-64/ilp32-4.d
+++ b/ld/testsuite/ld-x86-64/ilp32-4.d
@@ -1,36 +1,30 @@
-#source: start.s
#as: --x32
#ld: -m elf32_x86_64 -shared --no-ld-generated-unwind-info
#readelf: -d -S --wide
-There are 10 section headers, starting at offset 0x22c:
+There are 9 section headers, starting at offset 0x1d8:
Section Headers:
\[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al
\[ 0\] NULL 00000000 000000 000000 00 0 0 0
- \[ 1\] .hash HASH 00000094 000094 000030 04 A 2 0 4
- \[ 2\] .dynsym DYNSYM 000000c4 0000c4 000070 10 A 3 2 4
- \[ 3\] .dynstr STRTAB 00000134 000134 00001d 00 A 0 0 1
- \[ 4\] .rela.dyn RELA 00000154 000154 00000c 0c A 2 0 4
- \[ 5\] .text PROGBITS 00000160 000160 000005 00 AX 0 0 4
- \[ 6\] .dynamic DYNAMIC 00200168 000168 000078 08 WA 3 0 4
- \[ 7\] .shstrtab STRTAB 00000000 0001e0 00004a 00 0 0 1
- \[ 8\] .symtab SYMTAB 00000000 0003bc 0000e0 10 9 9 4
- \[ 9\] .strtab STRTAB 00000000 00049c 000043 00 0 0 1
+ \[ 1\] .hash HASH 00000094 000094 00002c 04 A 2 0 4
+ \[ 2\] .dynsym DYNSYM 000000c0 0000c0 000060 10 A 3 2 4
+ \[ 3\] .dynstr STRTAB 00000120 000120 000019 00 A 0 0 1
+ \[ 4\] .text PROGBITS 0000013c 00013c 000001 00 AX 0 0 4
+ \[ 5\] .dynamic DYNAMIC 00200140 000140 000058 08 WA 3 0 4
+ \[ 6\] .shstrtab STRTAB 00000000 000198 000040 00 0 0 1
+ \[ 7\] .symtab SYMTAB 00000000 000340 0000c0 10 8 8 4
+ \[ 8\] .strtab STRTAB 00000000 000400 00003f 00 0 0 1
Key to Flags:
W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\), l \(large\)
I \(info\), L \(link order\), G \(group\), T \(TLS\), E \(exclude\), x \(unknown\)
O \(extra OS processing required\) o \(OS specific\), p \(processor specific\)
-Dynamic section at offset 0x168 contains 10 entries:
+Dynamic section at offset 0x140 contains 6 entries:
Tag Type Name/Value
0x00000004 \(HASH\) 0x94
- 0x00000005 \(STRTAB\) 0x134
- 0x00000006 \(SYMTAB\) 0xc4
- 0x0000000a \(STRSZ\) 29 \(bytes\)
+ 0x00000005 \(STRTAB\) 0x120
+ 0x00000006 \(SYMTAB\) 0xc0
+ 0x0000000a \(STRSZ\) 25 \(bytes\)
0x0000000b \(SYMENT\) 16 \(bytes\)
- 0x00000007 \(RELA\) 0x154
- 0x00000008 \(RELASZ\) 12 \(bytes\)
- 0x00000009 \(RELAENT\) 12 \(bytes\)
- 0x00000016 \(TEXTREL\) 0x0
0x00000000 \(NULL\) 0x0
diff --git a/ld/testsuite/ld-x86-64/ilp32-4.s b/ld/testsuite/ld-x86-64/ilp32-4.s
new file mode 100644
index 0000000..5f270c7
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/ilp32-4.s
@@ -0,0 +1,3 @@
+ .globl _start
+_start:
+ ret
diff --git a/ld/testsuite/ld-x86-64/ilp32-5.d b/ld/testsuite/ld-x86-64/ilp32-5.d
index e4673e5..4870c2b 100644
--- a/ld/testsuite/ld-x86-64/ilp32-5.d
+++ b/ld/testsuite/ld-x86-64/ilp32-5.d
@@ -4,5 +4,5 @@
#...
[0-9a-f]+ +[0-9a-f]+ +R_X86_64_RELATIVE +[0-9a-f]+
-[0-9a-f]+ +[0-9a-f]+ +R_X86_64_PC32 +[0-9a-f]+ +foo - 4
+[0-9a-f]+ +[0-9a-f]+ +R_X86_64_GLOB_DAT +[0-9a-f]+ +foo \+ 0
[0-9a-f]+ +[0-9a-f]+ +R_X86_64_32 +[0-9a-f]+ +foo \+ 0
diff --git a/ld/testsuite/ld-x86-64/ilp32-5.s b/ld/testsuite/ld-x86-64/ilp32-5.s
index 0d97807..ef0c60e 100644
--- a/ld/testsuite/ld-x86-64/ilp32-5.s
+++ b/ld/testsuite/ld-x86-64/ilp32-5.s
@@ -1,6 +1,6 @@
.globl bar
bar:
- mov foo(%rip), %rax
+ mov foo@GOTPCREL(%rip), %rax
.data
xxx:
diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp
index 77b081b..44d3e07 100644
--- a/ld/testsuite/ld-x86-64/x86-64.exp
+++ b/ld/testsuite/ld-x86-64/x86-64.exp
@@ -207,6 +207,7 @@ run_dump_test "ilp32-6"
run_dump_test "ilp32-7"
run_dump_test "ilp32-8"
run_dump_test "ilp32-9"
+run_dump_test "ilp32-10"
run_dump_test "ia32-1"
run_dump_test "ia32-2"
run_dump_test "ia32-3"
--
1.7.9.5

View File

@ -0,0 +1,48 @@
Upstream-Status: Backport
From dcf0cb6bb406708020efe2db44f53af0fe822773 Mon Sep 17 00:00:00 2001
From: Nick Clifton <nickc@redhat.com>
Date: Mon, 30 Jan 2012 11:35:37 +0000
Subject: [PATCH 078/262] PR binutils/13622 * readelf.c
(process_section_groups): If there are no section
headers do not scan for section groups.
(process_note_sections): Likewise for note
sections.
---
binutils/ChangeLog | 7 +++++++
binutils/readelf.c | 5 +++--
2 files changed, 10 insertions(+), 2 deletions(-)
2012-01-26 Nick Clifton <nickc@redhat.com>
PR binutils/13622
* readelf.c (process_section_groups): If there are no section
headers do not scan for section groups.
(process_note_sections): Likewise for note sections.
diff --git a/binutils/readelf.c b/binutils/readelf.c
index 9e13190..bf053d9 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -4937,7 +4937,8 @@ process_section_groups (FILE * file)
if (section_headers == NULL)
{
error (_("Section headers are not available!\n"));
- abort ();
+ /* PR 13622: This can happen with a corrupt ELF header. */
+ return 0;
}
section_headers_groups = (struct group **) calloc (elf_header.e_shnum,
@@ -12942,7 +12943,7 @@ process_note_sections (FILE * file)
int res = 1;
for (i = 0, section = section_headers;
- i < elf_header.e_shnum;
+ i < elf_header.e_shnum && section != NULL;
i++, section++)
if (section->sh_type == SHT_NOTE)
res &= process_corefile_note_segment (file,
--
1.7.9.5

View File

@ -0,0 +1,32 @@
Upstream-Status: Backport
From b7578c6b7bd966b63ab1b2682fd90ed4f3a92e71 Mon Sep 17 00:00:00 2001
From: Ian Lance Taylor <ian@airs.com>
Date: Fri, 6 Apr 2012 17:23:58 +0000
Subject: [PATCH 144/262] * timer.cc: #include <unistd.h>.
---
gold/ChangeLog | 4 ++++
gold/timer.cc | 2 ++
2 files changed, 6 insertions(+)
2012-04-06 Ian Lance Taylor <iant@google.com>
* timer.cc: #include <unistd.h>.
diff --git a/gold/timer.cc b/gold/timer.cc
index d9b8874..44e19f5 100644
--- a/gold/timer.cc
+++ b/gold/timer.cc
@@ -22,6 +22,8 @@
#include "gold.h"
+#include <unistd.h>
+
#ifdef HAVE_TIMES
#include <sys/times.h>
#endif
--
1.7.9.5

View File

@ -0,0 +1,169 @@
Upstream-Status: Backport
From b6db4b7975d21ec53da5975ddac021098da13bf3 Mon Sep 17 00:00:00 2001
From: Doug Kwan <dougkwan@google.com>
Date: Thu, 26 Apr 2012 18:08:19 +0000
Subject: [PATCH 166/262] 2012-04-27 Doug Kwan <dougkwan@google.com>
Backport from mainline:
2012-03-16 Doug Kwan <dougkwan@google.com>
* testsuite/Makefile.am: Disable test initpri3b.
* testsuite/Makefile.in: Regenerate.
2012-03-14 Doug Kwan <dougkwan@google.com>
* gold/arm.cc (Target_arm::Scan::global): Generate
R_ARM_GLOB_DAT dynamic relocations for protected symbols in
shared objects.
---
gold/ChangeLog | 15 +++++++++++++++
gold/arm.cc | 4 +++-
gold/testsuite/Makefile.am | 15 ++++++++++-----
gold/testsuite/Makefile.in | 32 +++++++++++++-------------------
4 files changed, 41 insertions(+), 25 deletions(-)
diff --git a/gold/arm.cc b/gold/arm.cc
index 72c3670..a1e8e4c 100644
--- a/gold/arm.cc
+++ b/gold/arm.cc
@@ -8374,7 +8374,9 @@ Target_arm<big_endian>::Scan::global(Symbol_table* symtab,
Reloc_section* rel_dyn = target->rel_dyn_section(layout);
if (gsym->is_from_dynobj()
|| gsym->is_undefined()
- || gsym->is_preemptible())
+ || gsym->is_preemptible()
+ || (gsym->visibility() == elfcpp::STV_PROTECTED
+ && parameters->options().shared()))
got->add_global_with_rel(gsym, GOT_TYPE_STANDARD,
rel_dyn, elfcpp::R_ARM_GLOB_DAT);
else
diff --git a/gold/testsuite/Makefile.am b/gold/testsuite/Makefile.am
index 9b8605b..97d6457 100644
--- a/gold/testsuite/Makefile.am
+++ b/gold/testsuite/Makefile.am
@@ -870,11 +870,16 @@ initpri3a_DEPENDENCIES = gcctestdir/ld
initpri3a_LDFLAGS = -Bgcctestdir/
initpri3a_LDADD =
-check_PROGRAMS += initpri3b
-initpri3b_SOURCES = initpri3.c
-initpri3b_DEPENDENCIES = gcctestdir/ld
-initpri3b_LDFLAGS = -Bgcctestdir/ -Wl,--no-ctors-in-init-array
-initpri3b_LDADD =
+# This test fails on targets not using .ctors and .dtors sections (e.g. ARM
+# EABI). Given that gcc is moving towards using .init_array in all cases,
+# this test is commented out. A better fix would be checking whether gcc
+# uses .ctors or .init_array sections in configure.
+
+# check_PROGRAMS += initpri3b
+# initpri3b_SOURCES = initpri3.c
+# initpri3b_DEPENDENCIES = gcctestdir/ld
+# initpri3b_LDFLAGS = -Bgcctestdir/ -Wl,--no-ctors-in-init-array
+# initpri3b_LDADD =
# Test --detect-odr-violations
check_SCRIPTS += debug_msg.sh
diff --git a/gold/testsuite/Makefile.in b/gold/testsuite/Makefile.in
index 785dcdd..518d32b 100644
--- a/gold/testsuite/Makefile.in
+++ b/gold/testsuite/Makefile.in
@@ -56,6 +56,17 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
@NATIVE_OR_CROSS_LINKER_TRUE@am__append_1 = object_unittest \
@NATIVE_OR_CROSS_LINKER_TRUE@ binary_unittest
+# This test fails on targets not using .ctors and .dtors sections (e.g. ARM
+# EABI). Given that gcc is moving towards using .init_array in all cases,
+# this test is commented out. A better fix would be checking whether gcc
+# uses .ctors or .init_array sections in configure.
+
+# check_PROGRAMS += initpri3b
+# initpri3b_SOURCES = initpri3.c
+# initpri3b_DEPENDENCIES = gcctestdir/ld
+# initpri3b_LDFLAGS = -Bgcctestdir/ -Wl,--no-ctors-in-init-array
+# initpri3b_LDADD =
+
# Test --detect-odr-violations
# Similar to --detect-odr-violations: check for undefined symbols in .so's
@@ -189,7 +200,7 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
# Test -o when emitting to a special file (such as something in /dev).
@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_24 = many_sections_test \
@GCC_TRUE@@NATIVE_LINKER_TRUE@ many_sections_r_test initpri1 \
-@GCC_TRUE@@NATIVE_LINKER_TRUE@ initpri2 initpri3a initpri3b \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@ initpri2 initpri3a \
@GCC_TRUE@@NATIVE_LINKER_TRUE@ flagstest_o_specialfile
@GCC_FALSE@many_sections_test_DEPENDENCIES =
@NATIVE_LINKER_FALSE@many_sections_test_DEPENDENCIES =
@@ -204,8 +215,6 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
@NATIVE_LINKER_FALSE@initpri2_DEPENDENCIES =
@GCC_FALSE@initpri3a_DEPENDENCIES =
@NATIVE_LINKER_FALSE@initpri3a_DEPENDENCIES =
-@GCC_FALSE@initpri3b_DEPENDENCIES =
-@NATIVE_LINKER_FALSE@initpri3b_DEPENDENCIES =
# Check that --detect-odr-violations works with compressed debug sections.
@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@am__append_27 = debug_msg_cdebug.err
@@ -712,7 +721,6 @@ libgoldtest_a_OBJECTS = $(am_libgoldtest_a_OBJECTS)
@GCC_TRUE@@NATIVE_LINKER_TRUE@ initpri1$(EXEEXT) \
@GCC_TRUE@@NATIVE_LINKER_TRUE@ initpri2$(EXEEXT) \
@GCC_TRUE@@NATIVE_LINKER_TRUE@ initpri3a$(EXEEXT) \
-@GCC_TRUE@@NATIVE_LINKER_TRUE@ initpri3b$(EXEEXT) \
@GCC_TRUE@@NATIVE_LINKER_TRUE@ flagstest_o_specialfile$(EXEEXT)
@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_21 = flagstest_compress_debug_sections$(EXEEXT) \
@GCC_TRUE@@HAVE_ZLIB_TRUE@@NATIVE_LINKER_TRUE@ flagstest_o_specialfile_and_compress_debug_sections$(EXEEXT)
@@ -1200,11 +1208,6 @@ initpri2_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(initpri2_LDFLAGS) \
initpri3a_OBJECTS = $(am_initpri3a_OBJECTS)
initpri3a_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(initpri3a_LDFLAGS) \
$(LDFLAGS) -o $@
-@GCC_TRUE@@NATIVE_LINKER_TRUE@am_initpri3b_OBJECTS = \
-@GCC_TRUE@@NATIVE_LINKER_TRUE@ initpri3.$(OBJEXT)
-initpri3b_OBJECTS = $(am_initpri3b_OBJECTS)
-initpri3b_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(initpri3b_LDFLAGS) \
- $(LDFLAGS) -o $@
@GCC_TRUE@@NATIVE_LINKER_TRUE@am_justsyms_OBJECTS = \
@GCC_TRUE@@NATIVE_LINKER_TRUE@ justsyms_1.$(OBJEXT)
justsyms_OBJECTS = $(am_justsyms_OBJECTS)
@@ -1698,7 +1701,7 @@ SOURCES = $(libgoldtest_a_SOURCES) basic_pic_test.c basic_pie_test.c \
incremental_copy_test.c incremental_test_2.c \
incremental_test_3.c incremental_test_4.c incremental_test_5.c \
incremental_test_6.c $(initpri1_SOURCES) $(initpri2_SOURCES) \
- $(initpri3a_SOURCES) $(initpri3b_SOURCES) $(justsyms_SOURCES) \
+ $(initpri3a_SOURCES) $(justsyms_SOURCES) \
$(justsyms_exec_SOURCES) $(large_SOURCES) local_labels_test.c \
many_sections_r_test.c $(many_sections_test_SOURCES) \
$(object_unittest_SOURCES) permission_test.c plugin_test_1.c \
@@ -2281,10 +2284,6 @@ LDADD = libgoldtest.a ../libgold.a ../../libiberty/libiberty.a $(LIBINTL) \
@GCC_TRUE@@NATIVE_LINKER_TRUE@initpri3a_DEPENDENCIES = gcctestdir/ld
@GCC_TRUE@@NATIVE_LINKER_TRUE@initpri3a_LDFLAGS = -Bgcctestdir/
@GCC_TRUE@@NATIVE_LINKER_TRUE@initpri3a_LDADD =
-@GCC_TRUE@@NATIVE_LINKER_TRUE@initpri3b_SOURCES = initpri3.c
-@GCC_TRUE@@NATIVE_LINKER_TRUE@initpri3b_DEPENDENCIES = gcctestdir/ld
-@GCC_TRUE@@NATIVE_LINKER_TRUE@initpri3b_LDFLAGS = -Bgcctestdir/ -Wl,--no-ctors-in-init-array
-@GCC_TRUE@@NATIVE_LINKER_TRUE@initpri3b_LDADD =
@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_SOURCES = ver_test_main.cc
@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_DEPENDENCIES = gcctestdir/ld ver_test_1.so ver_test_2.so ver_test_4.so
@GCC_TRUE@@NATIVE_LINKER_TRUE@ver_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
@@ -2928,9 +2927,6 @@ initpri2$(EXEEXT): $(initpri2_OBJECTS) $(initpri2_DEPENDENCIES)
initpri3a$(EXEEXT): $(initpri3a_OBJECTS) $(initpri3a_DEPENDENCIES)
@rm -f initpri3a$(EXEEXT)
$(initpri3a_LINK) $(initpri3a_OBJECTS) $(initpri3a_LDADD) $(LIBS)
-initpri3b$(EXEEXT): $(initpri3b_OBJECTS) $(initpri3b_DEPENDENCIES)
- @rm -f initpri3b$(EXEEXT)
- $(initpri3b_LINK) $(initpri3b_OBJECTS) $(initpri3b_LDADD) $(LIBS)
justsyms$(EXEEXT): $(justsyms_OBJECTS) $(justsyms_DEPENDENCIES)
@rm -f justsyms$(EXEEXT)
$(justsyms_LINK) $(justsyms_OBJECTS) $(justsyms_LDADD) $(LIBS)
@@ -3869,8 +3865,6 @@ initpri2.log: initpri2$(EXEEXT)
@p='initpri2$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
initpri3a.log: initpri3a$(EXEEXT)
@p='initpri3a$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
-initpri3b.log: initpri3b$(EXEEXT)
- @p='initpri3b$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
flagstest_o_specialfile.log: flagstest_o_specialfile$(EXEEXT)
@p='flagstest_o_specialfile$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
flagstest_compress_debug_sections.log: flagstest_compress_debug_sections$(EXEEXT)
--
1.7.9.5

File diff suppressed because it is too large Load Diff