[dpdk-dev] Compiling files with .S with GCC

Wiles, Keith keith.wiles at intel.com
Mon May 4 16:49:43 CEST 2015



On 5/4/15, 1:37 AM, "Olivier MATZ" <olivier.matz at 6wind.com> wrote:

>Hello,
>
>On 04/26/2015 06:55 PM, Wiles, Keith wrote:
>> 
>> 
>> On 4/26/15, 11:53 AM, "Wiles, Keith" <keith.wiles at intel.com> wrote:
>> 
>>> Hi All,
>>>
>>> I noticed in my builds with foo.S file I would get a warning from the
>>> compiler the foo_s.o.tmp linker file will not be used as the code is
>>>not
>>> linked. A strange error and the foo_s.o file would not be created. In
>>>the
>>> mk/internal/rte.compile-pre.mk we have the following
>>>
>>> # command to assemble a .S file to generate an object
>>> ifeq ($(USE_HOST),1)
>>> S_TO_O = $(CPP) $(HOST_CPPFLAGS) $($(@)_CPPFLAGS)
>>>$(HOST_EXTRA_CPPFLAGS)
>>> $< $(@).tmp && \
>>>    $(HOSTAS) $(HOST_ASFLAGS) $($(@)_ASFLAGS) $(HOST_EXTRA_ASFLAGS) -o
>>>$@
>>> $(@).tmp
>>> S_TO_O_STR = $(subst ','\'',$(S_TO_O)) #'# fix syntax highlight
>>> S_TO_O_DISP =  $(if $(V),"$(S_TO_O_STR)","  HOSTAS $(@)")
>>> else
>>> S_TO_O = $(CPP) $(CPPFLAGS) $($(@)_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o
>>> $(@).tmp && \
>>>    $(AS) $(ASFLAGS) $($(@)_ASFLAGS) $(EXTRA_ASFLAGS) -o $@ $(@).tmp
>>> S_TO_O_STR = $(subst ','\'',$(S_TO_O)) #'# fix syntax highlight
>>> S_TO_O_DISP =  $(if $(V),"$(S_TO_O_STR)","  AS $(@)")
>>> endif
>>>
>>> I had to change the above Œ.tmp¹ strings to Œ.s¹ to remove this warning
>>> and get the foo_s.o file created. Using the .s the file name becomes
>>> foo_s.o.s
>> 
>> Compiler used on Ubuntu 14.04 'gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2'
>> 
>>>
>>> Did not try this with clang or any other compiler, but I expect we can
>>> safely change the Œ.tmp¹ to Œ.s¹ IMO
>>>
>>> Anyone else notice this problem?
>
>I tested a similar use-case and I don't reproduce the issue.
>I don't don't understand why replacing $(@).tmp by $(@).s would
>solve it.

In the case I saw the compiler seemed to want the .s to under stand it was
not some other type of file. Not sure why the error occurred in my
external build. We can leave it using .tmp if you like, but I feel .s
would have been the correct name for the file.

If you think it needs to be changed to .s then you can submit a patch or I
can or just leave it along your option.

Regards,
++Keith
>
>The file $(@).tmp is used as a temporary file to store the preprocessed
>version of the $(@).s file. I agree that using the .s extension is not
>a bad choice (see below), but to me it is not the proper solution to
>your problem.
>
>From https://gcc.gnu.org/onlinedocs/gcc/Overall-Options.html
>
>  file.s
>     Assembler code.
>  file.S
>  file.sx
>     Assembler code that must be preprocessed.
>
>Regards,
>Olivier



More information about the dev mailing list