2011/4/28 Chung-Lin Tang <clt...@codesourcery.com>:
> I think I've seen this assert fail myself before, a long time ago...
>
> While this is probably a BFD bug of some sort, do you happen to have
> assembly code source files among the .o objects? Could you try adding
> ".eabi_attribute 27, 3" to the asm files and see if it links?

Chung-Lin, thanks! i do have asm codes. after adding ".eabi_attribute
27, 3", nothing different. i am just a kernel engineer and an user to
toolchain, i don't know too much well about toolchain like you. but
i'll try to figure out more so that you can help. Anyway, thank you
guys very much.

>
>
> On 2011/4/28 06:06 PM, Barry Song wrote:
>> Hi Andrew,
>>
>> 2011/4/28 Andrew Stubbs <andrew.stu...@linaro.org
>> <mailto:andrew.stu...@linaro.org>>:
>>> On 28/04/11 09:59, Barry Song wrote:
>>>>
>>>> my other two mails explain what happened, in fact link input file is
>>>> simple:
>>>
>>> There must be more than one input file to the link, otherwise I
>> believe you
>>> wouldn't see this problem. We need to find out what the other ones are.
>>>
>>>> ASSERT found just because we are using -nostdlib flag since we don't
>>>> call any library. This flag changed out_attr[Tag_FP_arch] to 0, which
>>>> is generically 4 for linaro new toolchain by watching a normal
>>>> compile/link process.
>>>
>>> The -nostdlib flag only changes the list of libraries that will be linked.
>>> It shouldn't change any attributes directly.
>>>
>>> Here's how a link should work, if I understand it correctly:
>>>
>>> 1. The linker creates an empty output file (conceptually). This file will
>>> have all attributes set to default settings (i.e. zero).
>>>
>>> 2. Each input file is then merged into the output file in turn. New
>> sections
>>> are added, or existing ones appended to, and the symbol tables and
>> such are
>>> built incrementally. At each step, the attributes are merged from the
>> input
>>> file to the output file.
>>>
>>> For the first input file, the attribute merge is basically just a
>> copy. Both
>>> Tag_FP_arch and Tag_ABI_HardFP_use should be zero in the (empty) output
>>> file, so we should not be able to hit this condition.
>>>
>>> For the second input file, the attribute merge is more complicated.
>> For each
>>> attribute the result will be either be the union, or the intersection
>> of the
>>> two attributes, or else it will throw an error.
>>>
>>> So, it should be that this can't happen, but clearly it does, so something
>>> is broken, but I can't tell what without reproducing it, or at least
>> seeing
>>> what inputs you're dealing with.
>>>
>>> So, please help me figure out what the full set of input files are and
>> I see
>>> if I can work from there.
>>
>> Thanks very much. i can't send you all source codes, but i can send you
>> the related binaries causing ASSERT.  All link log is as below. Note the
>> red part is where ASSERT happen. Input is dir_soc.o, output is a elf
>> file. It is the first time the elf file begin to born.
>>
>> !-------------------------------------
>> out_attr[i].i:2, out_attr[Tag_ABI_HardFP_use].i:3, in_attr[i].i:2,
>> in_attr[Tag_ABI_HardFP_use].i:3
>> ibfd:
>> /home/vmuser/development/svn/Current/Linux/Main/out/prima2cb/.obj/firmware/nanddisk/NANDDisk/soc/prima2/chip/nand_controller/soc_nand/dir_soc_nand.o
>> obfd:
>> /home/vmuser/development/svn/Current/Linux/Main/out/prima2cb/.obj/firmware/nanddisk/NANDDisk/soc/prima2/chip/nand_controller/dir_nand_controller.o
>>
>> -------------------------------------!
>>
>> make[6]: Leaving directory
>> `/home/vmuser/development/svn/Current/Linux/Main/firmware/nanddisk/src/soc/prima2/chip/nand_controller'
>> make[6]: Entering directory
>> `/home/vmuser/development/svn/Current/Linux/Main/firmware/nanddisk/src/soc/prima2/chip/zone_mgr'
>> make[6]: Leaving directory
>> `/home/vmuser/development/svn/Current/Linux/Main/firmware/nanddisk/src/soc/prima2/chip/zone_mgr'
>>
>>
>> !-------------------------------------
>> out_attr[i].i:2, out_attr[Tag_ABI_HardFP_use].i:3, in_attr[i].i:2,
>> in_attr[Tag_ABI_HardFP_use].i:3
>> ibfd:
>> /home/vmuser/development/svn/Current/Linux/Main/out/prima2cb/.obj/firmware/nanddisk/NANDDisk/soc/prima2/chip/nand_controller/dir_nand_controller.o
>> obfd:
>> /home/vmuser/development/svn/Current/Linux/Main/out/prima2cb/.obj/firmware/nanddisk/NANDDisk/soc/prima2/chip/dir_chip.o
>>
>> -------------------------------------!
>>
>>
>>
>> !-------------------------------------
>> out_attr[i].i:2, out_attr[Tag_ABI_HardFP_use].i:3, in_attr[i].i:2,
>> in_attr[Tag_ABI_HardFP_use].i:3
>> ibfd:
>> /home/vmuser/development/svn/Current/Linux/Main/out/prima2cb/.obj/firmware/nanddisk/NANDDisk/soc/prima2/chip/zone_mgr/dir_zone_mgr.o
>> obfd:
>> /home/vmuser/development/svn/Current/Linux/Main/out/prima2cb/.obj/firmware/nanddisk/NANDDisk/soc/prima2/chip/dir_chip.o
>>
>> -------------------------------------!
>>
>> make[5]: Leaving directory
>> `/home/vmuser/development/svn/Current/Linux/Main/firmware/nanddisk/src/soc/prima2/chip'
>> make[5]: Entering directory
>> `/home/vmuser/development/svn/Current/Linux/Main/firmware/nanddisk/src/soc/prima2/prima2cb'
>>
>>
>> !-------------------------------------
>> out_attr[i].i:2, out_attr[Tag_ABI_HardFP_use].i:3, in_attr[i].i:2,
>> in_attr[Tag_ABI_HardFP_use].i:3
>> ibfd:
>> /home/vmuser/development/svn/Current/Linux/Main/out/prima2cb/.obj/firmware/nanddisk/NANDDisk/soc/prima2/prima2cb/nand/dir_nand.o
>> obfd:
>> /home/vmuser/development/svn/Current/Linux/Main/out/prima2cb/.obj/firmware/nanddisk/NANDDisk/soc/prima2/prima2cb/dir_prima2cb.o
>>
>> -------------------------------------!
>>
>> make[5]: Leaving directory
>> `/home/vmuser/development/svn/Current/Linux/Main/firmware/nanddisk/src/soc/prima2/prima2cb'
>>
>>
>> !-------------------------------------
>> out_attr[i].i:2, out_attr[Tag_ABI_HardFP_use].i:3, in_attr[i].i:2,
>> in_attr[Tag_ABI_HardFP_use].i:3
>> ibfd:
>> /home/vmuser/development/svn/Current/Linux/Main/out/prima2cb/.obj/firmware/nanddisk/NANDDisk/soc/prima2/prima2cb/dir_prima2cb.o
>> obfd:
>> /home/vmuser/development/svn/Current/Linux/Main/out/prima2cb/.obj/firmware/nanddisk/NANDDisk/soc/prima2/dir_prima2.o
>>
>> -------------------------------------!
>>
>> make[4]: Leaving directory
>> `/home/vmuser/development/svn/Current/Linux/Main/firmware/nanddisk/src/soc/prima2'
>> make[3]: Leaving directory
>> `/home/vmuser/development/svn/Current/Linux/Main/firmware/nanddisk/src/soc'
>> ------------------------------------------
>> Building NANDDisk.bin
>> /home/vmuser/development/toolchain/build-toolchain/tools-64/bin/../lib/gcc/arm-none-linux-gnueabi/4.5.3/../../../../arm-none-linux-gnueabi/bin/ld:
>> mode armelf_linux_eabi
>> /home/vmuser/development/svn/Current/Linux/Main/out/prima2cb/.obj/firmware/nanddisk/NANDDisk/common/dir_common.o
>> /home/vmuser/development/svn/Current/Linux/Main/out/prima2cb/.obj/firmware/nanddisk/NANDDisk/soc/dir_soc.o
>> (../stdlib/libgcc.a)_udivsi3.o
>> (../stdlib/libgcc.a)_dvmd_tls.o
>> (../stdlib/libgcc.a)_aeabi_uldivmod.o
>> (../stdlib/libgcc.a)_muldi3.o
>> (../stdlib/libgcc.a)bpabi.o
>> (../stdlib/libgcc.a)_divdi3.o
>> (../stdlib/libgcc.a)_udivdi3.o
>> (../stdlib/libgcc.a)unwind-arm.o
>> (../stdlib/libgcc.a)libunwind.o
>> (../stdlib/libgcc.a)pr-support.o
>> (../stdlib/libgcc.a)_clz.o
>>
>>
>> !-------------------------------------
>> !!!!!!!!!!!!!!!!   out_attr[i].i:0, out_attr[Tag_ABI_HardFP_use].i:3,
>> in_attr[i].i:2, in_attr[Tag_ABI_HardFP_use].i:3
>> ibfd:
>> /home/vmuser/development/svn/Current/Linux/Main/out/prima2cb/.obj/firmware/nanddisk/NANDDisk/soc/dir_soc.o
>> obfd:
>> /home/vmuser/development/svn/Current/Linux/Main/out/prima2cb/.obj/firmware/nanddisk/NANDDisk.elf
>> !!!!!!!!!!!!!!!!!!!!!
>>
>> -------------------------------------!
>>
>>
>>
>> !-------------------------------------
>> out_attr[i].i:2, out_attr[Tag_ABI_HardFP_use].i:3, in_attr[i].i:2,
>> in_attr[Tag_ABI_HardFP_use].i:0
>> ibfd: _udivsi3.o
>> obfd:
>> /home/vmuser/development/svn/Current/Linux/Main/out/prima2cb/.obj/firmware/nanddisk/NANDDisk.elf
>>
>> -------------------------------------!
>>
>>
>>
>> !-------------------------------------
>> out_attr[i].i:2, out_attr[Tag_ABI_HardFP_use].i:3, in_attr[i].i:2,
>> in_attr[Tag_ABI_HardFP_use].i:0
>> ibfd: _dvmd_tls.o
>> obfd:
>> /home/vmuser/development/svn/Current/Linux/Main/out/prima2cb/.obj/firmware/nanddisk/NANDDisk.elf
>>
>> -------------------------------------!
>>
>>
>>
>> !-------------------------------------
>> out_attr[i].i:2, out_attr[Tag_ABI_HardFP_use].i:3, in_attr[i].i:2,
>> in_attr[Tag_ABI_HardFP_use].i:0
>> ibfd: _aeabi_uldivmod.o
>> obfd:
>> /home/vmuser/development/svn/Current/Linux/Main/out/prima2cb/.obj/firmware/nanddisk/NANDDisk.elf
>>
>> -------------------------------------!
>>
>>
>>
>> !-------------------------------------
>> out_attr[i].i:2, out_attr[Tag_ABI_HardFP_use].i:3, in_attr[i].i:2,
>> in_attr[Tag_ABI_HardFP_use].i:3
>> ibfd: _muldi3.o
>> obfd:
>> /home/vmuser/development/svn/Current/Linux/Main/out/prima2cb/.obj/firmware/nanddisk/NANDDisk.elf
>>
>> -------------------------------------!
>>
>>
>>
>> !-------------------------------------
>> out_attr[i].i:2, out_attr[Tag_ABI_HardFP_use].i:3, in_attr[i].i:2,
>> in_attr[Tag_ABI_HardFP_use].i:3
>> ibfd: bpabi.o
>> obfd:
>> /home/vmuser/development/svn/Current/Linux/Main/out/prima2cb/.obj/firmware/nanddisk/NANDDisk.elf
>>
>> -------------------------------------!
>>
>>
>>
>> !-------------------------------------
>> out_attr[i].i:2, out_attr[Tag_ABI_HardFP_use].i:3, in_attr[i].i:2,
>> in_attr[Tag_ABI_HardFP_use].i:3
>> ibfd: _divdi3.o
>> obfd:
>> /home/vmuser/development/svn/Current/Linux/Main/out/prima2cb/.obj/firmware/nanddisk/NANDDisk.elf
>>
>> -------------------------------------!
>>
>>
>>
>> !-------------------------------------
>> out_attr[i].i:2, out_attr[Tag_ABI_HardFP_use].i:3, in_attr[i].i:2,
>> in_attr[Tag_ABI_HardFP_use].i:3
>> ibfd: _udivdi3.o
>> obfd:
>> /home/vmuser/development/svn/Current/Linux/Main/out/prima2cb/.obj/firmware/nanddisk/NANDDisk.elf
>>
>> -------------------------------------!
>>
>>
>>
>> !-------------------------------------
>> out_attr[i].i:2, out_attr[Tag_ABI_HardFP_use].i:3, in_attr[i].i:2,
>> in_attr[Tag_ABI_HardFP_use].i:3
>> ibfd: unwind-arm.o
>> obfd:
>> /home/vmuser/development/svn/Current/Linux/Main/out/prima2cb/.obj/firmware/nanddisk/NANDDisk.elf
>>
>> -------------------------------------!
>>
>>
>>
>> !-------------------------------------
>> out_attr[i].i:2, out_attr[Tag_ABI_HardFP_use].i:3, in_attr[i].i:2,
>> in_attr[Tag_ABI_HardFP_use].i:0
>> ibfd: libunwind.o
>> obfd:
>> /home/vmuser/development/svn/Current/Linux/Main/out/prima2cb/.obj/firmware/nanddisk/NANDDisk.elf
>>
>> -------------------------------------!
>>
>>
>>
>> !-------------------------------------
>> out_attr[i].i:2, out_attr[Tag_ABI_HardFP_use].i:3, in_attr[i].i:2,
>> in_attr[Tag_ABI_HardFP_use].i:3
>> ibfd: pr-support.o
>> obfd:
>> /home/vmuser/development/svn/Current/Linux/Main/out/prima2cb/.obj/firmware/nanddisk/NANDDisk.elf
>>
>> -------------------------------------!
>>
>>
>>
>> !-------------------------------------
>> out_attr[i].i:2, out_attr[Tag_ABI_HardFP_use].i:3, in_attr[i].i:2,
>> in_attr[Tag_ABI_HardFP_use].i:3
>> ibfd: _clz.o
>> obfd:
>> /home/vmuser/development/svn/Current/Linux/Main/out/prima2cb/.obj/firmware/nanddisk/NANDDisk.elf
>>
>> -------------------------------------!
>>
>> Size: 135168 bytes.
>> Binary Done! Success!
>> ------------------------------------------
>> make[2]: Leaving directory
>> `/home/vmuser/development/svn/Current/Linux/Main/firmware/nanddisk/src'
>> make[1]: Leaving directory
>> `/home/vmuser/development/svn/Current/Linux/Main/firmware/nanddisk'
>>
>>>
>>> Thanks
>>>
>>> Andrew
>>>
>>
>>
>>
>>
>> _______________________________________________
>> linaro-toolchain mailing list
>> linaro-toolchain@lists.linaro.org
>> http://lists.linaro.org/mailman/listinfo/linaro-toolchain
>
>

_______________________________________________
linaro-toolchain mailing list
linaro-toolchain@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-toolchain

Reply via email to