diff --git a/llvm/lib/Target/X86/X86AsmPrinter.cpp b/llvm/lib/Target/X86/X86AsmPrinter.cpp --- a/llvm/lib/Target/X86/X86AsmPrinter.cpp +++ b/llvm/lib/Target/X86/X86AsmPrinter.cpp @@ -643,7 +643,8 @@ OutStreamer->SwitchSection(Nt); // Emitting note header. - int WordSize = TT.isArch64Bit() ? 8 : 4; + const int WordSize = + TT.isArch64Bit() && TT.getEnvironment() != Triple::GNUX32 ? 8 : 4; emitAlignment(WordSize == 4 ? Align(4) : Align(8)); OutStreamer->emitIntValue(4, 4 /*size*/); // data size for "GNU\0" OutStreamer->emitIntValue(8 + WordSize, 4 /*size*/); // Elf_Prop size diff --git a/llvm/test/CodeGen/X86/note-cet-property.ll b/llvm/test/CodeGen/X86/note-cet-property.ll --- a/llvm/test/CodeGen/X86/note-cet-property.ll +++ b/llvm/test/CodeGen/X86/note-cet-property.ll @@ -1,5 +1,6 @@ ; RUN: llc -mtriple i686-pc-linux < %s | FileCheck %s --check-prefix=X86 ; RUN: llc -mtriple x86_64-pc-linux < %s | FileCheck %s --check-prefix=X86_64 +; RUN: llc -mtriple x86_64-pc-linux-gnux32 < %s | FileCheck %s --check-prefix=X86 ; This test checks that the compiler emits a .note.gnu.property section for ; modules with "cf-protection" module flags.