[cfe-dev] clang++ linker issues on Ubuntu AMD64.
Lang Hames
lhames at gmail.com
Wed Jan 5 01:48:33 PST 2011
And of course a clean rebuild has fixed everything. Thanks to Takumi
Nakamura for pointing that out. :)
- Lang.
2011/1/5 Lang Hames <lhames at gmail.com>
> Further details:
>
> The assembly output from "int main() {}", compiled with "clang -S -o empty
> empty.c" is
>
> .file "empty.c"
> .text
> .globl ":main"
> .align 16, 0x90
> ":main": # @main
> .Leh_func_begin0:
> # BB#0: # %entry
> pushq %rbp
> .Ltmp0:
> movq %rsp, %rbp
> .Ltmp1:
> movl $0, %eax
> popq %rbp
> ret
> .Leh_func_end0:
>
> .section .eh_frame,"a", at progbits
> .LEH_frame0:
> .Lsection_eh_frame0:
> .Leh_frame_common0:
> .Lset0 = .Leh_frame_common_end0-.Leh_frame_common_begin0 # Length of Common
> Information Entry
> .long .Lset0
> .Leh_frame_common_begin0:
> .long 0 # CIE Identifier Tag
> .byte 1 # DW_CIE_VERSION
> .asciz "zR" # CIE Augmentation
> .byte 1 # CIE Code Alignment Factor
> .byte 120 # CIE Data Alignment Factor
> .byte 16 # CIE Return Address Column
> .byte 1 # Augmentation Size
> .byte 3 # FDE Encoding = udata4
> .byte 12 # DW_CFA_def_cfa
> .byte 7 # Register
> .byte 8 # Offset
> .byte 144 # DW_CFA_offset + Reg (16)
> .byte 1 # Offset
> .align 8
> .Leh_frame_common_end0:
> ".L:main.eh":
> .Lset1 = .Leh_frame_end0-.Leh_frame_begin0 # Length of Frame Information
> Entry
> .long .Lset1
> .Leh_frame_begin0:
> .Lset2 = .Leh_frame_begin0-.Leh_frame_common0 # FDE CIE offset
> .long .Lset2
> .long .Leh_func_begin0 # FDE initial location
> .Lset3 = .Leh_func_end0-.Leh_func_begin0 # FDE address range
> .long .Lset3
> .byte 0 # Augmentation size
> .byte 4 # DW_CFA_advance_loc4
> .Lset4 = .Ltmp0-.Leh_func_begin0
> .long .Lset4
> .byte 14 # DW_CFA_def_cfa_offset
> .byte 16 # Offset
> .byte 134 # DW_CFA_offset + Reg (6)
> .byte 2 # Offset
> .byte 4 # DW_CFA_advance_loc4
> .Lset5 = .Ltmp1-.Ltmp0
> .long .Lset5
> .byte 13 # DW_CFA_def_cfa_register
> .byte 6 # Register
> .align 8
> .Leh_frame_end0:
>
>
> .section .note.GNU-stack,"", at progbits
>
> It's pretty clear the colon is being prepended in there, I'm just curious
> as to why?
>
> Ismail - do you see the same output on your Linux AMD64 system?
>
> - Lang.
>
> 2011/1/5 Lang Hames <lhames at gmail.com>
>
> Hi Török,
>>
>> I should have been more clear on this detail too: My "empty" file
>> contained an empty main function, rather than being completely empty. So the
>> issue with the "missing" main is due to the main symbol being named ":main"
>> instead of "main".
>>
>> - Lang.
>>
>> 2011/1/5 Török Edwin <edwintorok at gmail.com>
>>
>>> On 2011-01-05 10:19, İsmail Dönmez wrote:
>>>
>>> > Hi;
>>> >
>>> > On Wed, Jan 5, 2011 at 10:16 AM, Lang Hames <lhames at gmail.com> wrote:
>>> >
>>> >> Specifically I was running with r122866, which was ToT as of earlier
>>> today.
>>> >> Updating to r122869, the current ToT, does not fix this issue, and (if
>>> I
>>> >> recall correctly) I saw the same issue when I checked clang out on a
>>> >> different AMD64 Ubuntu box a week or so back. Both were Debug+Asserts
>>> >> builds.
>>> >>
>>> >
>>> > I am also on x86-64 so this might be a Ubuntu specific problem.
>>>
>>> I think this depends on your version of binutils, I get the same on
>>> Debian with gcc on empty file. Ignore the invalid symbol index, the
>>> problem is the missing 'main' function :)
>>>
>>> $ gcc empty.c
>>> /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 0
>>> has invalid symbol index 11
>>> /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 1
>>> has invalid symbol index 12
>>> /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 2
>>> has invalid symbol index 2
>>> /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 3
>>> has invalid symbol index 2
>>> /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 4
>>> has invalid symbol index 11
>>> /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 5
>>> has invalid symbol index 13
>>> /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 6
>>> has invalid symbol index 13
>>> /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 7
>>> has invalid symbol index 13
>>> /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 8
>>> has invalid symbol index 2
>>> /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 9
>>> has invalid symbol index 2
>>> /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 10
>>> has invalid symbol index 12
>>> /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 11
>>> has invalid symbol index 13
>>> /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 12
>>> has invalid symbol index 13
>>> /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 13
>>> has invalid symbol index 13
>>> /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 14
>>> has invalid symbol index 13
>>> /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 15
>>> has invalid symbol index 13
>>> /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 16
>>> has invalid symbol index 13
>>> /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 17
>>> has invalid symbol index 13
>>> /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 18
>>> has invalid symbol index 13
>>> /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 19
>>> has invalid symbol index 13
>>> /usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 20
>>> has invalid symbol index 20
>>> /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../../lib/crt1.o: In function
>>> `_start':
>>> (.text+0x20): undefined reference to `main'
>>> collect2: ld returned 1 exit status
>>>
>>>
>>>
>>> >
>>> > Regards,
>>> > ismail
>>> >
>>> >
>>> >
>>> >
>>> > _______________________________________________
>>> > 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/20110105/fdef8208/attachment.html>
More information about the cfe-dev
mailing list