Skip to content
This repository was archived by the owner on Jun 5, 2019. It is now read-only.

Commit 78f5cb3

Browse files
committed
More updates to support use of GCC
- Updated TinyCLR project files to use $(AssemblyName) instead of hard coded "tinyclr" to enable multiple full runtime configuration projects in a single solution - Fixed entrypoint signature of AppEntry.s in MCBSTM32F400 solution. (Need to figure out a solution to allow re-use of standard code as the only change is in the Reset_handler implementation. Given that Cortex-M and CMSIS standards allow implementing Reset_handler as a C function (with a WEAK default) we could leverage that to allow link time overloading... - updated uVision project file to suport selecting GCC or MDK binaries (Not fully tested so Caveat Emptor) - Cleaned up ad corected GCC scateerfile XML files ( At this point there doesn't seem to be much value in retaining the XML form of these and we'd probably be better off just using the raw underlying languages directly. This would have the added benefit of full language support for things like asserts to check sizes and ranges, etc...) - switched to using G++ for the linker command so we get the advantages of using Spec files as is the common pattern for most available examples on the web including those exported from mBed.org - Changed GCC target ARM_TYPE_FLAGS peoperty to ARCH_TYPE_FLAGS as the intent is CPU neutral should we want to target something other than ARM with GCC. (Although there is still a fair amount of ARM specific assumptions in the targets file) - Fixed setting of the FLOATING_POINT_FLAG for ARM - Set linker task to use LIB_DIR as the working directory again. This enables finding libraries without resorting to explicit paths for all as that triggers a GCC bug for long command lines. -
1 parent 1c5fe33 commit 78f5cb3

File tree

12 files changed

+3813
-463
lines changed

12 files changed

+3813
-463
lines changed

Solutions/MCBSTM32F400/DeviceCode/CMSIS_RTX_Config/RTX_Conf_CM.c

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -36,18 +36,6 @@
3636
#include "cmsis_os.h"
3737
#include "lwip/opt.h"
3838

39-
// [MSOPENTECH_CHANGE]
40-
// These macros are applied as attributes to the declaration of
41-
// the buffer arrays that hold the system and user stacks in
42-
// "RTX_CM_lib.h", which is included below. This allows placing
43-
// the stacks independently of other kernel data as they would
44-
// otherwise get thrown into the mix with all of the rest of the
45-
// kernel data from this compilation unit, thus prventing placment
46-
// of the stack in faster memory regions such as CCM data space.
47-
#define ATTRIB_SYSTEM_STACK __attribute__((section ("rtx_stack")))
48-
#define ATTRIB_USER_STACK ATTRIB_SYSTEM_STACK
49-
//[ END MSOPENTECH_CHANGE ]
50-
5139
/*----------------------------------------------------------------------------
5240
* RTX User configuration part BEGIN
5341
*---------------------------------------------------------------------------*/

Solutions/MCBSTM32F400/DeviceCode/TinyHal/GNU_S/AppEntry.s

Lines changed: 1 addition & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ EntryPoint:
8585
@ ]
8686
@ The actual word used is 0x2000E00C
8787

88-
b Reset_Handler @ 0xE00C
88+
b.n Reset_Handler @ 0xE00C
8989
.hword 0x2000 @ Booter signature is 0x2000E00C
9090
.word 0 @ [ UNUSED ]
9191
.word 0 @ [ UNUSED ]
@@ -96,65 +96,6 @@ EntryPoint:
9696

9797
Reset_Handler:
9898
@@ reload the stack pointer as there's no returning to the loader
99-
;*************************************************************************
100-
101-
.section SectionForStackBottom
102-
StackBottom:
103-
.word 0
104-
105-
.section SectionForStackTop
106-
__initial_sp:
107-
StackTop:
108-
.word 0
109-
110-
.section SectionForHeapBegin
111-
HeapBegin:
112-
.word 0
113-
114-
.section SectionForHeapEnd
115-
HeapEnd:
116-
.word 0
117-
118-
.section SectionForCustomHeapBegin
119-
CustomHeapBegin:
120-
.word 0
121-
122-
.section SectionForCustomHeapEnd
123-
CustomHeapEnd:
124-
.word 0
125-
126-
EntryPoint:
127-
128-
@ The first word has a dual role:
129-
@ - It is the entry point of the application loaded or discovered by
130-
@ the bootloader and therfore must be valid executable code
131-
@ - it contains a signature word used to identify application blocks
132-
@ in TinyBooter (see: Tinybooter_ProgramWordCheck() for more details )
133-
@ * The additional entries in this table are completely ignored and
134-
@ remain for backwards compatibility. Since the boot loader is hard
135-
@ coded to look for the signature, half of which is an actual relative
136-
@ branch instruction, removing the unused entries would require all
137-
@ bootloaders to be updated as well. [sic.]
138-
@ [ NOTE:
139-
@ In the next major release where we can afford to break backwards
140-
@ compatibility this will almost certainly change, as the whole
141-
@ init/startup for NETMF is overly complex. The various tools used
142-
@ for building the CLR have all come around to supporting simpler
143-
@ init sequences we should leverage directly
144-
@ ]
145-
@ The actual word used is 0x2000E00C
146-
147-
b Reset_Handler @ 0xE00C
148-
.hword 0x2000 @ Booter signature is 0x2000E00C
149-
.word 0 @ [ UNUSED ]
150-
.word 0 @ [ UNUSED ]
151-
.word 0 @ [ UNUSED ]
152-
.word 0 @ [ UNUSED ]
153-
.word 0 @ [ UNUSED ]
154-
.word 0 @ [ UNUSED ]
155-
156-
Reset_Handler:
157-
;; reload the stack pointer as there's no returning to the loader
15899
ldr sp, =__initial_sp
159100
LDR R0, =SystemInit
160101
BLX R0

Solutions/MCBSTM32F400/TinyCLR/TinyCLR.proj

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,20 +24,20 @@
2424
<ExtraTargets>BuildSigFiles;CompressImage</ExtraTargets>
2525
<ExtraEXETargets>MetaDataProcessorDat;TinyClrDat</ExtraEXETargets>
2626
<ImageLocation Condition="'$(MEMORY)'=='FLASH'">\ER_FLASH</ImageLocation>
27-
<LINK_FLAGS Condition="'$(COMPILER_TOOL)'!='GCC'">$(LINK_FLAGS) --verbose $(SWTC)keep *(.init_array)</LINK_FLAGS>
27+
<LINK_FLAGS Condition="'$(COMPILER_TOOL)'!='GCC'">$(LINK_FLAGS) $(SWTC)keep *(.init_array)</LINK_FLAGS>
2828
<MMP_DAT_SKIP>false</MMP_DAT_SKIP>
29-
<MMP_DAT_CreateDatabaseFile>$(BIN_DIR)\tinyclr.dat</MMP_DAT_CreateDatabaseFile>
30-
<EXEScatterFileDefinition>$(SRC_DIR)\scatterfile_tinyclr_$(COMPILER_TOOL).$(SCATTER_EXT)</EXEScatterFileDefinition>
29+
<MMP_DAT_CreateDatabaseFile>$(BIN_DIR)\$(AssemblyName).dat</MMP_DAT_CreateDatabaseFile>
30+
<EXEScatterFileDefinition>$(SRC_DIR)\scatterfile_$(AssemblyName)_$(COMPILER_TOOL).$(SCATTER_EXT)</EXEScatterFileDefinition>
3131
<CompressImageFlashSym>EntryPoint</CompressImageFlashSym>
3232
<CompressImageDatSym>TinyClr_Dat_Start</CompressImageDatSym>
3333
<CompressImageCfgSym>g_ConfigurationSector</CompressImageCfgSym>
3434
<USE_SSL Condition="'$(FLAVOR)'=='Release'">true</USE_SSL>
3535
</PropertyGroup>
3636
<ItemGroup>
37-
<CompressImageSymdef Include="$(BIN_DIR)\TinyCLR.symdefs" />
38-
<CompressImageFlash Include="$(BIN_DIR)\TinyCLR.bin\ER_FLASH" />
39-
<CompressImageDat Include="$(BIN_DIR)\TinyCLR.bin\ER_DAT" />
40-
<CompressImageCfg Include="$(BIN_DIR)\TinyCLR.bin\ER_CONFIG" />
37+
<CompressImageSymdef Include="$(BIN_DIR)\$(AssemblyName).symdefs" />
38+
<CompressImageFlash Include="$(BIN_DIR)\$(AssemblyName).bin\ER_FLASH" />
39+
<CompressImageDat Include="$(BIN_DIR)\$(AssemblyName).bin\ER_DAT" />
40+
<CompressImageCfg Include="$(BIN_DIR)\$(AssemblyName).bin\ER_CONFIG" />
4141
</ItemGroup>
4242
<ItemGroup>
4343
<IncludePaths Include="DeviceCode\PAL" />
@@ -47,8 +47,8 @@
4747
<Compile Include="allocator.cpp" />
4848
<Compile Include="tinyclr.cpp" />
4949
<HFiles Include="$(SPOCLIENT)\clr\include\tinyclr_application.h" />
50-
<ObjFiles Include="$(OBJ_DIR)\tinyclr_dat.$(OBJ_EXT)" />
51-
<ScatterFileReferences Include="$(SRC_DIR)\scatterfile_tinyclr_$(COMPILER_TOOL).$(SCATTER_EXT)" />
50+
<ObjFiles Include="$(OBJ_DIR)\$(AssemblyName)_dat.$(OBJ_EXT)" />
51+
<ScatterFileReferences Include="$(SRC_DIR)\scatterfile_$(AssemblyName)_$(COMPILER_TOOL).$(SCATTER_EXT)" />
5252
</ItemGroup>
5353
<Import Condition="'$(CORE_FEATUREPROJ)'==''" Project="$(SPOCLIENT)\Framework\Features\core.featureproj" />
5454
<Import Condition="'$(HARDWARE_FEATUREPROJ)'==''" Project="$(SPOCLIENT)\Framework\Features\Hardware.featureproj" />

Solutions/MCBSTM32F400/TinyCLR/scatterfile_tinyclr_gcc.xml

Lines changed: 82 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
<Set Name="Valid" Value="false"/>
77

88
<!-- ################################################################################ -->
9-
109
<!-- Memory Region base and size values for physical hardware to help clarify the mapping
1110
by making Symbolic names available instead of a bunch of numbers. These values are
1211
fixed in hardware and therefore, don't change.
@@ -31,7 +30,7 @@
3130
<Set Name="EXTRAM_BaseAddress" Value="0x68000000"/>
3231
<Set Name="EXTRAM_Size" Value="0x00200000"/><!-- 2MB -->
3332

34-
<!-- Solution specific usage settings -->
33+
<!-- Solution/Project specific usage settings -->
3534
<!-- Internal CCM (D-Bus) -->
3635
<!-- Put Stack in CCM for high speed access, reducing overhead of stack usage -->
3736
<Set Name="Stack_Bottom" Value="%CCM_BaseAddress%"/>
@@ -51,7 +50,7 @@
5150

5251
<!-- DAT region goes into external NOR Flash -->
5352
<Set Name="Data_BaseAddress" Value="%Config_BaseAddress% + %Config_Size%"/>
54-
<Set Name="Data_Size" Value="0x00020000"/><!-- 128KB -->
53+
<Set Name="Data_Size" Value="0x00030000"/><!-- 192KB -->
5554

5655
<!-- [Deployment fills the rest of external NOR flash...] -->
5756

@@ -64,31 +63,30 @@
6463
<!-- Internal FLASH -->
6564

6665
<!-- Native Code section -->
67-
<Set Name="Code_BaseAddress" Value="%BooterCode_BaseAddress% + %BooterCode_Size%"/>
68-
<Set Name="Code_Size" Value="%IFLASH_Size%-%BooterCode_Size%"/>
66+
<Set Name="Code_BaseAddress" Value="%BooterCode_BaseAddress% + %BooterCode_Size%"/>
67+
<Set Name="Code_Size" Value="%IFLASH_Size%-%BooterCode_Size%"/>
6968

7069
<!-- =========================================================== -->
7170
<If Name="TARGETTYPE" Value="Release">
7271
<!-- ALL of external RAM is enabled for the CLR HEAP -->
73-
<Set Name="Heap_Size" Value="%EXTRAM_Size%"/>
74-
<Set Name="CustomHeap_Size" Value="0"/>
72+
<Set Name="Heap_Size" Value="%EXTRAM_Size%"/>
73+
<Set Name="CustomHeap_Size" Value="0"/>
7574

76-
<Set Name="Valid" Value="true"/>
75+
<Set Name="Valid" Value="true"/>
7776
</If>
7877
<If Name="TARGETTYPE" Value="Debug">
7978
<!-- Use only 1MB of external RAM for Debug builds.
8079
Can't use all of external RAM as the address pins overlap
8180
with the SWD pins used for ETM tracing in Debug builds.
8281
-->
83-
<Set Name="Heap_Size" Value="0x00100000"/><!--1MB-->
84-
<Set Name="CustomHeap_Size" Value="0"/>
82+
<Set Name="Heap_Size" Value="0x00100000"/><!--1MB-->
83+
<Set Name="CustomHeap_Size" Value="0"/>
8584

86-
<Set Name="Valid" Value="true"/>
85+
<Set Name="Valid" Value="true"/>
8786
</If>
8887
</If>
8988

9089
<!-- ################################################################################ -->
91-
9290
<If Name="Valid" Value="false">
9391
<Error Message="Configuration not recognized"/>
9492
</If>
@@ -107,15 +105,26 @@
107105
<NamedGroup Name="SECTIONS">
108106
<!-- ========= INTERNAL FLASH ============================================ -->
109107
<ExecRegion Name="ER_%TARGETLOCATION%" Options="&gt;LR_%TARGETLOCATION%">
110-
<FileMapping Name="*" Options="(i.EntryPoint)" />
111-
<FileMapping Name="*" Options="(SectionForBootstrapOperations)" />
112-
<FileMapping Name="*" Options="(.text*)" />
113-
<FileMapping Name="*" Options="(i.*)" />
114-
<FileMapping Name="*" Options="(.rodata*)" />
115-
<FileMapping Name="*" Options="(rodata)" />
116-
<FileMapping Name="*" Options="(.constdata*)" />
117-
<FileMapping Name="*" Options="(.conststring*)" />
118-
<FileMapping Name="*" Options="(.glue*)" />
108+
<FileMapping Name="*(i.EntryPoint)"/>
109+
<FileMapping Name="*(SectionForBootstrapOperations)"/>
110+
<FileMapping Name="KEEP(*(.init))"/>
111+
<FileMapping Name="KEEP(*(.fini))"/>
112+
<FileMapping Name="*crtbegin.o(.ctors)"/>
113+
<FileMapping Name="*(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)"/>
114+
<FileMapping Name="*(SORT(.ctors.*))"/>
115+
<FileMapping Name="*(.ctors)"/>
116+
<FileMapping Name="*crtbegin.o(.dtors)"/>
117+
<FileMapping Name="*crtbegin?.o(.dtors)"/>
118+
<FileMapping Name="*(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)"/>
119+
<FileMapping Name="*(SORT(.dtors.*))"/>
120+
<FileMapping Name="*(.dtors)"/>
121+
<FileMapping Name="*(.text*)"/>
122+
<FileMapping Name="*(i.*)"/>
123+
<FileMapping Name="*(.rodata*)"/>
124+
<FileMapping Name="*(rodata)"/>
125+
<FileMapping Name="*(.constdata*)"/>
126+
<FileMapping Name="*(.conststring*)"/>
127+
<FileMapping Name="*(.glue*)"/>
119128
<Include File="%SPOCLIENT%\Solutions\MCBSTM32F400\scatterfile_gcc_missing_symbols.xml"/>
120129
</ExecRegion>
121130

@@ -132,71 +141,92 @@
132141
<ExecRegion Name="ER_VECTORS" Options="&gt;IRAM">
133142
<FileMapping Name="*" Options="(VectorTable)" />
134143
</ExecRegion>
135-
144+
145+
<ExecRegion Name="ER_RAM_RW" Align="0x10" Options="&gt;IRAM AT&gt;LR_FLASH ">
146+
<FileMapping Name="*(rwdata)"/>
147+
<FileMapping Name="*(.data*)"/>
148+
<FileMapping Name=". = ALIGN(4);"/>
149+
<FileMapping Name="PROVIDE(__preinit_array_start = . );"/>
150+
<FileMapping Name="KEEP(*(.preinit_array))"/>
151+
<FileMapping Name="PROVIDE(__preinit_array_end = . );"/>
152+
153+
<FileMapping Name=". = ALIGN(4);"/>
154+
<FileMapping Name="PROVIDE(__init_array_start = . );"/>
155+
<FileMapping Name="KEEP(*(SORT(.init_array)))"/>
156+
<FileMapping Name="KEEP(*(.init_array))"/>
157+
<FileMapping Name="PROVIDE(__init_array_end = . );"/>
158+
159+
<FileMapping Name=". = ALIGN(4);"/>
160+
<FileMapping Name="PROVIDE(__fini_array_start = . );"/>
161+
<FileMapping Name="KEEP(*(SORT(.fini_array)))"/>
162+
<FileMapping Name="KEEP(*(.fini_array))"/>
163+
<FileMapping Name="PROVIDE(__fini_array_end = . );"/>
164+
165+
<FileMapping Name=". = ALIGN(4);"/>
166+
<FileMapping Name="__data_end__ = .;"/>
167+
</ExecRegion>
168+
169+
<ExecRegion Name=".bss" Align="0x10" Base="(NOLOAD)" Options="&gt;IRAM">
170+
<FileMapping Name="*(.bss*)" />
171+
<FileMapping Name="*(.zidata*)" />
172+
<FileMapping Name="PROVIDE(__exidx_start = .);" />
173+
<FileMapping Name="PROVIDE(__exidx_end = .);" />
174+
<FileMapping Name="*(g_SSL_SeedData)" />
175+
<FileMapping Name="*(COMMON)" />
176+
</ExecRegion>
177+
136178
<!-- To enable re-initialization of the LWIP stack, which has no built-in support
137179
for re-init, all RW and ZI data for the stack is placed into an isolated region
138180
and the HAL soft reboot code handles re-initializing the data in this region.
139181
-->
140182
<ExecRegion Name="ER_LWIP_OS_RW" Options="&gt;IRAM">
141-
<FileMapping Name="*sockets_hal_*_LWIP_os.lib" Options="(rwdata)" />
142-
<FileMapping Name="*lwip_1_4_1_os_CMSIS_RTOS.lib" Options="(rwdata)" />
183+
<FileMapping Name="*sockets_hal_*_LWIP_os.lib(rwdata)" />
184+
<FileMapping Name="*lwip_1_4_1_os_CMSIS_RTOS.lib(rwdata)" />
143185
</ExecRegion>
144-
186+
145187
<ExecRegion Name="ER_LWIP_OS_ZI" Options="&gt;IRAM">
146-
<FileMapping Name="*sockets_hal_*_LWIP_os.lib" Options="(.bss)" />
147-
<FileMapping Name="*lwip_1_4_1_os_CMSIS_RTOS.lib" Options="(.bss)" />
188+
<FileMapping Name="*sockets_hal_*_LWIP_os.lib(.bss)" />
189+
<FileMapping Name="*lwip_1_4_1_os_CMSIS_RTOS.lib(.bss)" />
148190
</ExecRegion>
149191

150-
<ExecRegion Name="ER_RAM_RW" Align="0x10" Options="&gt;IRAM AT&gt;LR_FLASH ">
151-
<FileMapping Name="*" Options="(rwdata)" />
152-
<FileMapping Name="*" Options="(.data*)" />
153-
</ExecRegion>
154192

155193
<ExecRegion Name="ER_RAM_RO" Align="0x10" Options="&gt;IRAM">
156194
<!-- Flash programming from Flash is safe on STM32 -->
157195
<!-- No need to place Flash programming code in RAM -->
158196
<!-- <FileMapping Name="*" Options="(SectionForFlashOperations)" /> -->
159197
</ExecRegion>
160198

161-
<ExecRegion Name=".bss" Align="0x10" Base="(NOLOAD)" Options="&gt;IRAM">
162-
<FileMapping Name="*" Options="(.bss*)" />
163-
<FileMapping Name="*" Options="(.zidata*)" />
164-
<FileMapping Name="PROVIDE(__exidx_start = .);" />
165-
<FileMapping Name="PROVIDE(__exidx_end = .);" />
166-
<FileMapping Name="*" Options="(g_SSL_SeedData)" />
167-
<FileMapping Name="*" Options="(COMMON)" />
168-
</ExecRegion>
169199

170200
<ExecRegion Name="/DISCARD/">
171-
<FileMapping Name="*" Options="(.ARM.exidx*)" />
172-
<FileMapping Name="*" Options="(.ARM.extab*)" />
201+
<FileMapping Name="*(.ARM.exidx*)" />
202+
<FileMapping Name="*(.ARM.extab*)" />
173203
</ExecRegion>
174204

175205
<!--========= EXTERNAL RAM =============================================-->
176206
<ExecRegion Name="ER_HEAP_BEGIN" Options="&gt;EXTRAM">
177-
<FileMapping Name="*" Options="(SectionForHeapBegin)" />
207+
<FileMapping Name="*(SectionForHeapBegin)" />
178208
</ExecRegion>
179209

180210
<!-- everything between heapbegin and heapend will be allocated for a heap -->
181211

182212
<ExecRegion Name="ER_HEAP_END" Base="ADDR(ER_HEAP_BEGIN) + %Heap_Size%" Options="&gt;EXTRAM" >
183-
<FileMapping Name="*" Options="(SectionForHeapEnd)" />
213+
<FileMapping Name="*(SectionForHeapEnd)" />
184214
</ExecRegion>
185215

186216
<ExecRegion Name="ER_CUSTOM_HEAP_BEGIN" Options="&gt;EXTRAM" >
187-
<FileMapping Name="*" Options="(SectionForCustomHeapBegin)" />
217+
<FileMapping Name="*(SectionForCustomHeapBegin)" />
188218
</ExecRegion>
189219

190220
<!-- everything between heapbegin and heapend will be allocated for the unmanaged SimpleHeap -->
191221

192222
<ExecRegion Name="ER_CUSTOM_HEAP_END" Base="ADDR(ER_CUSTOM_HEAP_BEGIN) + %CustomHeap_Size%" Options="&gt;EXTRAM" >
193-
<FileMapping Name="*" Options="(SectionForCustomHeapEnd)" />
223+
<FileMapping Name="*(SectionForCustomHeapEnd)" />
194224
</ExecRegion>
195225

196226
<!-- ========= Internal CCM ============================================ -->
197227
<!-- Stack allocation pools for the OS, Sizes are set in RTX_Conf_CM.c along with other OS configuration -->
198228
<ExecRegion Name="ER_RT_STACK" Options="&gt;D_CCM">
199-
<FileMapping Name="*" Options="(rtx_stack)" />
229+
<FileMapping Name="*(rtx_stack)" />
200230
</ExecRegion>
201231

202232
<!-- The rest of the CCM is used as a general stack during startup. This can't overlap with the ER_RT_STACK
@@ -207,21 +237,21 @@
207237
puts the end outside of physical memory it will generate an imprecise abort.
208238
-->
209239
<ExecRegion Name="ER_STACK_BOTTOM" Align="8" Options="&gt;D_CCM">
210-
<FileMapping Name="*" Options="(SectionForStackBottom)" />
240+
<FileMapping Name="*(SectionForStackBottom)" />
211241
</ExecRegion>
212242

213-
<!--8 for the two 32bit values in the SectionForStack* sections, This keeps the region
243+
<!-- (-8) for the two 32bit values in the SectionForStack* sections, This keeps the region
214244
limit from exceeding the size of physical memory. -->
215-
<ExecRegion Name="ER_STACK_TOP" Base="%Stack_Size%-SIZEOF(ER_RT_STACK)-8" Options="&gt;D_CCM">
216-
<FileMapping Name="*" Options="(SectionForStackTop)" />
245+
<ExecRegion Name="ER_STACK_TOP" Base="%Stack_Bottom% + %Stack_Size% - SIZEOF(ER_RT_STACK) - 8" Options="&gt;D_CCM">
246+
<FileMapping Name="*(SectionForStackTop)" />
217247
</ExecRegion>
218248

219249
<ExecRegion Name="ER_DAT" Options="&gt;LR_DAT">
220-
<FileMapping Name="*" Options="(tinyclr_metadata)" />
250+
<FileMapping Name="*(tinyclr_metadata)" />
221251
</ExecRegion>
222252

223253
<ExecRegion Name="ER_CONFIG" Options="&gt;LR_CONFIG">
224-
<FileMapping Name="*" Options="(SectionForConfig)" />
254+
<FileMapping Name="*(SectionForConfig)" />
225255
</ExecRegion>
226256
</NamedGroup>
227257

0 commit comments

Comments
 (0)