mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-07 00:23:43 +00:00
[PECOFF] Truncate long section name.
Executable files do not use a string table, so section names longer than 8 characters are not permitted. Long section names should just be truncated. llvm-svn: 197470
This commit is contained in:
parent
a4acde39e9
commit
1fc1bab8a8
@ -631,12 +631,9 @@ llvm::object::coff_section
|
||||
SectionHeaderTableChunk::createSectionHeader(SectionChunk *chunk) {
|
||||
llvm::object::coff_section header;
|
||||
|
||||
// Section name equal to or shorter than 8 byte fits in the section
|
||||
// header. Longer names should be stored to string table, which is not
|
||||
// implemented yet.
|
||||
// Section name must be equal to or less than 8 characters in the
|
||||
// executable. Longer names will be truncated.
|
||||
StringRef sectionName = chunk->getSectionName();
|
||||
if (sizeof(header.Name) < sectionName.size())
|
||||
llvm_unreachable("Cannot handle section name longer than 8 byte");
|
||||
|
||||
// Name field must be NUL-padded. If the name is exactly 8 byte long,
|
||||
// there's no terminating NUL.
|
||||
|
7
lld/test/pecoff/long-section-name.test
Normal file
7
lld/test/pecoff/long-section-name.test
Normal file
@ -0,0 +1,7 @@
|
||||
# RUN: yaml2obj %p/Inputs/nop.obj.yaml > %t.obj
|
||||
#
|
||||
# RUN: lld -flavor link /out:%t.exe /subsystem:console /entry:start \
|
||||
# RUN: /merge:.text=.longsectionname -- %t.obj
|
||||
# RUN: llvm-readobj -sections %t.exe | FileCheck %s
|
||||
|
||||
CHECK: Name: .longsec (2E 6C 6F 6E 67 73 65 63)
|
Loading…
Reference in New Issue
Block a user