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?


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