Skip to content
  1. Apr 07, 2011
    • Stephen Wilson's avatar
      linux: remove ProcessLinux::FindProcesses · 0682ba2f
      Stephen Wilson authored
      This method only needs to be overridden in the remote debugging case,  the
      base class handles the host case.  Since we do not do remote debugging on
      Linux yet and there is a typo that causes a build issue, just remove this
      method for now.
       
      
      llvm-svn: 129069
      0682ba2f
    • Caroline Tice's avatar
      · c1bcafd8
      Caroline Tice authored
      Translate dwarf register numbers to internal register numbers
      before trying to look them up in register contexts, in the 
      emulation callback functions that read & write the frame registers.
      
      llvm-svn: 129037
      c1bcafd8
  2. Apr 06, 2011
  3. Apr 05, 2011
    • Caroline Tice's avatar
      · 3d50b2f7
      Caroline Tice authored
      Convert "process" read/write callback functions to "frame" read/write callback functions.
      
      llvm-svn: 128917
      3d50b2f7
    • Caroline Tice's avatar
      · ad379efc
      Caroline Tice authored
      Add the rest of the mechanisms to make ARM instruction emulation usable/possible.
      
      llvm-svn: 128907
      ad379efc
  4. Apr 04, 2011
    • Greg Clayton's avatar
      Added a speed test to the GDBRemoteCommunicationClient and · 9b1e1cdf
      Greg Clayton authored
      GDBRemoteCommunicationServer classes. This involved adding a new packet
      named "qSpeedTest" which can test the speed of a packet send/response pairs
      using a wide variety of send/recv packet sizes.
      
      Added a few new connection classes: one for shared memory, and one for using
      mach messages (Apple only). The mach message stuff is experimental and not 
      working yet, but added so I don't lose the code. The shared memory stuff
      uses pretty standard calls to setup shared memory.
      
      llvm-svn: 128837
      9b1e1cdf
  5. Apr 01, 2011
  6. Mar 31, 2011
    • Caroline Tice's avatar
      · d20c8d1a
      Caroline Tice authored
      Fix a few typos in the previous commit.
      
      llvm-svn: 128671
      d20c8d1a
    • Caroline Tice's avatar
      · 028b8b7b
      Caroline Tice authored
      Add code to emulate VLD1 (single element to all lanes) ARM instruction.
      
      llvm-svn: 128669
      028b8b7b
    • Caroline Tice's avatar
      · 5901ea7e
      Caroline Tice authored
      Add code to emulate VST1 (single element from one lane) ARM
      instruction (more floating point stores).
      
      llvm-svn: 128661
      5901ea7e
    • Caroline Tice's avatar
      · d64a0814
      Caroline Tice authored
      Add code to emulate VST1 (multiple single elements) ARM
      instruction (floating point store).
      
      llvm-svn: 128656
      d64a0814
    • Caroline Tice's avatar
      · bc2b96b6
      Caroline Tice authored
      Add code to emulate VLD1 (single element to one lane) floating point
      register load instruction (ARM) .
      
      llvm-svn: 128646
      bc2b96b6
    • Caroline Tice's avatar
      · 31d8498f
      Caroline Tice authored
      Add code to emulate VLD1 (multiple single elements) ARM instruction.
      
      llvm-svn: 128637
      31d8498f
    • Caroline Tice's avatar
      · 8e4ed855
      Caroline Tice authored
      Add code to emulate VSTR ARM instruction (store a floating point register).
      
      llvm-svn: 128614
      8e4ed855
    • Caroline Tice's avatar
      · df6dec75
      Caroline Tice authored
      Add code to emulate the VLDR Arm instruction (load a floating poitn register).
      
      llvm-svn: 128613
      df6dec75
    • Caroline Tice's avatar
      · b5c6a3e5
      Caroline Tice authored
      Add "Bits64" utility function.
      
      Add code to emulate VSTM ARM instruction (store multiple floating point registers).
      
      llvm-svn: 128609
      b5c6a3e5
    • Greg Clayton's avatar
      Added some functions to our API related to classifying symbols as code, data, · 05d2b7f7
      Greg Clayton authored
      const data, etc, and also for SBAddress objects to classify their type of
      section they are in and also getting the module for a section offset address.
      
          lldb::SymbolType SBSymbol::GetType();
          
          lldb::SectionType SBAddress::GetSectionType ();
          lldb::SBModule SBAddress::GetModule ();
      
      llvm-svn: 128602
      05d2b7f7
    • Jim Ingham's avatar
      Convert ValueObject to explicitly maintain the Execution Context in which they... · 6035b67d
      Jim Ingham authored
      Convert ValueObject to explicitly maintain the Execution Context in which they were created, and then use that when they update themselves.  That means all the ValueObject evaluate me type functions that used to require a Frame object now do not.  I didn't remove the SBValue API's that take this now useless frame, but I added ones that don't require the frame, and marked the SBFrame taking ones as deprecated.
      
      llvm-svn: 128593
      6035b67d
    • Jim Ingham's avatar
    • Caroline Tice's avatar
      · 920c6c98
      Caroline Tice authored
      Modify ARM instruction tables to allow for specifying floating point variants.
      
      Add code to emulate VLDM ARM instruction (loading multiplt floating point registers).
      
      Add function declarations for other floating point instructions to emulate.
      
      llvm-svn: 128589
      920c6c98
    • Jim Ingham's avatar
      Add a LaunchSimple API that is nicer to use for quick scripts. · 270684de
      Jim Ingham authored
      llvm-svn: 128588
      270684de
  7. Mar 30, 2011
    • Johnny Chen's avatar
      A a simple test file for some lldb 'platform' commands. · c6401791
      Johnny Chen authored
      Add a missing result.SetStatus() stmt to the CommandObjectPlatformList::Execute() impl.
      
      llvm-svn: 128575
      c6401791
    • Caroline Tice's avatar
      · 55bff33b
      Caroline Tice authored
      Fill in code for EmulateSTRDImm and EmulateSTRDReg, to emulate the
      STRD (immediate) and STRD (register) instructions.
      
      llvm-svn: 128570
      55bff33b
    • Greg Clayton's avatar
      Many improvements to the Platform base class and subclasses. The base Platform · 32e0a750
      Greg Clayton authored
      class now implements the Host functionality for a lot of things that make 
      sense by default so that subclasses can check:
      
      int
      PlatformSubclass::Foo ()
      {
          if (IsHost())
              return Platform::Foo (); // Let the platform base class do the host specific stuff
          
          // Platform subclass specific code...
          int result = ...
          return result;
      }
      
      Added new functions to the platform:
      
          virtual const char *Platform::GetUserName (uint32_t uid);
          virtual const char *Platform::GetGroupName (uint32_t gid);
      
      The user and group names are cached locally so that remote platforms can avoid
      sending packets multiple times to resolve this information.
      
      Added the parent process ID to the ProcessInfo class. 
      
      Added a new ProcessInfoMatch class which helps us to match processes up
      and changed the Host layer over to using this new class. The new class allows
      us to search for processs:
      1 - by name (equal to, starts with, ends with, contains, and regex)
      2 - by pid
      3 - And further check for parent pid == value, uid == value, gid == value, 
          euid == value, egid == value, arch == value, parent == value.
          
      This is all hookup up to the "platform process list" command which required
      adding dumping routines to dump process information. If the Host class 
      implements the process lookup routines, you can now lists processes on 
      your local machine:
      
      machine1.foo.com % lldb
      (lldb) platform process list 
      PID    PARENT USER       GROUP      EFF USER   EFF GROUP  TRIPLE                   NAME
      ====== ====== ========== ========== ========== ========== ======================== ============================
      99538  1      username   usergroup  username   usergroup  x86_64-apple-darwin      FileMerge
      94943  1      username   usergroup  username   usergroup  x86_64-apple-darwin      mdworker
      94852  244    username   usergroup  username   usergroup  x86_64-apple-darwin      Safari
      94727  244    username   usergroup  username   usergroup  x86_64-apple-darwin      Xcode
      92742  92710  username   usergroup  username   usergroup  i386-apple-darwin        debugserver
      
      
      This of course also works remotely with the lldb-platform:
      
      machine1.foo.com % lldb-platform --listen 1234
      
      machine2.foo.com % lldb
      (lldb) platform create remote-macosx
        Platform: remote-macosx
       Connected: no
      (lldb) platform connect connect://localhost:1444
        Platform: remote-macosx
          Triple: x86_64-apple-darwin
      OS Version: 10.6.7 (10J869)
          Kernel: Darwin Kernel Version 10.7.0: Sat Jan 29 15:17:16 PST 2011; root:xnu-1504.9.37~1/RELEASE_I386
        Hostname: machine1.foo.com
       Connected: yes
      (lldb) platform process list 
      PID    PARENT USER       GROUP      EFF USER   EFF GROUP  TRIPLE                   NAME
      ====== ====== ========== ========== ========== ========== ======================== ============================
      99556  244    username   usergroup  username   usergroup  x86_64-apple-darwin      trustevaluation
      99548  65539  username   usergroup  username   usergroup  x86_64-apple-darwin      lldb
      99538  1      username   usergroup  username   usergroup  x86_64-apple-darwin      FileMerge
      94943  1      username   usergroup  username   usergroup  x86_64-apple-darwin      mdworker
      94852  244    username   usergroup  username   usergroup  x86_64-apple-darwin      Safari
      
      The lldb-platform implements everything with the Host:: layer, so this should
      "just work" for linux. I will probably be adding more stuff to the Host layer
      for launching processes and attaching to processes so that this support should
      eventually just work as well.
      
      Modified the target to be able to be created with an architecture that differs
      from the main executable. This is needed for iOS debugging since we can have
      an "armv6" binary which can run on an "armv7" machine, so we want to be able
      to do:
      
      % lldb
      (lldb) platform create remote-ios
      (lldb) file --arch armv7 a.out
      
      Where "a.out" is an armv6 executable. The platform then can correctly decide
      to open all "armv7" images for all dependent shared libraries.
      
      Modified the disassembly to show the current PC value. Example output:
      
      (lldb) disassemble --frame
      a.out`main:
         0x1eb7:  pushl  %ebp
         0x1eb8:  movl   %esp, %ebp
         0x1eba:  pushl  %ebx
         0x1ebb:  subl   $20, %esp
         0x1ebe:  calll  0x1ec3                   ; main + 12 at test.c:18
         0x1ec3:  popl   %ebx
      -> 0x1ec4:  calll  0x1f12                   ; getpid
         0x1ec9:  movl   %eax, 4(%esp)
         0x1ecd:  leal   199(%ebx), %eax
         0x1ed3:  movl   %eax, (%esp)
         0x1ed6:  calll  0x1f18                   ; printf
         0x1edb:  leal   213(%ebx), %eax
         0x1ee1:  movl   %eax, (%esp)
         0x1ee4:  calll  0x1f1e                   ; puts
         0x1ee9:  calll  0x1f0c                   ; getchar
         0x1eee:  movl   $20, (%esp)
         0x1ef5:  calll  0x1e6a                   ; sleep_loop at test.c:6
         0x1efa:  movl   $12, %eax
         0x1eff:  addl   $20, %esp
         0x1f02:  popl   %ebx
         0x1f03:  leave
         0x1f04:  ret
         
      This can be handy when dealing with the new --line options that was recently
      added:
      
      (lldb) disassemble --line
      a.out`main + 13 at test.c:19
         18  	{
      -> 19  		printf("Process: %i\n\n", getpid());
         20  	    puts("Press any key to continue..."); getchar();
      -> 0x1ec4:  calll  0x1f12                   ; getpid
         0x1ec9:  movl   %eax, 4(%esp)
         0x1ecd:  leal   199(%ebx), %eax
         0x1ed3:  movl   %eax, (%esp)
         0x1ed6:  calll  0x1f18                   ; printf
      
      Modified the ModuleList to have a lookup based solely on a UUID. Since the
      UUID is typically the MD5 checksum of a binary image, there is no need
      to give the path and architecture when searching for a pre-existing
      image in an image list.
      
      Now that we support remote debugging a bit better, our lldb_private::Module
      needs to be able to track what the original path for file was as the platform
      knows it, as well as where the file is locally. The module has the two 
      following functions to retrieve both paths:
      
      const FileSpec &Module::GetFileSpec () const;
      const FileSpec &Module::GetPlatformFileSpec () const;
      
      llvm-svn: 128563
      32e0a750
    • Caroline Tice's avatar
      · 23443245
      Caroline Tice authored
      Fill in EmulateLDRDRegister to emulate LDRD (register) instruction.
      
      Remove stubs for functions not-to-be-implemented at the moment.
      
      llvm-svn: 128559
      23443245
    • Caroline Tice's avatar
      · f0901227
      Caroline Tice authored
      Fill in EmulateLDRLImmediate to emulate the LDRD (immediate) ARM instruction.
      
      llvm-svn: 128556
      f0901227
    • Stephen Wilson's avatar
      linux: create thread plans for stepping thru PLT entries · 46428054
      Stephen Wilson authored
          
      Using the new synthetic symbols generated by ObjectFileELF, have the Linux
      dynamic loader plugin generate a thread plan that will take us thru a PLT entry
      to the corresponding target function.
      
      llvm-svn: 128552
      46428054
    • Stephen Wilson's avatar
      elf: synthesize symbols for PLT entries · 499b40e8
      Stephen Wilson authored
          
      When populating symbol tables ObjectFileELF now generates a set of synthetic
      trampoline symbols.  These new symbols correspond to entries in the program
      linkage table and have a (possibly mangled) name identifying the corresponding
      symbol in some DSO.  These symbols will be used by the DynamicLoader loader
      plugin on Linux to provide thread plans when execution flows from one DSO to
      another.
      
      llvm-svn: 128550
      499b40e8
    • Caroline Tice's avatar
      · e746dbf8
      Caroline Tice authored
      Fix typo in previous check-in.
      
      llvm-svn: 128549
      e746dbf8
    • Stephen Wilson's avatar
      elf: add support for ELF relocation entries · 43fe645b
      Stephen Wilson authored
      llvm-svn: 128548
      43fe645b
    • Stephen Wilson's avatar
      · 84ffe703
      Stephen Wilson authored
      linux: initial support for 'real' signal handling
      
      This patch upgrades the Linux process plugin to handle a larger range of signal
      events.  For example, we can detect when the inferior has "crashed" and why,
      interrupt a running process, deliver an arbitrary signal, and so on.
      
      llvm-svn: 128547
      84ffe703
    • Caroline Tice's avatar
      · 527637d6
      Caroline Tice authored
      Fill in EmulateSTRImmARM to emulate the STR (immediate,ARM) instruction.
      
      llvm-svn: 128528
      527637d6
    • Caroline Tice's avatar
      · a0e8cd5e
      Caroline Tice authored
      Fill in EmulateSTRBImmARM to emulate the STRB (immediate, ARM) instruction.
      
      llvm-svn: 128527
      a0e8cd5e
    • Caroline Tice's avatar
      · 4cee4bd9
      Caroline Tice authored
      Fill in EmulateSTREX to emulate the STREX ARM instruction.
      
      llvm-svn: 128525
      4cee4bd9
    • Stephen Wilson's avatar
      Unfortunately, sranddev() is not available on all platforms so seed using the · dc91686f
      Stephen Wilson authored
      current time instead.
      
      llvm-svn: 128514
      dc91686f
Loading