Files
clang-p2996/llvm/test/tools/llvm-objcopy/ELF/add-note.test
Jordan Rupprecht 17dd4a2c5e [llvm-objcopy] Use SHT_NOTE for added note sections.
Summary:
Fix llvm-objcopy to add .note sections as SHT_NOTEs. GNU objcopy overrides section flags for special sections. For `.note` sections (with the exception of `.note.GNU-stack`), SHT_NOTE is used.

Many other sections are special cased by libbfd, but `.note` is the only special section I can seem to find being used with objcopy --add-section.

See `.note` in context of the full list of special sections here: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob;f=bfd/elf.c;h=eb3e1828e9c651678b95a1dcbc3b124783d1d2be;hb=HEAD#l2675

Reviewers: jhenderson, alexshap, jakehehrlich, espindola

Reviewed By: jhenderson

Subscribers: emaste, arichardson, llvm-commits

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

llvm-svn: 351204
2019-01-15 16:57:23 +00:00

37 lines
1.2 KiB
Plaintext

# Verify that --add-section can be used to add a note section which is
# successfully interpreted by tools that read notes.
# Add [namesz, descsz, type, name, desc] for a build id.
# RUN: echo -e -n "\x04\x00\x00\x00" > %t-note.bin
# RUN: echo -e -n "\x10\x00\x00\x00" >> %t-note.bin
# RUN: echo -e -n "\x03\x00\x00\x00" >> %t-note.bin
# RUN: echo -e -n "GNU\x00" >> %t-note.bin
# RUN: echo -e -n "\x00\x01\x02\x03" >> %t-note.bin
# RUN: echo -e -n "\x04\x05\x06\x07" >> %t-note.bin
# RUN: echo -e -n "\x08\x09\x0a\x0b" >> %t-note.bin
# RUN: echo -e -n "\x0c\x0d\x0e\x0f" >> %t-note.bin
# RUN: yaml2obj %s > %t.o
# RUN: llvm-objcopy --add-section=.note.gnu.build-id=%t-note.bin %t.o %t-with-note.o
# RUN: llvm-readobj --notes %t-with-note.o | FileCheck %s
!ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_REL
Machine: EM_X86_64
# CHECK: Notes [
# CHECK-NEXT: NoteSection {
# CHECK-NEXT: Offset:
# CHECK-NEXT: Size:
# CHECK-NEXT: Note {
# CHECK-NEXT: Owner: GNU
# CHECK-NEXT: Data size: 0x10
# CHECK-NEXT: Type: NT_GNU_BUILD_ID
# CHECK-NEXT: Build ID: 000102030405060708090a0b0c0d0e0f
# CHECK-NEXT: }
# CHECK-NEXT: }
# CHECK-NEXT: ]