[Lldb-commits] [PATCH] Initial patch for supporting Hexagon DSP

Deepak Panickal deepak at codeplay.com
Tue Feb 18 12:05:21 PST 2014


Thanks Greg, I've removed that change and updated the patch.

Thanks,
Deepak

On 18/02/2014 19:12, Greg Clayton wrote:
> The only thing I don't know about is this:
>
> Index: source/Plugins/DynamicLoader/Static/DynamicLoaderStatic.cpp
> ===================================================================
> --- source/Plugins/DynamicLoader/Static/DynamicLoaderStatic.cpp
> +++ source/Plugins/DynamicLoader/Static/DynamicLoaderStatic.cpp
> @@ -31,7 +31,7 @@
>      {
>          const llvm::Triple &triple_ref = process->GetTarget().GetArchitecture().GetTriple();
>          const llvm::Triple::OSType os_type = triple_ref.getOS();
> -        if ((os_type == llvm::Triple::UnknownOS))
> +        if ((os_type == llvm::Triple::UnknownOS) || (os_type == llvm::Triple::Win32))
>              create = true;
>      }
>
>
> We don't want the DynamicLoaderStatic being used for win32 at all times. You should be specifying your arch and triples as:
>
> (lldb) target create --arch=hexagon-unknown-unknown /path/to/hexagon/binary/a.out
>
> This means there is no OS and then the DynamicLoaderStatic will be chosen correctly.
>
>
> On Feb 18, 2014, at 6:03 AM, Deepak Panickal <deepak2427 at gmail.com> wrote:
>
>> - Have added the architecture variants
>> - Also updated the Static Loader
>> - More commits to follow
>>
>> http://llvm-reviews.chandlerc.com/D2820
>>
>> Files:
>>   include/lldb/Core/ArchSpec.h
>>   source/Core/ArchSpec.cpp
>>   source/Plugins/DynamicLoader/Static/DynamicLoaderStatic.cpp
>>   source/Plugins/Platform/Linux/PlatformLinux.cpp
>>   source/Plugins/Platform/Windows/PlatformWindows.cpp
>>   source/Target/Thread.cpp
>>
>> Index: include/lldb/Core/ArchSpec.h
>> ===================================================================
>> --- include/lldb/Core/ArchSpec.h
>> +++ include/lldb/Core/ArchSpec.h
>> @@ -92,6 +92,10 @@
>>
>>          eCore_x86_64_x86_64,
>>          eCore_x86_64_x86_64h, // Haswell enabled x86_64
>> +        eCore_hexagon_generic,
>> +        eCore_hexagon_hexagonv4,
>> +        eCore_hexagon_hexagonv5,
>> +
>>          eCore_uknownMach32,
>>          eCore_uknownMach64,
>>          kNumCores,
>> @@ -103,6 +107,7 @@
>>          kCore_ppc_any,
>>          kCore_ppc64_any,
>>          kCore_x86_32_any,
>> +        kCore_hexagon_any,
>>
>>          kCore_arm_first     = eCore_arm_generic,
>>          kCore_arm_last      = eCore_arm_xscale,
>> @@ -117,7 +122,10 @@
>>          kCore_ppc64_last    = eCore_ppc64_ppc970_64,
>>
>>          kCore_x86_32_first  = eCore_x86_32_i386,
>> -        kCore_x86_32_last   = eCore_x86_32_i486sx
>> +        kCore_x86_32_last   = eCore_x86_32_i486sx,
>> +
>> +        kCore_hexagon_first  = eCore_hexagon_generic,
>> +        kCore_hexagon_last   = eCore_hexagon_hexagonv5
>>      };
>>
>>      //------------------------------------------------------------------
>> Index: source/Core/ArchSpec.cpp
>> ===================================================================
>> --- source/Core/ArchSpec.cpp
>> +++ source/Core/ArchSpec.cpp
>> @@ -105,6 +105,10 @@
>>
>>      { eByteOrderLittle, 8, 1, 15, llvm::Triple::x86_64 , ArchSpec::eCore_x86_64_x86_64  , "x86_64"    },
>>      { eByteOrderLittle, 8, 1, 15, llvm::Triple::x86_64 , ArchSpec::eCore_x86_64_x86_64h , "x86_64h"   },
>> +    { eByteOrderLittle, 4, 4, 4, llvm::Triple::hexagon , ArchSpec::eCore_hexagon_generic,    "hexagon"   },
>> +    { eByteOrderLittle, 4, 4, 4, llvm::Triple::hexagon , ArchSpec::eCore_hexagon_hexagonv4,  "hexagonv4" },
>> +    { eByteOrderLittle, 4, 4, 4, llvm::Triple::hexagon , ArchSpec::eCore_hexagon_hexagonv5,  "hexagonv5" },
>> +
>>      { eByteOrderLittle, 4, 4, 4 , llvm::Triple::UnknownArch , ArchSpec::eCore_uknownMach32  , "unknown-mach-32" },
>>      { eByteOrderLittle, 8, 4, 4 , llvm::Triple::UnknownArch , ArchSpec::eCore_uknownMach64  , "unknown-mach-64" }
>> };
>> @@ -237,7 +241,8 @@
>>      { ArchSpec::eCore_arm_generic     , llvm::ELF::EM_ARM    , LLDB_INVALID_CPUTYPE, 0xFFFFFFFFu, 0xFFFFFFFFu }, // ARM
>>      { ArchSpec::eCore_sparc9_generic  , llvm::ELF::EM_SPARCV9, LLDB_INVALID_CPUTYPE, 0xFFFFFFFFu, 0xFFFFFFFFu }, // SPARC V9
>>      { ArchSpec::eCore_x86_64_x86_64   , llvm::ELF::EM_X86_64 , LLDB_INVALID_CPUTYPE, 0xFFFFFFFFu, 0xFFFFFFFFu }, // AMD64
>> -    { ArchSpec::eCore_mips64          , llvm::ELF::EM_MIPS   , LLDB_INVALID_CPUTYPE, 0xFFFFFFFFu, 0xFFFFFFFFu }  // MIPS
>> +    { ArchSpec::eCore_mips64          , llvm::ELF::EM_MIPS   , LLDB_INVALID_CPUTYPE, 0xFFFFFFFFu, 0xFFFFFFFFu }, // MIPS
>> +    { ArchSpec::eCore_hexagon_generic , llvm::ELF::EM_HEXAGON, LLDB_INVALID_CPUTYPE, 0xFFFFFFFFu, 0xFFFFFFFFu }  // HEXAGON
>> };
>>
>> static const ArchDefinition g_elf_arch_def = {
>> @@ -919,6 +924,10 @@
>>              if (core2 == ArchSpec::eCore_arm_armv7)
>>                  return true;
>>          }
>> +
>> +    case ArchSpec::kCore_hexagon_any:
>> +        if ((core2 >= ArchSpec::kCore_hexagon_first && core2 <= ArchSpec::kCore_hexagon_last) || (core2 == ArchSpec::kCore_hexagon_any))
>> +            return true;
>>          break;
>>
>>      case ArchSpec::eCore_arm_armv7m:
>> Index: source/Plugins/DynamicLoader/Static/DynamicLoaderStatic.cpp
>> ===================================================================
>> --- source/Plugins/DynamicLoader/Static/DynamicLoaderStatic.cpp
>> +++ source/Plugins/DynamicLoader/Static/DynamicLoaderStatic.cpp
>> @@ -31,7 +31,7 @@
>>      {
>>          const llvm::Triple &triple_ref = process->GetTarget().GetArchitecture().GetTriple();
>>          const llvm::Triple::OSType os_type = triple_ref.getOS();
>> -        if ((os_type == llvm::Triple::UnknownOS))
>> +        if ((os_type == llvm::Triple::UnknownOS) || (os_type == llvm::Triple::Win32))
>>              create = true;
>>      }
>>
>> Index: source/Plugins/Platform/Linux/PlatformLinux.cpp
>> ===================================================================
>> --- source/Plugins/Platform/Linux/PlatformLinux.cpp
>> +++ source/Plugins/Platform/Linux/PlatformLinux.cpp
>> @@ -397,6 +397,8 @@
>>              trap_opcode_size = sizeof(g_i386_breakpoint_opcode);
>>          }
>>          break;
>> +    case ArchSpec::eCore_hexagon_generic:
>> +        return 0;
>>      }
>>
>>      if (bp_site->SetTrapOpcode(trap_opcode, trap_opcode_size))
>> Index: source/Plugins/Platform/Windows/PlatformWindows.cpp
>> ===================================================================
>> --- source/Plugins/Platform/Windows/PlatformWindows.cpp
>> +++ source/Plugins/Platform/Windows/PlatformWindows.cpp
>> @@ -291,6 +291,8 @@
>>          }
>>          break;
>>
>> +    case ArchSpec::eCore_hexagon_generic:
>> +        return 0;
>>      default:
>>          llvm_unreachable("Unhandled architecture in PlatformWindows::GetSoftwareBreakpointTrapOpcode()");
>>          break;
>> Index: source/Target/Thread.cpp
>> ===================================================================
>> --- source/Target/Thread.cpp
>> +++ source/Target/Thread.cpp
>> @@ -2023,6 +2023,7 @@
>>              case llvm::Triple::arm:
>>              case llvm::Triple::thumb:
>>              case llvm::Triple::mips64:
>> +            case llvm::Triple::hexagon:
>>                  m_unwinder_ap.reset (new UnwindLLDB (*this));
>>                  break;
>> <D2820.1.patch>_______________________________________________
>> lldb-commits mailing list
>> lldb-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits
> _______________________________________________
> lldb-commits mailing list
> lldb-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits




More information about the lldb-commits mailing list