[Lldb-commits] [PATCH] D35784: [LLD][MIPS] Fix Address::GetAddressClass() to return correct AddressClass based on the load address

Nitesh Jain via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Wed Jul 26 05:49:47 PDT 2017

nitesh.jain added a comment.

In https://reviews.llvm.org/D35784#820237, @clayborg wrote:

> Looking at an ELF file with DWARF, I see:
>   (lldb) image dump sections 
>   Dumping sections for 1 modules.
>   Sections for '/Volumes/android/aosp/out/target/product/generic/symbols/system/lib/libart.so' (arm):
>     SectID     Type             File Address                             Perm File Off.  File Size  Flags      Section Name
>     ---------- ---------------- ---------------------------------------  ---- ---------- ---------- ---------- ----------------------------
>     0x00000001 regular                                                   ---  0x00000000 0x00000000 0x00000000 libart.so.
>     0x00000002 regular          [0x0000000000000154-0x0000000000000167)  r--  0x00000154 0x00000013 0x00000002 libart.so..interp
>     0x00000003 elf-dynamic-symbols [0x0000000000000168-0x0000000000010d18)  r--  0x00000168 0x00010bb0 0x00000002 libart.so..dynsym
>     0x00000004 regular          [0x0000000000010d18-0x000000000005228f)  r--  0x00010d18 0x00041577 0x00000002 libart.so..dynstr
>     0x00000005 regular          [0x0000000000052290-0x000000000005a590)  r--  0x00052290 0x00008300 0x00000002 libart.so..hash
>     0x00000006 elf-relocation-entries [0x000000000005a590-0x0000000000067870)  r--  0x0005a590 0x0000d2e0 0x00000002 libart.so..rel.dyn
>     0x00000007 elf-relocation-entries [0x0000000000067870-0x0000000000068398)  r--  0x00067870 0x00000b28 0x00000002 libart.so..rel.plt
>     0x00000008 regular          [0x0000000000068398-0x0000000000069468)  r-x  0x00068398 0x000010d0 0x00000006 libart.so..plt
>     0x00000009 code             [0x0000000000069470-0x00000000002a94f8)  r-x  0x00069470 0x00240088 0x00000006 libart.so..text
>     0x0000000a ARM.exidx        [0x00000000002a94f8-0x00000000002b12d0)  r--  0x002a94f8 0x00007dd8 0x00000082 libart.so..ARM.exidx
>     0x0000000b ARM.extab        [0x00000000002b12d0-0x00000000002b1e44)  r--  0x002b12d0 0x00000b74 0x00000002 libart.so..ARM.extab
>     0x0000000c regular          [0x00000000002b1e48-0x00000000002e39e4)  r--  0x002b1e48 0x00031b9c 0x00000002 libart.so..rodata
>     0x0000000d eh-frame         [0x00000000002e39e4-0x00000000002e5fa8)  r--  0x002e39e4 0x000025c4 0x00000002 libart.so..eh_frame
>     0x0000000e regular          [0x00000000002e5fa8-0x00000000002e63d4)  r--  0x002e5fa8 0x0000042c 0x00000002 libart.so..eh_frame_hdr
>     0x0000000f regular          [0x00000000002e7e38-0x00000000002eaa24)  rw-  0x002e6e38 0x00002bec 0x00000003 libart.so..data.rel.ro.local
>     0x00000010 regular          [0x00000000002eaa24-0x00000000002eaa28)  rw-  0x002e9a24 0x00000004 0x00000003 libart.so..fini_array
>     0x00000011 regular          [0x00000000002eaa28-0x00000000002ee370)  rw-  0x002e9a28 0x00003948 0x00000003 libart.so..data.rel.ro
>     0x00000012 regular          [0x00000000002ee370-0x00000000002ee3c0)  rw-  0x002ed370 0x00000050 0x00000003 libart.so..init_array
>     0x00000013 elf-dynamic-link-info [0x00000000002ee3c0-0x00000000002ee4f0)  rw-  0x002ed3c0 0x00000130 0x00000003 libart.so..dynamic
>     0x00000014 regular          [0x00000000002ee4f4-0x00000000002ef000)  rw-  0x002ed4f4 0x00000b0c 0x00000003 libart.so..got
>     0x00000015 data             [0x00000000002ef000-0x00000000002ef8c4)  rw-  0x002ee000 0x000008c4 0x00000003 libart.so..data
>     0x00000016 zero-fill        [0x00000000002ef8c8-0x00000000002f11fc)  rw-  0x002ee8c8 0x00000000 0x00000003 libart.so..bss
>     0x00000017 regular                                                   ---  0x002ee8c4 0x00000010 0x00000030 libart.so..comment
>     0x00000018 dwarf-line                                                ---  0x002ee8d4 0x002c10eb 0x00000000 libart.so..debug_line
>     0x00000019 dwarf-info                                                ---  0x005af9bf 0x054eb22a 0x00000000 libart.so..debug_info
>     0x0000001a dwarf-abbrev                                              ---  0x05a9abe9 0x000f5e5b 0x00000000 libart.so..debug_abbrev
>     0x0000001b dwarf-aranges                                             ---  0x05b90a48 0x00011960 0x00000000 libart.so..debug_aranges
>     0x0000001c dwarf-loc                                                 ---  0x05ba23a8 0x00a0d623 0x00000000 libart.so..debug_loc
>     0x0000001d dwarf-ranges                                              ---  0x065af9cb 0x0029c7b0 0x00000000 libart.so..debug_ranges
>     0x0000001e dwarf-macro                                               ---  0x0684c17b 0x000ada15 0x00000000 libart.so..debug_macro
>     0x0000001f dwarf-str                                                 ---  0x068f9b90 0x004a45e9 0x00000030 libart.so..debug_str
>     0x00000020 dwarf-frame                                               ---  0x06d9e17c 0x0003fc6c 0x00000000 libart.so..debug_frame
>     0x00000021 regular                                                   ---  0x06dddde8 0x0000001c 0x00000000 libart.so..note.gnu.gold-version
>     0x00000022 regular                                                   ---  0x06ddde04 0x00000038 0x00000000 libart.so..ARM.attributes
>     0x00000023 elf-symbol-table                                          ---  0x06ddde3c 0x00056c30 0x00000000 libart.so..symtab
>     0x00000024 regular                                                   ---  0x06e34a6c 0x0006c9e6 0x00000000 libart.so..strtab
>     0x00000025 regular                                                   ---  0x06ea1452 0x0000017b 0x00000000 libart.so..shstrtab
> Note how all DWARF sections have no file address. They are known to not be valid addresses. Are you seeing something different with your ELF file? Or do you have two ELF files? One without symbols and one with? The output of "image dump sections" should look like above where no DWARF sections have anything valid in the "File Address" column.

The output of image dump sections show all Dwarf sections with no file address.

The issue was when i try to add breakpoint on address **(0xbcf0).** Symtab::FindSymbolContainingFileAddress return **$debug_ranges627** instead of **main** symbol. Hence there is a failure in setting breakpoint.

2: 000000000000bcc4  1664 FUNC    GLOBAL DEFAULT   10 main
49686: 000000000000bcf0     0 NOTYPE  LOCAL  DEFAULT   40 $debug_ranges627


More information about the lldb-commits mailing list