This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: "BFD_ASSERT (out_attr[Tag_ABI_HardFP_use].i == 0) " assert


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
>

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]