[PATCH] D24692: Mark ELF sections whose name start with .note as note

Petr Hosek via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 20 13:30:06 PDT 2016


This revision was automatically updated to reflect the committed changes.
Closed by commit rL282010: Mark ELF sections whose name start with .note as note (authored by phosek).

Changed prior to commit:
  https://reviews.llvm.org/D24692?vs=71974&id=71976#toc

Repository:
  rL LLVM

https://reviews.llvm.org/D24692

Files:
  llvm/trunk/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
  llvm/trunk/test/CodeGen/X86/note-sections.ll

Index: llvm/trunk/test/CodeGen/X86/note-sections.ll
===================================================================
--- llvm/trunk/test/CodeGen/X86/note-sections.ll
+++ llvm/trunk/test/CodeGen/X86/note-sections.ll
@@ -0,0 +1,19 @@
+; RUN: llc -mtriple x86_64-pc-linux < %s | FileCheck %s
+
+%struct.note = type { %struct.Elf32_Nhdr, [7 x i8], %struct.payload }
+%struct.Elf32_Nhdr = type { i32, i32, i32 }
+%struct.payload = type { i16 }
+
+ at foonote = internal constant %struct.note { %struct.Elf32_Nhdr { i32 7, i32 2, i32 17 }, [7 x i8] c"foobar\00", %struct.payload { i16 23 } }, section ".note.foo", align 4
+
+; CHECK:		.section	.note.foo,"a", at note
+; CHECK-NEXT: .p2align	2
+; CHECK-NEXT: foonote:
+; CHECK-NEXT: 	.long	7
+; CHECK-NEXT: 	.long	2
+; CHECK-NEXT: 	.long	17
+; CHECK-NEXT: 	.asciz	"foobar"
+; CHECK-NEXT: 	.zero	1
+; CHECK-NEXT: 	.short	23
+; CHECK-NEXT: 	.zero	2
+; CHECK-NEXT: 	.size	foonote, 24
Index: llvm/trunk/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
===================================================================
--- llvm/trunk/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
+++ llvm/trunk/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
@@ -151,6 +151,11 @@
 
 
 static unsigned getELFSectionType(StringRef Name, SectionKind K) {
+  // Use SHT_NOTE for section whose name starts with ".note" to allow
+  // emitting ELF notes from C variable declaration.
+  // See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77609
+  if (Name.startswith(".note"))
+    return ELF::SHT_NOTE;
 
   if (Name == ".init_array")
     return ELF::SHT_INIT_ARRAY;


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D24692.71976.patch
Type: text/x-patch
Size: 1576 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160920/ef0ad100/attachment.bin>


More information about the llvm-commits mailing list