[Hexagon] Linux linker does not support .gnu-hash
Hexagon Linux dynamic loader does not use (in fact does not support) .gnu-hash Differential Revision: https://reviews.llvm.org/D28865 llvm-svn: 292496
This commit is contained in:
parent
5f2f53b106
commit
1952acf958
|
@ -4122,6 +4122,7 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
|
|||
|
||||
const bool IsAndroid = Triple.isAndroid();
|
||||
const bool IsMips = isMipsArch(Arch);
|
||||
const bool IsHexagon = Arch == llvm::Triple::hexagon;
|
||||
|
||||
if (IsMips && !SysRoot.empty())
|
||||
ExtraOpts.push_back("--sysroot=" + SysRoot);
|
||||
|
@ -4131,7 +4132,8 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
|
|||
// .gnu.hash needs symbols to be grouped by hash code whereas the MIPS
|
||||
// ABI requires a mapping between the GOT and the symbol table.
|
||||
// Android loader does not support .gnu.hash.
|
||||
if (!IsMips && !IsAndroid) {
|
||||
// Hexagon linker/loader does not support .gnu.hash
|
||||
if (!IsMips && !IsAndroid && !IsHexagon) {
|
||||
if (Distro.IsRedhat() || Distro.IsOpenSUSE() ||
|
||||
(Distro.IsUbuntu() && Distro >= Distro::UbuntuMaverick))
|
||||
ExtraOpts.push_back("--hash-style=gnu");
|
||||
|
|
|
@ -705,6 +705,14 @@
|
|||
// CHECK-PPC64LE-ELFv2: "-m" "elf64lppc"
|
||||
// CHECK-PPC64LE-ELFv2: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld64.so.2"
|
||||
//
|
||||
// Check that we do not pass --hash-style=gnu or --hash-style=both to
|
||||
// hexagon linux linker
|
||||
// RUN: %clang %s -### -o %t.o 2>&1 \
|
||||
// RUN: --target=hexagon-linux-gnu \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-HEXAGON %s
|
||||
// CHECK-HEXAGON: "{{.*}}hexagon-link{{(.exe)?}}"
|
||||
// CHECK-HEXAGON-NOT: "--hash-style={{gnu|both}}"
|
||||
//
|
||||
// Check that we do not pass --hash-style=gnu and --hash-style=both to linker
|
||||
// and provide correct path to the dynamic linker and emulation mode when build
|
||||
// for MIPS platforms.
|
||||
|
|
Loading…
Reference in New Issue