Hi All, I found Jie has committed a patch "http://sourceware.org/ml/binutils/2010-05/msg00083.html". I am using the newest binary utils(2.21) and encounted the following ASSERT in arm_elf32.c: + if (out_attr[i].i == 0) + { + BFD_ASSERT (out_attr[Tag_ABI_HardFP_use].i == 0);
My compiling options are as below, ASM_FLAGS := \ -gdwarf-2 \ -mfpu=vfp \ -mfloat-abi=softfp \ -mthumb-interwork
C_FLAGS := \ $(ASM_FLAGS) \ -O3 -Wno-all \ -fno-optimize-sibling-calls \ -mlong-calls \ -ffunction-sections \
CPP_FLAGS := \ -fno-rtti \ -fno-exceptions \
LINK_FLAGS := \ --gc-sections -nostdlib \ -L ../stdlib \ -Wl,--as-needed \ -Wl,-no-enum-size-warning \ --cref \
ARFLAGS := \ rcs
Can anyone give me any tip about why the assert is triggered?
I have reported a bug here: http://sourceware.org/bugzilla/show_bug.cgi?id=12700
But not sure whether it is a bug.
-barry
In the Tag_FP_arch case (i=Tag_FP_arch) of elf32_arm_merge_eabi_attributes (bfd *ibfd, bfd *obfd) function, when this ASSERT happen, i got some log:
in_attr[i].i = 2 in_attr[Tag_ABI_HardFP_use].i = 3 out_attr[i].i = 0 out_attr[Tag_ABI_HardFP_use].i = 3,
For in_attr[i].i = 2, it means "Use of the v2 FP ISA was permitted (implies use of the v1 FP ISA) " For in_attr[Tag_ABI_HardFP_use].i = 3, it means "The user permitted this entity to use both SP and DP VFP instructions (Note: This is effectively an explicit version of the default encoded by 0)" For out_attr[i].i = 0, it means "The user did not permit this entity to use instructions requiring FP hardware".
According to Jie's patch, when out_attr[i].i = 0, out_attr[Tag_ABI_HardFP_use].i should be 0 too. But what i saw is out_attr[Tag_ABI_HardFP_use].i is also 3, same with in_attr[Tag_ABI_HardFP_use].i .
Which compiling option changes out_attr[Tag_ABI_HardFP_use].i to 3? And which compiling options set out_attr[i].i to 0?
Thanks Barry
2011/4/28 Barry Song 21cnbao@gmail.com:
Hi All, I found Jie has committed a patch "http://sourceware.org/ml/binutils/2010-05/msg00083.html". I am using the newest binary utils(2.21) and encounted the following ASSERT in arm_elf32.c:
- if (out_attr[i].i == 0)
- {
- BFD_ASSERT (out_attr[Tag_ABI_HardFP_use].i == 0);
My compiling options are as below, ASM_FLAGS := \ -gdwarf-2 \ -mfpu=vfp \ -mfloat-abi=softfp \ -mthumb-interwork
C_FLAGS := \ $(ASM_FLAGS) \ -O3 -Wno-all \ -fno-optimize-sibling-calls \ -mlong-calls \ -ffunction-sections \
CPP_FLAGS := \ -fno-rtti \ -fno-exceptions \
LINK_FLAGS := \ --gc-sections -nostdlib \ -L ../stdlib \ -Wl,--as-needed \ -Wl,-no-enum-size-warning \ --cref \
ARFLAGS := \ rcs
Can anyone give me any tip about why the assert is triggered?
I have reported a bug here: http://sourceware.org/bugzilla/show_bug.cgi?id=12700
But not sure whether it is a bug.
-barry
After checking much, I find the problem is caused by "-nostdlib" given to g++, if we set this option to g++ for linking, it will change the out_attr[Tag_FP_arch] to 0, which is generically be 4 for linaro new toolchain.
A right process without -nostdlib doesn't cause ASSERT:
#arm-none-linux-gnueabi-g++ main.cpp -mfloat-abi=softfp -mfpu=vfp -march=armv6 -mcpu=arm1136jf-s
out_attr[i].i:4, out_attr[Tag_ABI_HardFP_use].i:0, in_attr[i].i:0, in_attr[Tag_ABI_HardFP_use].i:0 ibfd: /home/vmuser/development/toolchain/build-toolchain/tools-64/bin/../lib/gcc/arm-none-linux-gnueabi/4.5.3/../../../../arm-none-linux-gnueabi/lib/crti.o obfd: a.out
out_attr[i].i:4, out_attr[Tag_ABI_HardFP_use].i:0, in_attr[i].i:4, in_attr[Tag_ABI_HardFP_use].i:3 ibfd: /home/vmuser/development/toolchain/build-toolchain/tools-64/bin/../lib/gcc/arm-none-linux-gnueabi/4.5.3/crtbegin.o obfd: a.out
out_attr[i].i:4, out_attr[Tag_ABI_HardFP_use].i:3, in_attr[i].i:2, in_attr[Tag_ABI_HardFP_use].i:3 /tmp/cc7Krzo3.o a.out
out_attr[i].i:4, out_attr[Tag_ABI_HardFP_use].i:3, in_attr[i].i:0, in_attr[Tag_ABI_HardFP_use].i:0 ibfd: elf-init.oS obfd: a.out
out_attr[i].i:4, out_attr[Tag_ABI_HardFP_use].i:3, in_attr[i].i:4, in_attr[Tag_ABI_HardFP_use].i:3 ibfd: /home/vmuser/development/toolchain/build-toolchain/tools-64/bin/../lib/gcc/arm-none-linux-gnueabi/4.5.3/crtend.o obfd: a.out
out_attr[i].i:4, out_attr[Tag_ABI_HardFP_use].i:3, in_attr[i].i:0, in_attr[Tag_ABI_HardFP_use].i:0 ibfd: /home/vmuser/development/toolchain/build-toolchain/tools-64/bin/../lib/gcc/arm-none-linux-gnueabi/4.5.3/../../../../arm-none-linux-gnueabi/lib/crtn.o obfd: a.out
with -nostdlib option, compiling a stand-alone program which doesn't call any library, we will find the first out_attr[i].i becomes 0, which caused ASSERT in the newest binutil with Jie's patch.
A wrong process using -nostdlib causes ASSERT: ............... 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
/home/vmuser/development/toolchain/build-toolchain/tools-64/bin/../lib/gcc/arm-none-linux-gnueabi/4.5.3/../../../../arm-none-linux-gnueabi/bin/ld: BFD (GNU Binutils) 2.21 assertion fail /home/vmuser/development/toolchain/build-toolchain/binutils-2.21/bfd/elf32-arm.c:10172 ............
i didn't verify whether gcc has this issue too.
Thanks Barry
2011/4/27 Barry Song 21cnbao@gmail.com:
In the Tag_FP_arch case (i=Tag_FP_arch) of elf32_arm_merge_eabi_attributes (bfd *ibfd, bfd *obfd) function, when this ASSERT happen, i got some log:
in_attr[i].i = 2 in_attr[Tag_ABI_HardFP_use].i = 3 out_attr[i].i = 0 out_attr[Tag_ABI_HardFP_use].i = 3,
For in_attr[i].i = 2, it means "Use of the v2 FP ISA was permitted (implies use of the v1 FP ISA) " For in_attr[Tag_ABI_HardFP_use].i = 3, it means "The user permitted this entity to use both SP and DP VFP instructions (Note: This is effectively an explicit version of the default encoded by 0)" For out_attr[i].i = 0, it means "The user did not permit this entity to use instructions requiring FP hardware".
According to Jie's patch, when out_attr[i].i = 0, out_attr[Tag_ABI_HardFP_use].i should be 0 too. But what i saw is out_attr[Tag_ABI_HardFP_use].i is also 3, same with in_attr[Tag_ABI_HardFP_use].i .
Which compiling option changes out_attr[Tag_ABI_HardFP_use].i to 3? And which compiling options set out_attr[i].i to 0?
Thanks Barry
2011/4/28 Barry Song 21cnbao@gmail.com:
Hi All, I found Jie has committed a patch "http://sourceware.org/ml/binutils/2010-05/msg00083.html". I am using the newest binary utils(2.21) and encounted the following ASSERT in arm_elf32.c:
- if (out_attr[i].i == 0)
- {
- BFD_ASSERT (out_attr[Tag_ABI_HardFP_use].i == 0);
My compiling options are as below, ASM_FLAGS := \ -gdwarf-2 \ -mfpu=vfp \ -mfloat-abi=softfp \ -mthumb-interwork
C_FLAGS := \ $(ASM_FLAGS) \ -O3 -Wno-all \ -fno-optimize-sibling-calls \ -mlong-calls \ -ffunction-sections \
CPP_FLAGS := \ -fno-rtti \ -fno-exceptions \
LINK_FLAGS := \ --gc-sections -nostdlib \ -L ../stdlib \ -Wl,--as-needed \ -Wl,-no-enum-size-warning \ --cref \
ARFLAGS := \ rcs
Can anyone give me any tip about why the assert is triggered?
I have reported a bug here: http://sourceware.org/bugzilla/show_bug.cgi?id=12700
But not sure whether it is a bug.
-barry
On 28/04/11 02:30, Barry Song wrote:
I am using the newest binary utils(2.21) and encounted the following ASSERT in arm_elf32.c:
if (out_attr[i].i == 0)
{
BFD_ASSERT (out_attr[Tag_ABI_HardFP_use].i == 0);
[...]
But not sure whether it is a bug.
I should say that it is a bug because asserts are there to catch bugs. If it were checking the input were valid then it would give a diagnostic message. That said, it may be that the bug *is* that a diagnostic should be used instead of an assert. :)
In this case 'i' will be 'Tag_FP_arch', so the code is saying that if Tag_FP_arch is not set, then set that and set Tag_ABI_HardFP_use at the same time. Since this is the only place Tag_ABI_HardFP_use is ever set, it should not be possible to have it set without Tag_FP_arch also being set, so if the assert triggers then something is broken.
So, the question is, what is setting the tags this way? Assuming the code is ok, the only other way it could happen is in a malformed input file.
Now, the reason this is an assert, and not a diagnostic, is probably because the tags are not considered "user input". Yes, the user can set them via assembler directives, but the assembler is supposed to make sure they are valid before creating the object file.
Could you please run the broken link again with "-Wl,-t" (trace) and record all the input files the linker uses, and check what attributes (tags) are set on those files using "readelf -A".
I suspect that you may have a mal-formed binary on your system (possibly created by an older version of binutils).
Andrew
2011/4/28 Andrew Stubbs andrew.stubbs@linaro.org:
On 28/04/11 02:30, Barry Song wrote:
I am using the newest binary utils(2.21) and encounted the following ASSERT in arm_elf32.c:
- if (out_attr[i].i == 0)
- {
- BFD_ASSERT (out_attr[Tag_ABI_HardFP_use].i == 0);
[...]
But not sure whether it is a bug.
I should say that it is a bug because asserts are there to catch bugs. If it were checking the input were valid then it would give a diagnostic message. That said, it may be that the bug *is* that a diagnostic should be used instead of an assert. :)
In this case 'i' will be 'Tag_FP_arch', so the code is saying that if Tag_FP_arch is not set, then set that and set Tag_ABI_HardFP_use at the same time. Since this is the only place Tag_ABI_HardFP_use is ever set, it should not be possible to have it set without Tag_FP_arch also being set, so if the assert triggers then something is broken.
So, the question is, what is setting the tags this way? Assuming the code is ok, the only other way it could happen is in a malformed input file.
Now, the reason this is an assert, and not a diagnostic, is probably because the tags are not considered "user input". Yes, the user can set them via assembler directives, but the assembler is supposed to make sure they are valid before creating the object file.
Could you please run the broken link again with "-Wl,-t" (trace) and record all the input files the linker uses, and check what attributes (tags) are set on those files using "readelf -A".
my other two mails explain what happened, in fact link input file is simple: readelf -A .../dir_soc.o Attribute Section: aeabi File Attributes Tag_CPU_name: "ARM1136JF-S" Tag_CPU_arch: v6 Tag_ARM_ISA_use: Yes Tag_THUMB_ISA_use: Thumb-1 Tag_FP_arch: VFPv2 Tag_ABI_PCS_wchar_t: 4 Tag_ABI_FP_denormal: Needed Tag_ABI_FP_exceptions: Needed Tag_ABI_FP_number_model: IEEE 754 Tag_ABI_align_needed: 8-byte Tag_ABI_enum_size: int Tag_ABI_HardFP_use: SP and DP Tag_ABI_optimization_goals: Aggressive Speed Tag_DIV_use: Not allowed
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.
I suspect that you may have a mal-formed binary on your system (possibly created by an older version of binutils).
Andrew
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
Andrew
Hi Andrew,
2011/4/28 Andrew Stubbs andrew.stubbs@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:
- The linker creates an empty output file (conceptually). This file will
have all attributes set to default settings (i.e. zero).
- 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
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.stubbs@linaro.org mailto:andrew.stubbs@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:
- The linker creates an empty output file (conceptually). This file will
have all attributes set to default settings (i.e. zero).
- 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
2011/4/28 Chung-Lin Tang cltang@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.stubbs@linaro.org mailto:andrew.stubbs@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:
- The linker creates an empty output file (conceptually). This file will
have all attributes set to default settings (i.e. zero).
- 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
Hey
I've let this one through, but in the future would you please gzip your attachments so that they are smaller than 100 KiB total, or host them somewhere?
Thanks!
Hi Loïc,
2011/4/28 Loïc Minier loic.minier@linaro.org:
Hey
I've let this one through, but in the future would you please gzip your
thanks for your help.
attachments so that they are smaller than 100 KiB total, or host them somewhere?
of course ok.
Thanks!
Loïc Minier
-barry
linaro-toolchain@lists.linaro.org