summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lld/ELF/SyntheticSections.cpp8
-rw-r--r--lld/test/ELF/eh-frame-hdr-icf-fde.s4
-rw-r--r--lld/test/ELF/eh-frame-hdr.s3
-rw-r--r--lld/test/ELF/eh-frame-merge.s3
-rw-r--r--lld/test/ELF/ehframe-relocation.s2
-rw-r--r--lld/test/ELF/invalid-fde-rel.s2
-rw-r--r--lld/test/ELF/linkerscript/eh-frame-hdr.s2
-rw-r--r--lld/test/ELF/linkerscript/map-file2.test2
-rw-r--r--lld/test/ELF/linkerscript/synthetic-symbols1.test2
-rw-r--r--lld/test/ELF/map-file.s2
-rw-r--r--lld/test/ELF/relocatable-eh-frame.s2
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 {
OpenPOWER on IntegriCloud