[cfe-dev] clang -g -fsanitize=address produces broken debug info?

Kal Conley kcconley at gmail.com
Tue Aug 13 02:09:53 PDT 2013


Hi Eric,
I am still seeing this issue actually. Last night I built clang with clang
to save time. I just figured out this issue is only visible if you build
clang with gcc/g++.

I am on Debian Wheezy and LLVM was configured with:

cmake $LLVMSrcDir \
  -DCMAKE_BUILD_TYPE=Release \
  -DFFI_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \
  -DFFI_INCLUDE_DIR=/usr/include/x86_64-linux-gnu \
  -DLLVM_ENABLE_FFI=ON

See below for more info.

Thanks,
-Kal
-----------------------------------------------------------------------
#clang --version
clang version 3.4 (188254)
Target: x86_64-unknown-linux-gnu
Thread model: posix

#cat main.c
int main() { return 42; }

#clang -g main.c

#readelf --debug-dump=aranges a.out

#clang -g -fsanitize=address main.c

#readelf --debug-dump=aranges a.out
Contents of the .debug_aranges section:

  Length:                   252
  Version:                  2
  Offset into .debug_info:  0x0
  Pointer Size:             8
  Segment Size:             0

    Address            Length
    00000000004081b0 0000000000006feb
    0000000000408020 000000000000001f
    0000000000408040 0000000000000022
    0000000000408062 000000000000001f
    000000000040f1a0 0000000000000058
    000000000040f200 0000000000000123
    000000000040f330 00000000000006e5
    000000000040fa20 00000000000000b7
    000000000040fae0 00000000000002f0
    000000000040fdd0 0000000000000238
    0000000000410010 000000000000013d
    0000000000410150 000000000000015a
    00000000004102b0 00000000000000bc
    0000000000408130 0000000000000024
    0000000000000000 0000000000000000
  Length:                   44
  Version:                  2
  Offset into .debug_info:  0x1d36c
  Pointer Size:             8
  Segment Size:             0

    Address            Length
    0000000000410370 0000000000001510
    0000000000000000 0000000000000000
  Length:                   60
  Version:                  2
  Offset into .debug_info:  0x20e2a
  Pointer Size:             8
  Segment Size:             0

    Address            Length
    0000000000411880 0000000000001052
    0000000000408160 000000000000000e
    0000000000000000 0000000000000000
  Length:                   60
  Version:                  2
  Offset into .debug_info:  0x23d32
  Pointer Size:             8
  Segment Size:             0

    Address            Length
    00000000004128e0 000000000001f3e8
    0000000000431cd0 000000000000013c
    0000000000000000 0000000000000000
  Length:                   44
  Version:                  2
  Offset into .debug_info:  0x600db
  Pointer Size:             8
  Segment Size:             0

    Address            Length
    0000000000431e10 000000000000007f
    0000000000000000 0000000000000000
  Length:                   44
  Version:                  2
  Offset into .debug_info:  0x610bb
  Pointer Size:             8
  Segment Size:             0

    Address            Length
    0000000000431e90 00000000000007c5
    0000000000000000 0000000000000000
  Length:                   44
  Version:                  2
  Offset into .debug_info:  0x63398
  Pointer Size:             8
  Segment Size:             0

    Address            Length
    0000000000432660 000000000000058c
    0000000000000000 0000000000000000
  Length:                   44
  Version:                  2
  Offset into .debug_info:  0x64ef4
  Pointer Size:             8
  Segment Size:             0

    Address            Length
    0000000000432bf0 000000000000137f
    0000000000000000 0000000000000000
  Length:                   44
  Version:                  2
  Offset into .debug_info:  0x67e43
  Pointer Size:             8
  Segment Size:             0

    Address            Length
    0000000000433f70 0000000000000395
    0000000000000000 0000000000000000
  Length:                   28
  Version:                  2
  Offset into .debug_info:  0x6947c
  Pointer Size:             8
  Segment Size:             0

    Address            Length
    0000000000000000 0000000000000000
  Length:                   108
  Version:                  2
  Offset into .debug_info:  0x69b17
  Pointer Size:             8
  Segment Size:             0

    Address            Length
    0000000000434310 000000000000286a
    000000000040f1a0 0000000000000058
    0000000000436b80 0000000000000039
    0000000000436bc0 00000000000000e1
    0000000000436cb0 0000000000000052
    0000000000000000 0000000000000000
  Length:                   44
  Version:                  2
  Offset into .debug_info:  0x72727
  Pointer Size:             8
  Segment Size:             0

    Address            Length
    0000000000436d10 00000000000019f2
    0000000000000000 0000000000000000
  Length:                   44
  Version:                  2
  Offset into .debug_info:  0x76190
  Pointer Size:             8
  Segment Size:             0

    Address            Length
    0000000000438710 0000000000000044
    0000000000000000 0000000000000000
  Length:                   60
  Version:                  2
  Offset into .debug_info:  0x76a8f
  Pointer Size:             8
  Segment Size:             0

    Address            Length
    0000000000438760 0000000000000a15
    0000000000408170 0000000000000024
    0000000000000000 0000000000000000
  Length:                   108
  Version:                  2
  Offset into .debug_info:  0x7a35f
  Pointer Size:             8
  Segment Size:             0

    Address            Length
    0000000000439180 0000000000000edb
    000000000043a060 0000000000000002
    000000000043a070 0000000000000002
    000000000043a080 0000000000000002
    000000000043a090 0000000000000002
    0000000000000000 0000000000000000
  Length:                   44
  Version:                  2
  Offset into .debug_info:  0x7e487
  Pointer Size:             8
  Segment Size:             0

    Address            Length
    000000000043a0a0 0000000000000048
    0000000000000000 0000000000000000
  Length:                   28
  Version:                  2
  Offset into .debug_info:  0x7e5ee
  Pointer Size:             8
  Segment Size:             0

    Address            Length
    0000000000000000 0000000000000000
  Length:                   124
  Version:                  2
  Offset into .debug_info:  0x7e66a
  Pointer Size:             8
  Segment Size:             0

    Address            Length
    000000000043a0f0 0000000000000d48
    000000000040f1a0 0000000000000058
    000000000043ae40 000000000000010d
    000000000043af50 00000000000004ca
    000000000043b420 00000000000002f5
    000000000043b720 0000000000000247
    0000000000000000 0000000000000000
  Length:                   44
  Version:                  2
  Offset into .debug_info:  0x85f86
  Pointer Size:             8
  Segment Size:             0

    Address            Length
    000000000043b970 00000000000006dd
    0000000000000000 0000000000000000
  Length:                   44
  Version:                  2
  Offset into .debug_info:  0x8761e
  Pointer Size:             8
  Segment Size:             0

    Address            Length
    000000000043c050 000000000000056c
    0000000000000000 0000000000000000
  Length:                   44
  Version:                  2
  Offset into .debug_info:  0x88696
  Pointer Size:             8
  Segment Size:             0

    Address            Length
    000000000043c5c0 0000000000000ba2
    0000000000000000 0000000000000000
  Length:                   76
  Version:                  2
  Offset into .debug_info:  0x8980d
  Pointer Size:             8
  Segment Size:             0

    Address            Length
    000000000043d170 00000000000013cc
    0000000000408081 00000000000000ad
    0000000000000000 000000000000004a
    0000000000000000 0000000000000000
  Length:                   44
  Version:                  2
  Offset into .debug_info:  0x8fd76
  Pointer Size:             8
  Segment Size:             0

    Address            Length
    000000000043e540 000000000000004a
    0000000000000000 0000000000000000
  Length:                   44
  Version:                  2
  Offset into .debug_info:  0x944b2
  Pointer Size:             8
  Segment Size:             0

    Address            Length
    000000000043e590 00000000000006dc
    0000000000000000 0000000000000000
  Length:                   44
  Version:                  2
  Offset into .debug_info:  0x95bf4
  Pointer Size:             8
  Segment Size:             0

    Address            Length
    000000000043ec70 0000000000000b49
    0000000000000000 0000000000000000
  Length:                   60
  Version:                  2
  Offset into .debug_info:  0x971b8
  Pointer Size:             8
  Segment Size:             0

    Address            Length
    000000000043f7c0 00000000000004e4
    000000000040f1a0 0000000000000058
    0000000000000000 0000000000000000
  Length:                   44
  Version:                  2
  Offset into .debug_info:  0x9907e
  Pointer Size:             8
  Segment Size:             0

    Address            Length
    000000000043fcb0 00000000000006f7
    0000000000000000 0000000000000000
  Length:                   44
  Version:                  2
  Offset into .debug_info:  0x9aac9
  Pointer Size:             8
  Segment Size:             0

    Address            Length
    00000000004403b0 00000000000007a2
    0000000000000000 0000000000000000
  Length:                   44
  Version:                  2
  Offset into .debug_info:  0x9c33c
  Pointer Size:             8
  Segment Size:             0

    Address            Length
    0000000000440b60 0000000000000025
    0000000000000000 0000000000000000
  Length:                   44
  Version:                  2
  Offset into .debug_info:  0x9c52b
  Pointer Size:             8
  Segment Size:             0

    Address            Length
    0000000000440b90 0000000000000131
    0000000000000000 0000000000000000
  Length:                   140
  Version:                  2
  Offset into .debug_info:  0x9ca24
  Pointer Size:             8
  Segment Size:             0

    Address            Length
    0000000000440cd0 0000000000001045
    000000000043a060 0000000000000002
    000000000043a070 0000000000000002
    0000000000441d20 0000000000000002
    000000000043a080 0000000000000002
    0000000000441d30 0000000000000002
    000000000043a090 0000000000000002
    0000000000000000 0000000000000000
  Length:                   44
  Version:                  2
  Offset into .debug_info:  0x9fa70
  Pointer Size:             8
  Segment Size:             0

    Address            Length
    0000000000441d40 0000000000000021
    0000000000000000 0000000000000000
  Length:                   44
  Version:                  2
  Offset into .debug_info:  0x9fc33
  Pointer Size:             8
  Segment Size:             0

    Address            Length
    0000000000441d70 000000000000076e
    0000000000000000 0000000000000000
  Length:                   44
  Version:                  2
  Offset into .debug_info:  0xa156b
  Pointer Size:             8
  Segment Size:             0

    Address            Length
    00000000004424e0 00000000000001d3
    0000000000000000 0000000000000000
  Length:                   44
  Version:                  2
  Offset into .debug_info:  0xa21c7
  Pointer Size:             8
  Segment Size:             0

    Address            Length
    00000000004426c0 0000000000000d76
    0000000000000000 0000000000000000
  Length:                   44
  Version:                  2
  Offset into .debug_info:  0xa560a
  Pointer Size:             8
  Segment Size:             0

    Address            Length
    0000000000443440 0000000000000e9c
    0000000000000000 0000000000000000
  Length:                   44
  Version:                  2
  Offset into .debug_info:  0xa8808
  Pointer Size:             8
  Segment Size:             0

    Address            Length
    00000000004442e0 00000000000001c4
    0000000000000000 0000000000000000
  Length:                   44
  Version:                  2
  Offset into .debug_info:  0xa936e
  Pointer Size:             8
  Segment Size:             0

    Address            Length
    00000000004444b0 0000000000000408
    0000000000000000 0000000000000000
  Length:                   60
  Version:                  2
  Offset into .debug_info:  0xa9b58
  Pointer Size:             8
  Segment Size:             0

    Address            Length
    00000000004448c0 0000000000001ff5
    00000000004081a0 000000000000000e
    0000000000000000 0000000000000000
  Length:                   44
  Version:                  2
  Offset into .debug_info:  0xb054e
  Pointer Size:             8
  Segment Size:             0

    Address            Length
    00000000004468c0 00000000000004f2
    0000000000000000 0000000000000000


2013/8/12 Kal Conley <kcconley at gmail.com>

> This appears to be fixed ToT. Must have been fixed very recently? The
> last build I did was last week. You can also reproduce with clang-3.3.
> -Kal
>
> Am 8/12/13 10:28 PM, schrieb Eric Christopher:
> > Do you have an example? A random testcase didn't have anything emitted.
> >
> > -eric
> >
> > On Mon, Aug 12, 2013 at 1:22 PM, Kal Conley <kcconley at gmail.com> wrote:
> >> When I compile with -fsanitize=address the resulting binary contains a
> >> .debug_aranges section on Linux. However it is incomplete and it trips
> >> up lldb.
> >> -Kal
> >>
> >> Am 8/12/13 8:11 PM, schrieb Eric Christopher:
> >>> Exactly, we don't produce it at the moment. It's on the list mind you,
> but ...
> >>>
> >>> -eric
> >>>
> >>> On Mon, Aug 12, 2013 at 11:02 AM, Robinson, Paul
> >>> <Paul_Robinson at playstation.sony.com> wrote:
> >>>> Clang can produce .debug_aranges?  Somebody asked me about this
> recently,
> >>>> and I couldn’t get clang to produce a non-empty section, unless I was
> >>>> compiling an assembler source.
> >>>>
> >>>> --paulr
> >>>>
> >>>>
> >>>>
> >>>> From: cfe-dev-bounces at cs.uiuc.edu [mailto:cfe-dev-bounces at cs.uiuc.edu]
> On
> >>>> Behalf Of David Blaikie
> >>>> Sent: Monday, August 12, 2013 10:13 AM
> >>>> To: Kal Conley
> >>>> Cc: cfe-dev Developers
> >>>> Subject: Re: [cfe-dev] clang -g -fsanitize=address produces broken
> debug
> >>>> info?
> >>>>
> >>>>
> >>>>
> >>>>
> >>>> On Aug 12, 2013 9:55 AM, "Kal Conley" <kcconley at gmail.com> wrote:
> >>>>> Hi,
> >>>>> DWARF info produced with "clang -g -fsanitize=address" doesn't have a
> >>>>> complete .debug_aranges section. LLDB relies on .debug_aranges if it
> is
> >>>>> present, thus LLDB fails to load any debug info for clang binaries
> built
> >>>>> with -fsanitize=address. The LLDB folks believe this is a clang bug.
> Can
> >>>>> someone from the clang side look into this?
> >>>> Can you describe in what way it is broken? Do you have a reduced test
> case?
> >>>>
> >>>>> Thanks,
> >>>>> -Kal
> >>>>> _______________________________________________
> >>>>> cfe-dev mailing list
> >>>>> cfe-dev at cs.uiuc.edu
> >>>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
> >>>> _______________________________________________
> >>>> cfe-dev mailing list
> >>>> cfe-dev at cs.uiuc.edu
> >>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
> >>>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20130813/adf5dfec/attachment.html>


More information about the cfe-dev mailing list