diff options
-rw-r--r-- | ld/ldexp.c | 14 | ||||
-rw-r--r-- | ld/ldlang.c | 1 | ||||
-rw-r--r-- | ld/testsuite/ld-i386/pie1.d | 4 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/pr20830a.d | 8 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/pr20830b.d | 8 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/pr21038a.d | 8 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/pr21038b.d | 6 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/pr21038c.d | 10 |
8 files changed, 33 insertions, 26 deletions
@@ -864,9 +864,17 @@ fold_name (etree_type *tree) bfd_vma val; if (tree->type.node_code == SIZEOF) - val = (os->bfd_section->size - / bfd_octets_per_byte (link_info.output_bfd, - os->bfd_section)); + { + if (os->processed_vma) + val = os->bfd_section->size; + else + /* If we've just called lang_reset_memory_regions, + size will be zero and a previous estimate of + size will be in rawsize. */ + val = os->bfd_section->rawsize; + val /= bfd_octets_per_byte (link_info.output_bfd, + os->bfd_section); + } else val = (bfd_vma)1 << os->bfd_section->alignment_power; diff --git a/ld/ldlang.c b/ld/ldlang.c index 839535b..e640380 100644 --- a/ld/ldlang.c +++ b/ld/ldlang.c @@ -5778,7 +5778,6 @@ lang_size_sections_1 os->addr_tree = exp_intop (0); if (os->addr_tree != NULL) { - os->processed_vma = false; exp_fold_tree (os->addr_tree, bfd_abs_section_ptr, &dot); if (expld.result.valid_p) diff --git a/ld/testsuite/ld-i386/pie1.d b/ld/testsuite/ld-i386/pie1.d index 338d057..fdc65b1 100644 --- a/ld/testsuite/ld-i386/pie1.d +++ b/ld/testsuite/ld-i386/pie1.d @@ -6,11 +6,11 @@ SYMBOL TABLE: #... -0+2000 l O .got.plt 0+ _GLOBAL_OFFSET_TABLE_ +0+1ff4 l O .got.plt 0+ _GLOBAL_OFFSET_TABLE_ #... Disassembly of section .text: .* <_start>: -.*: 8d 80 00 e0 ff ff lea -0x2000\(%eax\),%eax +.*: 8d 80 0c e0 ff ff lea -0x1ff4\(%eax\),%eax #pass diff --git a/ld/testsuite/ld-x86-64/pr20830a.d b/ld/testsuite/ld-x86-64/pr20830a.d index 2c47a51..1d92b10 100644 --- a/ld/testsuite/ld-x86-64/pr20830a.d +++ b/ld/testsuite/ld-x86-64/pr20830a.d @@ -50,19 +50,19 @@ Contents of the .eh_frame section: Disassembly of section .plt: 0+1b0 <.plt>: - +[a-f0-9]+: ff 35 52 fe 3f 00 push 0x3ffe52\(%rip\) # 400008 <_GLOBAL_OFFSET_TABLE_\+0x8> - +[a-f0-9]+: ff 25 54 fe 3f 00 jmp \*0x3ffe54\(%rip\) # 400010 <_GLOBAL_OFFSET_TABLE_\+0x10> + +[a-f0-9]+: ff 35 3a fe 3f 00 push 0x3ffe3a\(%rip\) # 3ffff0 <_GLOBAL_OFFSET_TABLE_\+0x8> + +[a-f0-9]+: ff 25 3c fe 3f 00 jmp \*0x3ffe3c\(%rip\) # 3ffff8 <_GLOBAL_OFFSET_TABLE_\+0x10> +[a-f0-9]+: 0f 1f 40 00 nopl 0x0\(%rax\) Disassembly of section .plt.got: 0+1c0 <func@plt>: - +[a-f0-9]+: ff 25 32 fe 3f 00 jmp \*0x3ffe32\(%rip\) # 3ffff8 <func> + +[a-f0-9]+: ff 25 1a fe 3f 00 jmp \*0x3ffe1a\(%rip\) # 3fffe0 <func> +[a-f0-9]+: 66 90 xchg %ax,%ax Disassembly of section .text: 0+1c8 <foo>: +[a-f0-9]+: e8 f3 ff ff ff call 1c0 <func@plt> - +[a-f0-9]+: 48 8b 05 24 fe 3f 00 mov 0x3ffe24\(%rip\),%rax # 3ffff8 <func> + +[a-f0-9]+: 48 8b 05 0c fe 3f 00 mov 0x3ffe0c\(%rip\),%rax # 3fffe0 <func> #pass diff --git a/ld/testsuite/ld-x86-64/pr20830b.d b/ld/testsuite/ld-x86-64/pr20830b.d index 047adc1..303a024 100644 --- a/ld/testsuite/ld-x86-64/pr20830b.d +++ b/ld/testsuite/ld-x86-64/pr20830b.d @@ -42,19 +42,19 @@ Contents of the .eh_frame section: Disassembly of section .plt: 0+120 <.plt>: - +[a-f0-9]+: ff 35 e2 fe 3f 00 push 0x3ffee2\(%rip\) # 400008 <_GLOBAL_OFFSET_TABLE_\+0x8> - +[a-f0-9]+: ff 25 e4 fe 3f 00 jmp \*0x3ffee4\(%rip\) # 400010 <_GLOBAL_OFFSET_TABLE_\+0x10> + +[a-f0-9]+: ff 35 ca fe 3f 00 push 0x3ffeca\(%rip\) # 3ffff0 <_GLOBAL_OFFSET_TABLE_\+0x8> + +[a-f0-9]+: ff 25 cc fe 3f 00 jmp \*0x3ffecc\(%rip\) # 3ffff8 <_GLOBAL_OFFSET_TABLE_\+0x10> +[a-f0-9]+: 0f 1f 40 00 nopl 0x0\(%rax\) Disassembly of section .plt.got: 0+130 <func@plt>: - +[a-f0-9]+: ff 25 c2 fe 3f 00 jmp \*0x3ffec2\(%rip\) # 3ffff8 <func> + +[a-f0-9]+: ff 25 aa fe 3f 00 jmp \*0x3ffeaa\(%rip\) # 3fffe0 <func> +[a-f0-9]+: 66 90 xchg %ax,%ax Disassembly of section .text: 0+138 <foo>: +[a-f0-9]+: e8 f3 ff ff ff call 130 <func@plt> - +[a-f0-9]+: 48 8b 05 b4 fe 3f 00 mov 0x3ffeb4\(%rip\),%rax # 3ffff8 <func> + +[a-f0-9]+: 48 8b 05 9c fe 3f 00 mov 0x3ffe9c\(%rip\),%rax # 3fffe0 <func> #pass diff --git a/ld/testsuite/ld-x86-64/pr21038a.d b/ld/testsuite/ld-x86-64/pr21038a.d index 070d37e..06e504e 100644 --- a/ld/testsuite/ld-x86-64/pr21038a.d +++ b/ld/testsuite/ld-x86-64/pr21038a.d @@ -49,19 +49,19 @@ Contents of the .eh_frame section: Disassembly of section .plt: 0+1b0 <.plt>: - +[a-f0-9]+: ff 35 52 fe 3f 00 push 0x3ffe52\(%rip\) # 400008 <_GLOBAL_OFFSET_TABLE_\+0x8> - +[a-f0-9]+: f2 ff 25 53 fe 3f 00 bnd jmp \*0x3ffe53\(%rip\) # 400010 <_GLOBAL_OFFSET_TABLE_\+0x10> + +[a-f0-9]+: ff 35 3a fe 3f 00 push 0x3ffe3a\(%rip\) # 3ffff0 <_GLOBAL_OFFSET_TABLE_\+0x8> + +[a-f0-9]+: f2 ff 25 3b fe 3f 00 bnd jmp \*0x3ffe3b\(%rip\) # 3ffff8 <_GLOBAL_OFFSET_TABLE_\+0x10> +[a-f0-9]+: 0f 1f 00 nopl \(%rax\) Disassembly of section .plt.got: 0+1c0 <func@plt>: - +[a-f0-9]+: f2 ff 25 31 fe 3f 00 bnd jmp \*0x3ffe31\(%rip\) # 3ffff8 <func> + +[a-f0-9]+: f2 ff 25 19 fe 3f 00 bnd jmp \*0x3ffe19\(%rip\) # 3fffe0 <func> +[a-f0-9]+: 90 nop Disassembly of section .text: 0+1c8 <foo>: +[a-f0-9]+: e8 f3 ff ff ff call 1c0 <func@plt> - +[a-f0-9]+: 48 8b 05 24 fe 3f 00 mov 0x3ffe24\(%rip\),%rax # 3ffff8 <func> + +[a-f0-9]+: 48 8b 05 0c fe 3f 00 mov 0x3ffe0c\(%rip\),%rax # 3fffe0 <func> #pass diff --git a/ld/testsuite/ld-x86-64/pr21038b.d b/ld/testsuite/ld-x86-64/pr21038b.d index d6a9567..0e77d2c 100644 --- a/ld/testsuite/ld-x86-64/pr21038b.d +++ b/ld/testsuite/ld-x86-64/pr21038b.d @@ -49,8 +49,8 @@ Contents of the .eh_frame section: Disassembly of section .plt: 0+1b0 <.plt>: - +[a-f0-9]+: ff 35 52 fe 3f 00 push 0x3ffe52\(%rip\) # 400008 <_GLOBAL_OFFSET_TABLE_\+0x8> - +[a-f0-9]+: f2 ff 25 53 fe 3f 00 bnd jmp \*0x3ffe53\(%rip\) # 400010 <_GLOBAL_OFFSET_TABLE_\+0x10> + +[a-f0-9]+: ff 35 3a fe 3f 00 push 0x3ffe3a\(%rip\) # 3ffff0 <_GLOBAL_OFFSET_TABLE_\+0x8> + +[a-f0-9]+: f2 ff 25 3b fe 3f 00 bnd jmp \*0x3ffe3b\(%rip\) # 3ffff8 <_GLOBAL_OFFSET_TABLE_\+0x10> +[a-f0-9]+: 0f 1f 00 nopl \(%rax\) +[a-f0-9]+: 68 00 00 00 00 push \$0x0 +[a-f0-9]+: f2 e9 e5 ff ff ff bnd jmp 1b0 <func@plt-0x20> @@ -59,7 +59,7 @@ Disassembly of section .plt: Disassembly of section .plt.sec: 0+1d0 <func@plt>: - +[a-f0-9]+: f2 ff 25 41 fe 3f 00 bnd jmp \*0x3ffe41\(%rip\) # 400018 <func> + +[a-f0-9]+: f2 ff 25 29 fe 3f 00 bnd jmp \*0x3ffe29\(%rip\) # 400000 <func> +[a-f0-9]+: 90 nop Disassembly of section .text: diff --git a/ld/testsuite/ld-x86-64/pr21038c.d b/ld/testsuite/ld-x86-64/pr21038c.d index 6784d33..afbdb56 100644 --- a/ld/testsuite/ld-x86-64/pr21038c.d +++ b/ld/testsuite/ld-x86-64/pr21038c.d @@ -58,8 +58,8 @@ Contents of the .eh_frame section: Disassembly of section .plt: 0+1f0 <.plt>: - +[a-f0-9]+: ff 35 12 fe 3f 00 push 0x3ffe12\(%rip\) # 400008 <_GLOBAL_OFFSET_TABLE_\+0x8> - +[a-f0-9]+: f2 ff 25 13 fe 3f 00 bnd jmp \*0x3ffe13\(%rip\) # 400010 <_GLOBAL_OFFSET_TABLE_\+0x10> + +[a-f0-9]+: ff 35 fa fd 3f 00 push 0x3ffdfa\(%rip\) # 3ffff0 <_GLOBAL_OFFSET_TABLE_\+0x8> + +[a-f0-9]+: f2 ff 25 fb fd 3f 00 bnd jmp \*0x3ffdfb\(%rip\) # 3ffff8 <_GLOBAL_OFFSET_TABLE_\+0x10> +[a-f0-9]+: 0f 1f 00 nopl \(%rax\) +[a-f0-9]+: 68 00 00 00 00 push \$0x0 +[a-f0-9]+: f2 e9 e5 ff ff ff bnd jmp 1f0 <func1@plt-0x20> @@ -68,13 +68,13 @@ Disassembly of section .plt: Disassembly of section .plt.got: 0+210 <func1@plt>: - +[a-f0-9]+: f2 ff 25 e1 fd 3f 00 bnd jmp \*0x3ffde1\(%rip\) # 3ffff8 <func1> + +[a-f0-9]+: f2 ff 25 c9 fd 3f 00 bnd jmp \*0x3ffdc9\(%rip\) # 3fffe0 <func1> +[a-f0-9]+: 90 nop Disassembly of section .plt.sec: 0+218 <func2@plt>: - +[a-f0-9]+: f2 ff 25 f9 fd 3f 00 bnd jmp \*0x3ffdf9\(%rip\) # 400018 <func2> + +[a-f0-9]+: f2 ff 25 e1 fd 3f 00 bnd jmp \*0x3ffde1\(%rip\) # 400000 <func2> +[a-f0-9]+: 90 nop Disassembly of section .text: @@ -82,5 +82,5 @@ Disassembly of section .text: 0+220 <foo>: +[a-f0-9]+: e8 eb ff ff ff call 210 <func1@plt> +[a-f0-9]+: e8 ee ff ff ff call 218 <func2@plt> - +[a-f0-9]+: 48 8b 05 c7 fd 3f 00 mov 0x3ffdc7\(%rip\),%rax # 3ffff8 <func1> + +[a-f0-9]+: 48 8b 05 af fd 3f 00 mov 0x3ffdaf\(%rip\),%rax # 3fffe0 <func1> #pass |