<div dir="ltr"><div style="font-size:12.8px">Hi All,</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">Below is a sample example, where target.source-map seems to have a limitation. The limitation seems to be because </div><div style="font-size:12.8px">1. lldb does not have an equivalent command like directory in gdb</div><div style="font-size:12.8px">2. target.source-map does not accept multiple mapping entries. I checked this only with freebsd.</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">(lldb) settings show target.source-map</div><div style="font-size:12.8px">target.source-map (path-map) =</div><div style="font-size:12.8px">[0] "/home/karnajitw/lldb_test_exe<wbr>cs/test_source_line1" -> "/u/test/test_source_line1"</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">3. Haven't checked in the code yet, but if we see the mappings of scenario 1, they all point to a single real path /home/karnajitw/lldb_test_exec<wbr>s/test_source_line1. But looks like the mapping logic only considers strings into account. But, at the same time, I am not claiming that they should be interpreted as path from a different machine during the mapping.</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">I want to check on this issue in-depth. But before that, want to confirm if this is real issue or there are other ways to deal these scenarios which I am not aware of?</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">I am referring below link for the lldb commands.</div><div style="font-size:12.8px"><a href="https://lldb.llvm.org/lldb-gdb.html" target="_blank">https://lldb.llvm.org/lldb-gdb<wbr>.html</a></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">1. First scenario: Different souce file path representation</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">[/home/karnajitw/lldb_test_exe<wbr>cs/test_source_line1] $ clang -O0 -g /home/karnajitw/lldb_test_exec<wbr>s///test_source_line1/main.c /home/karnajitw/lldb_test_exec<wbr>s/../lldb_test_execs/test_sour<wbr>ce_line1/a/ainc.c /home/karnajitw/lldb_test_exec<wbr>s/test_source_line1/a/b/binc.c</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">Machine 1: /home/karnajitw/lldb_test_exec<wbr>s/test_source_line1 -> Machine 2: /u/test/test_source_line1</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">test_source_line1</div><div style="font-size:12.8px">|-- a</div><div style="font-size:12.8px">|   |-- ainc.c</div><div style="font-size:12.8px">|   |-- ainc.h</div><div style="font-size:12.8px">|   `-- b</div><div style="font-size:12.8px">|       |-- binc.c</div><div style="font-size:12.8px">|       `-- binc.h</div><div style="font-size:12.8px">|-- a.out</div><div style="font-size:12.8px">`-- main.c</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">% ./lldb test_source_line1/a.out</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">(lldb) target create "test_source_line1/a.out"</div><div style="font-size:12.8px">Current executable set to 'test_source_line1/a.out' (x86_64).</div><div style="font-size:12.8px">(lldb) l main<br></div><div style="font-size:12.8px">File: /home/karnajitw/lldb_test_exec<wbr>s///test_source_line1/main.c</div><div style="font-size:12.8px">(lldb) l afn</div><div style="font-size:12.8px">File: /home/karnajitw/lldb_test_exec<wbr>s/../lldb_test_execs/test_sour<wbr>ce_line1/a/ainc.c</div><div style="font-size:12.8px">(lldb) l bfn</div><div style="font-size:12.8px">File: /home/karnajitw/lldb_test_exec<wbr>s/test_source_line1/a/b/binc.c</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">(lldb) settings set target.source-map /home/karnajitw/lldb_test_exec<wbr>s///test_source_line1 /u/test/test_source_line1</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">(lldb) l main</div><div style="font-size:12.8px">File: /home/karnajitw/lldb_test_exec<wbr>s///test_source_line1/main.c</div><div style="font-size:12.8px">   1    #include "a/ainc.h"</div><div style="font-size:12.8px">   2</div><div style="font-size:12.8px">   3    int main()</div><div style="font-size:12.8px">   4    {</div><div style="font-size:12.8px">   5      afn();</div><div style="font-size:12.8px">   6</div><div style="font-size:12.8px">   7      bfn();</div><div style="font-size:12.8px">   8</div><div style="font-size:12.8px">   9      return 0;</div><div style="font-size:12.8px">   10   }</div><div style="font-size:12.8px">(lldb) l afn</div><div style="font-size:12.8px">File: /home/karnajitw/lldb_test_exec<wbr>s/../lldb_test_execs/test_sour<wbr>ce_line1/a/ainc.c</div><div style="font-size:12.8px">(lldb) l bfn</div><div style="font-size:12.8px">File: /home/karnajitw/lldb_test_exec<wbr>s/test_source_line1/a/b/binc.c</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">(lldb) settings set target.source-map /home/karnajitw/lldb_test_exec<wbr>s/../lldb_test_execs/test_sour<wbr>ce_line1 /u/test/test_source_line1</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">(lldb) l main</div><div style="font-size:12.8px">File: /home/karnajitw/lldb_test_exec<wbr>s///test_source_line1/main.c</div><div style="font-size:12.8px">(lldb) l afn</div><div style="font-size:12.8px">File: /home/karnajitw/lldb_test_exec<wbr>s/../lldb_test_execs/test_sour<wbr>ce_line1/a/ainc.c</div><div style="font-size:12.8px">   1    #include <stdio.h></div><div style="font-size:12.8px">   2    #include "ainc.h"</div><div style="font-size:12.8px">   3</div><div style="font-size:12.8px">   4    void afn()</div><div style="font-size:12.8px">   5    {</div><div style="font-size:12.8px">   6      printf("Hello this is afn...\n");</div><div style="font-size:12.8px">   7    }</div><div style="font-size:12.8px">(lldb) l bfn</div><div style="font-size:12.8px">File: /home/karnajitw/lldb_test_exec<wbr>s/test_source_line1/a/b/binc.c</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">(lldb) settings set target.source-map /home/karnajitw/lldb_test_exec<wbr>s/test_source_line1 /u/test/test_source_line1</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">(lldb) l main</div><div style="font-size:12.8px">File: /home/karnajitw/lldb_test_exec<wbr>s///test_source_line1/main.c</div><div style="font-size:12.8px">(lldb) l afn</div><div style="font-size:12.8px">File: /home/karnajitw/lldb_test_exec<wbr>s/../lldb_test_execs/test_sour<wbr>ce_line1/a/ainc.c</div><div style="font-size:12.8px">(lldb) l bfn</div><div style="font-size:12.8px">File: /home/karnajitw/lldb_test_exec<wbr>s/test_source_line1/a/b/binc.c</div><div style="font-size:12.8px">   1    #include <stdio.h></div><div style="font-size:12.8px">   2    #include "binc.h"</div><div style="font-size:12.8px">   3</div><div style="font-size:12.8px">   4    void bfn()</div><div style="font-size:12.8px">   5    {</div><div style="font-size:12.8px">   6      printf("Hello this is bfn...\n");</div><div style="font-size:12.8px">   7    }</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">2. Scenario 2: Deep directory structure</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px"><top>/obj/a/b/c/d/e/app/sub/..<wbr>/../../../../../../../src/a/b/<wbr>c/d/e/app/sub/file</div><div style="font-size:12.8px"><top>/obj/a/b/c/d/e/app/../../<wbr>../../../../../src/a/b/c/d/e/a<wbr>pp/file</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">- If we carry the copy the source file to machine 2, we cannot easily map the source file without creating dummy <top>/obj/a/b/c/d/e/f/g.</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">3. Scenario 3: External libraries</div><div style="font-size:12.8px">- I haven't exactly tested this yet. But I belive in scenario too we might need to change the source-map.</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">Please look into this and guide me for the same.</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">Regards,</div><div style="font-size:12.8px">Karan</div></div>