[llvm] d5608d6 - MC,test: Improve section group test

Fangrui Song via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 2 00:28:45 PDT 2025


Author: Fangrui Song
Date: 2025-07-02T00:28:40-07:00
New Revision: d5608d6751315f2e34a0445ca7f5be44a1520463

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

LOG: MC,test: Improve section group test

Also add a case for #146581
```
.section sec,"ax"
.section .foo,"axG", at progbits,sec
nop
```

Added: 
    llvm/test/MC/ELF/group.s

Modified: 
    

Removed: 
    llvm/test/MC/ELF/comdat.s


################################################################################
diff  --git a/llvm/test/MC/ELF/comdat.s b/llvm/test/MC/ELF/comdat.s
deleted file mode 100644
index e5862fab9521c..0000000000000
--- a/llvm/test/MC/ELF/comdat.s
+++ /dev/null
@@ -1,100 +0,0 @@
-// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -S --symbols --sd - | FileCheck %s
-
-// Test that we produce the group sections and that they are before the members
-
-// CHECK:        Section {
-// CHECK:          Index: 3
-// CHECK-NEXT:     Name: .group
-// CHECK-NEXT:     Type: SHT_GROUP
-// CHECK-NEXT:     Flags [
-// CHECK-NEXT:     ]
-// CHECK-NEXT:     Address: 0x0
-// CHECK-NEXT:     Offset:
-// CHECK-NEXT:     Size: 12
-// CHECK-NEXT:     Link:
-// CHECK-NEXT:     Info: 1
-// CHECK-NEXT:     AddressAlignment: 4
-// CHECK-NEXT:     EntrySize: 4
-// CHECK-NEXT:     SectionData (
-// CHECK-NEXT:       0000:    01000000 04000000 05000000
-// CHECK-NEXT:     )
-// CHECK-NEXT:   }
-// CHECK:        Section {
-// CHECK:          Index: 6
-// CHECK-NEXT:     Name: .group
-// CHECK-NEXT:     Type: SHT_GROUP
-// CHECK-NEXT:     Flags [
-// CHECK-NEXT:     ]
-// CHECK-NEXT:     Address: 0x0
-// CHECK-NEXT:     Offset:
-// CHECK-NEXT:     Size: 8
-// CHECK-NEXT:     Link:
-// CHECK-NEXT:     Info: 2
-// CHECK-NEXT:     AddressAlignment: 4
-// CHECK-NEXT:     EntrySize: 4
-// CHECK-NEXT:     SectionData (
-// CHECK-NEXT:       0000:    01000000 07000000
-// CHECK-NEXT:     )
-// CHECK-NEXT:   }
-// CHECK:        Section {
-// CHECK:          Index: 8
-// CHECK-NEXT:     Name: .group
-// CHECK-NEXT:     Type: SHT_GROUP
-// CHECK-NEXT:     Flags [
-// CHECK-NEXT:     ]
-// CHECK-NEXT:     Address: 0x0
-// CHECK-NEXT:     Offset:
-// CHECK-NEXT:     Size: 12
-// CHECK-NEXT:     Link:
-// CHECK-NEXT:     Info: 3
-// CHECK-NEXT:     AddressAlignment: 4
-// CHECK-NEXT:     EntrySize: 4
-// CHECK-NEXT:     SectionData (
-// CHECK-NEXT:       0000:    01000000 09000000 0A000000
-// CHECK-NEXT:     )
-// CHECK-NEXT:   }
-
-// Test that g1 and g2 are local, but g3 is an undefined global.
-
-// CHECK:        Symbol {
-// CHECK:          Name: g1
-// CHECK-NEXT:     Value: 0x0
-// CHECK-NEXT:     Size: 0
-// CHECK-NEXT:     Binding: Local
-// CHECK-NEXT:     Type: None
-// CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: .foo
-// CHECK-NEXT:   }
-// CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: g2
-// CHECK-NEXT:     Value: 0x0
-// CHECK-NEXT:     Size: 0
-// CHECK-NEXT:     Binding: Local
-// CHECK-NEXT:     Type: None
-// CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: .group
-// CHECK-NEXT:   }
-
-// CHECK:        Symbol {
-// CHECK:          Name: g3
-// CHECK-NEXT:     Value: 0x0
-// CHECK-NEXT:     Size: 0
-// CHECK-NEXT:     Binding: Global
-// CHECK-NEXT:     Type: None
-// CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: Undefined (0x0)
-// CHECK-NEXT:   }
-
-
-	.section	.foo,"axG", at progbits,g1,comdat
-g1:
-        nop
-
-        .section	.bar,"ax?", at progbits
-        nop
-
-        .section	.zed,"axG", at progbits,g2,comdat
-        nop
-
-        .section	.baz,"axG", at progbits,g3,comdat
-        .long g3

diff  --git a/llvm/test/MC/ELF/group.s b/llvm/test/MC/ELF/group.s
new file mode 100644
index 0000000000000..8f6097e8a66f8
--- /dev/null
+++ b/llvm/test/MC/ELF/group.s
@@ -0,0 +1,59 @@
+# RUN: llvm-mc -filetype=obj -triple x86_64 %s -o %t
+# RUN: llvm-readelf -SsX %t | FileCheck %s
+# RUN: llvm-readelf -g %t | FileCheck %s --check-prefix=GROUP
+
+## Test that we produce the group sections and that they are before the members
+
+# CHECK:       [ 3] .group            GROUP           0000000000000000 {{.*}} 00000c 04     14   1  4
+# CHECK-NEXT:  [ 4] .foo              PROGBITS        0000000000000000 {{.*}} 000001 00 AXG  0   0  1
+# CHECK-NEXT:  [ 5] .bar              PROGBITS        0000000000000000 {{.*}} 000001 00 AXG  0   0  1
+# CHECK-NEXT:  [ 6] .group            GROUP           0000000000000000 {{.*}} 000008 04     14   2  4
+# CHECK-NEXT:  [ 7] .zed              PROGBITS        0000000000000000 {{.*}} 000001 00 AXG  0   0  1
+# CHECK-NEXT:  [ 8] .group            GROUP           0000000000000000 {{.*}} 00000c 04     14   4  4
+# CHECK-NEXT:  [ 9] .baz              PROGBITS        0000000000000000 {{.*}} 000004 00 AXG  0   0  1
+# CHECK-NEXT:  [10] .rela.baz         RELA            0000000000000000 {{.*}} 000018 18   G 14   9  8
+# CHECK-NEXT:  [11] sec               PROGBITS        0000000000000000 {{.*}} 000000 00      0   0  1
+# CHECK-NEXT:  [12] .group            GROUP           0000000000000000 {{.*}} 000008 04     14   3  4
+# CHECK-NEXT:  [13] .qux              PROGBITS        0000000000000000 {{.*}} 000000 00 AXG  0   0  1
+# CHECK-NEXT:  [14] .symtab           SYMTAB
+
+## Test that g1 and g2 are local, but g3 is an undefined global.
+
+# CHECK:      0000000000000000     0 NOTYPE  LOCAL  DEFAULT    4 (.foo)    g1
+# CHECK-NEXT: 0000000000000000     0 NOTYPE  LOCAL  DEFAULT    6 (.group)  g2
+# CHECK-NEXT: 0000000000000000     0 SECTION LOCAL  DEFAULT   11 (sec)     sec
+# CHECK-NEXT: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND           g3
+
+# GROUP:       COMDAT group section [    3] `.group' [g1] contains 2 sections:
+# GROUP-NEXT:     [Index]    Name
+# GROUP-NEXT:     [    4]   .foo
+# GROUP-NEXT:     [    5]   .bar
+# GROUP-EMPTY:
+# GROUP-NEXT:  COMDAT group section [    6] `.group' [g2] contains 1 sections:
+# GROUP-NEXT:     [Index]    Name
+# GROUP-NEXT:     [    7]   .zed
+# GROUP-EMPTY:
+# GROUP-NEXT:  COMDAT group section [    8] `.group' [g3] contains 2 sections:
+# GROUP-NEXT:     [Index]    Name
+# GROUP-NEXT:     [    9]   .baz
+# GROUP-NEXT:     [   10]   .rela.baz
+# GROUP-EMPTY:
+# GROUP-NEXT:  group section [   12] `.group' [] contains 1 sections:
+# GROUP-NEXT:     [Index]    Name
+# GROUP-NEXT:     [   13]   .qux
+
+	.section	.foo,"axG", at progbits,g1,comdat
+g1:
+        nop
+
+        .section	.bar,"ax?", at progbits
+        nop
+
+        .section	.zed,"axG", at progbits,g2,comdat
+        nop
+
+        .section	.baz,"axG", at progbits,g3,comdat
+        .long g3
+
+.section sec
+.section .qux,"axG", at progbits,sec


        


More information about the llvm-commits mailing list