# REQUIRES: x86 ## Test relocations referencing non-STT_SECTION local symbols in SHF_ALLOC and non-SHF_ALLOC sections for -r. # RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t.o # RUN: ld.lld -r -o %t %t.o %t.o # RUN: llvm-readelf -r -x .nonalloc %t | FileCheck --check-prefix=RELA %s # RUN: llvm-mc -filetype=obj -triple=i686 --defsym X86_32=1 %s -o %t1.o # RUN: ld.lld -r -o %t1 %t1.o %t1.o # RUN: llvm-readelf -r -x .nonalloc %t1 | FileCheck --check-prefix=REL %s # RELA: Relocation section '.rela.data' at offset {{.*}} contains 2 entries: # RELA: Offset Info Type Symbol's Value Symbol's Name + Addend # RELA-NEXT: 0000000000000000 {{.*}} R_X86_64_32 0000000000000000 ifunc + 9 # RELA-NEXT: 0000000000000004 {{.*}} R_X86_64_32 0000000000000004 ifunc + 9 # RELA: Relocation section '.rela.nonalloc' at offset {{.*}} contains 2 entries: # RELA: Offset Info Type Symbol's Value Symbol's Name + Addend # RELA-NEXT: 0000000000000000 {{.*}} R_X86_64_32 0000000000000000 ifunc + 9 # RELA-NEXT: 0000000000000004 {{.*}} R_X86_64_32 0000000000000004 ifunc + 9 # RELA: Hex dump of section '.nonalloc': # RELA-NEXT: 0x00000000 00000000 00000000 ........ # REL: Offset Info Type Sym. Value Symbol's Name # REL-NEXT: 00000000 {{.*}} R_386_32 00000000 ifunc # REL-NEXT: 00000004 {{.*}} R_386_32 00000004 ifunc # REL-EMPTY: # REL: Offset Info Type Sym. Value Symbol's Name # REL-NEXT: 00000000 {{.*}} R_386_32 00000000 ifunc # REL-NEXT: 00000004 {{.*}} R_386_32 00000004 ifunc # REL: Hex dump of section '.nonalloc': # REL-NEXT: 0x00000000 09000000 09000000 ........ resolver: ret .type ifunc, @gnu_indirect_function .set ifunc, resolver .data .long ifunc+9 .section .nonalloc ## The relocation references ifunc instead of the STT_SECTION symbol. .long ifunc+9