vapier 15/07/27 03:26:42
Added: 12_all_sh-targets.patch 20_all_gold-mips.patch
30_all_binutils-2.22.52.0.2-flexible-tests.patch
62_all_binutils-2.23.52.0.1-hardened-crtbegin.patch
63_all_binutils-2.25.1-pt-pax-flags-20150727.patch
66_all_binutils-2.22.52.0.1-warn-textrel.patch
67_all_ld-poison-system-directories.patch
75_all_binutils-default-test-flags.patch
76_all_use-new-ld-dtags.patch
77_all_generate-gnu-hash.patch
78_all_use-relro.patch
88_all_gold-copy-relocs.patch
91_all_libiberty-pic.patch README.history
Log:
initial 2.25.1 patchset based on last 2.25 patchset
Revision Changes Path
1.1 src/patchsets/binutils/2.25.1/12_all_sh-targets.patch
file :
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.25.1/12_all_sh-targets.patch?rev=1.1&view=markup
plain:
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.25.1/12_all_sh-targets.patch?rev=1.1&content-type=text/plain
Index: 12_all_sh-targets.patch
===================================================================
r10231 | lethal | 2005-05-02 09:58:00 -0400 (Mon, 02 May 2005) | 13 lines
Likewise, binutils has no idea about any of these new targets either, so we
fix that up too.. now we're able to actually build a real toolchain for
sh2a_nofpu- and other more ineptly named toolchains (and yes, there are more
inept targets than that one, really. Go look, I promise).
--- a/configure
+++ b/configure
@@ -1495,7 +1495,7 @@
mips*-*-*)
noconfigdirs="$noconfigdirs gprof"
;;
- sh-*-* | sh64-*-*)
+ sh*-*-* | sh64-*-*)
case "${target}" in
sh*-*-elf)
;;
--- a/configure.ac
+++ b/configure.ac
@@ -712,7 +712,7 @@
mips*-*-*)
noconfigdirs="$noconfigdirs gprof"
;;
- sh-*-* | sh64-*-*)
+ sh*-*-* | sh64-*-*)
case "${target}" in
sh*-*-elf)
;;
1.1 src/patchsets/binutils/2.25.1/20_all_gold-mips.patch
file :
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.25.1/20_all_gold-mips.patch?rev=1.1&view=markup
plain:
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.25.1/20_all_gold-mips.patch?rev=1.1&content-type=text/plain
Index: 20_all_gold-mips.patch
===================================================================
https://gcc.gnu.org/ml/gcc-patches/2014-10/msg01946.html
>From 653a51f66bbe121e5f77882bf9f9a4c1f827ed45 Mon Sep 17 00:00:00 2001
From: Cary Coutant <[email protected]>
Date: Mon, 20 Oct 2014 10:31:36 -0700
Subject: [PATCH] Add top-level config support for gold mips target
This patch adds support for the mips target in gold.
2014-10-20 Cary Coutant <[email protected]>
* configure (--enable-gold): Add mips*-*-*.
* configure.ac: Regenerate.
---
configure | 2 +-
configure.ac | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/configure b/configure
index 97250fa..2549945 100755
--- a/configure
+++ b/configure
@@ -2970,7 +2970,7 @@ case "${ENABLE_GOLD}" in
# Check for target supported by gold.
case "${target}" in
i?86-*-* | x86_64-*-* | sparc*-*-* | powerpc*-*-* | arm*-*-* \
- | aarch64*-*-* | tilegx*-*-*)
+ | aarch64*-*-* | tilegx*-*-* | mips*-*-*)
configdirs="$configdirs gold"
if test x${ENABLE_GOLD} = xdefault; then
default_ld=gold
diff --git a/configure.ac b/configure.ac
index ef5f5b1..0fe176b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -351,7 +351,7 @@ case "${ENABLE_GOLD}" in
# Check for target supported by gold.
case "${target}" in
i?86-*-* | x86_64-*-* | sparc*-*-* | powerpc*-*-* | arm*-*-* \
- | aarch64*-*-* | tilegx*-*-*)
+ | aarch64*-*-* | tilegx*-*-* | mips*-*-*)
configdirs="$configdirs gold"
if test x${ENABLE_GOLD} = xdefault; then
default_ld=gold
--
2.3.5
1.1
src/patchsets/binutils/2.25.1/30_all_binutils-2.22.52.0.2-flexible-tests.patch
file :
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.25.1/30_all_binutils-2.22.52.0.2-flexible-tests.patch?rev=1.1&view=markup
plain:
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.25.1/30_all_binutils-2.22.52.0.2-flexible-tests.patch?rev=1.1&content-type=text/plain
Index: 30_all_binutils-2.22.52.0.2-flexible-tests.patch
===================================================================
making some of the address matches more flexible fixes tests when using
pax/relro/hash patches
--- binutils/ld/testsuite/ld-ifunc/ifunc-2-local-x86-64.d
+++ binutils/ld/testsuite/ld-ifunc/ifunc-2-local-x86-64.d
@@ -4,6 +4,6 @@
#target: x86_64-*-*
#...
-[ \t0-9a-f]+:[ \t0-9a-f]+call[ \t0-9a-fq]+<\*ABS\*\+0x220@plt>
-[ \t0-9a-f]+:[ \t0-9a-f]+lea[ \t]+.*\(%rip\),%rax.*[
\t0-9a-fq]+<\*ABS\*\+0x220@plt>
+[ \t0-9a-f]+:[ \t0-9a-f]+call[ \t0-9a-fq]+<\*ABS\*\+0x[a-f0-9]+@plt>
+[ \t0-9a-f]+:[ \t0-9a-f]+lea[ \t]+.*\(%rip\),%rax.*[
\t0-9a-fq]+<\*ABS\*\+0x[a-f0-9]+@plt>
#pass
--- binutils/ld/testsuite/ld-ifunc/ifunc-2-x86-64.d
+++ binutils/ld/testsuite/ld-ifunc/ifunc-2-x86-64.d
@@ -4,6 +4,6 @@
#target: x86_64-*-*
#...
-[ \t0-9a-f]+:[ \t0-9a-f]+call[ \t0-9a-fq]+<\*ABS\*\+0x220@plt>
-[ \t0-9a-f]+:[ \t0-9a-f]+lea[ \t]+.*\(%rip\),%rax.*[
\t0-9a-fq]+<\*ABS\*\+0x220@plt>
+[ \t0-9a-f]+:[ \t0-9a-f]+call[ \t0-9a-fq]+<\*ABS\*\+0x[a-f0-9]+@plt>
+[ \t0-9a-f]+:[ \t0-9a-f]+lea[ \t]+.*\(%rip\),%rax.*[
\t0-9a-fq]+<\*ABS\*\+0x[a-f0-9]+@plt>
#pass
1.1
src/patchsets/binutils/2.25.1/62_all_binutils-2.23.52.0.1-hardened-crtbegin.patch
file :
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.25.1/62_all_binutils-2.23.52.0.1-hardened-crtbegin.patch?rev=1.1&view=markup
plain:
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.25.1/62_all_binutils-2.23.52.0.1-hardened-crtbegin.patch?rev=1.1&content-type=text/plain
Index: 62_all_binutils-2.23.52.0.1-hardened-crtbegin.patch
===================================================================
https://bugs.gentoo.org/391899
https://bugs.gentoo.org/393321
Make sure the default ELF linker script does the right thing with our customer
PIE+PIC gcc objects (until we get a chance to rename them).
2011-12-05 Magnus Granberg <[email protected]>, Alphat-PC
<[email protected]>
* scripttempl/elf.sc: Add support for crtbeginTS.o
--- a/ld/scripttempl/elf.sc
+++ b/ld/scripttempl/elf.sc
@@ -225,8 +225,8 @@
if test "${ENABLE_INITFINI_ARRAY}" = "yes"; then
SORT_INIT_ARRAY="KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*)
SORT_BY_INIT_PRIORITY(.ctors.*)))"
SORT_FINI_ARRAY="KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*)
SORT_BY_INIT_PRIORITY(.dtors.*)))"
- CTORS_IN_INIT_ARRAY="EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o
*crtend?.o $OTHER_EXCLUDE_FILES) .ctors"
- DTORS_IN_FINI_ARRAY="EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o
*crtend?.o $OTHER_EXCLUDE_FILES) .dtors"
+ CTORS_IN_INIT_ARRAY="EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtbeginTS.o
*crtend.o *crtend?.o $OTHER_EXCLUDE_FILES) .ctors"
+ DTORS_IN_FINI_ARRAY="EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtbeginTS.o
*crtend.o *crtend?.o $OTHER_EXCLUDE_FILES) .dtors"
else
SORT_INIT_ARRAY="KEEP (*(SORT(.init_array.*)))"
SORT_FINI_ARRAY="KEEP (*(SORT(.fini_array.*)))"
@@ -264,6 +264,7 @@
KEEP (*crtbegin.o(.ctors))
KEEP (*crtbegin?.o(.ctors))
+ KEEP (*crtbeginTS.o(.ctors))
/* We don't want to include the .ctor section from
the crtend.o file until after the sorted ctors.
@@ -280,6 +281,7 @@
${CONSTRUCTING+${DTOR_START}}
KEEP (*crtbegin.o(.dtors))
KEEP (*crtbegin?.o(.dtors))
+ KEEP (*crtbeginTS.o(.dtors))
KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o $OTHER_EXCLUDE_FILES) .dtors))
KEEP (*(SORT(.dtors.*)))
KEEP (*(.dtors))
1.1
src/patchsets/binutils/2.25.1/63_all_binutils-2.25.1-pt-pax-flags-20150727.patch
file :
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.25.1/63_all_binutils-2.25.1-pt-pax-flags-20150727.patch?rev=1.1&view=markup
plain:
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.25.1/63_all_binutils-2.25.1-pt-pax-flags-20150727.patch?rev=1.1&content-type=text/plain
Index: 63_all_binutils-2.25.1-pt-pax-flags-20150727.patch
===================================================================
--- binutils-2.25.1/bfd/elf-bfd.h
+++ binutils-2.25.1/bfd/elf-bfd.h
@@ -1558,6 +1558,9 @@ struct output_elf_obj_tdata
/* Segment flags for the PT_GNU_STACK segment. */
unsigned int stack_flags;
+ /* Segment flags for the PT_PAX_FLAGS segment. */
+ unsigned int pax_flags;
+
/* This is set to TRUE if the object was created by the backend
linker. */
bfd_boolean linker;
@@ -1703,6 +1706,7 @@ struct elf_obj_tdata
#define elf_eh_frame_hdr(bfd) (elf_tdata(bfd) -> o->eh_frame_hdr)
#define elf_linker(bfd) (elf_tdata(bfd) -> o->linker)
#define elf_stack_flags(bfd) (elf_tdata(bfd) -> o->stack_flags)
+#define elf_pax_flags(bfd) (elf_tdata(bfd) -> o->pax_flags)
#define elf_shstrtab(bfd) (elf_tdata(bfd) -> o->strtab_ptr)
#define elf_onesymtab(bfd) (elf_tdata(bfd) -> symtab_section)
#define elf_symtab_shndx(bfd) (elf_tdata(bfd) -> symtab_shndx_section)
--- binutils-2.25.1/bfd/elf.c
+++ binutils-2.25.1/bfd/elf.c
@@ -1151,6 +1151,7 @@ get_segment_type (unsigned int p_type)
case PT_GNU_EH_FRAME: pt = "EH_FRAME"; break;
case PT_GNU_STACK: pt = "STACK"; break;
case PT_GNU_RELRO: pt = "RELRO"; break;
+ case PT_PAX_FLAGS: pt = "PAX_FLAGS"; break;
default: pt = NULL; break;
}
return pt;
@@ -2498,6 +2499,9 @@ bfd_section_from_phdr (bfd *abfd, Elf_Internal_Phdr *hdr,
int hdr_index)
case PT_GNU_RELRO:
return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "relro");
+ case PT_PAX_FLAGS:
+ return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index,
"pax_flags");
+
default:
/* Check for any processor-specific program segment types. */
bed = get_elf_backend_data (abfd);
@@ -3590,6 +3594,11 @@ get_program_header_size (bfd *abfd, struct bfd_link_info
*info)
++segs;
}
+ {
+ /* We need a PT_PAX_FLAGS segment. */
+ ++segs;
+ }
+
for (s = abfd->sections; s != NULL; s = s->next)
{
if ((s->flags & SEC_LOAD) != 0
@@ -4226,6 +4235,20 @@ _bfd_elf_map_sections_to_segments (bfd *abfd, struct
bfd_link_info *info)
}
}
+ {
+ amt = sizeof (struct elf_segment_map);
+ m = bfd_zalloc (abfd, amt);
+ if (m == NULL)
+ goto error_return;
+ m->next = NULL;
+ m->p_type = PT_PAX_FLAGS;
+ m->p_flags = elf_pax_flags (abfd);
+ m->p_flags_valid = 1;
+
+ *pm = m;
+ pm = &m->next;
+ }
+
free (sections);
elf_seg_map (abfd) = mfirst;
}
@@ -5584,7 +5607,8 @@ rewrite_elf_program_header (bfd *ibfd, bfd *obfd)
6. PT_TLS segment includes only SHF_TLS sections.
7. SHF_TLS sections are only in PT_TLS or PT_LOAD segments.
8. PT_DYNAMIC should not contain empty sections at the beginning
- (with the possible exception of .dynamic). */
+ (with the possible exception of .dynamic).
+ 9. PT_PAX_FLAGS segments do not include any sections. */
#define IS_SECTION_IN_INPUT_SEGMENT(section, segment, bed) \
((((segment->p_paddr \
? IS_CONTAINED_BY_LMA (section, segment, segment->p_paddr) \
@@ -5592,6 +5616,7 @@ rewrite_elf_program_header (bfd *ibfd, bfd *obfd)
&& (section->flags & SEC_ALLOC) != 0) \
|| IS_NOTE (segment, section)) \
&& segment->p_type != PT_GNU_STACK \
+ && segment->p_type != PT_PAX_FLAGS \
&& (segment->p_type != PT_TLS \
|| (section->flags & SEC_THREAD_LOCAL)) \
&& (segment->p_type == PT_LOAD \
--- binutils-2.25.1/bfd/elflink.c
+++ binutils-2.25.1/bfd/elflink.c
@@ -5563,18 +5563,31 @@ bfd_elf_size_dynamic_sections (bfd *output_bfd,
&& ! (*bed->elf_backend_always_size_sections) (output_bfd, info))
return FALSE;
+ elf_pax_flags (output_bfd) = PF_NORANDEXEC;
+ if (info->execheap)
+ elf_pax_flags (output_bfd) |= PF_NOMPROTECT;
+ else if (info->noexecheap)
+ elf_pax_flags (output_bfd) |= PF_MPROTECT;
+
/* Determine any GNU_STACK segment requirements, after the backend
has had a chance to set a default segment size. */
if (info->execstack)
- elf_stack_flags (output_bfd) = PF_R | PF_W | PF_X;
+ {
+ elf_stack_flags (output_bfd) = PF_R | PF_W | PF_X;
+ elf_pax_flags (output_bfd) |= PF_EMUTRAMP;
+ }
else if (info->noexecstack)
- elf_stack_flags (output_bfd) = PF_R | PF_W;
+ {
+ elf_stack_flags (output_bfd) = PF_R | PF_W;
+ elf_pax_flags (output_bfd) |= PF_NOEMUTRAMP;
+ }
else
{
bfd *inputobj;
asection *notesec = NULL;
int exec = 0;
+ elf_pax_flags (output_bfd) |= PF_NOEMUTRAMP;
for (inputobj = info->input_bfds;
inputobj;
inputobj = inputobj->link.next)
@@ -5601,7 +5601,11 @@ bfd_elf_size_dynamic_sections (bfd *output_bfd,
if (s)
{
if (s->flags & SEC_CODE)
- exec = PF_X;
+ {
+ elf_pax_flags (output_bfd) &= ~PF_NOEMUTRAMP;
+ elf_pax_flags (output_bfd) |= PF_EMUTRAMP;
+ exec = PF_X;
+ }
notesec = s;
}
else if (bed->default_execstack)
--- binutils-2.25.1/binutils/readelf.c
+++ binutils-2.25.1/binutils/readelf.c
@@ -3262,6 +3262,7 @@ get_segment_type (unsigned long p_type)
return "GNU_EH_FRAME";
case PT_GNU_STACK: return "GNU_STACK";
case PT_GNU_RELRO: return "GNU_RELRO";
+ case PT_PAX_FLAGS: return "PAX_FLAGS";
default:
if ((p_type >= PT_LOPROC) && (p_type <= PT_HIPROC))
--- binutils-2.25.1/include/bfdlink.h
+++ binutils-2.25.1/include/bfdlink.h
@@ -339,6 +339,14 @@ struct bfd_link_info
/* TRUE if PT_GNU_RELRO segment should be created. */
unsigned int relro: 1;
+ /* TRUE if PT_PAX_FLAGS segment should be created with PF_NOMPROTECT
+ flags. */
+ unsigned int execheap: 1;
+
+ /* TRUE if PT_PAX_FLAGS segment should be created with PF_MPROTECT
+ flags. */
+ unsigned int noexecheap: 1;
+
/* TRUE if .eh_frame_hdr section and PT_GNU_EH_FRAME ELF segment
should be created. */
unsigned int eh_frame_hdr: 1;
--- binutils-2.25.1/include/elf/common.h
+++ binutils-2.25.1/include/elf/common.h
@@ -434,6 +434,7 @@
#define PT_SUNW_EH_FRAME PT_GNU_EH_FRAME /* Solaris uses the same value */
#define PT_GNU_STACK (PT_LOOS + 0x474e551) /* Stack flags */
#define PT_GNU_RELRO (PT_LOOS + 0x474e552) /* Read-only after relocation */
+#define PT_PAX_FLAGS (PT_LOOS + 0x5041580) /* PaX flags */
/* Program segment permissions, in program header p_flags field. */
@@ -444,6 +445,21 @@
#define PF_MASKOS 0x0FF00000 /* New value, Oct 4, 1999 Draft */
#define PF_MASKPROC 0xF0000000 /* Processor-specific reserved bits */
+/* Flags to control PaX behavior. */
+
+#define PF_PAGEEXEC (1 << 4) /* Enable PAGEEXEC */
+#define PF_NOPAGEEXEC (1 << 5) /* Disable PAGEEXEC */
+#define PF_SEGMEXEC (1 << 6) /* Enable SEGMEXEC */
+#define PF_NOSEGMEXEC (1 << 7) /* Disable SEGMEXEC */
+#define PF_MPROTECT (1 << 8) /* Enable MPROTECT */
+#define PF_NOMPROTECT (1 << 9) /* Disable MPROTECT */
+#define PF_RANDEXEC (1 << 10) /* Enable RANDEXEC */
+#define PF_NORANDEXEC (1 << 11) /* Disable RANDEXEC */
+#define PF_EMUTRAMP (1 << 12) /* Enable EMUTRAMP */
+#define PF_NOEMUTRAMP (1 << 13) /* Disable EMUTRAMP */
+#define PF_RANDMMAP (1 << 14) /* Enable RANDMMAP */
+#define PF_NORANDMMAP (1 << 15) /* Disable RANDMMAP */
+
/* Values for section header, sh_type field. */
#define SHT_NULL 0 /* Section header table entry unused */
--- binutils-2.25.1/ld/emultempl/elf32.em
+++ binutils-2.25.1/ld/emultempl/elf32.em
@@ -2276,6 +2276,16 @@ fragment <<EOF
link_info.noexecstack = TRUE;
link_info.execstack = FALSE;
}
+ else if (strcmp (optarg, "execheap") == 0)
+ {
+ link_info.execheap = TRUE;
+ link_info.noexecheap = FALSE;
+ }
+ else if (strcmp (optarg, "noexecheap") == 0)
+ {
+ link_info.noexecheap = TRUE;
+ link_info.execheap = FALSE;
+ }
EOF
if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
fragment <<EOF
@@ -2395,6 +2405,8 @@ fragment <<EOF
-z defs Report unresolved symbols in object files.\n"));
fprintf (file, _("\
-z execstack Mark executable as requiring executable
stack\n"));
+ fprintf (file, _("\
+ -z execheap Mark executable as requiring executable
heap\n"));
EOF
if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
@@ -2439,6 +2451,8 @@ fi
fragment <<EOF
fprintf (file, _("\
-z noexecstack Mark executable as not requiring executable
stack\n"));
+ fprintf (file, _("\
+ -z noexecheap Mark executable as not requiring executable
heap\n"));
EOF
if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
fragment <<EOF
--- binutils-2.25.1/ld/ldgram.y
+++ binutils-2.25.1/ld/ldgram.y
@@ -1235,6 +1235,8 @@ phdr_type:
$$ = exp_intop (0x6474e550);
else if (strcmp (s, "PT_GNU_STACK") == 0)
$$ = exp_intop (0x6474e551);
+ else if (strcmp (s, "PT_PAX_FLAGS") == 0)
+ $$ = exp_intop (0x65041580);
else
{
einfo (_("\
--- binutils-2.25.1/ld/testsuite/ld-alpha/tlsbin.rd
+++ binutils-2.25.1/ld/testsuite/ld-alpha/tlsbin.rd
@@ -35,13 +35,14 @@ There are [0-9]+ program headers, starting at offset [0-9]+
Program Headers:
Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align
- PHDR +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x0+150 R E 0x8
+ PHDR +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x0+188 R E 0x8
INTERP +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ R +0x1
.*Requesting program interpreter.*
LOAD +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ R E 0x10000
LOAD +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ RWE 0x10000
DYNAMIC +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ RW +0x8
TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ R +0x4
+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
#...
Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 3 entries:
--- binutils-2.25.1/ld/testsuite/ld-alpha/tlsbinr.rd
+++ binutils-2.25.1/ld/testsuite/ld-alpha/tlsbinr.rd
@@ -42,6 +42,7 @@ Program Headers:
+LOAD +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ RWE 0x10000
+DYNAMIC +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ RW +0x8
+TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ R +0x4
+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
#...
Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 2 entries:
--- binutils-2.25.1/ld/testsuite/ld-alpha/tlspic.rd
+++ binutils-2.25.1/ld/testsuite/ld-alpha/tlspic.rd
@@ -38,6 +38,7 @@ Program Headers:
+LOAD +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ RWE 0x10000
+DYNAMIC +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ RW +0x8
+TLS +0x0+10e0 0x0+110e0 0x0+110e0 0x0+60 0x0+80 R +0x4
+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
#...
Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 7 entries:
--- binutils-2.25.1/ld/testsuite/ld-elf/eh1.d
+++ binutils-2.25.1/ld/testsuite/ld-elf/eh1.d
@@ -23,11 +23,11 @@ Contents of the .eh_frame section:
DW_CFA_nop
DW_CFA_nop
-0+0018 0+001c 0+001c FDE cie=0+0000 pc=0+400078\.\.0+400090
- DW_CFA_advance_loc: 8 to 0+400080
+0+0018 0+001c 0+001c FDE cie=0+0000 pc=[0-9a-f.]+
+ DW_CFA_advance_loc: 8 to [0-9a-f]+
DW_CFA_def_cfa_offset: 16
DW_CFA_offset: r6 \(rbp\) at cfa-16
- DW_CFA_advance_loc: 8 to 0+400088
+ DW_CFA_advance_loc: 8 to [0-9a-f]+
DW_CFA_def_cfa_register: r6 \(rbp\)
0+0038 ZERO terminator
--- binutils-2.25.1/ld/testsuite/ld-elf/eh2.d
+++ binutils-2.25.1/ld/testsuite/ld-elf/eh2.d
@@ -23,11 +23,11 @@ Contents of the .eh_frame section:
DW_CFA_nop
DW_CFA_nop
-0+0018 0+001c 0+001c FDE cie=0+0000 pc=0+400078\.\.0+400090
- DW_CFA_advance_loc: 8 to 0+400080
+0+0018 0+001c 0+001c FDE cie=0+0000 pc=[0-9a-f.]+
+ DW_CFA_advance_loc: 8 to [0-9a-f]+
DW_CFA_def_cfa_offset: 16
DW_CFA_offset: r6 \(rbp\) at cfa-16
- DW_CFA_advance_loc: 8 to 0+400088
+ DW_CFA_advance_loc: 8 to [0-9a-f]+
DW_CFA_def_cfa_register: r6 \(rbp\)
0+0038 ZERO terminator
--- binutils-2.25.1/ld/testsuite/ld-elf/eh3.d
+++ binutils-2.25.1/ld/testsuite/ld-elf/eh3.d
@@ -23,11 +23,11 @@ Contents of the .eh_frame section:
DW_CFA_nop
DW_CFA_nop
-0+0018 0+001c 0+001c FDE cie=0+0000 pc=0+400078\.\.0+400090
- DW_CFA_advance_loc: 8 to 0+400080
+0+0018 0+001c 0+001c FDE cie=0+0000 pc=[0-9a-f.]+)
+ DW_CFA_advance_loc: 8 to [0-9a-f]+
DW_CFA_def_cfa_offset: 16
DW_CFA_offset: r6 \(rbp\) at cfa-16
- DW_CFA_advance_loc: 8 to 0+400088
+ DW_CFA_advance_loc: 8 to [0-9a-f]+
DW_CFA_def_cfa_register: r6 \(rbp\)
0+0038 ZERO terminator
--- binutils-2.25.1/ld/testsuite/ld-elf/orphan-region.d
+++ binutils-2.25.1/ld/testsuite/ld-elf/orphan-region.d
@@ -15,7 +15,9 @@
Program Headers:
Type.*
LOAD[ \t]+0x[0-9a-f]+ 0x0*40000000 0x0*40000000 0x[0-9a-f]+ 0x[0-9a-f]+ RWE
0x[0-9a-f]+
+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
Section to Segment mapping:
Segment Sections...
00 .text .rodata .moredata *
+ 01 +
--- binutils-2.25.1/ld/testsuite/ld-i386/tlsbin.rd
+++ binutils-2.25.1/ld/testsuite/ld-i386/tlsbin.rd
@@ -44,6 +44,7 @@ Program Headers:
+LOAD.*
+DYNAMIC.*
+TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x0+60 0x0+a0 R +0x1000
+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
Section to Segment mapping:
+Segment Sections...
@@ -53,6 +54,7 @@ Program Headers:
+03 +.tdata .dynamic .got .got.plt *
+04 +.dynamic *
+05 +.tdata .tbss *
+ +06 +
Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 9 entries:
Offset +Info +Type +Sym.Value +Sym. Name
--- binutils-2.25.1/ld/testsuite/ld-i386/tlsbindesc.rd
+++ binutils-2.25.1/ld/testsuite/ld-i386/tlsbindesc.rd
@@ -42,6 +42,7 @@ Program Headers:
+LOAD.*
+DYNAMIC.*
+TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x0+60 0x0+a0 R +0x1000
+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
Section to Segment mapping:
+Segment Sections...
@@ -51,6 +52,7 @@ Program Headers:
+03 +.tdata .dynamic .got .got.plt *
+04 +.dynamic *
+05 +.tdata .tbss *
+ +06 +
Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 9 entries:
Offset +Info +Type +Sym.Value +Sym. Name
--- binutils-2.25.1/ld/testsuite/ld-i386/tlsdesc.rd
+++ binutils-2.25.1/ld/testsuite/ld-i386/tlsdesc.rd
@@ -39,6 +39,7 @@ Program Headers:
+LOAD.*
+DYNAMIC.*
+TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x0+60 0x0+80 R +0x1
+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
Section to Segment mapping:
+Segment Sections...
@@ -46,6 +47,7 @@ Program Headers:
+01 +.tdata .dynamic .got .got.plt *
+02 +.dynamic *
+03 +.tdata .tbss *
+ +04 +
Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 20 entries:
Offset +Info +Type +Sym.Value +Sym. Name
--- binutils-2.25.1/ld/testsuite/ld-i386/tlsgdesc.rd
+++ binutils-2.25.1/ld/testsuite/ld-i386/tlsgdesc.rd
@@ -36,12 +36,14 @@ Program Headers:
+LOAD.*
+LOAD.*
+DYNAMIC.*
+ +PAX_FLAGS.*
Section to Segment mapping:
+Segment Sections...
+00 +.hash .dynsym .dynstr .rel.dyn .rel.plt .plt .text *
+01 +.dynamic .got .got.plt *
+02 +.dynamic *
+ +03 +
Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 8 entries:
Offset +Info +Type +Sym.Value +Sym. Name
--- binutils-2.25.1/ld/testsuite/ld-i386/tlsnopic.rd
+++ binutils-2.25.1/ld/testsuite/ld-i386/tlsnopic.rd
@@ -37,6 +37,7 @@ Program Headers:
+LOAD.*
+DYNAMIC.*
+TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x0+ 0x0+24 R +0x1
+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
Section to Segment mapping:
+Segment Sections...
@@ -44,6 +45,7 @@ Program Headers:
+01 +.dynamic .got .got.plt *
+02 +.dynamic *
+03 +.tbss *
+ +04 +
Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 20 entries:
Offset +Info +Type +Sym.Value +Sym. Name
--- binutils-2.25.1/ld/testsuite/ld-i386/tlspic.rd
+++ binutils-2.25.1/ld/testsuite/ld-i386/tlspic.rd
@@ -40,6 +40,7 @@ Program Headers:
+LOAD.*
+DYNAMIC.*
+TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x0+60 0x0+80 R +0x1
+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
Section to Segment mapping:
+Segment Sections...
@@ -47,6 +48,7 @@ Program Headers:
+01 +.tdata .dynamic .got .got.plt *
+02 +.dynamic *
+03 +.tdata .tbss *
+ +04 +
Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 26 entries:
Offset +Info +Type +Sym.Value +Sym. Name
--- binutils-2.25.1/ld/testsuite/ld-ia64/merge1.d
+++ binutils-2.25.1/ld/testsuite/ld-ia64/merge1.d
@@ -4,7 +4,7 @@
#objdump: -d
#...
-0+1e0 <.text>:
+[a-f0-9]+ <.text>:
[ ]*[a-f0-9]+: 0b 60 80 02 00 24 \[MMI\] addl r12=32,r1;;
[ ]*[a-f0-9]+: c0 c0 04 00 48 00 addl r12=24,r1
[ ]*[a-f0-9]+: 00 00 04 00 nop.i 0x0;;
--- binutils-2.25.1/ld/testsuite/ld-ia64/merge2.d
+++ binutils-2.25.1/ld/testsuite/ld-ia64/merge2.d
@@ -4,7 +4,7 @@
#objdump: -d
#...
-0+1e0 <.text>:
+[a-f0-9]+ <.text>:
[ ]*[a-f0-9]+: 0b 60 80 02 00 24 \[MMI\] addl r12=32,r1;;
[ ]*[a-f0-9]+: c0 c0 04 00 48 00 addl r12=24,r1
[ ]*[a-f0-9]+: 00 00 04 00 nop.i 0x0;;
--- binutils-2.25.1/ld/testsuite/ld-ia64/merge3.d
+++ binutils-2.25.1/ld/testsuite/ld-ia64/merge3.d
@@ -4,7 +4,7 @@
#objdump: -d
#...
-0+210 <.text>:
+[a-f0-9]+ <.text>:
[ ]*[a-f0-9]+: 0b 60 80 02 00 24 \[MMI\] addl r12=32,r1;;
[ ]*[a-f0-9]+: c0 40 05 00 48 00 addl r12=40,r1
[ ]*[a-f0-9]+: 00 00 04 00 nop.i 0x0;;
--- binutils-2.25.1/ld/testsuite/ld-ia64/merge4.d
+++ binutils-2.25.1/ld/testsuite/ld-ia64/merge4.d
@@ -4,7 +4,7 @@
#objdump: -d
#...
-0+240 <.text>:
+[a-f0-9]+ <.text>:
[ ]*[a-f0-9]+: 0b 60 80 02 00 24 \[MMI\] addl r12=32,r1;;
[ ]*[a-f0-9]+: c0 40 05 00 48 00 addl r12=40,r1
[ ]*[a-f0-9]+: 00 00 04 00 nop.i 0x0;;
--- binutils-2.25.1/ld/testsuite/ld-ia64/merge5.d
+++ binutils-2.25.1/ld/testsuite/ld-ia64/merge5.d
@@ -4,7 +4,7 @@
#objdump: -d
#...
-0+270 <.text>:
+[a-f0-9]+ <.text>:
[ ]*[a-f0-9]+: 0b 60 80 02 00 24 \[MMI\] addl r12=32,r1;;
[ ]*[a-f0-9]+: c0 40 05 00 48 00 addl r12=40,r1
[ ]*[a-f0-9]+: 00 00 04 00 nop.i 0x0;;
--- binutils-2.25.1/ld/testsuite/ld-ia64/tlsbin.rd
+++ binutils-2.25.1/ld/testsuite/ld-ia64/tlsbin.rd
@@ -36,13 +36,14 @@ There are [0-9]+ program headers, starting at offset [0-9]+
Program Headers:
+Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align
- +PHDR +0x0+40 0x40+40 0x40+40 0x0+188 0x0+188 R E 0x8
- +INTERP +0x0+1c8 0x40+1c8 0x40+1c8 0x[0-9a-f]+ 0x[0-9a-f]+ R +0x1
+ +PHDR +0x0+40 0x40+40 0x40+40 (0x[0-9a-f]+) \1 R E 0x8
+ +INTERP +0x0+([0-9a-f]+) (0x40+\1) \2 0x[0-9a-f]+ 0x[0-9a-f]+ R +0x1
.*Requesting program interpreter.*
+LOAD +0x0+ 0x40+ 0x40+ 0x0+1[0-9a-f]+ 0x0+1[0-9a-f]+ R E 0x10000
+LOAD +0x0+1[0-9a-f]+ 0x60+1[0-9a-f]+ 0x60+1[0-9a-f]+ 0x0+0[0-9a-f]+
0x0+0[0-9a-f]+ RW +0x10000
+DYNAMIC +0x0+1[0-9a-f]+ 0x60+1[0-9a-f]+ 0x60+1[0-9a-f]+ 0x0+150 0x0+150 RW
+0x8
+TLS +0x0+1[0-9a-f]+ 0x60+1[0-9a-f]+ 0x60+1[0-9a-f]+ 0x0+60 0x0+a0 R +0x4
+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
+IA_64_UNWIND .* R +0x8
#...
--- binutils-2.25.1/ld/testsuite/ld-ia64/tlspic.rd
+++ binutils-2.25.1/ld/testsuite/ld-ia64/tlspic.rd
@@ -40,6 +40,7 @@ Program Headers:
+LOAD +0x0+1[0-9a-f]+ 0x0+11[0-9a-f]+ 0x0+11[0-9a-f]+ 0x0+0[0-9a-f]+
0x0+0[0-9a-f]+ RW +0x10000
+DYNAMIC +0x0+1[0-9a-f]+ 0x0+11[0-9a-f]+ 0x0+11[0-9a-f]+ 0x0+140 0x0+140 RW
+0x8
+TLS +0x0+1[0-9a-f]+ 0x0+11[0-9a-f]+ 0x0+11[0-9a-f]+ 0x0+60 0x0+80 R +0x4
+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
+IA_64_UNWIND +0x0+1[0-9a-f]+ 0x0+1[0-9a-f]+ 0x0+1[0-9a-f]+ 0x0+18 0x0+18 R
+0x8
#...
--- binutils-2.25.1/ld/testsuite/ld-mips-elf/multi-got-no-shared.d
+++ binutils-2.25.1/ld/testsuite/ld-mips-elf/multi-got-no-shared.d
@@ -8,9 +8,9 @@
.*: +file format.*
Disassembly of section \.text:
-004000f0 <[^>]*> 3c1c0043 lui gp,0x43
-004000f4 <[^>]*> 279c9ff0 addiu gp,gp,-24592
-004000f8 <[^>]*> afbc0008 sw gp,8\(sp\)
+00400110 <[^>]*> 3c1c0043 lui gp,0x43
+00400114 <[^>]*> 279c9ff0 addiu gp,gp,-24592
+00400118 <[^>]*> afbc0008 sw gp,8\(sp\)
#...
00408da0 <[^>]*> 3c1c0043 lui gp,0x43
00408da4 <[^>]*> 279c2c98 addiu gp,gp,11416
--- binutils-2.25.1/ld/testsuite/ld-mips-elf/pic-and-nonpic-3a.sd
+++ binutils-2.25.1/ld/testsuite/ld-mips-elf/pic-and-nonpic-3a.sd
@@ -1,7 +1,7 @@
Elf file type is DYN \(Shared object file\)
Entry point .*
-There are 5 program headers, starting at offset .*
+There are [0-9] program headers, starting at offset .*
Program Headers:
* Type * Offset * VirtAddr * PhysAddr * FileSiz * MemSiz * Flg * Align
@@ -9,6 +9,7 @@ Program Headers:
* LOAD * [^ ]+ * 0x0+00000 * 0x0+00000 [^ ]+ * [^ ]+ * R E * 0x.*
* LOAD * [^ ]+ * 0x0+10000 * 0x0+10000 [^ ]+ * [^ ]+ * RW * 0x.*
* DYNAMIC * [^ ]+ * 0x0+00400 * 0x0+00400 [^ ]+ * [^ ]+ * R * 0x.*
+ * PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
* NULL * .*
*Section to Segment mapping:
@@ -18,3 +19,4 @@ Program Headers:
*0*2 * \.data \.got *
*0*3 * \.dynamic *
*0*4 *
+ *0*5 *
--- binutils-2.25.1/ld/testsuite/ld-mips-elf/pic-and-nonpic-3b.sd
+++ binutils-2.25.1/ld/testsuite/ld-mips-elf/pic-and-nonpic-3b.sd
@@ -1,7 +1,7 @@
Elf file type is EXEC \(Executable file\)
Entry point 0x44000
-There are 8 program headers, starting at offset .*
+There are [0-9] program headers, starting at offset .*
Program Headers:
* Type * Offset * VirtAddr * PhysAddr * FileSiz * MemSiz * Flg * Align
@@ -13,6 +13,7 @@ Program Headers:
* LOAD * [^ ]+ * 0x0+80000 * 0x0+80000 [^ ]+ * [^ ]+ * RW * 0x.*
* LOAD * [^ ]+ * 0x0+a0000 * 0x0+a0000 [^ ]+ * [^ ]+ * RW * 0x.*
* DYNAMIC * [^ ]+ * 0x0+42000 * 0x0+42000 .*
+ * PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
* NULL * .*
*Section to Segment mapping:
@@ -25,3 +26,4 @@ Program Headers:
*0*5 *\.got \.data *
*0*6 *\.dynamic *
*0*7 *
+ *0*8 *
--- binutils-2.25.1/ld/testsuite/ld-mips-elf/pic-and-nonpic-4b.sd
+++ binutils-2.25.1/ld/testsuite/ld-mips-elf/pic-and-nonpic-4b.sd
@@ -1,7 +1,7 @@
Elf file type is EXEC \(Executable file\)
Entry point 0x44000
-There are 8 program headers, starting at offset .*
+There are [0-9] program headers, starting at offset .*
Program Headers:
* Type * Offset * VirtAddr * PhysAddr * FileSiz * MemSiz * Flg * Align
@@ -13,6 +13,7 @@ Program Headers:
* LOAD * [^ ]+ * 0x0+80000 * 0x0+80000 [^ ]+ * [^ ]+ * RW * 0x.*
* LOAD * [^ ]+ * 0x0+a0000 * 0x0+a0000 [^ ]+ * [^ ]+ * RW * 0x.*
* DYNAMIC * [^ ]+ * 0x0+42000 * 0x0+42000 .*
+ * PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
* NULL * .*
*Section to Segment mapping:
@@ -25,3 +26,4 @@ Program Headers:
*0*5 * \.got \.data \.bss *
*0*6 * \.dynamic *
*0*7 *
+ *0*8 *
--- binutils-2.25.1/ld/testsuite/ld-mips-elf/pic-and-nonpic-5b.sd
+++ binutils-2.25.1/ld/testsuite/ld-mips-elf/pic-and-nonpic-5b.sd
@@ -1,7 +1,7 @@
Elf file type is EXEC \(Executable file\)
Entry point 0x44000
-There are 8 program headers, starting at offset .*
+There are [0-9] program headers, starting at offset .*
Program Headers:
* Type * Offset * VirtAddr * PhysAddr * FileSiz * MemSiz * Flg * Align
@@ -13,6 +13,7 @@ Program Headers:
* LOAD * [^ ]+ * 0x0+80000 * 0x0+80000 [^ ]+ * [^ ]+ * RW * 0x.*
* LOAD * [^ ]+ * 0x0+a0000 * 0x0+a0000 [^ ]+ * [^ ]+ * RW * 0x.*
* DYNAMIC * [^ ]+ * 0x0+42000 * 0x0+42000 .*
+ * PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
* NULL * .*
*Section to Segment mapping:
@@ -25,3 +26,4 @@ Program Headers:
*0*5 * \.got \.data \.bss *
*0*6 * \.dynamic *
*0*7 *
+ *0*8 *
--- binutils-2.25.1/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-n32.sd
+++ binutils-2.25.1/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-n32.sd
@@ -1,7 +1,7 @@
Elf file type is EXEC \(Executable file\)
Entry point 0x44000
-There are 8 program headers, starting at offset .*
+There are [0-9] program headers, starting at offset .*
Program Headers:
* Type * Offset * VirtAddr * PhysAddr * FileSiz * MemSiz * Flg * Align
@@ -13,6 +13,7 @@ Program Headers:
* LOAD * [^ ]+ * 0x0+80000 * 0x0+80000 [^ ]+ * [^ ]+ * RW * 0x.*
* LOAD * [^ ]+ * 0x0+a0000 * 0x0+a0000 [^ ]+ * [^ ]+ * RW * 0x.*
* DYNAMIC * [^ ]+ * 0x0+42000 * 0x0+42000 .*
+ * PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
* NULL * .*
*Section to Segment mapping:
@@ -25,3 +26,4 @@ Program Headers:
*0*5 * \.got \.data \.bss *
*0*6 * \.dynamic *
*0*7 *
+ *0*8 *
--- binutils-2.25.1/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-n64.sd
+++ binutils-2.25.1/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-n64.sd
@@ -1,7 +1,7 @@
Elf file type is EXEC \(Executable file\)
Entry point 0x44000
-There are 7 program headers, starting at offset .*
+There are [0-9] program headers, starting at offset .*
Program Headers:
* Type * Offset * VirtAddr * PhysAddr * FileSiz * MemSiz * Flg * Align
@@ -12,6 +12,7 @@ Program Headers:
* LOAD * [^ ]+ * 0x0+80000 * 0x0+80000 [^ ]+ * [^ ]+ * RW * 0x.*
* LOAD * [^ ]+ * 0x0+a0000 * 0x0+a0000 [^ ]+ * [^ ]+ * RW * 0x.*
* DYNAMIC * [^ ]+ * 0x0+42000 * 0x0+42000 .*
+ * PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
* NULL * .*
*Section to Segment mapping:
@@ -23,3 +24,4 @@ Program Headers:
*0*4 * \.got \.data \.bss *
*0*5 * \.dynamic *
*0*6 *
+ *0*7 *
--- binutils-2.25.1/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-o32.sd
+++ binutils-2.25.1/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-o32.sd
@@ -1,7 +1,7 @@
Elf file type is EXEC \(Executable file\)
Entry point 0x44000
-There are 8 program headers, starting at offset .*
+There are [0-9] program headers, starting at offset .*
Program Headers:
* Type * Offset * VirtAddr * PhysAddr * FileSiz * MemSiz * Flg * Align
@@ -13,6 +13,7 @@ Program Headers:
* LOAD * [^ ]+ * 0x0+80000 * 0x0+80000 [^ ]+ * [^ ]+ * RW * 0x.*
* LOAD * [^ ]+ * 0x0+a0000 * 0x0+a0000 [^ ]+ * [^ ]+ * RW * 0x.*
* DYNAMIC * [^ ]+ * 0x0+42000 * 0x0+42000 .*
+ * PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
* NULL * .*
*Section to Segment mapping:
@@ -25,3 +26,4 @@ Program Headers:
*0*5 * \.got \.data \.bss *
*0*6 * \.dynamic *
*0*7 *
+ *0*8 *
--- binutils-2.25.1/ld/testsuite/ld-powerpc/tlsexe32.r
+++ binutils-2.25.1/ld/testsuite/ld-powerpc/tlsexe32.r
@@ -33,13 +33,14 @@ There are [0-9]+ program headers, starting at offset [0-9]+
Program Headers:
+Type +Offset +VirtAddr +PhysAddr +FileSiz MemSiz +Flg Align
- +PHDR +0x000034 0x01800034 0x01800034 0x000c0 0x000c0 R E 0x4
- +INTERP +0x0000f4 0x018000f4 0x018000f4 0x00011 0x00011 R +0x1
+ +PHDR +0x000034 0x01800034 0x01800034 (0x000[0-9a-f]{2}) \1 R E 0x4
+ +INTERP +0x000([0-9a-f]{3}) 0x01800\1 0x01800\1 0x00011 0x00011 R +0x1
+\[Requesting program interpreter: .*\]
+LOAD .* R E 0x10000
+LOAD .* RW +0x10000
+DYNAMIC .* RW +0x4
+TLS .* 0x0001c 0x00038 R +0x4
+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
Section to Segment mapping:
+Segment Sections\.\.\.
@@ -49,6 +50,7 @@ Program Headers:
+03 +\.tdata \.dynamic \.got \.plt
+04 +\.dynamic
+05 +\.tdata \.tbss
+ +06 +
Relocation section '\.rela\.dyn' at offset .* contains 2 entries:
Offset +Info +Type +Sym\. Value +Symbol's Name \+ Addend
--- binutils-2.25.1/ld/testsuite/ld-powerpc/tlsso32.r
+++ binutils-2.25.1/ld/testsuite/ld-powerpc/tlsso32.r
@@ -35,6 +35,7 @@ Program Headers:
+LOAD .* RW +0x10000
+DYNAMIC .* RW +0x4
+TLS .* 0x0+1c 0x0+38 R +0x4
+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
Section to Segment mapping:
+Segment Sections\.\.\.
@@ -42,6 +43,7 @@ Program Headers:
+01 +\.tdata \.dynamic \.got \.plt
+02 +\.dynamic
+03 +\.tdata \.tbss
+ +04 +
Relocation section '\.rela\.dyn' at offset 0x[0-9a-f]+ contains 18 entries:
Offset +Info +Type +Sym\. Value +Symbol's Name \+ Addend
@@ -52,9 +54,9 @@ Relocation section '\.rela\.dyn' at offset 0x[0-9a-f]+
contains 18 entries:
[0-9a-f ]+R_PPC_TPREL16 +0+30 +le0 \+ 0
[0-9a-f ]+R_PPC_TPREL16_HA +0+34 +le1 \+ 0
[0-9a-f ]+R_PPC_TPREL16_LO +0+34 +le1 \+ 0
-[0-9a-f ]+R_PPC_TPREL16 +0+10430 +\.tdata \+ 10444
-[0-9a-f ]+R_PPC_TPREL16_HA +0+10430 +\.tdata \+ 10448
-[0-9a-f ]+R_PPC_TPREL16_LO +0+10430 +\.tdata \+ 10448
+[0-9a-f ]+R_PPC_TPREL16 +0+104[34]0 +\.tdata \+ 10[0-9a-f]{3}
+[0-9a-f ]+R_PPC_TPREL16_HA +0+104[34]0 +\.tdata \+ 10[0-9a-f]{3}
+[0-9a-f ]+R_PPC_TPREL16_LO +0+104[34]0 +\.tdata \+ 10[0-9a-f]{3}
[0-9a-f ]+R_PPC_DTPMOD32 +0
[0-9a-f ]+R_PPC_DTPREL32 +0
[0-9a-f ]+R_PPC_DTPMOD32 +0
--- binutils-2.25.1/ld/testsuite/ld-s390/tlsbin.rd
+++ binutils-2.25.1/ld/testsuite/ld-s390/tlsbin.rd
@@ -43,6 +43,7 @@ Program Headers:
+LOAD .* RW +0x1000
+DYNAMIC .* RW +0x4
+TLS .* 0x0+60 0x0+a0 R +0x20
+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
Section to Segment mapping:
+Segment Sections...
@@ -52,6 +53,7 @@ Program Headers:
+03 +.tdata .dynamic .got *
+04 +.dynamic *
+05 +.tdata .tbss *
+ +06 +
Relocation section '.rela.dyn' at offset .* contains 4 entries:
Offset +Info +Type +Sym.Value +Sym. Name \+ Addend
--- binutils-2.25.1/ld/testsuite/ld-s390/tlsbin_64.rd
+++ binutils-2.25.1/ld/testsuite/ld-s390/tlsbin_64.rd
@@ -43,6 +43,7 @@ Program Headers:
+LOAD .* RW +0x1000
+DYNAMIC .* RW +0x8
+TLS .* 0x0+60 0x0+a0 R +0x20
+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
Section to Segment mapping:
+Segment Sections...
@@ -52,6 +53,7 @@ Program Headers:
+03 +.tdata .dynamic .got *
+04 +.dynamic *
+05 +.tdata .tbss *
+ +06 +
Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 4 entries:
+Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend
--- binutils-2.25.1/ld/testsuite/ld-s390/tlspic.rd
+++ binutils-2.25.1/ld/testsuite/ld-s390/tlspic.rd
@@ -39,6 +39,7 @@ Program Headers:
+LOAD .* RW +0x1000
+DYNAMIC .* RW +0x4
+TLS .* 0x0+60 0x0+80 R +0x20
+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
Section to Segment mapping:
+Segment Sections...
@@ -46,6 +47,7 @@ Program Headers:
+01 +.tdata .dynamic .got
+02 +.dynamic
+03 +.tdata .tbss
+ +04 +
Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries:
Offset +Info +Type +Sym.Value +Sym. Name \+ Addend
--- binutils-2.25.1/ld/testsuite/ld-s390/tlspic_64.rd
+++ binutils-2.25.1/ld/testsuite/ld-s390/tlspic_64.rd
@@ -39,6 +39,7 @@ Program Headers:
+LOAD .* RW +0x1000
+DYNAMIC .* RW +0x8
+TLS .* 0x0+60 0x0+80 R +0x20
+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
Section to Segment mapping:
+Segment Sections...
@@ -46,6 +47,7 @@ Program Headers:
+01 +.tdata .dynamic .got *
+02 +.dynamic *
+03 +.tdata .tbss *
+ +04 +
Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries:
+Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend
--- binutils-2.25.1/ld/testsuite/ld-sh/tlsbin-2.d
+++ binutils-2.25.1/ld/testsuite/ld-sh/tlsbin-2.d
@@ -44,6 +44,7 @@ Program Headers:
+LOAD.*
+DYNAMIC.*
+TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x0+18 0x0+28 R +0x4
+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
Section to Segment mapping:
+Segment Sections\.\.\.
@@ -53,6 +54,7 @@ Program Headers:
+03 +\.tdata \.dynamic \.got *
+04 +\.dynamic *
+05 +\.tdata \.tbss *
+ +06 +
Relocation section '\.rela\.dyn' at offset 0x[0-9a-f]+ contains 4 entries:
Offset +Info +Type +Sym\.Value +Sym\. Name \+ Addend
--- binutils-2.25.1/ld/testsuite/ld-sh/tlspic-2.d
+++ binutils-2.25.1/ld/testsuite/ld-sh/tlspic-2.d
@@ -32,7 +32,7 @@ Key to Flags:
Elf file type is DYN \(Shared object file\)
Entry point 0x[0-9a-f]+
-There are 4 program headers, starting at offset [0-9]+
+There are [0-9] program headers, starting at offset [0-9]+
Program Headers:
+Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align
@@ -40,6 +40,7 @@ Program Headers:
+LOAD.*
+DYNAMIC.*
+TLS .* 0x0+18 0x0+20 R +0x4
+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
Section to Segment mapping:
+Segment Sections\.\.\.
@@ -47,6 +48,7 @@ Program Headers:
+01 +\.tdata \.dynamic \.got *
+02 +\.dynamic *
+03 +\.tdata \.tbss *
+ +04 +
Relocation section '\.rela\.dyn' at offset 0x[0-9a-f]+ contains 10 entries:
Offset +Info +Type +Sym\.Value +Sym\. Name \+ Addend
--- binutils-2.25.1/ld/testsuite/ld-sparc/gotop32.rd
+++ binutils-2.25.1/ld/testsuite/ld-sparc/gotop32.rd
@@ -31,6 +31,7 @@ Program Headers:
+LOAD +0x0+ 0x0+ 0x0+ 0x0+2000 0x0+2000 R E 0x10000
+LOAD +0x0+2000 0x0+12000 0x0+12000 0x0+2000 0x0+2000 RW +0x10000
+DYNAMIC +0x0+2000 0x0+12000 0x0+12000 0x0+70 0x0+70 RW +0x4
+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
#...
Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 1 entries:
--- binutils-2.25.1/ld/testsuite/ld-sparc/gotop64.rd
+++ binutils-2.25.1/ld/testsuite/ld-sparc/gotop64.rd
@@ -31,6 +31,7 @@ Program Headers:
+LOAD +0x0+ 0x0+ 0x0+ 0x0+2000 0x0+2000 R E 0x100000
+LOAD +0x0+2000 0x0+102000 0x0+102000 0x0+2000 0x0+2000 RW +0x100000
+DYNAMIC +0x0+2000 0x0+102000 0x0+102000 0x0+e0 0x0+e0 RW +0x8
+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
#...
Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 1 entries:
--- binutils-2.25.1/ld/testsuite/ld-sparc/tlssunbin32.rd
+++ binutils-2.25.1/ld/testsuite/ld-sparc/tlssunbin32.rd
@@ -30,13 +30,14 @@ There are [0-9]+ program headers, starting at offset [0-9]+
Program Headers:
+Type +Offset +VirtAddr +PhysAddr +FileSiz MemSiz +Flg Align
- +PHDR +0x0+34 0x0+10034 0x0+10034 0x0+c0 0x0+c0 R E 0x4
- +INTERP +0x0+f4 0x0+100f4 0x0+100f4 0x0+11 0x0+11 R +0x1
+ +PHDR +0x0+34 0x0+10034 0x0+10034 (0x[0-9a-f]+) \1 R E 0x4
+ +INTERP +(0x[0-9a-f]+ ){3}0x0+11 0x0+11 R +0x1
.*Requesting program interpreter.*
+LOAD .* R E 0x10000
+LOAD .* RW +0x10000
+DYNAMIC .* RW +0x4
+TLS .* 0x0+1060 0x0+10a0 R +0x4
+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
#...
Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 4 entries:
--- binutils-2.25.1/ld/testsuite/ld-sparc/tlssunbin64.rd
+++ binutils-2.25.1/ld/testsuite/ld-sparc/tlssunbin64.rd
@@ -30,13 +30,14 @@ There are [0-9]+ program headers, starting at offset [0-9]+
Program Headers:
+Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align
- +PHDR +0x0+40 0x0+100040 0x0+100040 0x0+150 0x0+150 R E 0x8
- +INTERP +0x0+190 0x0+100190 0x0+100190 0x0+19 0x0+19 R +0x1
+ +PHDR +0x0+40 0x0+100040 0x0+100040 (0x[0-9a-f]+) \1 R E 0x8
+ +INTERP +0x0+([0-9a-f]+) (0x0+10+\1) \2 0x0+19 0x0+19 R +0x1
.*Requesting program interpreter.*
+LOAD .* R E 0x100000
+LOAD .* RW +0x100000
+DYNAMIC .* RW +0x8
+TLS .* 0x0+60 0x0+a0 R +0x4
+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
#...
Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 4 entries:
--- binutils-2.25.1/ld/testsuite/ld-sparc/tlssunnopic32.rd
+++ binutils-2.25.1/ld/testsuite/ld-sparc/tlssunnopic32.rd
@@ -32,6 +32,7 @@ Program Headers:
+LOAD .* RW +0x10000
+DYNAMIC .* RW +0x4
+TLS .* 0x0+ 0x0+24 R +0x4
+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
#...
Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 12 entries:
--- binutils-2.25.1/ld/testsuite/ld-sparc/tlssunnopic64.rd
+++ binutils-2.25.1/ld/testsuite/ld-sparc/tlssunnopic64.rd
@@ -32,6 +32,7 @@ Program Headers:
+LOAD .* RW +0x100000
+DYNAMIC .* RW +0x8
+TLS .* 0x0+ 0x0+24 R +0x4
+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
#...
Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries:
--- binutils-2.25.1/ld/testsuite/ld-sparc/tlssunpic32.rd
+++ binutils-2.25.1/ld/testsuite/ld-sparc/tlssunpic32.rd
@@ -36,6 +36,7 @@ Program Headers:
+LOAD +0x0+2000 0x0+12000 0x0+12000 0x0+184 0x0+184 RWE 0x10000
+DYNAMIC +0x0+2060 0x0+12060 0x0+12060 0x0+98 0x0+98 RW +0x4
+TLS +0x0+2000 0x0+12000 0x0+12000 0x0+60 0x0+80 R +0x4
+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
#...
Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries:
--- binutils-2.25.1/ld/testsuite/ld-sparc/tlssunpic64.rd
+++ binutils-2.25.1/ld/testsuite/ld-sparc/tlssunpic64.rd
@@ -36,6 +36,7 @@ Program Headers:
+LOAD +0x0+2000 0x0+102000 0x0+102000 0x0+3a0 0x0+3a0 RWE 0x100000
+DYNAMIC +0x0+2060 0x0+102060 0x0+102060 0x0+130 0x0+130 RW +0x8
+TLS +0x0+2000 0x0+102000 0x0+102000 0x0+60 0x0+80 R +0x4
+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
#...
Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries:
--- binutils-2.25.1/ld/testsuite/ld-x86-64/tlsgdesc.rd
+++ binutils-2.25.1/ld/testsuite/ld-x86-64/tlsgdesc.rd
@@ -36,12 +36,14 @@ Program Headers:
+LOAD.*
+LOAD.*
+DYNAMIC.*
+ +PAX_FLAGS.*
Section to Segment mapping:
+Segment Sections...
+00 +.hash .dynsym .dynstr .rela.dyn .rela.plt .plt .text *
+01 +.dynamic .got .got.plt *
+02 +.dynamic *
+ +03 +
Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 8 entries:
+Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend
--- binutils-2.25.1/ld/testsuite/ld-x86-64/tlspic.rd
+++ binutils-2.25.1/ld/testsuite/ld-x86-64/tlspic.rd
@@ -40,6 +40,7 @@ Program Headers:
+LOAD +0x0+131a 0x0+20131a 0x0+20131a 0x0+246 0x0+246 RW +0x200000
+DYNAMIC +0x0+1380 0x0+201380 0x0+201380 0x0+130 0x0+130 RW +0x8
+TLS +0x0+131a 0x0+20131a 0x0+20131a 0x0+60 0x0+80 R +0x1
+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
Section to Segment mapping:
+Segment Sections...
@@ -47,6 +48,7 @@ Program Headers:
+01 +.tdata .dynamic .got .got.plt *
+02 +.dynamic *
+03 +.tdata .tbss *
+ +04 +
Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries:
+Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend
1.1
src/patchsets/binutils/2.25.1/66_all_binutils-2.22.52.0.1-warn-textrel.patch
file :
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.25.1/66_all_binutils-2.22.52.0.1-warn-textrel.patch?rev=1.1&view=markup
plain:
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.25.1/66_all_binutils-2.22.52.0.1-warn-textrel.patch?rev=1.1&content-type=text/plain
Index: 66_all_binutils-2.22.52.0.1-warn-textrel.patch
===================================================================
textrels are bad for forcing copy-on-write (this affects everyone),
and for security/runtime code generation, this affects security ppl.
But in either case, it doesn't matter who needs textrels, it's
the very fact that they're needed at all.
2006-06-10 Ned Ludd <[email protected]>, Mike Frysinger <[email protected]>
* bfd/elflink.c (bfd_elf_final_link): Check all objects for TEXTRELs.
* ld/ldmain.c (main): Change textrel warning default to true.
* ld/testsuite/lib/ld-lib.exp (default_ld_simple_link): Scrub TEXTREL
warnings from ld output.
--- a/bfd/elflink.c
+++ b/bfd/elflink.c
@@ -8652,7 +8652,7 @@ bfd_elf_final_link (bfd *abfd, struct bf
goto error_return;
/* Check for DT_TEXTREL (late, in case the backend removes it). */
- if (((info->warn_shared_textrel && info->shared)
+ if ((info->warn_shared_textrel
|| info->error_textrel)
&& (o = bfd_get_section_by_name (dynobj, ".dynamic")) != NULL)
{
@@ -8702,7 +8702,7 @@ bfd_elf_final_link (bfd *abfd, struct bf
(_("%P%X: read-only segment has dynamic relocations.\n"));
else
info->callbacks->einfo
- (_("%P: warning: creating a DT_TEXTREL in a shared
object.\n"));
+ (_("%P: warning: creating a DT_TEXTREL in object.\n"));
break;
}
}
--- a/ld/ldmain.c
+++ b/ld/ldmain.c
@@ -282,2 +282,3 @@ main (int argc, char **argv)
link_info.spare_dynamic_tags = 5;
+ link_info.warn_shared_textrel = TRUE;
link_info.sharable_sections = FALSE;
--- a/ld/testsuite/lib/ld-lib.exp
+++ b/ld/testsuite/lib/ld-lib.exp
@@ -181,6 +181,10 @@ proc default_ld_simple_link { ld target
# symbol, since the default linker script might use ENTRY.
regsub -all "(^|\n)(\[^\n\]*: warning: cannot find entry
symbol\[^\n\]*\n?)" $exec_output "\\1" exec_output
+ # Gentoo tweak:
+ # We want to ignore TEXTREL warnings since we force enable them by default
+ regsub -all "^lt-ld-new: warning: creating a DT_TEXTREL in object\."
$exec_output "\\1" exec_output
+
if [string match "" $exec_output] then {
return 1
} else {
1.1
src/patchsets/binutils/2.25.1/67_all_ld-poison-system-directories.patch
file :
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.25.1/67_all_ld-poison-system-directories.patch?rev=1.1&view=markup
plain:
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.25.1/67_all_ld-poison-system-directories.patch?rev=1.1&content-type=text/plain
Index: 67_all_ld-poison-system-directories.patch
===================================================================
>From a83726f28779f99f17697e15b2ff8b69767f6fc7 Mon Sep 17 00:00:00 2001
From: Mike Frysinger <[email protected]>
Date: Wed, 20 May 2015 07:09:14 -0400
Subject: [PATCH] gold/ld: add support for poisoned system directories
This is based on the old CodeSourcery patch written by Joseph Myers to add
support to the link for detecting & rejecting bad -L paths when using a
cross-compiler. The differences here:
* The command line flags are always available.
* We can turn on & off the warning via the command line.
* The configure option controls the default warning behavior.
* Add support for gold.
It is not currently upstream, nor has it been submitted at all. There are
no plans to do so currently either.
BUG=chromium:488360
TEST=`cbuildbot chromiumos-sdk` passes # tests arm/amd64/mipsel/x86
TEST=`cbuildbot panther_moblab-full whirlwind-release` pass
TEST=`cbuildbot {x32,arm64}-generic-full` has no new failures
TEST=x86_64-cros-linux-gnu-ld throws warnings when using -L/lib (gold & bfd)
Reviewed-on: https://chromium-review.googlesource.com/272083
---
gold/options.cc | 33 +++++++++++++++++++++++++++++++++
gold/options.h | 7 +++++++
ld/config.in | 3 +++
ld/configure | 14 ++++++++++++++
ld/configure.ac | 10 ++++++++++
ld/ld.h | 7 +++++++
ld/ld.texinfo | 18 ++++++++++++++++++
ld/ldfile.c | 16 ++++++++++++++++
ld/ldlex.h | 3 +++
ld/ldmain.c | 7 +++++++
ld/lexsup.c | 24 ++++++++++++++++++++++++
11 files changed, 142 insertions(+)
diff --git a/gold/options.cc b/gold/options.cc
index 6b49459..0e26bb3 100644
--- a/gold/options.cc
+++ b/gold/options.cc
@@ -1201,6 +1201,39 @@ General_options::finalize()
// in the path, as appropriate.
this->add_sysroot();
+ // Now check if library_path is poisoned.
+ if (this->warn_poison_system_directories())
+ {
+ std::vector<std::string> bad_paths;
+
+ bad_paths.push_back("/lib");
+ // TODO: This check is disabled for now due to a bunch of packages that
+ // use libtool and relink with -L/usr/lib paths (albeit after the right
+ // sysroot path). Once those are fixed we can enable.
+ // We also need to adjust it so it only rejects one or two levels deep.
+ // Gcc's internal paths also live below /usr/lib.
+ // http://crbug.com/488360
+ // bad_paths.push_back("/usr/lib");
+ bad_paths.push_back("/usr/local/lib");
+ bad_paths.push_back("/usr/X11R6/lib");
+
+ for (std::vector<std::string>::const_iterator b = bad_paths.begin();
+ b != bad_paths.end();
+ ++b)
+ for (Dir_list::iterator p = this->library_path_.value.begin();
+ p != this->library_path_.value.end();
+ ++p)
+ if (!p->name().compare(0, b->size(), *b))
+ {
+ if (this->error_poison_system_directories())
+ gold_fatal(_("library search path \"%s\" is unsafe for "
+ "cross-compilation"), p->name().c_str());
+ else
+ gold_warning(_("library search path \"%s\" is unsafe for "
+ "cross-compilation"), p->name().c_str());
+ }
+ }
+
// --dynamic-list overrides -Bsymbolic and -Bsymbolic-functions.
if (this->have_dynamic_list())
{
diff --git a/gold/options.h b/gold/options.h
index 29e19af..f0d6200 100644
--- a/gold/options.h
+++ b/gold/options.h
@@ -1206,6 +1206,13 @@ class General_options
DEFINE_bool(warn_multiple_gp, options::TWO_DASHES, '\0', false,
N_("Ignored"), NULL);
+ DEFINE_bool(warn_poison_system_directories, options::TWO_DASHES, '\0', false,
+ N_("Warn for -L options using system directories"),
+ N_("Do not warn for -L options using system directories"));
+ DEFINE_bool(error_poison_system_directories, options::TWO_DASHES, '\0',
false,
+ N_("Give an error for -L options using system directories"),
+ NULL);
+
DEFINE_bool(warn_search_mismatch, options::TWO_DASHES, '\0', true,
N_("Warn when skipping an incompatible library"),
N_("Don't warn when skipping an incompatible library"));
diff --git a/ld/config.in b/ld/config.in
index f4a8a23..eec1187 100644
--- a/ld/config.in
+++ b/ld/config.in
@@ -11,6 +11,9 @@
language is requested. */
#undef ENABLE_NLS
+/* Define to warn for use of native system library directories */
+#undef ENABLE_POISON_SYSTEM_DIRECTORIES
+
/* Additional extension a shared object might have. */
#undef EXTRA_SHLIB_EXTENSION
diff --git a/ld/configure b/ld/configure
index 63d17e2..eafcf9f 100755
--- a/ld/configure
+++ b/ld/configure
@@ -774,6 +774,7 @@ with_lib_path
enable_targets
enable_64_bit_bfd
with_sysroot
+enable_poison_system_directories
enable_gold
enable_got
enable_werror
@@ -1429,6 +1430,8 @@ Optional Features:
--disable-largefile omit support for large files
--enable-targets alternative target configurations
--enable-64-bit-bfd 64-bit support (on hosts with narrower word sizes)
+ --enable-poison-system-directories
+ warn for use of native system library directories
--enable-gold[=ARG] build gold [ARG={default,yes,no}]
--enable-got=<type> GOT handling scheme (target, single, negative,
multigot)
@@ -4339,7 +4342,18 @@ else
fi
+# Check whether --enable-poison-system-directories was given.
+if test "${enable_poison_system_directories+set}" = set; then :
+ enableval=$enable_poison_system_directories;
+else
+ enable_poison_system_directories=no
+fi
+
+if test "x${enable_poison_system_directories}" = "xyes"; then
+$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h
+
+fi
# Check whether --enable-got was given.
if test "${enable_got+set}" = set; then :
diff --git a/ld/configure.ac b/ld/configure.ac
index 2af3dfc..ec33ac8 100644
--- a/ld/configure.ac
+++ b/ld/configure.ac
@@ -87,6 +87,16 @@ AC_SUBST(use_sysroot)
AC_SUBST(TARGET_SYSTEM_ROOT)
AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
+AC_ARG_ENABLE([poison-system-directories],
+ AS_HELP_STRING([--enable-poison-system-directories],
+ [warn for use of native system library directories]),,
+ [enable_poison_system_directories=no])
+if test "x${enable_poison_system_directories}" = "xyes"; then
+ AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES],
+ [1],
+ [Define to warn for use of native system library directories])
+fi
+
dnl Use --enable-gold to decide if this linker should be the default.
dnl "install_as_default" is set to false if gold is the default linker.
dnl "installed_linker" is the installed BFD linker name.
diff --git a/ld/ld.h b/ld/ld.h
index 4acb721..fe93731 100644
--- a/ld/ld.h
+++ b/ld/ld.h
@@ -180,6 +180,13 @@ typedef struct {
/* If TRUE we'll just print the default output on stdout. */
bfd_boolean print_output_format;
+ /* If TRUE warn for uses of system directories when cross linking. */
+ bfd_boolean warn_poison_system_directories;
+
+ /* If TRUE (default FALSE) give an error for uses of system
+ directories when cross linking instead of a warning. */
+ bfd_boolean error_poison_system_directories;
+
/* Big or little endian as set on command line. */
enum endian_enum endian;
diff --git a/ld/ld.texinfo b/ld/ld.texinfo
index 988e2d7..b2cecd4 100644
--- a/ld/ld.texinfo
+++ b/ld/ld.texinfo
@@ -2175,6 +2175,24 @@ string identifying the original linked file does not
change.
Passing @code{none} for @var{style} disables the setting from any
@code{--build-id} options earlier on the command line.
+
+@kindex --warn-poison-system-directories
+@item --warn-poison-system-directories
+Warn for @option{-L} options using system directories such as
+@file{/usr/lib} when cross linking. This option is intended for use
+in environments that want to detect and reject incorrect link settings.
+
+@kindex --no-warn-poison-system-directories
+@item --no-warn-poison-system-directories
+Do not warn for @option{-L} options using system directories such as
+@file{/usr/lib} when cross linking. This option is intended for use
+in chroot environments when such directories contain the correct
+libraries for the target system rather than the host.
+
+@kindex --error-poison-system-directories
+@item --error-poison-system-directories
+Give an error instead of a warning for @option{-L} options using
+system directories when cross linking.
@end table
@c man end
diff --git a/ld/ldfile.c b/ld/ldfile.c
index 16baef8..0fa60d0 100644
--- a/ld/ldfile.c
+++ b/ld/ldfile.c
@@ -116,6 +116,26 @@ ldfile_add_library_path (const char *name, bfd_boolean
cmdline)
new_dirs->name = concat (ld_sysroot, name + 1, (const char *) NULL);
else
new_dirs->name = xstrdup (name);
+
+ if (command_line.warn_poison_system_directories
+ && (!strncmp (name, "/lib", 4)
+ /* TODO: This check is disabled for now due to a bunch of packages that
+ * use libtool and relink with -L/usr/lib paths (albeit after the right
+ * sysroot path). Once those are fixed we can enable.
+ * We also need to adjust it so it only rejects one or two levels deep.
+ * Gcc's internal paths also live below /usr/lib.
+ * http://crbug.com/488360 */
+ /* || !strncmp (name, "/usr/lib", 8) */
+ || !strncmp (name, "/usr/local/lib", 14)
+ || !strncmp (name, "/usr/X11R6/lib", 14)))
+ {
+ if (command_line.error_poison_system_directories)
+ einfo (_("%X%P: error: library search path \"%s\" is unsafe for "
+ "cross-compilation\n"), name);
+ else
+ einfo (_("%P: warning: library search path \"%s\" is unsafe for "
+ "cross-compilation\n"), name);
+ }
}
/* Try to open a BFD for a lang_input_statement. */
diff --git a/ld/ldlex.h b/ld/ldlex.h
index 99f4282..1395a32 100644
--- a/ld/ldlex.h
+++ b/ld/ldlex.h
@@ -138,6 +138,9 @@ enum option_values
OPTION_PRINT_OUTPUT_FORMAT,
OPTION_PRINT_SYSROOT,
OPTION_IGNORE_UNRESOLVED_SYMBOL,
+ OPTION_WARN_POISON_SYSTEM_DIRECTORIES,
+ OPTION_NO_WARN_POISON_SYSTEM_DIRECTORIES,
+ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES,
OPTION_PUSH_STATE,
OPTION_POP_STATE,
};
diff --git a/ld/ldmain.c b/ld/ldmain.c
index 6a53667..0d40fa3 100644
--- a/ld/ldmain.c
+++ b/ld/ldmain.c
@@ -266,6 +266,13 @@ main (int argc, char **argv)
command_line.warn_mismatch = TRUE;
command_line.warn_search_mismatch = TRUE;
command_line.check_section_addresses = -1;
+ command_line.warn_poison_system_directories =
+#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES
+ TRUE;
+#else
+ FALSE;
+#endif
+ command_line.error_poison_system_directories = FALSE;
/* We initialize DEMANGLING based on the environment variable
COLLECT_NO_DEMANGLE. The gcc collect2 program will demangle the
diff --git a/ld/lexsup.c b/ld/lexsup.c
index 2f71750..1c6f5aa 100644
--- a/ld/lexsup.c
+++ b/ld/lexsup.c
@@ -507,6 +507,18 @@ static const struct ld_option ld_options[] =
OPTION_IGNORE_UNRESOLVED_SYMBOL},
'\0', N_("SYMBOL"),
N_("Unresolved SYMBOL will not cause an error or warning"), TWO_DASHES },
+ { {"warn-poison-system-directories", no_argument, NULL,
+ OPTION_WARN_POISON_SYSTEM_DIRECTORIES},
+ '\0', NULL, N_("Warn for -L options using system directories"),
+ TWO_DASHES },
+ { {"no-warn-poison-system-directories", no_argument, NULL,
+ OPTION_NO_WARN_POISON_SYSTEM_DIRECTORIES},
+ '\0', NULL, N_("Do not warn for -L options using system directories"),
+ TWO_DASHES },
+ { {"error-poison-system-directories", no_argument, NULL,
+ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES},
+ '\0', NULL, N_("Give an error for -L options using system directories"),
+ TWO_DASHES },
{ {"push-state", no_argument, NULL, OPTION_PUSH_STATE},
'\0', NULL, N_("Push state of flags governing input file handling"),
TWO_DASHES },
@@ -1442,6 +1454,18 @@ parse_args (unsigned argc, char **argv)
einfo (_("%P%X: --hash-size needs a numeric argument\n"));
}
break;
+
+ case OPTION_WARN_POISON_SYSTEM_DIRECTORIES:
+ command_line.warn_poison_system_directories = TRUE;
+ break;
+
+ case OPTION_NO_WARN_POISON_SYSTEM_DIRECTORIES:
+ command_line.warn_poison_system_directories = FALSE;
+ break;
+
+ case OPTION_ERROR_POISON_SYSTEM_DIRECTORIES:
+ command_line.error_poison_system_directories = TRUE;
+ break;
case OPTION_PUSH_STATE:
input_flags.pushed = xmemdup (&input_flags,
--
2.4.1
1.1
src/patchsets/binutils/2.25.1/75_all_binutils-default-test-flags.patch
file :
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.25.1/75_all_binutils-default-test-flags.patch?rev=1.1&view=markup
plain:
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.25.1/75_all_binutils-default-test-flags.patch?rev=1.1&content-type=text/plain
Index: 75_all_binutils-default-test-flags.patch
===================================================================
many tests rely on order of symbols and the gnu hash style/relro options
change that. so to avoid having to constantly thrash in the test files,
use the normal options that everyone tests against.
--- binutils/ld/testsuite/lib/ld-lib.exp
+++ binutils/ld/testsuite/lib/ld-lib.exp
@@ -84,7 +84,7 @@
global HOSTING_EMU
remote_file host delete $target
- return [run_host_cmd_yesno "$ld" "$HOSTING_EMU -o $target -r $objects"]
+ return [run_host_cmd_yesno "$ld" "$HOSTING_EMU --hash-style=sysv -z
norelro -o $target -r $objects"]
}
# Check to see if ld is being invoked with a non-endian output format
@@ -158,7 +158,7 @@
remote_file host delete $target
- return [run_host_cmd_yesno "$ld" "$HOSTING_EMU $flags -o $target $objs
$libs"]
+ return [run_host_cmd_yesno "$ld" "$HOSTING_EMU --hash-style=sysv -z
norelro $flags -o $target $objs $libs"]
}
# Link a program using ld, without including any libraries.
1.1 src/patchsets/binutils/2.25.1/76_all_use-new-ld-dtags.patch
file :
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.25.1/76_all_use-new-ld-dtags.patch?rev=1.1&view=markup
plain:
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.25.1/76_all_use-new-ld-dtags.patch?rev=1.1&content-type=text/plain
Index: 76_all_use-new-ld-dtags.patch
===================================================================
this is from upstream
>From 9e3072ad67f8b6d092e9e4dbfc6f8c9141aabe0c Mon Sep 17 00:00:00 2001
From: Mike Frysinger <[email protected]>
Date: Mon, 21 Jan 2013 08:21:45 +0000
Subject: [PATCH] ld: enable new dtags by default for linux/gnu targets
The "new" dtags options have been around for 14+ years now, so for Linux
and GNU targets, enable them by default.
2012-01-21 Mike Frysinger <[email protected]>
* emultempl/elf32.em (gld${EMULATION_NAME}_before_parse): Set
link_info.new_dtags to TRUE for linux/gnu targets.
* NEWS: Mention new dtags default.
>From 8d0bade12dbc53bfe61a63add17e7780618f1ac1 Mon Sep 17 00:00:00 2001
From: Roland McGrath <[email protected]>
Date: Tue, 22 Jan 2013 22:07:34 +0000
Subject: [PATCH] ld/ * emultempl/elf32.em
(gld${EMULATION_NAME}_before_parse): Set new_dtags to TRUE for
*-*-nacl* targets.
2013-01-22 Roland McGrath <[email protected]>
* emultempl/elf32.em (gld${EMULATION_NAME}_before_parse): Set
new_dtags to TRUE for *-*-nacl* targets.
diff --git a/ld/emultempl/elf32.em b/ld/emultempl/elf32.em
index 53d4e24..60611f9 100644
--- a/ld/emultempl/elf32.em
+++ b/ld/emultempl/elf32.em
@@ -105,6 +105,16 @@ gld${EMULATION_NAME}_before_parse (void)
input_flags.dynamic = ${DYNAMIC_LINK-TRUE};
config.has_shared = `if test -n "$GENERATE_SHLIB_SCRIPT" ; then echo TRUE ;
else echo FALSE ; fi`;
config.separate_code = `if test "x${SEPARATE_CODE}" = xyes ; then echo TRUE
; else echo FALSE ; fi`;
+EOF
+
+case ${target} in
+ *-*-linux-* | *-*-k*bsd*-* | *-*-gnu* | *-*-nacl*)
+ fragment <<EOF
+ link_info.new_dtags = TRUE;
+EOF
+ ;;
+esac
+fragment <<EOF
}
EOF
1.1
src/patchsets/binutils/2.25.1/77_all_generate-gnu-hash.patch
file :
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.25.1/77_all_generate-gnu-hash.patch?rev=1.1&view=markup
plain:
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.25.1/77_all_generate-gnu-hash.patch?rev=1.1&content-type=text/plain
Index: 77_all_generate-gnu-hash.patch
===================================================================
--- a/ld/emultempl/elf32.em
+++ b/ld/emultempl/elf32.em
@@ -103,6 +103,19 @@
gld${EMULATION_NAME}_before_parse (void)
{
ldfile_set_output_arch ("${OUTPUT_ARCH}", bfd_arch_`echo ${ARCH} | sed -e
's/:.*//'`);
+EOF
+# Enable gnu hash by default for Linux (non-mips) targets.
+# This has been supported since glibc-2.5.
+case ${target} in
+ mips*) ;;
+ *-*-linux-* | *-*-gnu*)
+ fragment <<EOF
+ link_info.emit_hash = FALSE;
+ link_info.emit_gnu_hash = TRUE;
+EOF
+ ;;
+esac
+fragment <<EOF
input_flags.dynamic = ${DYNAMIC_LINK-TRUE};
config.has_shared = `if test -n "$GENERATE_SHLIB_SCRIPT" ; then echo TRUE ;
else echo FALSE ; fi`;
config.separate_code = `if test "x${SEPARATE_CODE}" = xyes ; then echo TRUE
; else echo FALSE ; fi`;
>From 4826dc786682aaa0b51fd337edd0775296a82e93 Mon Sep 17 00:00:00 2001
From: Mike Frysinger <[email protected]>
Date: Sun, 3 Feb 2013 01:21:52 -0500
Subject: [PATCH] gold: change default hash style to gnu
Glibc first added .gnu.hash support to glibc-2.5 (released 29 Sep 2006),
and gold was first released after that. Let's default the gnu hash style
to the new "gnu" rather than the classic sysv.
Signed-off-by: Mike Frysinger <[email protected]>
2012-02-03 Mike Frysinger <[email protected]>
* options.h (General_options): Change default to gnu for hash_style.
---
gold/options.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gold/options.h b/gold/options.h
index c138fa2..4698ebd 100644
--- a/gold/options.h
+++ b/gold/options.h
@@ -809,7 +809,7 @@ class General_options
N_("Min fraction of empty buckets in dynamic hash"),
N_("FRACTION"));
- DEFINE_enum(hash_style, options::TWO_DASHES, '\0', "sysv",
+ DEFINE_enum(hash_style, options::TWO_DASHES, '\0', "gnu",
N_("Dynamic hash style"), N_("[sysv,gnu,both]"),
{"sysv", "gnu", "both"});
--
1.8.0.2
1.1 src/patchsets/binutils/2.25.1/78_all_use-relro.patch
file :
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.25.1/78_all_use-relro.patch?rev=1.1&view=markup
plain:
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.25.1/78_all_use-relro.patch?rev=1.1&content-type=text/plain
Index: 78_all_use-relro.patch
===================================================================
background:
http://www.airs.com/blog/archives/189
--- binutils/ld/ldmain.c
+++ binutils/ld/ldmain.c
@@ -293,2 +293,3 @@ main (int argc, char **argv)
link_info.combreloc = TRUE;
+ link_info.relro = TRUE;
link_info.strip_discarded = TRUE;
1.1 src/patchsets/binutils/2.25.1/88_all_gold-copy-relocs.patch
file :
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.25.1/88_all_gold-copy-relocs.patch?rev=1.1&view=markup
plain:
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.25.1/88_all_gold-copy-relocs.patch?rev=1.1&content-type=text/plain
Index: 88_all_gold-copy-relocs.patch
===================================================================
https://bugs.gentoo.org/549276
https://sourceware.org/bugzilla/show_bug.cgi?id=16992
>From e9c1bdad269c0c3352eebcc9481ed65144001b0b Mon Sep 17 00:00:00 2001
From: Cary Coutant <[email protected]>
Date: Mon, 16 Feb 2015 22:15:12 -0800
Subject: [PATCH] Fix --dynamic-list so that symbols not in the list are still
exported.
In PR 13577, the complaint was that -Bsymbolic was overriding the binding
behavior for symbols listed in the --dynamic-list by setting the DT_SYMBOLIC
tag in the dynamic table. In reading the Gnu ld manual, I decided that
--dynamic-list should be mutually exclusive of -Bsymbolic, and modified
gold so that --dynamic-list would treat symbols listed as preemptible,
and all other symbols as internally bound. I was wrong.
PR 16992 shows that with --dynamic-list (and not -Bsymbolic), a symbol
not listed in the dynamic list is being internally bound within the
shared library, but because it's still in the dynamic symbol table, we
expose it to a COPY relocation, and things go really bad from there.
(I can reproduce the same failure, simply by turning on -Bsymbolic-functions
with the Gnu linker. Even though the symbol is bound internally, it's
still exported to the dynamic symbol table, and is exposed to a COPY
relocation.)
I've backed out part of the fix for PR 13577, and -Bsymbolic (or
-Bsymbolic-functions) can now be used with --dynamic-list, but if the
two are used together, we do not set DT_SYMBOLIC or DF_SYMBOLIC
(this matches Gnu ld behavior). We now treat symbols listed in the
dynamic list as premptible, but we do not automatically treat symbols
not listed there as non-premptible.
gold/
PR gold/13577
PR gold/16992
* layout.cc (Layout::finish_dynamic_section): Don't set DT_SYMBOLIC or
DF_SYMBOLIC if --dynamic-list option is used.
* options.cc (General_options::finalize): --dynamic-list is not
mutually exclusive with -Bsymbolic.
* symtab.h (Symbol::is_preemptible): Don't exclude dynamic symbols not
listed in --dynamic-list.
* testsuite/Makefile.am (dynamic_list_lib2.so): Add
-Bsymbolic-functions.
* testsuite/Makefile.in: Regenerate.
---
gold/ChangeLog | 14 ++++++++++++++
gold/layout.cc | 3 ++-
gold/options.cc | 7 -------
gold/symtab.h | 6 ++----
gold/testsuite/Makefile.am | 2 +-
gold/testsuite/Makefile.in | 2 +-
6 files changed, 20 insertions(+), 14 deletions(-)
2015-02-16 Cary Coutant <[email protected]>
PR gold/13577
PR gold/16992
* layout.cc (Layout::finish_dynamic_section): Don't set DT_SYMBOLIC or
DF_SYMBOLIC if --dynamic-list option is used.
* options.cc (General_options::finalize): --dynamic-list is not
mutually exclusive with -Bsymbolic.
* symtab.h (Symbol::is_preemptible): Don't exclude dynamic symbols not
listed in --dynamic-list.
* testsuite/Makefile.am (dynamic_list_lib2.so): Add
-Bsymbolic-functions.
* testsuite/Makefile.in: Regenerate.
diff --git a/gold/layout.cc b/gold/layout.cc
index bcdaac8..7836640 100644
--- a/gold/layout.cc
+++ b/gold/layout.cc
@@ -4873,7 +4873,8 @@ Layout::finish_dynamic_section(const Input_objects*
input_objects,
flags |= elfcpp::DF_STATIC_TLS;
if (parameters->options().origin())
flags |= elfcpp::DF_ORIGIN;
- if (parameters->options().Bsymbolic())
+ if (parameters->options().Bsymbolic()
+ && !parameters->options().have_dynamic_list())
{
flags |= elfcpp::DF_SYMBOLIC;
// Add DT_SYMBOLIC for compatibility with older loaders.
diff --git a/gold/options.cc b/gold/options.cc
index 7eb8f27..7f1f69e 100644
--- a/gold/options.cc
+++ b/gold/options.cc
@@ -1200,13 +1200,6 @@ General_options::finalize()
// in the path, as appropriate.
this->add_sysroot();
- // --dynamic-list overrides -Bsymbolic and -Bsymbolic-functions.
- if (this->have_dynamic_list())
- {
- this->set_Bsymbolic(false);
- this->set_Bsymbolic_functions(false);
- }
-
// Now that we've normalized the options, check for contradictory ones.
if (this->shared() && this->is_static())
gold_fatal(_("-shared and -static are incompatible"));
diff --git a/gold/symtab.h b/gold/symtab.h
index aa0cb68..9413360 100644
--- a/gold/symtab.h
+++ b/gold/symtab.h
@@ -604,10 +604,8 @@ class Symbol
if (parameters->options().in_dynamic_list(this->name()))
return true;
- // If the user used -Bsymbolic or provided a --dynamic-list script,
- // then nothing (else) is preemptible.
- if (parameters->options().Bsymbolic()
- || parameters->options().have_dynamic_list())
+ // If the user used -Bsymbolic, then nothing (else) is preemptible.
+ if (parameters->options().Bsymbolic())
return false;
// If the user used -Bsymbolic-functions, then functions are not
diff --git a/gold/testsuite/Makefile.am b/gold/testsuite/Makefile.am
index f767c21..7b73f9d 100644
--- a/gold/testsuite/Makefile.am
+++ b/gold/testsuite/Makefile.am
@@ -1518,7 +1518,7 @@ dynamic_list_lib1.o: dynamic_list_lib1.cc
$(CXXCOMPILE) -c -fpic -o $@ $<
dynamic_list_lib2.so: gcctestdir/ld dynamic_list_lib2.o
$(srcdir)/dynamic_list_2.t
- $(CXXLINK) -Bgcctestdir/ -shared
-Wl,--dynamic-list,$(srcdir)/dynamic_list_2.t dynamic_list_lib2.o
+ $(CXXLINK) -Bgcctestdir/ -shared -Wl,-Bsymbolic-functions
-Wl,--dynamic-list,$(srcdir)/dynamic_list_2.t dynamic_list_lib2.o
dynamic_list_lib2.o: dynamic_list_lib2.cc
$(CXXCOMPILE) -c -fpic -o $@ $<
diff --git a/gold/testsuite/Makefile.in b/gold/testsuite/Makefile.in
index 217e472..b4ae3fd 100644
--- a/gold/testsuite/Makefile.in
+++ b/gold/testsuite/Makefile.in
@@ -5319,7 +5319,7 @@ uninstall-am:
@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $<
@GCC_TRUE@@NATIVE_LINKER_TRUE@dynamic_list_lib2.so: gcctestdir/ld
dynamic_list_lib2.o $(srcdir)/dynamic_list_2.t
-@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared
-Wl,--dynamic-list,$(srcdir)/dynamic_list_2.t dynamic_list_lib2.o
+@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared
-Wl,-Bsymbolic-functions -Wl,--dynamic-list,$(srcdir)/dynamic_list_2.t
dynamic_list_lib2.o
@GCC_TRUE@@NATIVE_LINKER_TRUE@dynamic_list_lib2.o: dynamic_list_lib2.cc
@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $<
--
2.4.1
1.1 src/patchsets/binutils/2.25.1/91_all_libiberty-pic.patch
file :
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.25.1/91_all_libiberty-pic.patch?rev=1.1&view=markup
plain:
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.25.1/91_all_libiberty-pic.patch?rev=1.1&content-type=text/plain
Index: 91_all_libiberty-pic.patch
===================================================================
this will install a pic version of libiberty.a by overwriting the non-pic
version of libiberty.a while compiling. we do this because there is no
shared version of libiberty for random apps to link against which means if
someone wants to use this in a shared library or PIE, they're out of luck.
it's arguable whether people should be able to use this in a shared lib,
but usage in PIE should be fine. you could argue that this penalizes the
non-PIE users, but the counter point is that people using this library in
general are fairly low, and we'd rather have things work for all of them.
--- a/libiberty/Makefile.in
+++ b/libiberty/Makefile.in
@@ -224,6 +224,7 @@ $(TARGETLIB): $(REQUIRED_OFILES) $(EXTRA
$(AR) $(AR_FLAGS) $(TARGETLIB) \
$(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS); \
$(RANLIB) $(TARGETLIB); \
+ cp $(TARGETLIB) ../ ; \
cd ..; \
else true; fi; \
if [ x"$(NOASANFLAG)" != x ]; then \
1.1 src/patchsets/binutils/2.25.1/README.history
file :
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.25.1/README.history?rev=1.1&view=markup
plain:
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/binutils/2.25.1/README.history?rev=1.1&content-type=text/plain
Index: README.history
===================================================================
1.0 27 Jul 2015
+ 12_all_sh-targets.patch
+ 20_all_gold-mips.patch
+ 30_all_binutils-2.22.52.0.2-flexible-tests.patch
+ 62_all_binutils-2.23.52.0.1-hardened-crtbegin.patch
+ 63_all_binutils-2.25.1-pt-pax-flags-20150727.patch
+ 66_all_binutils-2.22.52.0.1-warn-textrel.patch
+ 67_all_ld-poison-system-directories.patch
+ 75_all_binutils-default-test-flags.patch
+ 76_all_use-new-ld-dtags.patch
+ 77_all_generate-gnu-hash.patch
+ 78_all_use-relro.patch
+ 88_all_gold-copy-relocs.patch
+ 91_all_libiberty-pic.patch