Browse Source

Issue relocation in RO section warning for -z text

This patch changes linker to issue a warning for relocation in readonly
section for -z text.

bfd/

	PR ld/17935
	* elf32-i386.c (elf_i386_readonly_dynrelocs): Also issue a
	warning for relocation in readonly section for -z text.
	(elf_i386_size_dynamic_sections): Likewise.
	* elf64-x86-64.c (elf_x86_64_readonly_dynrelocs): Likewise.
	(elf_x86_64_size_dynamic_sections): Likewise.

ld/testsuite/

	PR ld/17935
	* ld-i386/i386.exp: Run pr17935-1 and pr17935-2.
	* ld-x86-64/x86-64.exp: Likewise.

	* ld-i386/pr17935-1.d: New file.
	* ld-i386/pr17935-1.s: Likewise.
	* ld-i386/pr17935-2.d: Likewise.
	* ld-i386/pr17935-2.s: Likewise.
	* ld-x86-64/pr17935-1.d: Likewise.
	* ld-x86-64/pr17935-1.s: Likewise.
	* ld-x86-64/pr17935-2.d: Likewise.
	* ld-x86-64/pr17935-2.s: Likewise.
gdb-7.10-branch
H.J. Lu 12 years ago
parent
commit
1952c5cd7d
  1. 9
      bfd/ChangeLog
  2. 10
      bfd/elf32-i386.c
  3. 10
      bfd/elf64-x86-64.c
  4. 15
      ld/testsuite/ChangeLog
  5. 2
      ld/testsuite/ld-i386/i386.exp
  6. 3
      ld/testsuite/ld-i386/pr17935-1.d
  7. 7
      ld/testsuite/ld-i386/pr17935-1.s
  8. 3
      ld/testsuite/ld-i386/pr17935-2.d
  9. 6
      ld/testsuite/ld-i386/pr17935-2.s
  10. 3
      ld/testsuite/ld-x86-64/pr17935-1.d
  11. 7
      ld/testsuite/ld-x86-64/pr17935-1.s
  12. 3
      ld/testsuite/ld-x86-64/pr17935-2.d
  13. 6
      ld/testsuite/ld-x86-64/pr17935-2.s
  14. 2
      ld/testsuite/ld-x86-64/x86-64.exp

9
bfd/ChangeLog

@ -1,3 +1,12 @@
2015-02-07 H.J. Lu <hongjiu.lu@intel.com>
PR ld/17935
* elf32-i386.c (elf_i386_readonly_dynrelocs): Also issue a
warning for relocation in readonly section for -z text.
(elf_i386_size_dynamic_sections): Likewise.
* elf64-x86-64.c (elf_x86_64_readonly_dynrelocs): Likewise.
(elf_x86_64_size_dynamic_sections): Likewise.
2015-02-06 H.J. Lu <hongjiu.lu@intel.com>
PR ld/12365

10
bfd/elf32-i386.c

@ -2600,8 +2600,9 @@ elf_i386_readonly_dynrelocs (struct elf_link_hash_entry *h, void *inf)
info->flags |= DF_TEXTREL;
if (info->warn_shared_textrel && info->shared)
info->callbacks->einfo (_("%P: %B: warning: relocation against `%s' in readonly section `%A'.\n"),
if ((info->warn_shared_textrel && info->shared)
|| info->error_textrel)
info->callbacks->einfo (_("%P: %B: warning: relocation against `%s' in readonly section `%A'\n"),
p->sec->owner, h->root.root.string,
p->sec);
@ -2842,8 +2843,9 @@ elf_i386_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
&& (info->flags & DF_TEXTREL) == 0)
{
info->flags |= DF_TEXTREL;
if (info->warn_shared_textrel && info->shared)
info->callbacks->einfo (_("%P: %B: warning: relocation in readonly section `%A'.\n"),
if ((info->warn_shared_textrel && info->shared)
|| info->error_textrel)
info->callbacks->einfo (_("%P: %B: warning: relocation in readonly section `%A'\n"),
p->sec->owner, p->sec);
}
}

10
bfd/elf64-x86-64.c

@ -2850,8 +2850,9 @@ elf_x86_64_readonly_dynrelocs (struct elf_link_hash_entry *h,
info->flags |= DF_TEXTREL;
if (info->warn_shared_textrel && info->shared)
info->callbacks->einfo (_("%P: %B: warning: relocation against `%s' in readonly section `%A'.\n"),
if ((info->warn_shared_textrel && info->shared)
|| info->error_textrel)
info->callbacks->einfo (_("%P: %B: warning: relocation against `%s' in readonly section `%A'\n"),
p->sec->owner, h->root.root.string,
p->sec);
@ -3090,8 +3091,9 @@ elf_x86_64_size_dynamic_sections (bfd *output_bfd,
&& (info->flags & DF_TEXTREL) == 0)
{
info->flags |= DF_TEXTREL;
if (info->warn_shared_textrel && info->shared)
info->callbacks->einfo (_("%P: %B: warning: relocation in readonly section `%A'.\n"),
if ((info->warn_shared_textrel && info->shared)
|| info->error_textrel)
info->callbacks->einfo (_("%P: %B: warning: relocation in readonly section `%A'\n"),
p->sec->owner, p->sec);
}
}

15
ld/testsuite/ChangeLog

@ -1,3 +1,18 @@
2015-02-07 H.J. Lu <hongjiu.lu@intel.com>
PR ld/17935
* ld-i386/i386.exp: Run pr17935-1 and pr17935-2.
* ld-x86-64/x86-64.exp: Likewise.
* ld-i386/pr17935-1.d: New file.
* ld-i386/pr17935-1.s: Likewise.
* ld-i386/pr17935-2.d: Likewise.
* ld-i386/pr17935-2.s: Likewise.
* ld-x86-64/pr17935-1.d: Likewise.
* ld-x86-64/pr17935-1.s: Likewise.
* ld-x86-64/pr17935-2.d: Likewise.
* ld-x86-64/pr17935-2.s: Likewise.
2015-02-06 H.J. Lu <hongjiu.lu@intel.com>
PR ld/12365

2
ld/testsuite/ld-i386/i386.exp

@ -263,6 +263,8 @@ run_dump_test "pr12627"
run_dump_test "pr13302"
run_dump_test "pr14215"
run_dump_test "pr17057"
run_dump_test "pr17935-1"
run_dump_test "pr17935-2"
# Must be Linux native with the C compiler
if { [isnative]

3
ld/testsuite/ld-i386/pr17935-1.d

@ -0,0 +1,3 @@
# as: --32
# ld: -m elf_i386 -shared -z text
# error: warning: relocation against `foo' in readonly section `.text'

7
ld/testsuite/ld-i386/pr17935-1.s

@ -0,0 +1,7 @@
.text
.globl foo
foo:
.byte 0
.globl bar
bar:
.dc.a foo

3
ld/testsuite/ld-i386/pr17935-2.d

@ -0,0 +1,3 @@
# as: --32
# ld: -m elf_i386 -shared -z text
# error: warning: relocation in readonly section `.text'

6
ld/testsuite/ld-i386/pr17935-2.s

@ -0,0 +1,6 @@
.text
foo:
.byte 0
.globl bar
bar:
.dc.a foo

3
ld/testsuite/ld-x86-64/pr17935-1.d

@ -0,0 +1,3 @@
# as: --64
# ld: -m elf_x86_64 -shared -z text
# error: warning: relocation against `foo' in readonly section `.text'

7
ld/testsuite/ld-x86-64/pr17935-1.s

@ -0,0 +1,7 @@
.text
.globl foo
foo:
.byte 0
.globl bar
bar:
.dc.a foo

3
ld/testsuite/ld-x86-64/pr17935-2.d

@ -0,0 +1,3 @@
# as: --64
# ld: -m elf_x86_64 -shared -z text
# error: warning: relocation in readonly section `.text'

6
ld/testsuite/ld-x86-64/pr17935-2.s

@ -0,0 +1,6 @@
.text
foo:
.byte 0
.globl bar
bar:
.dc.a foo

2
ld/testsuite/ld-x86-64/x86-64.exp

@ -311,6 +311,8 @@ run_dump_test "mov1a"
run_dump_test "mov1b"
run_dump_test "mov1c"
run_dump_test "mov1d"
run_dump_test "pr17935-1"
run_dump_test "pr17935-2"
# Must be native with the C compiler
if { [isnative] && [which $CC] != 0 } {

Loading…
Cancel
Save