diff options
author | Alan Modra <amodra@gmail.com> | 2022-02-05 20:06:52 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2022-02-07 13:42:41 +1030 |
commit | 6a9d08661b361e497baa76dd6d8685f2cb593adb (patch) | |
tree | 94483fd58d6262edc6d61f7da0c165843af80f4c /ld | |
parent | 5197c88e2a8a17f7a67ce683df068b5bdf619427 (diff) | |
download | gdb-6a9d08661b361e497baa76dd6d8685f2cb593adb.zip gdb-6a9d08661b361e497baa76dd6d8685f2cb593adb.tar.gz gdb-6a9d08661b361e497baa76dd6d8685f2cb593adb.tar.bz2 |
Revert "elf: Remove the 1-page gap before the RELRO segment"
This reverts commit 2f83249c13d86065b4c7cdb198ea871017b4bba1.
PR ld/28743
* ldlang.c (lang_size_relro_segment_1): Revert 2022-01-10 changes.
* testsuite/ld-i386/pr20830.d: Likewise.
* testsuite/ld-s390/gotreloc_64-relro-1.dd: Likewise.
* testsuite/ld-x86-64/pr14207.d: Likewise.
* testsuite/ld-x86-64/pr18176.d: Likewise.
* testsuite/ld-x86-64/pr20830a-now.d: Likewise.
* testsuite/ld-x86-64/pr20830a.d: Likewise.
* testsuite/ld-x86-64/pr20830b-now.d: Likewise.
* testsuite/ld-x86-64/pr20830b.d: Likewise.
* testsuite/ld-x86-64/pr21038a-now.d: Likewise.
* testsuite/ld-x86-64/pr21038a.d: Likewise.
* testsuite/ld-x86-64/pr21038b-now.d: Likewise.
* testsuite/ld-x86-64/pr21038c-now.d: Likewise.
* testsuite/ld-x86-64/pr21038c.d: Likewise.
Diffstat (limited to 'ld')
-rw-r--r-- | ld/ldlang.c | 89 | ||||
-rw-r--r-- | ld/testsuite/ld-i386/pr20830.d | 4 | ||||
-rw-r--r-- | ld/testsuite/ld-s390/gotreloc_64-relro-1.dd | 6 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/pr14207.d | 6 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/pr18176.d | 2 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/pr20830a-now.d | 8 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/pr20830a.d | 4 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/pr20830b-now.d | 10 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/pr20830b.d | 6 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/pr21038a-now.d | 8 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/pr21038a.d | 4 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/pr21038b-now.d | 6 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/pr21038c-now.d | 10 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/pr21038c.d | 4 |
14 files changed, 57 insertions, 110 deletions
diff --git a/ld/ldlang.c b/ld/ldlang.c index cf13932..84511c4 100644 --- a/ld/ldlang.c +++ b/ld/ldlang.c @@ -6371,9 +6371,7 @@ static bfd_vma lang_size_relro_segment_1 (seg_align_type *seg) { bfd_vma relro_end, desired_end; - asection *sec, *prev_sec = NULL; - bool remove_page_gap = false; - unsigned int max_alignment_power = 0; + asection *sec; /* Compute the expected PT_GNU_RELRO/PT_LOAD segment end. */ relro_end = ((seg->relro_end + seg->pagesize - 1) @@ -6384,79 +6382,28 @@ lang_size_relro_segment_1 (seg_align_type *seg) /* For sections in the relro segment.. */ for (sec = link_info.output_bfd->section_last; sec; sec = sec->prev) - if ((sec->flags & SEC_ALLOC) != 0) + if ((sec->flags & SEC_ALLOC) != 0 + && sec->vma >= seg->base + && sec->vma < seg->relro_end - seg->relro_offset) { - if (sec->alignment_power > max_alignment_power) - max_alignment_power = sec->alignment_power; - - if (sec->vma >= seg->base - && sec->vma < seg->relro_end - seg->relro_offset) - { - /* Where do we want to put this section so that it ends as - desired? */ - bfd_vma start, end, bump; - - end = start = sec->vma; - if (!IS_TBSS (sec)) - end += TO_ADDR (sec->size); - bump = desired_end - end; - /* We'd like to increase START by BUMP, but we must heed - alignment so the increase might be less than optimum. */ - start += bump; - start &= ~(((bfd_vma) 1 << sec->alignment_power) - 1); - /* This is now the desired end for the previous section. */ - desired_end = start; - prev_sec = sec->prev; - } + /* Where do we want to put this section so that it ends as + desired? */ + bfd_vma start, end, bump; + + end = start = sec->vma; + if (!IS_TBSS (sec)) + end += TO_ADDR (sec->size); + bump = desired_end - end; + /* We'd like to increase START by BUMP, but we must heed + alignment so the increase might be less than optimum. */ + start += bump; + start &= ~(((bfd_vma) 1 << sec->alignment_power) - 1); + /* This is now the desired end for the previous section. */ + desired_end = start; } seg->phase = exp_seg_relro_adjust; ASSERT (desired_end >= seg->base); - - for (; prev_sec; prev_sec = prev_sec->prev) - if ((prev_sec->flags & SEC_ALLOC) != 0) - { - if (prev_sec->alignment_power > max_alignment_power) - max_alignment_power = prev_sec->alignment_power; - - if (prev_sec->size != 0) - { - /* The 1-page gap before the RELRO segment may be removed. */ - remove_page_gap = ((prev_sec->vma + prev_sec->size - + seg->maxpagesize) < desired_end); - - break; - } - } - - if (remove_page_gap) - { - /* Find the maximum section alignment. */ - for (sec = prev_sec; sec; sec = sec->prev) - if ((sec->flags & SEC_ALLOC) != 0 - && sec->alignment_power > max_alignment_power) - max_alignment_power = sec->alignment_power; - - /* Remove the 1-page gap before the RELRO segment only if the - maximum page size >= the maximum section alignment. */ - if (seg->maxpagesize >= (1U << max_alignment_power)) - { - /* If the preceding section size is greater than the maximum - page size, subtract the maximum page size. Otherwise, - align the RELRO segment to the maximum page size. */ - if (prev_sec->size > seg->maxpagesize) - { - desired_end -= seg->maxpagesize; - relro_end -= seg->maxpagesize; - } - else - { - desired_end &= ~(seg->maxpagesize - 1); - relro_end &= ~(seg->maxpagesize - 1); - } - } - } - seg->base = desired_end; return relro_end; } diff --git a/ld/testsuite/ld-i386/pr20830.d b/ld/testsuite/ld-i386/pr20830.d index 0bc9956..78cbc00 100644 --- a/ld/testsuite/ld-i386/pr20830.d +++ b/ld/testsuite/ld-i386/pr20830.d @@ -49,12 +49,12 @@ Disassembly of section .plt: Disassembly of section .plt.got: 0+120 <func@plt>: - +[a-f0-9]+: ff a3 78 f0 ff ff jmp \*-0xf88\(%ebx\) + +[a-f0-9]+: ff a3 fc ff ff ff jmp \*-0x4\(%ebx\) +[a-f0-9]+: 66 90 xchg %ax,%ax Disassembly of section .text: 0+128 <foo>: +[a-f0-9]+: e8 f3 ff ff ff call 120 <func@plt> - +[a-f0-9]+: 8b 83 78 f0 ff ff mov -0xf88\(%ebx\),%eax + +[a-f0-9]+: 8b 83 fc ff ff ff mov -0x4\(%ebx\),%eax #pass diff --git a/ld/testsuite/ld-s390/gotreloc_64-relro-1.dd b/ld/testsuite/ld-s390/gotreloc_64-relro-1.dd index 5a10746..64151d1 100644 --- a/ld/testsuite/ld-s390/gotreloc_64-relro-1.dd +++ b/ld/testsuite/ld-s390/gotreloc_64-relro-1.dd @@ -5,8 +5,8 @@ Disassembly of section .text: .* <foo>: .*: c0 10 00 00 0f 0c [ ]*larl %r1,2000 <bar> .*: c0 10 00 00 0f 09 [ ]*larl %r1,2000 <bar> -.*: c4 1d 00 00 07 8a [ ]*lrl %r1,1108 <_GLOBAL_OFFSET_TABLE_\+0x28> +.*: c4 1d 00 00 0f 02 [ ]*lrl %r1,1ff8 <_GLOBAL_OFFSET_TABLE_\+0x28> .*: 58 10 c0 28 [ ]*l %r1,40\(%r12\) .*: e3 10 c0 28 00 58 [ ]*ly %r1,40\(%r12\) -.*: c4 18 00 00 07 7e [ ]*lgrl %r1,1100 <_GLOBAL_OFFSET_TABLE_\+0x20> -.*: c4 18 00 00 07 77 [ ]*lgrl %r1,10f8 <_GLOBAL_OFFSET_TABLE_\+0x18> +.*: c4 18 00 00 0e f6 [ ]*lgrl %r1,1ff0 <_GLOBAL_OFFSET_TABLE_\+0x20> +.*: c4 18 00 00 0e ef [ ]*lgrl %r1,1fe8 <_GLOBAL_OFFSET_TABLE_\+0x18> diff --git a/ld/testsuite/ld-x86-64/pr14207.d b/ld/testsuite/ld-x86-64/pr14207.d index c1991da..e3af361 100644 --- a/ld/testsuite/ld-x86-64/pr14207.d +++ b/ld/testsuite/ld-x86-64/pr14207.d @@ -11,9 +11,9 @@ There are 4 program headers, starting at offset 64 Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align LOAD 0x000000 0x0000000000000000 0x0000000000000000 0x000150 0x000150 R 0x200000 - LOAD 0x000150 0x0000000000200150 0x0000000000200150 0x0004b8 0x0016f0 RW 0x200000 - DYNAMIC 0x0001a0 0x00000000002001a0 0x00000000002001a0 0x0001c0 0x0001c0 RW 0x8 - GNU_RELRO 0x000150 0x0000000000200150 0x0000000000200150 0x0004b8 0x000eb0 R 0x1 + LOAD 0x000b.8 0x0000000000200b.8 0x0000000000200b.8 0x0004.0 0x000c.8 RW 0x200000 + DYNAMIC 0x000b.0 0x0000000000200b.0 0x0000000000200b.0 0x0001.0 0x0001.0 RW 0x8 + GNU_RELRO 0x000b.8 0x0000000000200b.8 0x0000000000200b.8 0x0004.0 0x0004.8 R 0x1 Section to Segment mapping: Segment Sections... diff --git a/ld/testsuite/ld-x86-64/pr18176.d b/ld/testsuite/ld-x86-64/pr18176.d index c053b52..a99ff15 100644 --- a/ld/testsuite/ld-x86-64/pr18176.d +++ b/ld/testsuite/ld-x86-64/pr18176.d @@ -5,5 +5,5 @@ #target: x86_64-*-linux* #... - GNU_RELRO 0x04bcc7 0x000000000024bcc7 0x000000000024bcc7 0x002339 0x002339 R 0x1 + GNU_RELRO 0x04bd17 0x000000000024bd17 0x000000000024bd17 0x0022e9 0x0022e9 R 0x1 #pass diff --git a/ld/testsuite/ld-x86-64/pr20830a-now.d b/ld/testsuite/ld-x86-64/pr20830a-now.d index dbafd48..44a2593 100644 --- a/ld/testsuite/ld-x86-64/pr20830a-now.d +++ b/ld/testsuite/ld-x86-64/pr20830a-now.d @@ -50,19 +50,19 @@ Contents of the .eh_frame section: Disassembly of section .plt: 0+1b0 <.plt>: - +[a-f0-9]+: ff 35 aa 01 20 00 push 0x2001aa\(%rip\) # 200360 <_GLOBAL_OFFSET_TABLE_\+0x8> - +[a-f0-9]+: ff 25 ac 01 20 00 jmp \*0x2001ac\(%rip\) # 200368 <_GLOBAL_OFFSET_TABLE_\+0x10> + +[a-f0-9]+: ff 35 32 0e 20 00 push 0x200e32\(%rip\) # 200fe8 <_GLOBAL_OFFSET_TABLE_\+0x8> + +[a-f0-9]+: ff 25 34 0e 20 00 jmp \*0x200e34\(%rip\) # 200ff0 <_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 aa 01 20 00 jmp \*0x2001aa\(%rip\) # 200370 <func> + +[a-f0-9]+: ff 25 32 0e 20 00 jmp \*0x200e32\(%rip\) # 200ff8 <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 9c 01 20 00 mov 0x20019c\(%rip\),%rax # 200370 <func> + +[a-f0-9]+: 48 8b 05 24 0e 20 00 mov 0x200e24\(%rip\),%rax # 200ff8 <func> #pass diff --git a/ld/testsuite/ld-x86-64/pr20830a.d b/ld/testsuite/ld-x86-64/pr20830a.d index c80083a..4ea0596 100644 --- a/ld/testsuite/ld-x86-64/pr20830a.d +++ b/ld/testsuite/ld-x86-64/pr20830a.d @@ -57,12 +57,12 @@ Disassembly of section .plt: Disassembly of section .plt.got: 0+1c0 <func@plt>: - +[a-f0-9]+: ff 25 72 01 20 00 jmp \*0x200172\(%rip\) # 200338 <func> + +[a-f0-9]+: ff 25 32 0e 20 00 jmp \*0x200e32\(%rip\) # 200ff8 <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 64 01 20 00 mov 0x200164\(%rip\),%rax # 200338 <func> + +[a-f0-9]+: 48 8b 05 24 0e 20 00 mov 0x200e24\(%rip\),%rax # 200ff8 <func> #pass diff --git a/ld/testsuite/ld-x86-64/pr20830b-now.d b/ld/testsuite/ld-x86-64/pr20830b-now.d index 197934c..6a4f2c1 100644 --- a/ld/testsuite/ld-x86-64/pr20830b-now.d +++ b/ld/testsuite/ld-x86-64/pr20830b-now.d @@ -1,4 +1,4 @@ -#name: PR ld/20830 x32 (.plt.got, -z now) +#name: PR ld/20830 (.plt.got, -z now) #source: pr20830.s #as: --x32 #ld: -z now -melf32_x86_64 -shared -z relro --ld-generated-unwind-info --hash-style=sysv -z max-page-size=0x200000 -z noseparate-code $NO_DT_RELR_LDFLAGS @@ -42,19 +42,19 @@ Contents of the .eh_frame section: Disassembly of section .plt: 0+120 <.plt>: - +[a-f0-9]+: ff 35 12 01 20 00 push 0x200112\(%rip\) # 200238 <_GLOBAL_OFFSET_TABLE_\+0x8> - +[a-f0-9]+: ff 25 14 01 20 00 jmp \*0x200114\(%rip\) # 200240 <_GLOBAL_OFFSET_TABLE_\+0x10> + +[a-f0-9]+: ff 35 c2 0e 20 00 push 0x200ec2\(%rip\) # 200fe8 <_GLOBAL_OFFSET_TABLE_\+0x8> + +[a-f0-9]+: ff 25 c4 0e 20 00 jmp \*0x200ec4\(%rip\) # 200ff0 <_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 12 01 20 00 jmp \*0x200112\(%rip\) # 200248 <func> + +[a-f0-9]+: ff 25 c2 0e 20 00 jmp \*0x200ec2\(%rip\) # 200ff8 <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 04 01 20 00 mov 0x200104\(%rip\),%rax # 200248 <func> + +[a-f0-9]+: 48 8b 05 b4 0e 20 00 mov 0x200eb4\(%rip\),%rax # 200ff8 <func> #pass diff --git a/ld/testsuite/ld-x86-64/pr20830b.d b/ld/testsuite/ld-x86-64/pr20830b.d index 00c821b..6487eb8 100644 --- a/ld/testsuite/ld-x86-64/pr20830b.d +++ b/ld/testsuite/ld-x86-64/pr20830b.d @@ -1,4 +1,4 @@ -#name: PR ld/20830 x32 (.plt.got) +#name: PR ld/20830 (.plt.got) #source: pr20830.s #as: --x32 #ld: -melf32_x86_64 -shared -z relro --ld-generated-unwind-info --hash-style=sysv -z max-page-size=0x200000 -z noseparate-code $NO_DT_RELR_LDFLAGS @@ -49,12 +49,12 @@ Disassembly of section .plt: Disassembly of section .plt.got: 0+130 <func@plt>: - +[a-f0-9]+: ff 25 ea 00 20 00 jmp \*0x2000ea\(%rip\) # 200220 <func> + +[a-f0-9]+: ff 25 c2 0e 20 00 jmp \*0x200ec2\(%rip\) # 200ff8 <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 dc 00 20 00 mov 0x2000dc\(%rip\),%rax # 200220 <func> + +[a-f0-9]+: 48 8b 05 b4 0e 20 00 mov 0x200eb4\(%rip\),%rax # 200ff8 <func> #pass diff --git a/ld/testsuite/ld-x86-64/pr21038a-now.d b/ld/testsuite/ld-x86-64/pr21038a-now.d index 8126737..51e2657 100644 --- a/ld/testsuite/ld-x86-64/pr21038a-now.d +++ b/ld/testsuite/ld-x86-64/pr21038a-now.d @@ -50,19 +50,19 @@ Contents of the .eh_frame section: Disassembly of section .plt: 0+1b0 <.plt>: - +[a-f0-9]+: ff 35 aa 01 20 00 push 0x2001aa\(%rip\) # 200360 <_GLOBAL_OFFSET_TABLE_\+0x8> - +[a-f0-9]+: f2 ff 25 ab 01 20 00 bnd jmp \*0x2001ab\(%rip\) # 200368 <_GLOBAL_OFFSET_TABLE_\+0x10> + +[a-f0-9]+: ff 35 32 0e 20 00 push 0x200e32\(%rip\) # 200fe8 <_GLOBAL_OFFSET_TABLE_\+0x8> + +[a-f0-9]+: f2 ff 25 33 0e 20 00 bnd jmp \*0x200e33\(%rip\) # 200ff0 <_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 a9 01 20 00 bnd jmp \*0x2001a9\(%rip\) # 200370 <func> + +[a-f0-9]+: f2 ff 25 31 0e 20 00 bnd jmp \*0x200e31\(%rip\) # 200ff8 <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 9c 01 20 00 mov 0x20019c\(%rip\),%rax # 200370 <func> + +[a-f0-9]+: 48 8b 05 24 0e 20 00 mov 0x200e24\(%rip\),%rax # 200ff8 <func> #pass diff --git a/ld/testsuite/ld-x86-64/pr21038a.d b/ld/testsuite/ld-x86-64/pr21038a.d index b316094..0ea7e8e 100644 --- a/ld/testsuite/ld-x86-64/pr21038a.d +++ b/ld/testsuite/ld-x86-64/pr21038a.d @@ -56,12 +56,12 @@ Disassembly of section .plt: Disassembly of section .plt.got: 0+1c0 <func@plt>: - +[a-f0-9]+: f2 ff 25 71 01 20 00 bnd jmp \*0x200171\(%rip\) # 200338 <func> + +[a-f0-9]+: f2 ff 25 31 0e 20 00 bnd jmp \*0x200e31\(%rip\) # 200ff8 <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 64 01 20 00 mov 0x200164\(%rip\),%rax # 200338 <func> + +[a-f0-9]+: 48 8b 05 24 0e 20 00 mov 0x200e24\(%rip\),%rax # 200ff8 <func> #pass diff --git a/ld/testsuite/ld-x86-64/pr21038b-now.d b/ld/testsuite/ld-x86-64/pr21038b-now.d index 838c2fc..1b760f2 100644 --- a/ld/testsuite/ld-x86-64/pr21038b-now.d +++ b/ld/testsuite/ld-x86-64/pr21038b-now.d @@ -50,8 +50,8 @@ Contents of the .eh_frame section: Disassembly of section .plt: 0+1b0 <.plt>: - +[a-f0-9]+: ff 35 b2 01 20 00 push 0x2001b2\(%rip\) # 200368 <_GLOBAL_OFFSET_TABLE_\+0x8> - +[a-f0-9]+: f2 ff 25 b3 01 20 00 bnd jmp \*0x2001b3\(%rip\) # 200370 <_GLOBAL_OFFSET_TABLE_\+0x10> + +[a-f0-9]+: ff 35 32 0e 20 00 push 0x200e32\(%rip\) # 200fe8 <_GLOBAL_OFFSET_TABLE_\+0x8> + +[a-f0-9]+: f2 ff 25 33 0e 20 00 bnd jmp \*0x200e33\(%rip\) # 200ff0 <_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> @@ -60,7 +60,7 @@ Disassembly of section .plt: Disassembly of section .plt.sec: 0+1d0 <func@plt>: - +[a-f0-9]+: f2 ff 25 a1 01 20 00 bnd jmp \*0x2001a1\(%rip\) # 200378 <func> + +[a-f0-9]+: f2 ff 25 21 0e 20 00 bnd jmp \*0x200e21\(%rip\) # 200ff8 <func> +[a-f0-9]+: 90 nop Disassembly of section .text: diff --git a/ld/testsuite/ld-x86-64/pr21038c-now.d b/ld/testsuite/ld-x86-64/pr21038c-now.d index 3fdcdc0..bca7ccd 100644 --- a/ld/testsuite/ld-x86-64/pr21038c-now.d +++ b/ld/testsuite/ld-x86-64/pr21038c-now.d @@ -59,8 +59,8 @@ Contents of the .eh_frame section: Disassembly of section .plt: 0+1f0 <.plt>: - +[a-f0-9]+: ff 35 12 02 20 00 push 0x200212\(%rip\) # 200408 <_GLOBAL_OFFSET_TABLE_\+0x8> - +[a-f0-9]+: f2 ff 25 13 02 20 00 bnd jmp \*0x200213\(%rip\) # 200410 <_GLOBAL_OFFSET_TABLE_\+0x10> + +[a-f0-9]+: ff 35 ea 0d 20 00 push 0x200dea\(%rip\) # 200fe0 <_GLOBAL_OFFSET_TABLE_\+0x8> + +[a-f0-9]+: f2 ff 25 eb 0d 20 00 bnd jmp \*0x200deb\(%rip\) # 200fe8 <_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> @@ -69,13 +69,13 @@ Disassembly of section .plt: Disassembly of section .plt.got: 0+210 <func1@plt>: - +[a-f0-9]+: f2 ff 25 09 02 20 00 bnd jmp \*0x200209\(%rip\) # 200420 <func1> + +[a-f0-9]+: f2 ff 25 e1 0d 20 00 bnd jmp \*0x200de1\(%rip\) # 200ff8 <func1> +[a-f0-9]+: 90 nop Disassembly of section .plt.sec: 0+218 <func2@plt>: - +[a-f0-9]+: f2 ff 25 f9 01 20 00 bnd jmp \*0x2001f9\(%rip\) # 200418 <func2> + +[a-f0-9]+: f2 ff 25 d1 0d 20 00 bnd jmp \*0x200dd1\(%rip\) # 200ff0 <func2> +[a-f0-9]+: 90 nop Disassembly of section .text: @@ -83,5 +83,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 ef 01 20 00 mov 0x2001ef\(%rip\),%rax # 200420 <func1> + +[a-f0-9]+: 48 8b 05 c7 0d 20 00 mov 0x200dc7\(%rip\),%rax # 200ff8 <func1> #pass diff --git a/ld/testsuite/ld-x86-64/pr21038c.d b/ld/testsuite/ld-x86-64/pr21038c.d index dd625a1..f5d9727 100644 --- a/ld/testsuite/ld-x86-64/pr21038c.d +++ b/ld/testsuite/ld-x86-64/pr21038c.d @@ -68,7 +68,7 @@ Disassembly of section .plt: Disassembly of section .plt.got: 0+210 <func1@plt>: - +[a-f0-9]+: f2 ff 25 c9 01 20 00 bnd jmp \*0x2001c9\(%rip\) # 2003e0 <func1> + +[a-f0-9]+: f2 ff 25 e1 0d 20 00 bnd jmp \*0x200de1\(%rip\) # 200ff8 <func1> +[a-f0-9]+: 90 nop Disassembly of section .plt.sec: @@ -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 af 01 20 00 mov 0x2001af\(%rip\),%rax # 2003e0 <func1> + +[a-f0-9]+: 48 8b 05 c7 0d 20 00 mov 0x200dc7\(%rip\),%rax # 200ff8 <func1> #pass |