GNU ld since 2.41 supports this option, which is mildly useful. It omits the section header table and non-ALLOC sections (including .symtab/.strtab (--strip-all)). This option is simple to implement and might be used by LLDB to test program headers parsing without the section header table (#100900). -z sectionheader, which is the default, is also added. Pull Request: https://github.com/llvm/llvm-project/pull/101286
37 lines
1.4 KiB
ArmAsm
37 lines
1.4 KiB
ArmAsm
# REQUIRES: x86
|
|
# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t.o
|
|
# RUN: ld.lld -shared -z nosectionheader -z sectionheader %t.o -o %t.so 2>&1 | count 0
|
|
# RUN: llvm-readelf -hS %t.so | FileCheck %s --check-prefixes=CHECK,SHDR
|
|
|
|
# RUN: ld.lld -shared -z nosectionheader %t.o -o %t0.so
|
|
# RUN: llvm-readelf -h --dyn-syms %t0.so | FileCheck %s --check-prefixes=CHECK,NOSHDR
|
|
# RUN: llvm-strings %t0.so | FileCheck %s --check-prefixes=NOSHDR-STR
|
|
|
|
# CHECK: Size of this header: 64 (bytes)
|
|
# CHECK-NEXT: Size of program headers: 56 (bytes)
|
|
# CHECK-NEXT: Number of program headers: 6
|
|
# CHECK-NEXT: Size of section headers: 64 (bytes)
|
|
# SHDR-NEXT: Number of section headers: 13
|
|
# SHDR-NEXT: Section header string table index: 11
|
|
# NOSHDR-NEXT: Number of section headers: 0
|
|
# NOSHDR-NEXT: Section header string table index: 0
|
|
|
|
# SHDR: Section Headers:
|
|
# NOSHDR: Symbol table for image contains 2 entries:
|
|
# NOSHDR: _start
|
|
|
|
## _start occurs as a dynamic string table entry. There is no static string table
|
|
## entry. `nonalloc` is not in the output.
|
|
# NOSHDR-STR: _start
|
|
# NOSHDR-STR-NOT: _start
|
|
|
|
# RUN: not ld.lld -r -z nosectionheader %t.o -o /dev/null 2>&1 | FileCheck %s --check-prefix=ERR
|
|
|
|
# ERR: error: -r and -z nosectionheader may not be used together
|
|
|
|
.globl _start
|
|
_start:
|
|
|
|
.section nonalloc,""
|
|
.asciz "_start"
|