ThrowTheSwitch / Ceedling

Ruby-based unit testing and build system for C projects

Home Page:http://throwtheswitch.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

: flags : Seems not be seen from parser. What should do?

TKingu opened this issue · comments

commented

Hi all,

I'm using ceedling for a project using STM32.
I'm using this configuration (Ony show up the relevant part of project.yml):

:paths:
  :test:
    - +:test/**
    - -:test/support
  :source:
    - src/**
    

:flags:
  :test:
    :compile:
      :startup_stm32xxx:
          - -x assembler-with-cpp

I'd like to using : flags : in order to compiling the startup_stm32xxx.s file with the flag -x assembler-with-cpp.
The file is in the path:
src/Builder/Startup_GCC/startup_stm32xxx.s

But it seems it not works.
The compilation works fine, but the linker not found some symbol defined in the file.

Then I made a simple test: I modified a little bit the syntax of the :flag: with random character like this:

:flags:
  :testferger:
    :compile:
      :startup_stm32xxx:
          - -x assembler-with-cpp

And I was expected an error. This was just to verify that that part of code was correctly parsed, but nothing changed. The compilation proceeding well, and the linker fails.

So my question is: does the : flags : part works? Because it seems to be skipped. And what I should do?
Thanks to all!

For linker you have another section under flags, test

commented

Hi @Letme, thank you for your reply.

For linker you have another section under flags, test

I also tried:

:flags: :test: :compile: :startup_stm32xxx: - -x assembler-with-cpp :link: :startup_stm32xxx: - -x assembler-with-cpp

but with the same result.

The error it arises is:

<path>../arm-none-eabi/bin/ld: warning: cannot find entry symbol Reset_Handler; defaulting to 0000000008000000

where is my path /usr/lib/gcc .. etc.

It seems that it does not see the symbols declared in the startup.s file, with is inside the source directory, so it should be seen by Ceedling. And It should be compiled by the "-x assembler-with-cpp" flag, thanks to the "flags" section.

I know for sure that this source code with this flag works fine, since I'm able to compile it and flash onto the board, so the problem can't be in the source.

The other problem is, as I wrote in the first post:

Then I made a simple test: I modified a little bit the syntax of the :flag: with random character like this:

:flags:
  :testferger:
    :compile:
      :startup_stm32xxx:
          - -x assembler-with-cpp

And I was expected an error. This was just to verify that that part of code was correctly parsed, but nothing changed. The >compilation proceeding well, and the linker fails.

Which make me things that there is some issue here.

Your error is linker based on the pasted output (the ld is linker). And it complains that there is no Reset_Hanlder passed, so rather check which sources are passed to the linking stage.

I do not know why linker would have filename as a flag. So have you tried:

:flags:
  :test:
    :link:
        - -x assembler-with-cpp
commented

Hi @Letme,

Thank you for your message.

Your error is linker based on the pasted output (the ld is linker). And it complains that there is no Reset_Hanlder passed, so rather check which sources are passed to the linking stage.

I do not know why linker would have filename as a flag. So have you tried:

:flags:
  :test:
    :link:
        - -x assembler-with-cpp

Yes, I also tried to use the : flags : section for linker, but nothing change. In general, however, I think the problem is that this source is not seen by compiler.

I'm saiyng this because I have a CMakeList file in which are configurated all flag and setting in order to build the project, and the project works fine with it.

And in the CMakeList I have this:

set_source_files_properties(<path>/startup_stm32xxx.s PROPERTIES COMPILE_FLAGS "-x assembler-with-cpp")

So with the : flags : setting I'm triyng to replicate it.

Thanks

Put verbosity[4] before the test in command line to get a bit more expanded view of your steps. It should help.