From 0a533aeb791b4dcad639c42c189b1f6a8b89082f Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Wed, 26 Oct 2022 00:40:04 -0400 Subject: [PATCH] [ch32v307] support c++ --- bsp/wch/risc-v/ch32v307v-r1/SConstruct | 1 + .../board/linker_scripts/link.lds | 71 ++++++++++++------- bsp/wch/risc-v/ch32v307v-r1/rtconfig.py | 2 + 3 files changed, 47 insertions(+), 27 deletions(-) diff --git a/bsp/wch/risc-v/ch32v307v-r1/SConstruct b/bsp/wch/risc-v/ch32v307v-r1/SConstruct index efe5f2c5be..ada2a1ccaa 100644 --- a/bsp/wch/risc-v/ch32v307v-r1/SConstruct +++ b/bsp/wch/risc-v/ch32v307v-r1/SConstruct @@ -24,6 +24,7 @@ env = Environment(tools = ['mingw'], AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS, CC = rtconfig.CC, CFLAGS = rtconfig.CFLAGS, AR = rtconfig.AR, ARFLAGS = '-rc', + CXX = rtconfig.CXX, CXXFLAGS = rtconfig.CXXFLAGS, LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS) env.PrependENVPath('PATH', rtconfig.EXEC_PATH) diff --git a/bsp/wch/risc-v/ch32v307v-r1/board/linker_scripts/link.lds b/bsp/wch/risc-v/ch32v307v-r1/board/linker_scripts/link.lds index 1101b5ef65..267cab6f57 100644 --- a/bsp/wch/risc-v/ch32v307v-r1/board/linker_scripts/link.lds +++ b/bsp/wch/risc-v/ch32v307v-r1/board/linker_scripts/link.lds @@ -24,11 +24,11 @@ SECTIONS _einit = .; } >FLASH AT>FLASH - .vector : - { - *(.vector); - . = ALIGN(64); - } >FLASH AT>FLASH + .vector : + { + *(.vector); + . = ALIGN(64); + } >FLASH AT>FLASH .text : { @@ -42,29 +42,46 @@ SECTIONS *(.gnu.linkonce.t.*) /* section information for finsh shell */ - . = ALIGN(4); - __fsymtab_start = .; - KEEP(*(FSymTab)) - __fsymtab_end = .; - . = ALIGN(4); - __vsymtab_start = .; - KEEP(*(VSymTab)) - __vsymtab_end = .; - . = ALIGN(4); - - /* section information for initial. */ - . = ALIGN(4); - __rt_init_start = .; - KEEP(*(SORT(.rti_fn*))) - __rt_init_end = .; - . = ALIGN(4); - - /* section information for modules */ - . = ALIGN(4); - __rtmsymtab_start = .; - KEEP(*(RTMSymTab)) - __rtmsymtab_end = .; . = ALIGN(4); + __fsymtab_start = .; + KEEP(*(FSymTab)) + __fsymtab_end = .; + . = ALIGN(4); + __vsymtab_start = .; + KEEP(*(VSymTab)) + __vsymtab_end = .; + . = ALIGN(4); + + /* section information for initial. */ + . = ALIGN(4); + __rt_init_start = .; + KEEP(*(SORT(.rti_fn*))) + __rt_init_end = .; + . = ALIGN(4); + + /* section information for modules */ + . = ALIGN(4); + __rtmsymtab_start = .; + KEEP(*(RTMSymTab)) + __rtmsymtab_end = .; + . = ALIGN(4); + + /* section information for initial. */ + . = ALIGN(4); + __rt_init_start = .; + KEEP(*(SORT(.rti_fn*))) + __rt_init_end = .; + + . = ALIGN(4); + + PROVIDE(__ctors_start__ = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + PROVIDE(__ctors_end__ = .); + + . = ALIGN(4); + + _etext = .; } >FLASH AT>FLASH diff --git a/bsp/wch/risc-v/ch32v307v-r1/rtconfig.py b/bsp/wch/risc-v/ch32v307v-r1/rtconfig.py index 07e7724592..0761b2b316 100644 --- a/bsp/wch/risc-v/ch32v307v-r1/rtconfig.py +++ b/bsp/wch/risc-v/ch32v307v-r1/rtconfig.py @@ -57,6 +57,8 @@ if PLATFORM == 'gcc': else: CFLAGS += ' -O2' + CXXFLAGS = CFLAGS + POST_ACTION = OBJCPY + ' -O binary $TARGET ' + TARGET_NAME + '\n' POST_ACTION += SIZE + ' $TARGET\n' -- GitLab