sprintf on KDS3.2.0

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

sprintf on KDS3.2.0

跳至解决方案
2,168 次查看
a8Chcx
Contributor V

Hi,

I am using KDS3.2.0 and KSDK 2.0 for K66F development.

I can use PRINTF to output debug message..

When I use sprintf and have the following problem:

sprintf(&LCD_character[d_position], "DDD"); ---Works fine

sprintf(&LCD_character[d_position], "%s_", temp_char); ---Not working, get the following error:

`_sbrk' referenced in section `.text._sbrk_r' of c:/fsl32/toolchain/bin/../lib/gcc/arm-none-eabi/4.8.4/../../../../arm-none-eabi/lib/armv7e-m/fpu\libg_s.a(lib_a-sbrkr.o): defined in discarded section `.text' of ./utilities/fsl_sbrk.o (symbol from plugin)

`errno' referenced in section `.text._sbrk_r' of c:/fsl32/toolchain/bin/../lib/gcc/arm-none-eabi/4.8.4/../../../../arm-none-eabi/lib/armv7e-m/fpu\libg_s.a(lib_a-sbrkr.o): defined in discarded section `.text' of ./middleware/lwip_2.0.0/port/sys_arch.o (symbol from plugin)

collect2.exe: error: ld returned 1 exit status

makefile:103: recipe for target 'iNetVu7710_V50_FW.elf' failed

make: *** [iNetVu7710_V50_FW.elf] Error 1

I tried the way that Erich provided to change "caddr_t _sbrk(int incr)" in fsl_sbrk.c to

void _sbrk(void){}

It didn't fix the problem...

Can anybody to help me to fix this problem?

Thanks,

Christie

0 项奖励
回复
1 解答
1,857 次查看
BlackNight
NXP Employee
NXP Employee

Hi Christie,

I have identified the problem: it is related to -flto linker optimization. See Solving Problem with GNU Linker and “referenced in section, defined in discarded section ” Error Mes...  for a description and the solution to work around this.

I hope this helps,

Erich

在原帖中查看解决方案

0 项奖励
回复
7 回复数
1,857 次查看
BlackNight
NXP Employee
NXP Employee

Hello,

could you provide an example with all the necessary types/variables?

I have tried the following

unsigned char LCD_character[32];
int d_position = 0;
char *temp_char;

void test(void) {
  sprintf(&LCD_character[d_position], "DDD");
  sprintf(&LCD_character[d_position], "%s_", temp_char);
}

and it worked on my end without issues?

Erich

0 项奖励
回复
1,857 次查看
a8Chcx
Contributor V

Hi Erich,

Please check the attached project...

Thanks,

Christie

0 项奖励
回复
1,858 次查看
BlackNight
NXP Employee
NXP Employee

Hi Christie,

I have identified the problem: it is related to -flto linker optimization. See Solving Problem with GNU Linker and “referenced in section, defined in discarded section ” Error Mes...  for a description and the solution to work around this.

I hope this helps,

Erich

0 项奖励
回复
1,857 次查看
a8Chcx
Contributor V

Hi Erich,

It works. Thank you for your help... 

What is "-flto" optimization doing? Can I just turn off this because I tried it works fine without "-flto" ON?

If I check "use float with nano printf", it works as well...

Could you tell me if there is any relationship? Which way should I use?

Thanks,

Christie

0 项奖励
回复
1,857 次查看
BlackNight
NXP Employee
NXP Employee

Hi Christie,

-flto does optmizations across compilation units (modules), something the compiler is not able to do. Basically it tries to remove/inline things as much as possible from a 'global' application point of view. It is known (at least to me) that sometimes it is too agressive like in this case. It is not related to the printf option, but of course if you use different libraries, it has an other angle of optimizations.

I hope this helps,

Erich

0 项奖励
回复
1,857 次查看
a8Chcx
Contributor V

Thanks, Erich.

0 项奖励
回复
1,857 次查看
BlackNight
NXP Employee
NXP Employee

got it, will look into it over the next day and report back my findings.

Erich

0 项奖励
回复