In glibc libc.so.6, the multiple versions of sys_errlist share the same Symbol instance. When sys_errlist is copy relocated, we would replace SharedSymbol with Defined in the first iteration of the following loop: for (SharedSymbol *Sym : getSymbolsAt<ELFT>(SS)) Then in the second iteration, we think the symbol (which has been changed to Defined) is still SharedSymbol and screw up (the address ends up in the `Size` field). llvm-svn: 334432
16 lines
478 B
ArmAsm
16 lines
478 B
ArmAsm
// REQUIRES: x86
|
|
// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
|
|
// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %p/Inputs/copy-rel-version.s -o %t1.o
|
|
// RUN: echo "v1 {}; v2 {};" > %t.ver
|
|
// RUN: ld.lld %t1.o -shared -soname t1.so --version-script=%t.ver -o %t1.so
|
|
// RUN: ld.lld %t.o %t1.so -o %t
|
|
// RUN: llvm-readobj -t %t | FileCheck %s
|
|
|
|
.global _start
|
|
_start:
|
|
leaq foo, %rax
|
|
|
|
// CHECK: Name: foo (
|
|
// CHECK-NEXT: Value:
|
|
// CHECK-NEXT: Size: 8
|