[MC] Add section flag 'l' for SHF_X86_64_LARGE
authorArthur Eubanks <aeubanks@google.com>
Fri, 14 Apr 2023 18:06:17 +0000 (11:06 -0700)
committerArthur Eubanks <aeubanks@google.com>
Sat, 15 Apr 2023 00:29:10 +0000 (17:29 -0700)
Reviewed By: MaskRay

Differential Revision: https://reviews.llvm.org/D148358

llvm/lib/MC/MCParser/ELFAsmParser.cpp
llvm/test/MC/ELF/section-flags-unknown.s
llvm/test/MC/ELF/section.s

index bb42852..7db1bae 100644 (file)
@@ -339,6 +339,11 @@ static unsigned parseSectionFlags(const Triple &TT, StringRef flagsStr,
     case 'G':
       flags |= ELF::SHF_GROUP;
       break;
+    case 'l':
+      if (TT.getArch() != Triple::x86_64)
+        return -1U;
+      flags |= ELF::SHF_X86_64_LARGE;
+      break;
     case 'R':
       if (TT.isOSSolaris())
         flags |= ELF::SHF_SUNW_NODISCARD;
index 29fb8bd..90c9185 100644 (file)
@@ -1,5 +1,6 @@
 ## Some section flags are processor-specific. Reject them for other targets.
-# RUN: not llvm-mc -triple=x86_64 %s -o /dev/null 2>&1 | FileCheck %s --implicit-check-not=error:
+# REQUIRES: riscv-registered-target
+# RUN: not llvm-mc -triple=riscv32 %s -o /dev/null 2>&1 | FileCheck %s --implicit-check-not=error:
 
 # CHECK: {{.*}}.s:[[# @LINE+1]]:34: error: unknown flag
 .section XCORE_SHF_CP_SECTION,"c",@progbits
@@ -12,3 +13,6 @@
 
 # CHECK: {{.*}}.s:[[# @LINE+1]]:30: error: unknown flag
 .section SHF_ARM_PURECODE,"y",@progbits
+
+# CHECK: {{.*}}.s:[[# @LINE+1]]:30: error: unknown flag
+.section SHF_X86_64_LARGE,"l",@progbits
index b5c7126..fb0aaad 100644 (file)
@@ -268,6 +268,14 @@ bar:
 // CHECK-NEXT:       SHF_WRITE
 // CHECK-NEXT:     ]
 
+.section .large,"l"
+// CHECK:        Section {
+// CHECK:          Name: .large
+// CHECK-NEXT:     Type: SHT_PROGBITS
+// CHECK-NEXT:     Flags [
+// CHECK-NEXT:       SHF_X86_64_LARGE
+// CHECK-NEXT:     ]
+
 // Test SHT_LLVM_ODRTAB
 
 .section .odrtab,"e",@llvm_odrtab