[MC] Set SHF_INFO_LINK on SHT_REL/SHT_RELA sections
authorFangrui Song <i@maskray.me>
Thu, 2 Sep 2021 08:00:51 +0000 (01:00 -0700)
committerFangrui Song <i@maskray.me>
Thu, 2 Sep 2021 08:00:51 +0000 (01:00 -0700)
sh_info links to a section, therefore SHF_INFO_LINK should be set as GNU as
does. The issue has been benign because linkers kindly combines relocation
sections w/ and w/o the flag.

23 files changed:
llvm/lib/MC/ELFObjectWriter.cpp
llvm/test/ExecutionEngine/RuntimeDyld/SystemZ/cfi-relo-pc64.s
llvm/test/MC/ELF/cfi-adjust-cfa-offset.s
llvm/test/MC/ELF/cfi-advance-loc2.s
llvm/test/MC/ELF/cfi-def-cfa-offset.s
llvm/test/MC/ELF/cfi-def-cfa-register.s
llvm/test/MC/ELF/cfi-def-cfa.s
llvm/test/MC/ELF/cfi-escape.s
llvm/test/MC/ELF/cfi-offset.s
llvm/test/MC/ELF/cfi-register.s
llvm/test/MC/ELF/cfi-rel-offset.s
llvm/test/MC/ELF/cfi-rel-offset2.s
llvm/test/MC/ELF/cfi-remember.s
llvm/test/MC/ELF/cfi-restore.s
llvm/test/MC/ELF/cfi-same-value.s
llvm/test/MC/ELF/cfi-undefined.s
llvm/test/MC/ELF/cfi-window-save.s
llvm/test/MC/ELF/cfi-zero-addr-delta.s
llvm/test/MC/ELF/cfi.s
llvm/test/MC/ELF/cgprofile.s
llvm/test/MC/ELF/relocation-pc.s
llvm/test/MC/ELF/rename.s
llvm/test/MC/PowerPC/ppc64-initial-cfa.s

index e0ea446..410d996 100644 (file)
@@ -796,7 +796,7 @@ MCSectionELF *ELFWriter::createRelocationSection(MCContext &Ctx,
   else
     EntrySize = is64Bit() ? sizeof(ELF::Elf64_Rel) : sizeof(ELF::Elf32_Rel);
 
-  unsigned Flags = 0;
+  unsigned Flags = ELF::SHF_INFO_LINK;
   if (Sec.getFlags() & ELF::SHF_GROUP)
     Flags = ELF::SHF_GROUP;
 
index 166d46e..29bc6ce 100644 (file)
@@ -18,6 +18,7 @@ f1:
 // CHECK:          Name: .rela.eh_frame
 // CHECK-NEXT:     Type: SHT_RELA
 // CHECK-NEXT:     Flags [
+// CHECK-NEXT:       SHF_INFO_LINK
 // CHECK-NEXT:     ]
 // CHECK-NEXT:     Address: 0x0
 // CHECK-NEXT:     Offset:
index e34fc5d..1ea60b1 100644 (file)
@@ -55,6 +55,7 @@ f:
 // CHECK-NEXT:     Name: .rela.eh_frame
 // CHECK-NEXT:     Type: SHT_RELA
 // CHECK-NEXT:     Flags [
+// CHECK-NEXT:       SHF_INFO_LINK
 // CHECK-NEXT:     ]
 // CHECK-NEXT:     Address: 0x0
 // CHECK-NEXT:     Offset:
index 9226200..2e9fa59 100644 (file)
@@ -36,6 +36,7 @@ f:
 // CHECK:          Name: .rela.eh_frame
 // CHECK-NEXT:     Type: SHT_RELA
 // CHECK-NEXT:     Flags [
+// CHECK-NEXT:       SHF_INFO_LINK
 // CHECK-NEXT:     ]
 // CHECK-NEXT:     Address: 0x0
 // CHECK-NEXT:     Offset:
index 2d788c1..58edcd4 100644 (file)
@@ -38,6 +38,7 @@ f:
 // CHECK:          Name: .rela.eh_frame
 // CHECK-NEXT:     Type: SHT_RELA
 // CHECK-NEXT:     Flags [
+// CHECK-NEXT:       SHF_INFO_LINK
 // CHECK-NEXT:     ]
 // CHECK-NEXT:     Address: 0x0
 // CHECK-NEXT:     Offset:
index 53a77c3..a9e0e63 100644 (file)
@@ -37,6 +37,7 @@ f:
 // CHECK:          Name: .rela.eh_frame
 // CHECK-NEXT:     Type: SHT_RELA
 // CHECK-NEXT:     Flags [
+// CHECK-NEXT:       SHF_INFO_LINK
 // CHECK-NEXT:     ]
 // CHECK-NEXT:     Address: 0x0
 // CHECK-NEXT:     Offset:
index 6003327..1f10063 100644 (file)
@@ -33,6 +33,7 @@ f:
 // CHECK:          Name: .rela.eh_frame
 // CHECK-NEXT:     Type: SHT_RELA
 // CHECK-NEXT:     Flags [
+// CHECK-NEXT:       SHF_INFO_LINK
 // CHECK-NEXT:     ]
 // CHECK-NEXT:     Address: 0x0
 // CHECK-NEXT:     Offset:
index daedc52..84ab909 100644 (file)
@@ -38,6 +38,7 @@ f:
 // CHECK-NEXT:     Name: .rela.eh_frame
 // CHECK-NEXT:     Type: SHT_RELA
 // CHECK-NEXT:     Flags [
+// CHECK-NEXT:       SHF_INFO_LINK
 // CHECK-NEXT:     ]
 // CHECK-NEXT:     Address: 0x0
 // CHECK-NEXT:     Offset:
index efb8dbe..f538d50 100644 (file)
@@ -33,6 +33,7 @@ f:
 // CHECK:          Name: .rela.eh_frame
 // CHECK-NEXT:     Type: SHT_RELA
 // CHECK-NEXT:     Flags [
+// CHECK-NEXT:       SHF_INFO_LINK
 // CHECK-NEXT:     ]
 // CHECK-NEXT:     Address: 0x0
 // CHECK-NEXT:     Offset:
index 20a3f44..fadb46e 100644 (file)
@@ -38,6 +38,7 @@ f:
 // CHECK-NEXT:     Name: .rela.eh_frame
 // CHECK-NEXT:     Type: SHT_RELA
 // CHECK-NEXT:     Flags [
+// CHECK-NEXT:       SHF_INFO_LINK
 // CHECK-NEXT:     ]
 // CHECK-NEXT:     Address: 0x0
 // CHECK-NEXT:     Offset:
index 71d8d7c..0454942 100644 (file)
@@ -48,6 +48,7 @@ f:
 // CHECK-NEXT:     Name: .rela.eh_frame
 // CHECK-NEXT:     Type: SHT_RELA
 // CHECK-NEXT:     Flags [
+// CHECK-NEXT:       SHF_INFO_LINK
 // CHECK-NEXT:     ]
 // CHECK-NEXT:     Address: 0x0
 // CHECK-NEXT:     Offset:
index d590911..4863b07 100644 (file)
@@ -33,6 +33,7 @@ f:
 // CHECK-NEXT:     Name: .rela.eh_frame
 // CHECK-NEXT:     Type: SHT_RELA
 // CHECK-NEXT:     Flags [
+// CHECK-NEXT:       SHF_INFO_LINK
 // CHECK-NEXT:     ]
 // CHECK-NEXT:     Address: 0x0
 // CHECK-NEXT:     Offset:
index ffafe78..c7e9a5c 100644 (file)
@@ -40,6 +40,7 @@ f:
 // CHECK-NEXT:     Name: .rela.eh_frame
 // CHECK-NEXT:     Type: SHT_RELA
 // CHECK-NEXT:     Flags [
+// CHECK-NEXT:       SHF_INFO_LINK
 // CHECK-NEXT:     ]
 // CHECK-NEXT:     Address: 0x0
 // CHECK-NEXT:     Offset:
index bbf339f..71ac1f0 100644 (file)
@@ -34,6 +34,7 @@ f:
 // CHECK-NEXT:     Name: .rela.eh_frame
 // CHECK-NEXT:     Type: SHT_RELA
 // CHECK-NEXT:     Flags [
+// CHECK-NEXT:       SHF_INFO_LINK
 // CHECK-NEXT:     ]
 // CHECK-NEXT:     Address: 0x0
 // CHECK-NEXT:     Offset:
index 80afaa0..9ee4b37 100644 (file)
@@ -38,6 +38,7 @@ f:
 // CHECK-NEXT:     Name: .rela.eh_frame
 // CHECK-NEXT:     Type: SHT_RELA
 // CHECK-NEXT:     Flags [
+// CHECK-NEXT:       SHF_INFO_LINK
 // CHECK-NEXT:     ]
 // CHECK-NEXT:     Address: 0x0
 // CHECK-NEXT:     Offset:
index 32ae2b1..de7f29f 100644 (file)
@@ -38,6 +38,7 @@ f:
 // CHECK-NEXT:     Name: .rela.eh_frame
 // CHECK-NEXT:     Type: SHT_RELA
 // CHECK-NEXT:     Flags [
+// CHECK-NEXT:       SHF_INFO_LINK
 // CHECK-NEXT:     ]
 // CHECK-NEXT:     Address: 0x0
 // CHECK-NEXT:     Offset:
index 8c9db94..df70734 100644 (file)
@@ -40,6 +40,7 @@ f:
 // CHECK:          Name: .rela.eh_frame
 // CHECK-NEXT:     Type: SHT_RELA
 // CHECK-NEXT:     Flags [
+// CHECK-NEXT:       SHF_INFO_LINK
 // CHECK-NEXT:     ]
 // CHECK-NEXT:     Address: 0x0
 // CHECK-NEXT:     Offset:
index 0941105..b53e75e 100644 (file)
@@ -41,6 +41,7 @@ f:
 // CHECK:          Name: .rela.eh_frame
 // CHECK-NEXT:     Type: SHT_RELA
 // CHECK-NEXT:     Flags [
+// CHECK-NEXT:       SHF_INFO_LINK
 // CHECK-NEXT:     ]
 // CHECK-NEXT:     Address: 0x0
 // CHECK-NEXT:     Offset:
index a30ee1b..d347cc6 100644 (file)
@@ -358,6 +358,7 @@ f37:
 // CHECK:          Name: .rela.eh_frame
 // CHECK-NEXT:     Type: SHT_RELA
 // CHECK-NEXT:     Flags [
+// CHECK-NEXT:       SHF_INFO_LINK
 // CHECK-NEXT:     ]
 // CHECK-NEXT:     Address: 0x0
 // CHECK-NEXT:     Offset:
index 26f60bc..f8469dd 100644 (file)
@@ -33,7 +33,8 @@ late3:
 
 # CHECK:      Name: .rel.llvm.call-graph-profile (28)
 # CHECK-NEXT: Type: SHT_REL (0x9)
-# CHECK-NEXT: Flags [ (0x0)
+# CHECK-NEXT: Flags [ (0x40)
+# CHECK-NEXT:   SHF_INFO_LINK
 # CHECK-NEXT: ]
 # CHECK-NEXT: Address: 0x0
 # CHECK-NEXT: Offset: 0x140
index a74a438..8202adb 100644 (file)
@@ -11,6 +11,7 @@
 // CHECK:          Name: .rela.text
 // CHECK-NEXT:     Type: SHT_RELA
 // CHECK-NEXT:     Flags [
+// CHECK-NEXT:       SHF_INFO_LINK
 // CHECK-NEXT:     ]
 // CHECK-NEXT:     Address: 0x0
 // CHECK-NEXT:     Offset:
index c5351a0..9a33681 100644 (file)
@@ -19,7 +19,8 @@ defined3:
 // CHECK:          Index:
 // CHECK:          Name: .rela.text
 // CHECK-NEXT:     Type: SHT_RELA (0x4)
-// CHECK-NEXT:     Flags [ (0x0)
+// CHECK-NEXT:     Flags [
+// CHECK-NEXT:       SHF_INFO_LINK
 // CHECK-NEXT:     ]
 // CHECK-NEXT:     Address: 0x0
 // CHECK-NEXT:     Offset:
index e7be1f5..627f1d4 100644 (file)
@@ -40,7 +40,8 @@ _proc:
 # STATIC:      Section {
 # STATIC:        Name: .rela.eh_frame
 # STATIC-NEXT:   Type: SHT_RELA
-# STATIC-NEXT:   Flags [ (0x0)
+# STATIC-NEXT:   Flags [
+# STATIC-NEXT:     SHF_INFO_LINK
 # STATIC-NEXT:   ]
 # STATIC-NEXT:   Address:
 # STATIC-NEXT:   Offset:
@@ -81,7 +82,8 @@ _proc:
 # PIC:      Section {
 # PIC:        Name: .rela.eh_frame
 # PIC-NEXT:   Type: SHT_RELA
-# PIC-NEXT:   Flags [ (0x0)
+# PIC-NEXT:   Flags [
+# PIC-NEXT:     SHF_INFO_LINK
 # PIC-NEXT:   ]
 # PIC-NEXT:   Address:
 # PIC-NEXT:   Offset: