Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[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
- Loading branch information
Showing
3 changed files
with
71 additions
and
9 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
# 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: ] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
# Check the properties of added sections. | ||
# By default, sections are SHT_PROGBITS, but .note sections (excluding | ||
# .note.GNU-stack) are SHT_NOTE sections. | ||
|
||
# RUN: yaml2obj %s > %t.o | ||
# RUN: llvm-objcopy --add-section=.foo=/dev/null %t.o %t-foo.o | ||
# RUN: llvm-objcopy --add-section=.note.foo=/dev/null %t.o %t-regular-note.o | ||
# RUN: llvm-objcopy --add-section=.note.GNU-stack=/dev/null %t.o %t-gnu-stack.o | ||
# RUN: llvm-readelf --sections %t-foo.o | FileCheck %s --check-prefix=NORMAL | ||
# RUN: llvm-readelf --sections %t-regular-note.o | FileCheck %s --check-prefix=NOTE | ||
# RUN: llvm-readelf --sections %t-gnu-stack.o | FileCheck %s --check-prefix=GNU-STACK | ||
|
||
!ELF | ||
FileHeader: | ||
Class: ELFCLASS64 | ||
Data: ELFDATA2LSB | ||
Type: ET_REL | ||
Machine: EM_X86_64 | ||
|
||
# NORMAL: .foo PROGBITS | ||
# NOTE: .note.foo NOTE | ||
# GNU-STACK: .note.GNU-stack PROGBITS |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters