bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug ld/19968] New: ld doesn't recognize/handle Tag_ABI_VFP_args attribu


From: t-snider at ti dot com
Subject: [Bug ld/19968] New: ld doesn't recognize/handle Tag_ABI_VFP_args attribute value of 3 properly
Date: Tue, 19 Apr 2016 21:45:26 +0000

https://sourceware.org/bugzilla/show_bug.cgi?id=19968

            Bug ID: 19968
           Summary: ld doesn't recognize/handle Tag_ABI_VFP_args attribute
                    value of 3 properly
           Product: binutils
           Version: unspecified
            Status: NEW
          Severity: normal
          Priority: P2
         Component: ld
          Assignee: unassigned at sourceware dot org
          Reporter: t-snider at ti dot com
  Target Milestone: ---

Created attachment 9205
  --> https://sourceware.org/bugzilla/attachment.cgi?id=9205&action=edit
TI ARM compiler generated object file

A Tag_ABI_VFP_args build attribute with a value of 3 indicates compatibility
with other object files that may have a Tag_ABI_VFP_args build attribute with
a value of 0 (base variant FP calling conventions), 1 (VFP variant FP calling 
conventions), or 3 (no use of FP calling conventions present).

An object file with a Tag_ABI_VFP_args value of 3 should be able to link
with other object files that have a Tag_ABI_VFP_args value of 0, 1, or 3.

I believe the compatibility rules are:

0 is compatible with 0 or 3
1 is compatible with 1 or 3
3 is compatible with 0 or 1 or 3

Attached is an object file generated by the Texas Instruments ARM compiler. The
source file contains no use of FP calling conventions and so the compiler will 
assign a value of 3 to the Tag_ABI_VFP_args build attribute in the object file.

This object file should be compatible for linking with object files that have a
Tag_ABI_VFP_args value of either 0, but the GNU linker will emit an error
claiming that this file uses VFP register arguments when it does not.

The source code for the attached object file is:

typedef unsigned char uint8;

extern uint8 my_next_channel = 0;
extern uint8 RCN_NextChannel(uint8 channel);

void my_no_float_func()
{
   my_next_channel = RCN_NextChannel(10);
}

The object file can be linked with other object files that provide definitions
of main() and RCN_NextChannel(), where main() calls my_no_float_func() and
RCN_NextChannel() is a simplistic leaf function.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]