forked from OSchip/llvm-project
Allow generic ARM cores to match any more specific ARM architecture.
<rdar://problem/15932248> llvm-svn: 212863
This commit is contained in:
parent
fb9519838a
commit
44362e06d1
|
@ -905,6 +905,10 @@ cores_match (const ArchSpec::Core core1, const ArchSpec::Core core2, bool try_in
|
|||
case ArchSpec::kCore_any:
|
||||
return true;
|
||||
|
||||
case ArchSpec::eCore_arm_generic:
|
||||
if (enforce_exact_match)
|
||||
break;
|
||||
// Fall through to case below
|
||||
case ArchSpec::kCore_arm_any:
|
||||
if (core2 >= ArchSpec::kCore_arm_first && core2 <= ArchSpec::kCore_arm_last)
|
||||
return true;
|
||||
|
@ -932,6 +936,8 @@ cores_match (const ArchSpec::Core core1, const ArchSpec::Core core2, bool try_in
|
|||
case ArchSpec::eCore_arm_armv6m:
|
||||
if (!enforce_exact_match)
|
||||
{
|
||||
if (core2 == ArchSpec::eCore_arm_generic)
|
||||
return true;
|
||||
try_inverse = false;
|
||||
if (core2 == ArchSpec::eCore_arm_armv7)
|
||||
return true;
|
||||
|
@ -949,9 +955,11 @@ cores_match (const ArchSpec::Core core1, const ArchSpec::Core core2, bool try_in
|
|||
case ArchSpec::eCore_arm_armv7s:
|
||||
if (!enforce_exact_match)
|
||||
{
|
||||
try_inverse = false;
|
||||
if (core2 == ArchSpec::eCore_arm_generic)
|
||||
return true;
|
||||
if (core2 == ArchSpec::eCore_arm_armv7)
|
||||
return true;
|
||||
try_inverse = false;
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
|
@ -1251,8 +1251,29 @@ ObjectFileELF::GetSectionHeaderInfo(SectionHeaderColl §ion_headers,
|
|||
if (arch_spec.GetTriple ().getOS () == llvm::Triple::OSType::UnknownOS)
|
||||
{
|
||||
arch_spec.SetArchitecture (eArchTypeELF, header.e_machine, LLDB_INVALID_CPUTYPE);
|
||||
arch_spec.GetTriple().setOSName (Host::GetOSString().GetCString());
|
||||
arch_spec.GetTriple().setVendorName(Host::GetVendorString().GetCString());
|
||||
switch (arch_spec.GetAddressByteSize())
|
||||
{
|
||||
case 4:
|
||||
{
|
||||
const ArchSpec host_arch32 = Host::GetArchitecture (Host::eSystemDefaultArchitecture32);
|
||||
if (host_arch32.GetCore() == arch_spec.GetCore())
|
||||
{
|
||||
arch_spec.GetTriple().setOSName (Host::GetOSString().GetCString());
|
||||
arch_spec.GetTriple().setVendorName(Host::GetVendorString().GetCString());
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
{
|
||||
const ArchSpec host_arch64 = Host::GetArchitecture (Host::eSystemDefaultArchitecture64);
|
||||
if (host_arch64.GetCore() == arch_spec.GetCore())
|
||||
{
|
||||
arch_spec.GetTriple().setOSName (Host::GetOSString().GetCString());
|
||||
arch_spec.GetTriple().setVendorName(Host::GetVendorString().GetCString());
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// If there are no section headers we are done.
|
||||
|
|
Loading…
Reference in New Issue