llvm-project/lld/test/ELF/i386-debug-noabs.test
Fangrui Song 3fd1d6953d [ELF] relocateNonAlloc: clean up workaround code
relocateNonAlloc is costly for .debug_* section relocating. We don't
want to burn CPU cycles on other targets' workarounds.

Remove a temporary workaround for Linux objtool after a proper fix
https://git.kernel.org/linus/b8ec60e1186cdcfce41e7db4c827cb107e459002

Move the R_386_GOTPC workaround for GCC<8 beside the R_PC workaround.
2023-12-07 12:43:40 -08:00

35 lines
1.2 KiB
Plaintext

# REQUIRES: x86
# RUN: yaml2obj %s -o %t.o
# RUN: ld.lld %t.o -o /dev/null --entry 0 2>&1 | FileCheck %s
# CHECK: warning: {{.*}}:(.debug_info+0x41f): has non-ABS relocation R_386_GOTPC against symbol '_GLOBAL_OFFSET_TABLE_'
## This is for https://bugs.llvm.org//show_bug.cgi?id=34852. GCC 8.0 or
## earlier have a bug which creates non-absolute R_386_GOTPC relocations
## in non-allocated sections. It is illegal, but we want to make sure that
## lld skips them instead of reporting errors.
--- !ELF
FileHeader:
Class: ELFCLASS32
Data: ELFDATA2LSB
Type: ET_REL
Machine: EM_386
Sections:
- Name: .debug_info
Type: SHT_PROGBITS
AddressAlign: 0x0000000000000001
Content: 0000000000000000
- Name: .rel.debug_info
Type: SHT_REL
Link: .symtab
AddressAlign: 0x0000000000000004
Info: .debug_info
Relocations:
- Offset: 0x000000000000041F
Symbol: _GLOBAL_OFFSET_TABLE_
Type: R_386_GOTPC
Symbols:
- Name: _GLOBAL_OFFSET_TABLE_
Binding: STB_GLOBAL