[lld] r261747 - Mark R_AARCH64_PREL32 as relative.

Adhemerval Zanella via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 24 08:25:14 PST 2016


It does not solve the shared library creation, I am getting the same
issue: multiple bogus R_AARCH64_RELATIVE creation that trigger
segfault in dynamic linker.

On 24-02-2016 13:15, Rafael Espindola via llvm-commits wrote:
> Author: rafael
> Date: Wed Feb 24 10:15:13 2016
> New Revision: 261747
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=261747&view=rev
> Log:
> Mark R_AARCH64_PREL32 as relative.
> 
> Added:
>     lld/trunk/test/ELF/aarch64-relative.s
> Modified:
>     lld/trunk/ELF/Target.cpp
> 
> Modified: lld/trunk/ELF/Target.cpp
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Target.cpp?rev=261747&r1=261746&r2=261747&view=diff
> ==============================================================================
> --- lld/trunk/ELF/Target.cpp (original)
> +++ lld/trunk/ELF/Target.cpp Wed Feb 24 10:15:13 2016
> @@ -1209,7 +1209,9 @@ AArch64TargetInfo::AArch64TargetInfo() {
>    PltZeroSize = 32;
>  }
>  
> -bool AArch64TargetInfo::isRelRelative(uint32_t Type) const { return false; }
> +bool AArch64TargetInfo::isRelRelative(uint32_t Type) const {
> +  return Type == R_AARCH64_PREL32;
> +}
>  
>  bool AArch64TargetInfo::isTlsGlobalDynamicRel(unsigned Type) const {
>    return Type == R_AARCH64_TLSDESC_ADR_PAGE21 ||
> 
> Added: lld/trunk/test/ELF/aarch64-relative.s
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/aarch64-relative.s?rev=261747&view=auto
> ==============================================================================
> --- lld/trunk/test/ELF/aarch64-relative.s (added)
> +++ lld/trunk/test/ELF/aarch64-relative.s Wed Feb 24 10:15:13 2016
> @@ -0,0 +1,11 @@
> +// REQUIRES: aarch64
> +// RUN: llvm-mc -filetype=obj -triple=aarch64-unknown-freebsd %s -o %t.o
> +// RUN: ld.lld %t.o -o %t.so -shared
> +// RUN: llvm-readobj -r %t.so | FileCheck %s
> +
> +        .Lfoo:
> +        .rodata
> +        .long .Lfoo - .
> +
> +// CHECK:      Relocations [
> +// CHECK-NEXT: ]
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
> 


More information about the llvm-commits mailing list