[LLVMdev] Debug info failing in assembler.
Richard Mitton
richard at codersnotes.com
Sat Sep 21 20:26:25 PDT 2013
If it thinks the symbol is in the BSS section, then it should never have
tried to use .comm to emit it I think.
On x86 it does not try to mix and match, which is why it works. AFAIK
comm symbols are regarded as having no section, rather than being bss,
so I think it's a bug in whatever code printed that .comm statement.
I'll look into this tomorrow.
> Eric Christopher <mailto:echristo at gmail.com>
> Saturday, September 21, 2013 11:26 AM
>
> Interesting. File please? Thanks.
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> Richard Pennington <mailto:rich at pennware.com>
> Saturday, September 21, 2013 5:52 AM
> Hi,
>
> I just updated from r190763 to r191137 and started getting failures in
> generated assembly language when debug info is enabled. Here is the
> test case:
>
> // Compile and run for every target.
> // RUN: %ecc -g -o %t %s && %t
> // FAIL: %armecc -g -o %t %s && %armrun %t
> // FAIL: %armebecc -g -o %t %s && %armebrun %t
> // RUN: %i386ecc -g -o %t %s && %i386run %t
> // FAIL: %microblazeecc -g -o %t %s && %microblazerun %t
> // FAIL: %mipsecc -g -o %t %s && %mipsrun %t
> // FAIL: %mipselecc -g -o %t %s && %mipselrun %t
> // FAIL: %ppcecc -g -o %t %s && %ppcrun %t
> // FAIL: %ppc64ecc -g -o %t %s && %ppc64run %t
> // RUN: %x86_64ecc -g -o %t %s && %x86_64run %t
>
> int comm;
> int main()
> {
> comm = 6;
> }
>
> This fails on all but the x86 processors. The typical failure looks
> like this:
> ...
> .type comm, at object # @comm
> .comm comm,4,4
> .cfi_sections .debug_frame
> .bss
> .L.bss_end:
> ...
> .L.debug_abbrev_end:
> .section .debug_aranges,"", at progbits
> .long 36 # Length of ARange Set
> .short 2 # DWARF Arange version number
> .long .L.debug_info_begin0 # Offset Into Debug Info Section
> .byte 4 # Address Size (in bytes)
> .byte 0 # Segment Size (in bytes)
> .byte 255
> .byte 255
> .byte 255
> .byte 255
> .long comm
> .Lset0 = .L.bss_end-comm
> .long .Lset0
>
> The typical error message is:
> /tmp/debug-8ecf9d.s: Assembler messages:
> /tmp/debug-8ecf9d.s: Error: invalid operands (.bss and *COM* sections)
> for `-' when setting `.Lset0'
>
> Is it legal to mix .comm symbols and .bss symbols in assembly? Is the
> x86 success a bug or a feature?
>
> -Rich
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130921/6207b088/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: compose-unknown-contact.jpg
Type: image/jpeg
Size: 770 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130921/6207b088/attachment.jpg>
More information about the llvm-dev
mailing list