LLVM/Clang cross-compiling for ARM

Mark Tinguely marktinguely at gmail.com
Thu Apr 14 12:44:04 UTC 2011


On 4/14/2011 6:06 AM, Vassilis Laganakos wrote:
> Hi Damjan, Mark,
>
> ----- Original Message -----
>
>> From:Damjan Marion<damjan.marion at gmail.com>
>> To:Mark Tinguely<marktinguely at gmail.com>
>> Cc:Vassilis Laganakos<vassilis.laganakos at yahoo.com>; "freebsd-arm at freebsd.org"<freebsd-arm at freebsd.org>
>> Sent:Thursday, April 14, 2011 8:13 AM
>> Subject:Re: LLVM/Clang cross-compiling for ARM
>>
>>
>> Hi Mark,
>>
>> Seems that clang from current (made by i386 buildworld) is able to build ARM
>> code:
>>
>> # clang -v                                                                     
>>                                                                                 
>>      FreeBSD clang version 2.9 (trunk 126547) 20110226
>> Target: i386-undermydesk-freebsd9.0
>> Thread model: posix
>>
> That's the same I get when I build llvm/clang as a cross-compiler, and I thought that
> something was wrong. I'd expect that to be: "arm-unknown-freebsd9.0", but it
> seems from your test bellow that it does generate ARM code.
>
>> # clang -march=armv7-a -mfloat-abi=soft -ccc-host-triple arm-elf -integrated-as
>> hello.c -o hello.o -c                                                           
>>                   
>> # file hello.o                                                                 
>>                                                                                 
>>   
>> hello.o: ELF 32-bit LSB relocatable, ARM, version 1 (SYSV), not stripped
>>
>> # clang -march=armv7-a -mfloat-abi=soft -ccc-host-triple arm-elf hello.c -o
>> hello.S -S
>>
>> # cat hello.S
>>
>>      .syntax unified
>>      .cpu cortex-a8
>>      .eabi_attribute 6, 10
>>      .eabi_attribute 7, 65
>>      .eabi_attribute 8, 1
>>      .eabi_attribute 9, 2
>>      .eabi_attribute 10, 2
>>      .eabi_attribute 20, 1
>>      .eabi_attribute 21, 1
>>      .eabi_attribute 23, 3
>>      .eabi_attribute 24, 1
>>      .eabi_attribute 25, 1
>>      .file    "hello.c"
>>      .text
>>      .globl    main
>>      .align    2
>>      .type    main,%function
>> main:
>>      push    {r11, lr}
>>      mov    r11, sp
>>      sub    sp, sp, #12
>>      mov    r0, #0
>>      str    r0, [r11, #-4]
>>      str    r0, [sp, #4]
>>      movw    r0, :lower16:.L.str
>>      movt    r0, :upper16:.L.str
>>      bl    printf
>>      str    r0, [sp]
>>      ldr    r0, [sp, #4]
>>      mov    sp, r11
>>      ldmia    sp!, {r11, pc}
>> .Ltmp0:
>>      .size    main, .Ltmp0-main
>>
>>      .type    .L.str,%object
>>      .section    .rodata.str1.1,"aMS",%progbits,1
>> .L.str:
>>      .asciz     "Hello World!\n"
>>      .size    .L.str, 14
>>
>
> Well you proved the opposite from what we assumed, since this looks like ARM assembly to me :)
>
> Anyone knows if something has changed in http://wiki.freebsd.org/BuildingFreeBSDWithClang
> since it was last edited?
>
>
> Damjan, if you find some more info about this with llvm/clang, could you please post
> the links here? :)
>
> Thanks,
> Vassilis
>
>

Good news. Thank-you for the update.

--Mark.


More information about the freebsd-arm mailing list