From f49e0c8d818a863ab70d02eb172ee79c58cf8f8a Mon Sep 17 00:00:00 2001 From: Arthur Eubanks Date: Fri, 14 Apr 2023 11:06:17 -0700 Subject: [PATCH] [MC] Add section flag 'l' for SHF_X86_64_LARGE Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D148358 --- llvm/lib/MC/MCParser/ELFAsmParser.cpp | 5 +++++ llvm/test/MC/ELF/section-flags-unknown.s | 6 +++++- llvm/test/MC/ELF/section.s | 8 ++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/llvm/lib/MC/MCParser/ELFAsmParser.cpp b/llvm/lib/MC/MCParser/ELFAsmParser.cpp index bb42852..7db1bae 100644 --- a/llvm/lib/MC/MCParser/ELFAsmParser.cpp +++ b/llvm/lib/MC/MCParser/ELFAsmParser.cpp @@ -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; diff --git a/llvm/test/MC/ELF/section-flags-unknown.s b/llvm/test/MC/ELF/section-flags-unknown.s index 29fb8bd..90c9185 100644 --- a/llvm/test/MC/ELF/section-flags-unknown.s +++ b/llvm/test/MC/ELF/section-flags-unknown.s @@ -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 diff --git a/llvm/test/MC/ELF/section.s b/llvm/test/MC/ELF/section.s index b5c7126..fb0aaad 100644 --- a/llvm/test/MC/ELF/section.s +++ b/llvm/test/MC/ELF/section.s @@ -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 -- 2.7.4