diff options
| -rw-r--r-- | lld/ELF/SyntheticSections.cpp | 8 | ||||
| -rw-r--r-- | lld/test/ELF/eh-frame-hdr-icf-fde.s | 4 | ||||
| -rw-r--r-- | lld/test/ELF/eh-frame-hdr.s | 3 | ||||
| -rw-r--r-- | lld/test/ELF/eh-frame-merge.s | 3 | ||||
| -rw-r--r-- | lld/test/ELF/ehframe-relocation.s | 2 | ||||
| -rw-r--r-- | lld/test/ELF/invalid-fde-rel.s | 2 | ||||
| -rw-r--r-- | lld/test/ELF/linkerscript/eh-frame-hdr.s | 2 | ||||
| -rw-r--r-- | lld/test/ELF/linkerscript/map-file2.test | 2 | ||||
| -rw-r--r-- | lld/test/ELF/linkerscript/synthetic-symbols1.test | 2 | ||||
| -rw-r--r-- | lld/test/ELF/map-file.s | 2 | ||||
| -rw-r--r-- | lld/test/ELF/relocatable-eh-frame.s | 2 |
11 files changed, 17 insertions, 15 deletions
diff --git a/lld/ELF/SyntheticSections.cpp b/lld/ELF/SyntheticSections.cpp index 7058a5b72d1..5a25ccd4264 100644 --- a/lld/ELF/SyntheticSections.cpp +++ b/lld/ELF/SyntheticSections.cpp @@ -497,10 +497,10 @@ void EhFrameSection::finalizeContents() { } // The LSB standard does not allow a .eh_frame section with zero - // Call Frame Information records. Therefore add a CIE record length - // 0 as a terminator if this .eh_frame section is empty. - if (Off == 0) - Off = 4; + // Call Frame Information records. glibc unwind-dw2-fde.c + // classify_object_over_fdes expects there is a CIE record length 0 as a + // terminator. Thus we add one unconditionally. + Off += 4; this->Size = Off; } diff --git a/lld/test/ELF/eh-frame-hdr-icf-fde.s b/lld/test/ELF/eh-frame-hdr-icf-fde.s index 54c2cd8bf8c..68de65d5724 100644 --- a/lld/test/ELF/eh-frame-hdr-icf-fde.s +++ b/lld/test/ELF/eh-frame-hdr-icf-fde.s @@ -52,7 +52,7 @@ # CHECK-NEXT: ] # CHECK-NEXT: Address: 0x200178 # CHECK-NEXT: Offset: 0x178 -# CHECK-NEXT: Size: 72 +# CHECK-NEXT: Size: 76 # CHECK-NEXT: Link: 0 # CHECK-NEXT: Info: 0 # CHECK-NEXT: AddressAlignment: 8 @@ -62,7 +62,7 @@ # CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000 # CHECK-NEXT: 0020: 680E0000 01000000 00000000 00000000 # CHECK-NEXT: 0030: 14000000 34000000 520E0000 01000000 -# CHECK-NEXT: 0040: 00000000 00000000 +# CHECK-NEXT: 0040: 00000000 00000000 00000000 # CHECK-NEXT: ) # CHECK-NEXT: } diff --git a/lld/test/ELF/eh-frame-hdr.s b/lld/test/ELF/eh-frame-hdr.s index aaeccda6eae..0c33bc6dde3 100644 --- a/lld/test/ELF/eh-frame-hdr.s +++ b/lld/test/ELF/eh-frame-hdr.s @@ -92,7 +92,7 @@ _start: // HDR-NEXT: ] // HDR-NEXT: Address: 0x200180 // HDR-NEXT: Offset: 0x180 -// HDR-NEXT: Size: 96 +// HDR-NEXT: Size: 100 // HDR-NEXT: Link: 0 // HDR-NEXT: Info: 0 // HDR-NEXT: AddressAlignment: 8 @@ -104,6 +104,7 @@ _start: // HDR-NEXT: 0030: 14000000 34000000 490E0000 01000000 // HDR-NEXT: 0040: 00000000 00000000 14000000 4C000000 // HDR-NEXT: 0050: 320E0000 01000000 00000000 00000000 +// HDR-NEXT: 0060: 00000000 // HDR-NEXT: ) // CIE: 14000000 00000000 017A5200 01781001 1B0C0708 90010000 // FDE(1): 14000000 1C000000 600E0000 01000000 00000000 00000000 diff --git a/lld/test/ELF/eh-frame-merge.s b/lld/test/ELF/eh-frame-merge.s index 4b54c173c69..6731d90f844 100644 --- a/lld/test/ELF/eh-frame-merge.s +++ b/lld/test/ELF/eh-frame-merge.s @@ -27,7 +27,7 @@ // CHECK-NEXT: ] // CHECK-NEXT: Address: // CHECK-NEXT: Offset: -// CHECK-NEXT: Size: 96 +// CHECK-NEXT: Size: 100 // CHECK-NEXT: Link: 0 // CHECK-NEXT: Info: 0 // CHECK-NEXT: AddressAlignment: 8 @@ -39,6 +39,7 @@ // CHECK-NEXT: 0030: 14000000 34000000 D20D0000 02000000 | // CHECK-NEXT: 0040: 00000000 00000000 14000000 4C000000 | // CHECK-NEXT: 0050: B90D0000 01000000 00000000 00000000 | +// CHECK-NEXT: 0060: 00000000 // CHECK-NEXT: ) // CHECK: Name: foo diff --git a/lld/test/ELF/ehframe-relocation.s b/lld/test/ELF/ehframe-relocation.s index 0213b1bebf8..4ab44c20f8a 100644 --- a/lld/test/ELF/ehframe-relocation.s +++ b/lld/test/ELF/ehframe-relocation.s @@ -12,7 +12,7 @@ // CHECK-NEXT: ] // CHECK-NEXT: Address: 0x200120 // CHECK-NEXT: Offset: -// CHECK-NEXT: Size: 48 +// CHECK-NEXT: Size: 52 // CHECK-NOT: .eh_frame // 0x200120 = 2097440 diff --git a/lld/test/ELF/invalid-fde-rel.s b/lld/test/ELF/invalid-fde-rel.s index f43b9da3003..f6513225b53 100644 --- a/lld/test/ELF/invalid-fde-rel.s +++ b/lld/test/ELF/invalid-fde-rel.s @@ -33,4 +33,4 @@ .long 0x0 .long 0x0 -// CHECK: 1 .eh_frame 00000018 +// CHECK: 1 .eh_frame 0000001c diff --git a/lld/test/ELF/linkerscript/eh-frame-hdr.s b/lld/test/ELF/linkerscript/eh-frame-hdr.s index 02bc3ea3994..a7892b2259e 100644 --- a/lld/test/ELF/linkerscript/eh-frame-hdr.s +++ b/lld/test/ELF/linkerscript/eh-frame-hdr.s @@ -4,7 +4,7 @@ # RUN: ld.lld -o %t1 --eh-frame-hdr --script %t.script %t # RUN: llvm-objdump -s -section=".eh_frame_hdr" %t1 | FileCheck %s -# CHECK: 011b033b 14000000 01000000 49000000 +# CHECK: 011b033b 14000000 01000000 4d000000 # CHECK-NEXT: 30000000 .global _start diff --git a/lld/test/ELF/linkerscript/map-file2.test b/lld/test/ELF/linkerscript/map-file2.test index 1a35ce4dc5c..7c4689c0e03 100644 --- a/lld/test/ELF/linkerscript/map-file2.test +++ b/lld/test/ELF/linkerscript/map-file2.test @@ -32,7 +32,7 @@ SECTIONS { # CHECK-NEXT: 1124 3114 1 4 {{.*}}{{/|\\}}map-file2.test.tmp.o:(.text) # CHECK-NEXT: 1124 3114 0 1 f(int) # CHECK-NEXT: 1124 3114 0 1 _start -# CHECK-NEXT: 1128 3118 30 8 .eh_frame +# CHECK-NEXT: 1128 3118 34 8 .eh_frame # CHECK-NEXT: 1128 3118 30 1 {{.*}}{{/|\\}}map-file2.test.tmp.o:(.eh_frame+0x0) # CHECK-NEXT: 0 0 8 1 .comment # CHECK-NEXT: 0 0 8 1 <internal>:(.comment) diff --git a/lld/test/ELF/linkerscript/synthetic-symbols1.test b/lld/test/ELF/linkerscript/synthetic-symbols1.test index eb09d2dda7f..908a05f4958 100644 --- a/lld/test/ELF/linkerscript/synthetic-symbols1.test +++ b/lld/test/ELF/linkerscript/synthetic-symbols1.test @@ -41,7 +41,7 @@ SECTIONS { # CHECK: 0000000000000128 .foo 00000000 .hidden _end_sec # CHECK-NEXT: 0000000000000120 .foo 00000000 _begin_sec # CHECK-NEXT: 0000000000000128 *ABS* 00000000 _end_sec_abs -# CHECK-NEXT: 0000000000001048 .text 00000000 _start +# CHECK-NEXT: 000000000000104c .text 00000000 _start # CHECK-NEXT: 0000000000000120 .foo 00000000 begin_foo # CHECK-NEXT: 0000000000000128 .foo 00000000 end_foo # CHECK-NEXT: 0000000000000008 *ABS* 00000000 size_foo_1 diff --git a/lld/test/ELF/map-file.s b/lld/test/ELF/map-file.s index fe0327076b2..f0831a887b2 100644 --- a/lld/test/ELF/map-file.s +++ b/lld/test/ELF/map-file.s @@ -53,7 +53,7 @@ labs = 0x1AB5 // CHECK-NEXT: 2002d0 2002d0 30 8 <internal>:(.rela.dyn) // CHECK-NEXT: 200300 200300 30 8 .rela.plt // CHECK-NEXT: 200300 200300 30 8 <internal>:(.rela.plt) -// CHECK-NEXT: 200330 200330 60 8 .eh_frame +// CHECK-NEXT: 200330 200330 64 8 .eh_frame // CHECK-NEXT: 200330 200330 2c 1 {{.*}}{{/|\\}}map-file.s.tmp1.o:(.eh_frame+0x0) // CHECK-NEXT: 200360 200360 14 1 {{.*}}{{/|\\}}map-file.s.tmp1.o:(.eh_frame+0x2c) // CHECK-NEXT: 200378 200378 18 1 {{.*}}{{/|\\}}map-file.s.tmp2.o:(.eh_frame+0x18) diff --git a/lld/test/ELF/relocatable-eh-frame.s b/lld/test/ELF/relocatable-eh-frame.s index c2e5ec63f86..dee906acb87 100644 --- a/lld/test/ELF/relocatable-eh-frame.s +++ b/lld/test/ELF/relocatable-eh-frame.s @@ -5,7 +5,7 @@ # RUN: ld.lld %t -o %t.so -shared # RUN: llvm-objdump -h %t.so | FileCheck --check-prefix=DSO %s -# DSO: .eh_frame 00000030 +# DSO: .eh_frame 00000034 # CHECK: Relocations [ # CHECK-NEXT: Section ({{.*}}) .rela.eh_frame { |

