您尚未登录。

楼主 #1 2018-08-12 12:00:17

达克罗德
会员
注册时间: 2018-04-10
已发帖子: 1,138
积分: 1090.5

请教-ffunction-sections编译的问题

为了节省空间,我在编译xboot时设置了如下编译选项,来去掉没有用到的函数和数据

CFLAGS += -ffunction-sections -fdata-sections
LDFLAGS += -Wl,--gc-sections

结果发现F1C100S不能启动,看map文件发现,在start.s中调用的system_xx函数全部被优化掉,没有被放到image的最前面

 .text          0x0000000080000000      0x780 build/xboot/src/arch/arm32/mach-f1c100s/start.o
                0x0000000080000000                _start
                0x0000000080000214                return_to_fel
 build/xboot/src/arch/arm32/lib/memcpy.o(.text)
 .text          0x0000000080000780      0x490 build/xboot/src/arch/arm32/lib/memcpy.o
                0x0000000080000780                memcpy
 build/xboot/src/arch/arm32/lib/memset.o(.text)
 .text          0x0000000080000c10       0xb0 build/xboot/src/arch/arm32/lib/memset.o
                0x0000000080000c10                memset
 build/xboot/src/arch/arm32/mach-f1c100s/sys-uart.o(.text)
 build/xboot/src/arch/arm32/mach-f1c100s/sys-clock.o(.text)
 build/xboot/src/arch/arm32/mach-f1c100s/sys-dram.o(.text)
 build/xboot/src/arch/arm32/mach-f1c100s/sys-mmu.o(.text)
 build/xboot/src/arch/arm32/mach-f1c100s/sys-decompress.o(.text)
 build/xboot/src/arch/arm32/mach-f1c100s/sys-spi-flash.o(.text)
 build/xboot/src/arch/arm32/mach-f1c100s/sys-copyself.o(.text)
                0x0000000080000cc0                PROVIDE (__bootloader_end, .)
                0x0000000000000cc0                __bootloader_size = SIZEOF (.bootloader)

请问这是何故?

离线

楼主 #2 2018-08-12 12:07:48

达克罗德
会员
注册时间: 2018-04-10
已发帖子: 1,138
积分: 1090.5

Re: 请教-ffunction-sections编译的问题

我大概知道怎么回事了,看了map文件,--fffunction-sections 选项把所有函数编译成.text.functionname段了
所以链接文件中.text 要换成.text.*

离线

楼主 #3 2018-08-12 12:26:51

达克罗德
会员
注册时间: 2018-04-10
已发帖子: 1,138
积分: 1090.5

Re: 请教-ffunction-sections编译的问题

已经OK了,4MB优化到2MB size。最终 链接文件对几个boot相关函数改成.text*(不是.text.*)。另外-fdata-sections不能加,否则会把romdisk优化掉

离线

楼主 #5 2018-10-12 08:24:29

达克罗德
会员
注册时间: 2018-04-10
已发帖子: 1,138
积分: 1090.5

Re: 请教-ffunction-sections编译的问题

Gardenia 说:

能优化掉这么多吗?这么才优化掉不到1M,是加在makefile里面吧?能说详细点吗?

最新xboot已经集成了这个,你去看它的makefile

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn