[Lldb-commits] [PATCH] D31280: [LLDB][MIPS] Fix Core file Architecture and OS information

Pavel Labath via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Thu Mar 23 04:28:45 PDT 2017

labath added inline comments.

Comment at: source/Plugins/Process/elf-core/ProcessElfCore.cpp:675
+      llvm::Triple host_triple(llvm::sys::getDefaultTargetTriple());
+      target_arch.GetTriple().setOS(host_triple.getOS());
+    }
nitesh.jain wrote:
> labath wrote:
> > I'm not terribly happy with the default-to-host mode here, particularly as we already have some code which detects linux in ObjectFileELF::RefineModuleDetailsFromNote. I'm not terribly happy about that either, but I hope we could at least have just one dodgy detection code.
> > 
> > Did you check whether it's possible to extend that function to cover mips as well (probably the NT_FILE part, which searches for some `i386-linux-gnu` paths in the binary) ?
> In our case , files path doesn't contain any Linux string. 
> nin at debian-co3-1:~/LLVM-new/llvm/tools/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/elf-core$ readelf -a linux-mips64el-gnuabi64.core
> ELF Header:
>   Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
>   Class:                             ELF64
>   Data:                              2's complement, little endian
>   Version:                           1 (current)
>   OS/ABI:                            UNIX - System V
>   ABI Version:                       0
>   Type:                              CORE (Core file)
>   Machine:                           MIPS R3000
>   Version:                           0x1
>   Entry point address:               0x0
>   Start of program headers:          64 (bytes into file)
>   Start of section headers:          0 (bytes into file)
>   Flags:                             0x0
>   Size of this header:               64 (bytes)
>   Size of program headers:           56 (bytes)
>   Number of program headers:         6
>   Size of section headers:           0 (bytes)
>   Number of section headers:         0
>   Section header string table index: 0
> There are no sections in this file.
> There are no sections to group in this file.
> Program Headers:
>   Type           Offset             VirtAddr           PhysAddr
>                  FileSiz            MemSiz              Flags  Align
>   NOTE           0x0000000000000190 0x0000000000000000 0x0000000000000000
>                  0x0000000000000644 0x0000000000000000         0x0
>   LOAD           0x0000000000001000 0x0000000120000000 0x0000000000000000
>                  0x0000000000001000 0x0000000000001000  R E    0x1000
>   LOAD           0x0000000000002000 0x000000fff2a60000 0x0000000000000000
>                  0x0000000000001000 0x0000000000001000  R      0x1000
>   LOAD           0x0000000000003000 0x000000fff2a61000 0x0000000000000000
>                  0x0000000000001000 0x0000000000001000  R E    0x1000
>   LOAD           0x0000000000004000 0x000000ffffc01000 0x0000000000000000
>                  0x0000000000002000 0x0000000000002000  RWE    0x1000
>   LOAD           0x0000000000006000 0x000000fffffff000 0x0000000000000000
>                  0x0000000000000000 0x0000000000001000  RWE    0x1000
> There is no dynamic section in this file.
> There are no relocations in this file.
> The decoding of unwind sections for machine type MIPS R3000 is not currently supported.
> Dynamic symbol information is not available for displaying symbols.
> No version information found in this file.
> Displaying notes found at file offset 0x00000190 with length 0x00000644:
>   Owner                 Data size       Description
>   CORE                 0x000001e0       NT_PRSTATUS (prstatus structure)
>   CORE                 0x00000088       NT_PRPSINFO (prpsinfo structure)
>   CORE                 0x00000080       NT_SIGINFO (siginfo_t data)
>   CORE                 0x00000130       NT_AUXV (auxiliary vector)
>   CORE                 0x000000aa       NT_FILE (mapped files)
>     Page size: 4096
>                  Start                 End         Page Offset
>     0x0000000120000000  0x0000000120001000  0x0000000000000000
>         /home/nin/LLVM-new/llvm/tools/lldb/packages/Python/lldbsuite/test/functionalities/postmortem/elf-core/linux-mips64el-gnuabi64.out
That's a good point. In fact that is the case on the x86 core files as well we have checked in as well, as their executables were linked statically. Only, I guess in the x86 case we don't rely on the os that much.

Will this affect the ability of the tests to run reproducibly (on windows for example), or will the os be picked up from the executable if it is present? If it won't then we'll need to think hard about how to make the tests deterministic.



More information about the lldb-commits mailing list