summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@bigpond.net.au>2011-05-29 04:51:38 +0000
committerAlan Modra <amodra@bigpond.net.au>2011-05-29 04:51:38 +0000
commited81535f4d08dc56c554085c3938f65db159a333 (patch)
tree85e15686e76a5c1803839aeb6580e0d4e25fd96d
parentaf085846a25cd10d46aaa0566d8031b9727654ef (diff)
downloadbinutils-redhat-ed81535f4d08dc56c554085c3938f65db159a333.tar.gz
PR 12365
PR 12613 PR 12632 PR 12739 PR 12753 PR 12760 PR 12763 Apply fix from mainline along with assorted other small fixes.
-rw-r--r--gas/testsuite/ChangeLog9
-rw-r--r--gas/testsuite/gas/i386/inval-equ-2.l6
-rw-r--r--gas/testsuite/gas/symver/symver2.l2
-rw-r--r--include/ChangeLog15
-rw-r--r--include/ansidecl.h9
-rw-r--r--include/bfdlink.h14
-rw-r--r--ld/ChangeLog51
-rw-r--r--ld/emultempl/elf32.em2
-rw-r--r--ld/emultempl/pe.em9
-rw-r--r--ld/emultempl/pep.em9
-rw-r--r--ld/ldexp.c22
-rw-r--r--ld/ldlang.c37
-rw-r--r--ld/ldlex.l2
-rw-r--r--ld/ldmain.c6
-rw-r--r--ld/plugin.c40
-rw-r--r--ld/scripttempl/pe.sc11
-rw-r--r--ld/scripttempl/pep.sc11
-rw-r--r--ld/testsuite/ChangeLog16
-rw-r--r--ld/testsuite/ld-cris/tls-e-tpoffcomm1.d34
-rw-r--r--ld/testsuite/ld-plugin/plugin-7.d2
-rw-r--r--ld/testsuite/ld-plugin/plugin-8.d2
21 files changed, 244 insertions, 65 deletions
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index a467b632e9..356db301ab 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2011-05-29 Alan Modra <amodra@gmail.com>
+
+ Apply from mainline
+ 2011-03-18 Alan Modra <amodra@gmail.com>
+ * gas/i386/inval-equ-2.l: Adjust expected error.
+ * gas/symver/symver2.l: Likewise.
+
2011-05-18 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
Backported from mainline
@@ -9,7 +16,7 @@
2011-05-13 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
- Apply from mainline.
+ Apply from mainline.
2011-05-12 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
PR gas/12715
* gas/arm/neon-const.s: Add testcase for 64-bit Neon constants.
diff --git a/gas/testsuite/gas/i386/inval-equ-2.l b/gas/testsuite/gas/i386/inval-equ-2.l
index d598d0b80e..aed89b4f5e 100644
--- a/gas/testsuite/gas/i386/inval-equ-2.l
+++ b/gas/testsuite/gas/i386/inval-equ-2.l
@@ -1,7 +1,7 @@
.*: Assembler messages:
-.*:8: Error: .*
-.*:8: Error: .*
-.*:8: Error: .*
+.*: Error: .*
+.*: Error: .*
+.*: Error: .*
GAS LISTING .*
diff --git a/gas/testsuite/gas/symver/symver2.l b/gas/testsuite/gas/symver/symver2.l
index 216b4870b6..f9d73d7616 100644
--- a/gas/testsuite/gas/symver/symver2.l
+++ b/gas/testsuite/gas/symver/symver2.l
@@ -1,2 +1,2 @@
.*: Assembler messages:
-.*:8: Error: invalid attempt to declare external version name as default in symbol `foo@@version1'
+.*: Error: invalid attempt to declare external version name as default in symbol `foo@@version1'
diff --git a/include/ChangeLog b/include/ChangeLog
index 684e7b5d99..1cf4f0b8ab 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,18 @@
+2011-05-29 Alan Modra <amodra@gmail.com>
+
+ Apply from mainline
+ 2011-05-17 Alan Modra <amodra@gmail.com>
+ PR ld/12760
+ * bfdlink.h (struct bfd_link_callbacks <notice>): Add "flags" and
+ "string" param.
+
+ 2011-05-16 Alan Modra <amodra@gmail.com>
+ * bfdlink.h (struct bfd_link_hash_entry): Remove u.undef.weak field.
+
+ 2011-04-25 Jan Kratochvil <jan.kratochvil@redhat.com>
+ * bfdlink.h (ENUM_BITFIELD): Remove.
+ * ansidecl.h (ENUM_BITFIELD): New, from gcc/system.h.
+
2011-04-27 Alan Modra <amodra@gmail.com>
Backport from mainline.
diff --git a/include/ansidecl.h b/include/ansidecl.h
index 8b76647426..c39ce2f5d7 100644
--- a/include/ansidecl.h
+++ b/include/ansidecl.h
@@ -416,6 +416,15 @@ So instead we use the macro below and test it against specific values. */
#define EXPORTED_CONST const
#endif
+/* Be conservative and only use enum bitfields with GCC.
+ FIXME: provide a complete autoconf test for buggy enum bitfields. */
+
+#if (GCC_VERSION > 2000)
+#define ENUM_BITFIELD(TYPE) __extension__ enum TYPE
+#else
+#define ENUM_BITFIELD(TYPE) unsigned int
+#endif
+
#ifdef __cplusplus
}
#endif
diff --git a/include/bfdlink.h b/include/bfdlink.h
index 66f76455b1..22c29eae72 100644
--- a/include/bfdlink.h
+++ b/include/bfdlink.h
@@ -23,12 +23,6 @@
#ifndef BFDLINK_H
#define BFDLINK_H
-#if (__GNUC__ * 1000 + __GNUC_MINOR__ > 2000)
-#define ENUM_BITFIELD(TYPE) __extension__ enum TYPE
-#else
-#define ENUM_BITFIELD(TYPE) unsigned int
-#endif
-
/* Which symbols to strip during a link. */
enum bfd_link_strip
{
@@ -128,7 +122,6 @@ struct bfd_link_hash_entry
undefined symbol list. */
struct bfd_link_hash_entry *next;
bfd *abfd; /* BFD symbol was found in. */
- bfd *weak; /* BFD weak symbol was found in. */
} undef;
/* bfd_link_hash_defined, bfd_link_hash_defweak. */
struct
@@ -579,10 +572,13 @@ struct bfd_link_callbacks
/* A function which is called when a symbol in notice_hash is
defined or referenced. H is the symbol. ABFD, SECTION and
ADDRESS are the (new) value of the symbol. If SECTION is
- bfd_und_section, this is a reference. */
+ bfd_und_section, this is a reference. FLAGS are the symbol
+ BSF_* flags. STRING is the name of the symbol to indirect to if
+ the sym is indirect, or the warning string if a warning sym. */
bfd_boolean (*notice)
(struct bfd_link_info *, struct bfd_link_hash_entry *h,
- bfd *abfd, asection *section, bfd_vma address);
+ bfd *abfd, asection *section, bfd_vma address, flagword flags,
+ const char *string);
/* Error or warning link info message. */
void (*einfo)
(const char *fmt, ...);
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 13eaa9bb81..4484c3da2c 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,54 @@
+2011-05-29 Alan Modra <amodra@gmail.com>
+
+ Apply from mainline
+ 2011-05-23 Alan Modra <amodra@gmail.com>
+ PR 12763
+ * ldlang.c (lang_output_section_find_by_flags): Match orphan .sdata2
+ like sections to existing .sdata2, and similarly for orphan TLS
+ sections.
+ * emultempl/elf32.em (place_orphan): Exclude .tbss from orphan_bss.
+
+ 2011-05-17 Alan Modra <amodra@gmail.com>
+ PR ld/12760
+ * ldmain.c (notice): Add "flags" and "string" param.
+ * plugin.c (plugin_notice): Likewise. Handle indirect, warning
+ and constructor syms.
+
+ 2010-05-16 Daniel Jacobowitz <dan@codesourcery.com>
+ * ldlang.c (print_assignment): Use the symbol's section if we
+ use its value.
+ * ldexp.c (exp_fold_tree_1): Skip self-assignment. Expand
+ comment on copying symbol type.
+
+ 2011-05-07 Dave Korn <dave.korn.cygwin@gmail.com>
+ PR ld/12365
+ * scripttempl/pe.sc (__rt_psrelocs_start): New symbol definition.
+ (__rt_psrelocs_end): Likewise.
+ (__rt_psrelocs_size): Likewise difference between the above.
+ (__RUNTIME_PSEUDO_RELOC_LIST_END__): Move outside .rdata section
+ immediately after end of pseudo-reloc data.
+ (___RUNTIME_PSEUDO_RELOC_LIST_END___): Likewise.
+ (__RUNTIME_PSEUDO_RELOC_LIST__): Move outside .rdata section and
+ calculate backward from list end.
+ (___RUNTIME_PSEUDO_RELOC_LIST___): Likewise.
+ * scripttempl/pep.sc: Likewise.
+
+ 2011-03-29 Alan Modra <amodra@gmail.com>
+ PR ld/12613
+ * ldlex.l (lex_warn_invalid): Don't assume char is unsigned.
+
+ 2011-03-10 Dave Korn <dave.korn.cygwin@gmail.com>
+ * emultempl/pe.em (gld_${EMULATION_NAME}_place_orphan): Preserve
+ alignment of input sections when creating orphan output sections
+ during relocatable link.
+ * emultempl/pep.em (gld_${EMULATION_NAME}_place_orphan): Likewise.
+
+ 2011-02-14 Mike Frysinger <vapier@gentoo.org>
+ * ldlang.c (lang_vers_match): Declare a new c_sym, assign it to
+ the bfd_demangle of sym, change users of sym to c_sym when not
+ already demangling, and free when done. Change callers of
+ cplus_demangle to bfd_demangle.
+
2011-05-16 H.J. Lu <hongjiu.lu@intel.com>
PR ld/12760
diff --git a/ld/emultempl/elf32.em b/ld/emultempl/elf32.em
index ddcd5901fd..62a86ca217 100644
--- a/ld/emultempl/elf32.em
+++ b/ld/emultempl/elf32.em
@@ -1919,7 +1919,7 @@ gld${EMULATION_NAME}_place_orphan (asection *s,
&& ((iself && sh_type == SHT_NOTE)
|| (!iself && CONST_STRNEQ (secname, ".note"))))
place = &hold[orphan_interp];
- else if ((s->flags & (SEC_LOAD | SEC_HAS_CONTENTS)) == 0)
+ else if ((s->flags & (SEC_LOAD | SEC_HAS_CONTENTS | SEC_THREAD_LOCAL)) == 0)
place = &hold[orphan_bss];
else if ((s->flags & SEC_SMALL_DATA) != 0)
place = &hold[orphan_sdata];
diff --git a/ld/emultempl/pe.em b/ld/emultempl/pe.em
index f9085f2fe7..cad49d28a5 100644
--- a/ld/emultempl/pe.em
+++ b/ld/emultempl/pe.em
@@ -2009,10 +2009,17 @@ gld_${EMULATION_NAME}_place_orphan (asection *s,
->output_section_statement);
}
- /* All sections in an executable must be aligned to a page boundary. */
+ /* All sections in an executable must be aligned to a page boundary.
+ In a relocatable link, just preserve the incoming alignment; the
+ address is discarded by lang_insert_orphan in that case, anyway. */
address = exp_unop (ALIGN_K, exp_nameop (NAME, "__section_alignment__"));
os = lang_insert_orphan (s, secname, constraint, after, place, address,
&add_child);
+ if (link_info.relocatable)
+ {
+ os->section_alignment = s->alignment_power;
+ os->bfd_section->alignment_power = s->alignment_power;
+ }
}
/* If the section name has a '\$', sort it with the other '\$'
diff --git a/ld/emultempl/pep.em b/ld/emultempl/pep.em
index 90793ea9b6..78751bb71b 100644
--- a/ld/emultempl/pep.em
+++ b/ld/emultempl/pep.em
@@ -1745,10 +1745,17 @@ gld_${EMULATION_NAME}_place_orphan (asection *s,
->output_section_statement);
}
- /* All sections in an executable must be aligned to a page boundary. */
+ /* All sections in an executable must be aligned to a page boundary.
+ In a relocatable link, just preserve the incoming alignment; the
+ address is discarded by lang_insert_orphan in that case, anyway. */
address = exp_unop (ALIGN_K, exp_nameop (NAME, "__section_alignment__"));
os = lang_insert_orphan (s, secname, constraint, after, place, address,
&add_child);
+ if (link_info.relocatable)
+ {
+ os->section_alignment = s->alignment_power;
+ os->bfd_section->alignment_power = s->alignment_power;
+ }
}
/* If the section name has a '\$', sort it with the other '\$'
diff --git a/ld/ldexp.c b/ld/ldexp.c
index f70634c5c6..68617d8553 100644
--- a/ld/ldexp.c
+++ b/ld/ldexp.c
@@ -832,6 +832,8 @@ exp_fold_tree_1 (etree_type *tree)
}
else
{
+ etree_type *name;
+
struct bfd_link_hash_entry *h = NULL;
if (tree->type.node_class == etree_provide)
@@ -849,6 +851,23 @@ exp_fold_tree_1 (etree_type *tree)
}
}
+ name = tree->assign.src;
+ if (name->type.node_class == etree_trinary)
+ {
+ exp_fold_tree_1 (name->trinary.cond);
+ if (expld.result.valid_p)
+ name = (expld.result.value
+ ? name->trinary.lhs : name->trinary.rhs);
+ }
+
+ if (name->type.node_class == etree_name
+ && name->type.node_code == NAME
+ && strcmp (tree->assign.dst, name->name.name) == 0)
+ /* Leave it alone. Do not replace a symbol with its own
+ output address, in case there is another section sizing
+ pass. Folding does not preserve input sections. */
+ break;
+
exp_fold_tree_1 (tree->assign.src);
if (expld.result.valid_p
|| (expld.phase == lang_first_phase_enum
@@ -876,7 +895,8 @@ exp_fold_tree_1 (etree_type *tree)
tree->type.node_class = etree_provided;
/* Copy the symbol type if this is a simple assignment of
- one symbol to annother. */
+ one symbol to another. This could be more general
+ (e.g. a ?: operator with NAMEs in each branch). */
if (tree->assign.src->type.node_class == etree_name)
{
struct bfd_link_hash_entry *hsrc;
diff --git a/ld/ldlang.c b/ld/ldlang.c
index cba509b84e..8b05d8e120 100644
--- a/ld/ldlang.c
+++ b/ld/ldlang.c
@@ -1526,8 +1526,14 @@ lang_output_section_find_by_flags (const asection *sec,
}
flags ^= sec->flags;
if (!(flags & (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD
- | SEC_READONLY))
- && !(look->flags & (SEC_SMALL_DATA | SEC_THREAD_LOCAL)))
+ | SEC_READONLY | SEC_SMALL_DATA))
+ || (!(flags & (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD
+ | SEC_READONLY))
+ && !(look->flags & SEC_SMALL_DATA))
+ || (!(flags & (SEC_THREAD_LOCAL | SEC_ALLOC))
+ && (look->flags & SEC_THREAD_LOCAL)
+ && (!(flags & SEC_LOAD)
+ || (look->flags & SEC_LOAD))))
found = look;
}
}
@@ -3995,9 +4001,8 @@ print_assignment (lang_assignment_statement_type *assignment,
if (h)
{
value = h->u.def.value;
-
- if (expld.result.section != NULL)
- value += expld.result.section->vma;
+ value += h->u.def.section->output_section->vma;
+ value += h->u.def.section->output_offset;
minfo ("[0x%V]", value);
}
@@ -7387,19 +7392,29 @@ lang_vers_match (struct bfd_elf_version_expr_head *head,
struct bfd_elf_version_expr *prev,
const char *sym)
{
+ const char *c_sym;
const char *cxx_sym = sym;
const char *java_sym = sym;
struct bfd_elf_version_expr *expr = NULL;
+ enum demangling_styles curr_style;
+
+ curr_style = CURRENT_DEMANGLING_STYLE;
+ cplus_demangle_set_style (no_demangling);
+ c_sym = bfd_demangle (link_info.output_bfd, sym, DMGL_NO_OPTS);
+ if (!c_sym)
+ c_sym = sym;
+ cplus_demangle_set_style (curr_style);
if (head->mask & BFD_ELF_VERSION_CXX_TYPE)
{
- cxx_sym = cplus_demangle (sym, DMGL_PARAMS | DMGL_ANSI);
+ cxx_sym = bfd_demangle (link_info.output_bfd, sym,
+ DMGL_PARAMS | DMGL_ANSI);
if (!cxx_sym)
cxx_sym = sym;
}
if (head->mask & BFD_ELF_VERSION_JAVA_TYPE)
{
- java_sym = cplus_demangle (sym, DMGL_JAVA);
+ java_sym = bfd_demangle (link_info.output_bfd, sym, DMGL_JAVA);
if (!java_sym)
java_sym = sym;
}
@@ -7413,10 +7428,10 @@ lang_vers_match (struct bfd_elf_version_expr_head *head,
case 0:
if (head->mask & BFD_ELF_VERSION_C_TYPE)
{
- e.pattern = sym;
+ e.pattern = c_sym;
expr = (struct bfd_elf_version_expr *)
htab_find ((htab_t) head->htab, &e);
- while (expr && strcmp (expr->pattern, sym) == 0)
+ while (expr && strcmp (expr->pattern, c_sym) == 0)
if (expr->mask == BFD_ELF_VERSION_C_TYPE)
goto out_ret;
else
@@ -7474,12 +7489,14 @@ lang_vers_match (struct bfd_elf_version_expr_head *head,
else if (expr->mask == BFD_ELF_VERSION_CXX_TYPE)
s = cxx_sym;
else
- s = sym;
+ s = c_sym;
if (fnmatch (expr->pattern, s, 0) == 0)
break;
}
out_ret:
+ if (c_sym != sym)
+ free ((char *) c_sym);
if (cxx_sym != sym)
free ((char *) cxx_sym);
if (java_sym != sym)
diff --git a/ld/ldlex.l b/ld/ldlex.l
index 3213cf7c05..451d0ac8f2 100644
--- a/ld/ldlex.l
+++ b/ld/ldlex.l
@@ -688,7 +688,7 @@ lex_warn_invalid (char *where, char *what)
if (! ISPRINT (*what))
{
- sprintf (buf, "\\%03o", (unsigned int) *what);
+ sprintf (buf, "\\%03o", *(unsigned char *) what);
what = buf;
}
diff --git a/ld/ldmain.c b/ld/ldmain.c
index bfa6066b09..96f3bdaf3e 100644
--- a/ld/ldmain.c
+++ b/ld/ldmain.c
@@ -151,7 +151,7 @@ static bfd_boolean unattached_reloc
(struct bfd_link_info *, const char *, bfd *, asection *, bfd_vma);
static bfd_boolean notice
(struct bfd_link_info *, struct bfd_link_hash_entry *,
- bfd *, asection *, bfd_vma);
+ bfd *, asection *, bfd_vma, flagword, const char *);
static struct bfd_link_callbacks link_callbacks =
{
@@ -1483,7 +1483,9 @@ notice (struct bfd_link_info *info,
struct bfd_link_hash_entry *h,
bfd *abfd,
asection *section,
- bfd_vma value)
+ bfd_vma value,
+ flagword flags ATTRIBUTE_UNUSED,
+ const char *string ATTRIBUTE_UNUSED)
{
const char *name;
diff --git a/ld/plugin.c b/ld/plugin.c
index ca7b0b8550..acd47f3f01 100644
--- a/ld/plugin.c
+++ b/ld/plugin.c
@@ -125,9 +125,9 @@ static const enum ld_plugin_tag tv_header_tags[] =
static const size_t tv_header_size = ARRAY_SIZE (tv_header_tags);
/* Forward references. */
-static bfd_boolean plugin_notice (struct bfd_link_info *info,
- struct bfd_link_hash_entry *h, bfd *abfd,
- asection *section, bfd_vma value);
+static bfd_boolean plugin_notice (struct bfd_link_info *,
+ struct bfd_link_hash_entry *, bfd *,
+ asection *, bfd_vma, flagword, const char *);
#if !defined (HAVE_DLFCN_H) && defined (HAVE_WINDOWS_H)
@@ -908,7 +908,9 @@ plugin_notice (struct bfd_link_info *info,
struct bfd_link_hash_entry *h,
bfd *abfd,
asection *section,
- bfd_vma value)
+ bfd_vma value,
+ flagword flags,
+ const char *string)
{
if (h != NULL)
{
@@ -918,8 +920,33 @@ plugin_notice (struct bfd_link_info *info,
if (is_ir_dummy_bfd (abfd))
return TRUE;
+ /* Making an indirect symbol counts as a reference unless this
+ is a brand new symbol. */
+ if (bfd_is_ind_section (section)
+ || (flags & BSF_INDIRECT) != 0)
+ {
+ if (h->type != bfd_link_hash_new)
+ {
+ struct bfd_link_hash_entry *inh;
+
+ h->non_ir_ref = TRUE;
+ inh = bfd_wrapped_link_hash_lookup (abfd, info, string, FALSE,
+ FALSE, FALSE);
+ if (inh != NULL)
+ inh->non_ir_ref = TRUE;
+ }
+ }
+
+ /* Nothing to do here for warning symbols. */
+ else if ((flags & BSF_WARNING) != 0)
+ ;
+
+ /* Nothing to do here for constructor symbols. */
+ else if ((flags & BSF_CONSTRUCTOR) != 0)
+ ;
+
/* If this is a ref, set non_ir_ref. */
- if (bfd_is_und_section (section))
+ else if (bfd_is_und_section (section))
h->non_ir_ref = TRUE;
/* Otherwise, it must be a new def. Ensure any symbol defined
@@ -945,6 +972,7 @@ plugin_notice (struct bfd_link_info *info,
|| (info->notice_hash != NULL
&& bfd_hash_lookup (info->notice_hash, h->root.string,
FALSE, FALSE) != NULL))
- return (*orig_callbacks->notice) (info, h, abfd, section, value);
+ return (*orig_callbacks->notice) (info, h,
+ abfd, section, value, flags, string);
return TRUE;
}
diff --git a/ld/scripttempl/pe.sc b/ld/scripttempl/pe.sc
index 7d52cc542c..2f8b09129f 100644
--- a/ld/scripttempl/pe.sc
+++ b/ld/scripttempl/pe.sc
@@ -106,12 +106,15 @@ SECTIONS
.rdata ${RELOCATING+BLOCK(__section_alignment__)} :
{
${R_RDATA}
- ${RELOCATING+___RUNTIME_PSEUDO_RELOC_LIST__ = .;}
- ${RELOCATING+__RUNTIME_PSEUDO_RELOC_LIST__ = .;}
+ ${RELOCATING+__rt_psrelocs_start = .;}
*(.rdata_runtime_pseudo_reloc)
- ${RELOCATING+___RUNTIME_PSEUDO_RELOC_LIST_END__ = .;}
- ${RELOCATING+__RUNTIME_PSEUDO_RELOC_LIST_END__ = .;}
+ ${RELOCATING+__rt_psrelocs_end = .;}
}
+ ${RELOCATING+__rt_psrelocs_size = __rt_psrelocs_end - __rt_psrelocs_start;}
+ ${RELOCATING+___RUNTIME_PSEUDO_RELOC_LIST_END__ = .;}
+ ${RELOCATING+__RUNTIME_PSEUDO_RELOC_LIST_END__ = .;}
+ ${RELOCATING+___RUNTIME_PSEUDO_RELOC_LIST__ = . - __rt_psrelocs_size;}
+ ${RELOCATING+__RUNTIME_PSEUDO_RELOC_LIST__ = . - __rt_psrelocs_size;}
.eh_frame ${RELOCATING+BLOCK(__section_alignment__)} :
{
diff --git a/ld/scripttempl/pep.sc b/ld/scripttempl/pep.sc
index 8fa5f052d6..decbd666fe 100644
--- a/ld/scripttempl/pep.sc
+++ b/ld/scripttempl/pep.sc
@@ -107,12 +107,15 @@ SECTIONS
.rdata ${RELOCATING+BLOCK(__section_alignment__)} :
{
${R_RDATA}
- ${RELOCATING+___RUNTIME_PSEUDO_RELOC_LIST__ = .;}
- ${RELOCATING+__RUNTIME_PSEUDO_RELOC_LIST__ = .;}
+ ${RELOCATING+__rt_psrelocs_start = .;}
*(.rdata_runtime_pseudo_reloc)
- ${RELOCATING+___RUNTIME_PSEUDO_RELOC_LIST_END__ = .;}
- ${RELOCATING+__RUNTIME_PSEUDO_RELOC_LIST_END__ = .;}
+ ${RELOCATING+__rt_psrelocs_end = .;}
}
+ ${RELOCATING+__rt_psrelocs_size = __rt_psrelocs_end - __rt_psrelocs_start;}
+ ${RELOCATING+___RUNTIME_PSEUDO_RELOC_LIST_END__ = .;}
+ ${RELOCATING+__RUNTIME_PSEUDO_RELOC_LIST_END__ = .;}
+ ${RELOCATING+___RUNTIME_PSEUDO_RELOC_LIST__ = . - __rt_psrelocs_size;}
+ ${RELOCATING+__RUNTIME_PSEUDO_RELOC_LIST__ = . - __rt_psrelocs_size;}
.eh_frame ${RELOCATING+BLOCK(__section_alignment__)} :
{
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index 4dfdd57855..1a994bc740 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,3 +1,19 @@
+2011-05-24 Hans-Peter Nilsson <hp@axis.com>
+
+ * ld-cris/tls-e-tpoffcomm1.d: Adjust for second PR12763 change,
+ setting TLS file offset.
+
+2011-05-21 Hans-Peter Nilsson <hp@axis.com>
+
+ * ld-cris/tls-e-tpoffcomm1.d: Adjust for PR12763 change removing
+ empty program header.
+
+2011-05-07 Dave Korn <dave.korn.cygwin@gmail.com>
+
+ PR ld/12365
+ * ld-plugin/plugin-7.d: Allow underscore in error message.
+ * ld-plugin/plugin-8.d: Likewise.
+
2012-05-25 H.J. Lu <hongjiu.lu@intel.com>
Backport from mainline
diff --git a/ld/testsuite/ld-cris/tls-e-tpoffcomm1.d b/ld/testsuite/ld-cris/tls-e-tpoffcomm1.d
index 69780cfd57..23d52ee06d 100644
--- a/ld/testsuite/ld-cris/tls-e-tpoffcomm1.d
+++ b/ld/testsuite/ld-cris/tls-e-tpoffcomm1.d
@@ -11,35 +11,33 @@
Program Header:
LOAD off 0x0+ vaddr 0x0+80000 paddr 0x0+80000 align 2\*\*13
- filesz 0x0+a4 memsz 0x0+a4 flags r-x
- LOAD off 0x0+a4 vaddr 0x0+820a4 paddr 0x0+820a4 align 2\*\*13
- filesz 0x0+ memsz 0x0+ flags rw-
- TLS off 0x0+a4 vaddr 0x0+820a4 paddr 0x0+820a4 align 2\*\*2
+ filesz 0x0+84 memsz 0x0+84 flags r-x
+ TLS off 0x0+84 vaddr 0x0+82084 paddr 0x0+82084 align 2\*\*2
filesz 0x0+ memsz 0x0+8 flags r--
private flags = 0:
Sections:
Idx Name Size VMA LMA File off Algn
- 0 .text 0+10 0+80094 0+80094 0+94 2\*\*1
+ 0 .text 0+10 0+80074 0+80074 0+74 2\*\*1
CONTENTS, ALLOC, LOAD, READONLY, CODE
- 1 .tbss 0+8 0+820a4 0+820a4 0+a4 2\*\*2
+ 1 .tbss 0+8 0+82084 0+82084 0+84 2\*\*2
ALLOC, THREAD_LOCAL
SYMBOL TABLE:
-0+80094 l d .text 0+ .text
-0+820a4 l d .tbss 0+ .tbss
-0+80098 l F .text 0+c do_test
-0+80094 g .text 0+ _start
-0+820a4 g \*ABS\* 0+ __bss_start
+0+80074 l d .text 0+ .text
+0+82084 l d .tbss 0+ .tbss
+0+80078 l F .text 0+c do_test
+0+80074 g .text 0+ _start
+0+82084 g \*ABS\* 0+ __bss_start
0+ g .tbss 0+4 foo
-0+820a4 g \*ABS\* 0+ _edata
-0+820c0 g \*ABS\* 0+ _end
+0+82084 g \*ABS\* 0+ _edata
+0+820a0 g \*ABS\* 0+ _end
0+4 g .tbss 0+4 bar
#...
Disassembly of section .text:
-00080094 <_start>:
- 80094: 41b2 moveq 1,\$r11
+00080074 <_start>:
+ 80074: 41b2 moveq 1,\$r11
#...
-00080098 <do_test>:
- 80098: 2f0e f8ff ffff add.d 0xfffffff8,\$r0
- 8009e: 2f1e fcff ffff add.d 0xfffffffc,\$r1
+00080078 <do_test>:
+ 80078: 2f0e f8ff ffff add.d 0xfffffff8,\$r0
+ 8007e: 2f1e fcff ffff add.d 0xfffffffc,\$r1
diff --git a/ld/testsuite/ld-plugin/plugin-7.d b/ld/testsuite/ld-plugin/plugin-7.d
index 04f41392ca..4d0b9d7d91 100644
--- a/ld/testsuite/ld-plugin/plugin-7.d
+++ b/ld/testsuite/ld-plugin/plugin-7.d
@@ -26,6 +26,6 @@ hook called: claim_file tmpdir/func.o \[@0/.* CLAIMED
hook called: claim_file tmpdir/text.o \[@0/.* not claimed
#...
hook called: all symbols read.
-`func' referenced in section `\.text.*' of tmpdir/main.o: defined in discarded section .*
+`_?func' referenced in section `\.text.*' of tmpdir/main.o: defined in discarded section .*
hook called: cleanup.
#...
diff --git a/ld/testsuite/ld-plugin/plugin-8.d b/ld/testsuite/ld-plugin/plugin-8.d
index 003537c94f..a589f01efc 100644
--- a/ld/testsuite/ld-plugin/plugin-8.d
+++ b/ld/testsuite/ld-plugin/plugin-8.d
@@ -30,6 +30,6 @@ hook called: claim_file tmpdir/text.o \[@0/.* not claimed
hook called: all symbols read.
Sym: '_?func' Resolution: LDPR_PREVAILING_DEF
Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
-`func' referenced in section `\.text.*' of tmpdir/main.o: defined in discarded section .*
+`_?func' referenced in section `\.text.*' of tmpdir/main.o: defined in discarded section .*
hook called: cleanup.
#...