[llvm] dfb7518 - [MC] Set SHF_INFO_LINK on SHT_REL/SHT_RELA sections

Fangrui Song via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 2 01:00:55 PDT 2021


Author: Fangrui Song
Date: 2021-09-02T01:00:51-07:00
New Revision: dfb7518df18ad420984f965ef5ccfb4e126d839b

URL: https://github.com/llvm/llvm-project/commit/dfb7518df18ad420984f965ef5ccfb4e126d839b
DIFF: https://github.com/llvm/llvm-project/commit/dfb7518df18ad420984f965ef5ccfb4e126d839b.diff

LOG: [MC] Set SHF_INFO_LINK on SHT_REL/SHT_RELA sections

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.

Added: 
    

Modified: 
    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

Removed: 
    


################################################################################
diff  --git a/llvm/lib/MC/ELFObjectWriter.cpp b/llvm/lib/MC/ELFObjectWriter.cpp
index e0ea44626b7f3..410d9964922dd 100644
--- a/llvm/lib/MC/ELFObjectWriter.cpp
+++ b/llvm/lib/MC/ELFObjectWriter.cpp
@@ -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;
 

diff  --git a/llvm/test/ExecutionEngine/RuntimeDyld/SystemZ/cfi-relo-pc64.s b/llvm/test/ExecutionEngine/RuntimeDyld/SystemZ/cfi-relo-pc64.s
index 166d46edbd9ed..29bc6ce9c6c49 100644
--- a/llvm/test/ExecutionEngine/RuntimeDyld/SystemZ/cfi-relo-pc64.s
+++ b/llvm/test/ExecutionEngine/RuntimeDyld/SystemZ/cfi-relo-pc64.s
@@ -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:

diff  --git a/llvm/test/MC/ELF/cfi-adjust-cfa-offset.s b/llvm/test/MC/ELF/cfi-adjust-cfa-offset.s
index e34fc5da73997..1ea60b10e2e58 100644
--- a/llvm/test/MC/ELF/cfi-adjust-cfa-offset.s
+++ b/llvm/test/MC/ELF/cfi-adjust-cfa-offset.s
@@ -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:

diff  --git a/llvm/test/MC/ELF/cfi-advance-loc2.s b/llvm/test/MC/ELF/cfi-advance-loc2.s
index 9226200e63a97..2e9fa59cc8888 100644
--- a/llvm/test/MC/ELF/cfi-advance-loc2.s
+++ b/llvm/test/MC/ELF/cfi-advance-loc2.s
@@ -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:

diff  --git a/llvm/test/MC/ELF/cfi-def-cfa-offset.s b/llvm/test/MC/ELF/cfi-def-cfa-offset.s
index 2d788c18a3951..58edcd4aeed18 100644
--- a/llvm/test/MC/ELF/cfi-def-cfa-offset.s
+++ b/llvm/test/MC/ELF/cfi-def-cfa-offset.s
@@ -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:

diff  --git a/llvm/test/MC/ELF/cfi-def-cfa-register.s b/llvm/test/MC/ELF/cfi-def-cfa-register.s
index 53a77c3fc2790..a9e0e6369505c 100644
--- a/llvm/test/MC/ELF/cfi-def-cfa-register.s
+++ b/llvm/test/MC/ELF/cfi-def-cfa-register.s
@@ -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:

diff  --git a/llvm/test/MC/ELF/cfi-def-cfa.s b/llvm/test/MC/ELF/cfi-def-cfa.s
index 6003327da1704..1f1006319f3dd 100644
--- a/llvm/test/MC/ELF/cfi-def-cfa.s
+++ b/llvm/test/MC/ELF/cfi-def-cfa.s
@@ -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:

diff  --git a/llvm/test/MC/ELF/cfi-escape.s b/llvm/test/MC/ELF/cfi-escape.s
index daedc52eae235..84ab909d1db6e 100644
--- a/llvm/test/MC/ELF/cfi-escape.s
+++ b/llvm/test/MC/ELF/cfi-escape.s
@@ -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:

diff  --git a/llvm/test/MC/ELF/cfi-offset.s b/llvm/test/MC/ELF/cfi-offset.s
index efb8dbe84df8a..f538d50c24d7e 100644
--- a/llvm/test/MC/ELF/cfi-offset.s
+++ b/llvm/test/MC/ELF/cfi-offset.s
@@ -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:

diff  --git a/llvm/test/MC/ELF/cfi-register.s b/llvm/test/MC/ELF/cfi-register.s
index 20a3f44b0df60..fadb46e228b48 100644
--- a/llvm/test/MC/ELF/cfi-register.s
+++ b/llvm/test/MC/ELF/cfi-register.s
@@ -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:

diff  --git a/llvm/test/MC/ELF/cfi-rel-offset.s b/llvm/test/MC/ELF/cfi-rel-offset.s
index 71d8d7c781d19..04549429ed22f 100644
--- a/llvm/test/MC/ELF/cfi-rel-offset.s
+++ b/llvm/test/MC/ELF/cfi-rel-offset.s
@@ -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:

diff  --git a/llvm/test/MC/ELF/cfi-rel-offset2.s b/llvm/test/MC/ELF/cfi-rel-offset2.s
index d5909112599f0..4863b07b3770b 100644
--- a/llvm/test/MC/ELF/cfi-rel-offset2.s
+++ b/llvm/test/MC/ELF/cfi-rel-offset2.s
@@ -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:

diff  --git a/llvm/test/MC/ELF/cfi-remember.s b/llvm/test/MC/ELF/cfi-remember.s
index ffafe785b4840..c7e9a5c92026c 100644
--- a/llvm/test/MC/ELF/cfi-remember.s
+++ b/llvm/test/MC/ELF/cfi-remember.s
@@ -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:

diff  --git a/llvm/test/MC/ELF/cfi-restore.s b/llvm/test/MC/ELF/cfi-restore.s
index bbf339f7fdd9f..71ac1f0f12e95 100644
--- a/llvm/test/MC/ELF/cfi-restore.s
+++ b/llvm/test/MC/ELF/cfi-restore.s
@@ -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:

diff  --git a/llvm/test/MC/ELF/cfi-same-value.s b/llvm/test/MC/ELF/cfi-same-value.s
index 80afaa0f8401d..9ee4b3768ca3b 100644
--- a/llvm/test/MC/ELF/cfi-same-value.s
+++ b/llvm/test/MC/ELF/cfi-same-value.s
@@ -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:

diff  --git a/llvm/test/MC/ELF/cfi-undefined.s b/llvm/test/MC/ELF/cfi-undefined.s
index 32ae2b17a9450..de7f29fd99e42 100644
--- a/llvm/test/MC/ELF/cfi-undefined.s
+++ b/llvm/test/MC/ELF/cfi-undefined.s
@@ -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:

diff  --git a/llvm/test/MC/ELF/cfi-window-save.s b/llvm/test/MC/ELF/cfi-window-save.s
index 8c9db94060496..df70734d8004a 100644
--- a/llvm/test/MC/ELF/cfi-window-save.s
+++ b/llvm/test/MC/ELF/cfi-window-save.s
@@ -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:

diff  --git a/llvm/test/MC/ELF/cfi-zero-addr-delta.s b/llvm/test/MC/ELF/cfi-zero-addr-delta.s
index 094110515373c..b53e75e946e86 100644
--- a/llvm/test/MC/ELF/cfi-zero-addr-delta.s
+++ b/llvm/test/MC/ELF/cfi-zero-addr-delta.s
@@ -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:

diff  --git a/llvm/test/MC/ELF/cfi.s b/llvm/test/MC/ELF/cfi.s
index a30ee1bbbff35..d347cc6259ee8 100644
--- a/llvm/test/MC/ELF/cfi.s
+++ b/llvm/test/MC/ELF/cfi.s
@@ -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:

diff  --git a/llvm/test/MC/ELF/cgprofile.s b/llvm/test/MC/ELF/cgprofile.s
index 26f60bcd8af0a..f8469ddc68877 100644
--- a/llvm/test/MC/ELF/cgprofile.s
+++ b/llvm/test/MC/ELF/cgprofile.s
@@ -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

diff  --git a/llvm/test/MC/ELF/relocation-pc.s b/llvm/test/MC/ELF/relocation-pc.s
index a74a438002b46..8202adb819368 100644
--- a/llvm/test/MC/ELF/relocation-pc.s
+++ b/llvm/test/MC/ELF/relocation-pc.s
@@ -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:

diff  --git a/llvm/test/MC/ELF/rename.s b/llvm/test/MC/ELF/rename.s
index c5351a0be558b..9a33681a5c867 100644
--- a/llvm/test/MC/ELF/rename.s
+++ b/llvm/test/MC/ELF/rename.s
@@ -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:

diff  --git a/llvm/test/MC/PowerPC/ppc64-initial-cfa.s b/llvm/test/MC/PowerPC/ppc64-initial-cfa.s
index e7be1f51ac2c3..627f1d4690623 100644
--- a/llvm/test/MC/PowerPC/ppc64-initial-cfa.s
+++ b/llvm/test/MC/PowerPC/ppc64-initial-cfa.s
@@ -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:


        


More information about the llvm-commits mailing list