Files
llvm/test/tools/llvm-objcopy/ELF/invalid-e_shoff.test
T
George Rimar 38d4353156 [yaml2obj][obj2yaml] - Do not create a symbol table by default.
This patch tries to resolve problems faced in D68943
and uses some of the code written by Konrad Wilhelm Kleine
in that patch.

Previously, yaml2obj tool always created a .symtab section.
This patch changes that. With it we only create it when
have a "Symbols:" tag in the YAML document or when
we need to create it because it is used by another section(s).

obj2yaml follows the new behavior and does not print "Symbols:"
anymore when there is no symbol table.

Differential revision: https://reviews.llvm.org/D69041

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@375361 91177308-0d34-0410-b5e6-96231b3b80d8
2019-10-20 14:47:17 +00:00

34 lines
1.3 KiB
Plaintext

## If the e_shoff field is set to a value either past the end of the file, or
## such that e_shoff + e_shnum * sizeof(Elf_Shdr) is past the end of the file,
## we should emit an error. This test checks that the emitted error is sensible.
# RUN: yaml2obj %s -o %t.o
# RUN: cp %t.o %t2.o
## Sanity check that the section header table is at offset 64:
# RUN: llvm-readobj --file-headers %t.o | FileCheck %s --check-prefix=VALIDATE
# VALIDATE: SectionHeaderOffset: 0x80{{$}}
## Truncate the file to end before the section header table ends.
# RUN: %python -c "with open('%/t.o', 'r+b') as input: input.truncate(0x7f)"
# RUN: not llvm-objcopy %t.o 2>&1 | FileCheck %s -DINPUT=%t.o --check-prefix=CASE1
# CASE1: error: '[[INPUT]]': section header table goes past the end of the file: e_shoff = 0x80
## Set the e_shoff field to a value much larger than the object file size.
# RUN: %python -c "with open('%/t2.o', 'r+b') as input: import struct; bytes = struct.pack('<Q', 0x40000000); input.seek(40); input.write(bytes)"
# RUN: not llvm-objcopy %t2.o 2>&1 | FileCheck %s -DINPUT=%t2.o --check-prefix=CASE2
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_EXEC
Machine: EM_X86_64
Sections:
- Name: .foo
Type: SHT_PROGBITS
Symbols: []
# CASE2: error: '[[INPUT]]': section header table goes past the end of the file: e_shoff = 0x40000000