Index: lib/ReaderWriter/ELF/Atoms.cpp =================================================================== --- lib/ReaderWriter/ELF/Atoms.cpp +++ lib/ReaderWriter/ELF/Atoms.cpp @@ -71,8 +71,13 @@ return typeGnuLinkOnce; uint64_t flags = _section->sh_flags; - if (!(flags & SHF_ALLOC)) + + if (!(flags & SHF_ALLOC)) { + if (_section->sh_type == SHT_NOTE) + return (flags == SHF_WRITE) ? typeRWNote : typeRONote; return _contentType = typeNoAlloc; + } + if (_section->sh_flags == (SHF_ALLOC | SHF_WRITE | SHF_TLS)) return _section->sh_type == SHT_NOBITS ? typeThreadZeroFill : typeThreadData; Index: test/elf/note.test =================================================================== --- test/elf/note.test +++ test/elf/note.test @@ -1,9 +1,11 @@ # Check that the linker is not ignoring input sections. # RUN: yaml2obj -format=elf %s > %t.obj # RUN: lld -flavor gnu -target x86_64 %t.obj -o %t.exe --noinhibit-exec -# RUN: llvm-objdump -h %t.exe | FileCheck %s +# RUN: llvm-readobj -s %t.exe | FileCheck %s -# CHECK: {{[0-9]+}} .note +# CHECK: Section { +# CHECK: Name: .note +# CHECK-NEXT: Type: SHT_NOTE --- FileHeader: