1/*
2 * Linker Script for Icelake.
3 *
4 * This script is run through the GNU C preprocessor to align the memory
5 * offsets with headers.
6 *
7 * Use spaces for formatting as cpp ignore tab sizes.
8 */
9
10
11#include <sof/lib/memory.h>
12#include <xtensa/config/core-isa.h>
13
14OUTPUT_ARCH(xtensa)
15
16MEMORY
17{
18  vector_memory_lit :
19        org = XCHAL_MEMERROR_VECTOR_PADDR + SOF_MEM_ERROR_LIT_SIZE,
20        len = SOF_MEM_ERROR_LIT_SIZE
21  vector_memory_text :
22        org = XCHAL_MEMERROR_VECTOR_PADDR,
23        len = SOF_MEM_ERROR_TEXT_SIZE
24  vector_base_text :
25        org = SOF_MEM_VECBASE,
26        len = SOF_MEM_VECBASE_LIT_SIZE
27  vector_int2_lit :
28        org = SOF_MEM_VECBASE + XCHAL_INTLEVEL2_VECOFS - SOF_MEM_VECT_LIT_SIZE,
29        len = SOF_MEM_VECT_LIT_SIZE
30  vector_int2_text :
31        org = SOF_MEM_VECBASE + XCHAL_INTLEVEL2_VECOFS,
32        len = SOF_MEM_VECT_TEXT_SIZE
33  vector_int3_lit :
34        org = SOF_MEM_VECBASE + XCHAL_INTLEVEL3_VECOFS - SOF_MEM_VECT_LIT_SIZE,
35        len = SOF_MEM_VECT_LIT_SIZE
36  vector_int3_text :
37        org = SOF_MEM_VECBASE + XCHAL_INTLEVEL3_VECOFS,
38        len = SOF_MEM_VECT_TEXT_SIZE
39  vector_int4_lit :
40        org = SOF_MEM_VECBASE + XCHAL_INTLEVEL4_VECOFS - SOF_MEM_VECT_LIT_SIZE,
41        len = SOF_MEM_VECT_LIT_SIZE
42  vector_int4_text :
43        org = SOF_MEM_VECBASE + XCHAL_INTLEVEL4_VECOFS,
44        len = SOF_MEM_VECT_TEXT_SIZE
45  vector_int5_lit :
46        org = SOF_MEM_VECBASE + XCHAL_INTLEVEL5_VECOFS - SOF_MEM_VECT_LIT_SIZE,
47        len = SOF_MEM_VECT_LIT_SIZE
48  vector_int5_text :
49        org = SOF_MEM_VECBASE + XCHAL_INTLEVEL5_VECOFS,
50        len = SOF_MEM_VECT_TEXT_SIZE
51  vector_int6_lit :
52        org = SOF_MEM_VECBASE + XCHAL_INTLEVEL6_VECOFS - SOF_MEM_VECT_LIT_SIZE,
53        len = SOF_MEM_VECT_LIT_SIZE
54  vector_int6_text :
55        org = SOF_MEM_VECBASE + XCHAL_INTLEVEL6_VECOFS,
56        len = SOF_MEM_VECT_TEXT_SIZE
57  vector_int7_lit :
58        org = SOF_MEM_VECBASE + XCHAL_INTLEVEL7_VECOFS - SOF_MEM_VECT_LIT_SIZE,
59        len = SOF_MEM_VECT_LIT_SIZE
60  vector_int7_text :
61        org = SOF_MEM_VECBASE + XCHAL_INTLEVEL7_VECOFS,
62        len = SOF_MEM_VECT_TEXT_SIZE
63  vector_kernel_lit :
64        org = SOF_MEM_VECBASE + XCHAL_KERNEL_VECOFS - SOF_MEM_VECT_LIT_SIZE,
65        len = SOF_MEM_VECT_LIT_SIZE
66  vector_kernel_text :
67        org = SOF_MEM_VECBASE + XCHAL_KERNEL_VECOFS,
68        len = SOF_MEM_VECT_TEXT_SIZE
69  vector_user_lit :
70        org = SOF_MEM_VECBASE + XCHAL_USER_VECOFS - SOF_MEM_VECT_LIT_SIZE,
71        len = SOF_MEM_VECT_LIT_SIZE
72  vector_user_text :
73        org = SOF_MEM_VECBASE + XCHAL_USER_VECOFS,
74        len = SOF_MEM_VECT_TEXT_SIZE
75  vector_double_lit :
76        org = SOF_MEM_VECBASE + XCHAL_DOUBLEEXC_VECOFS - SOF_MEM_VECT_LIT_SIZE,
77        len = SOF_MEM_VECT_LIT_SIZE
78  vector_double_text :
79        org = SOF_MEM_VECBASE + XCHAL_DOUBLEEXC_VECOFS,
80        len = SOF_MEM_VECT_TEXT_SIZE
81  sof_fw :
82        org = SOF_FW_BASE,
83        len = SOF_FW_MAX_SIZE
84  wnd0 :
85        org = HP_SRAM_WIN0_BASE,
86        len = HP_SRAM_WIN0_SIZE
87  wnd1 :
88        org = HP_SRAM_WIN1_BASE,
89        len = HP_SRAM_WIN1_SIZE
90  wnd2 :
91        org = HP_SRAM_WIN2_BASE,
92        len = HP_SRAM_WIN2_SIZE
93  wnd3 :
94        org = HP_SRAM_WIN3_BASE,
95        len = HP_SRAM_WIN3_SIZE
96  static_uuid_entries_seg (!ari) :
97        org = UUID_ENTRY_ELF_BASE,
98        len = UUID_ENTRY_ELF_SIZE
99  static_log_entries_seg (!ari) :
100        org = LOG_ENTRY_ELF_BASE,
101        len = LOG_ENTRY_ELF_SIZE
102  fw_metadata_seg (!ari) :
103        org = EXT_MANIFEST_ELF_BASE,
104        len = EXT_MANIFEST_ELF_SIZE
105  lpsram_mem :
106        org = LP_SRAM_BASE,
107        len = LP_SRAM_SIZE
108}
109
110_EXT_MAN_ALIGN_ = 16;
111EXTERN(ext_man_fw_ver)
112EXTERN(ext_man_cavs_config)
113
114PHDRS
115{
116  vector_memory_lit_phdr PT_LOAD;
117  vector_memory_text_phdr PT_LOAD;
118  vector_base_text_phdr PT_LOAD;
119  vector_int2_lit_phdr PT_LOAD;
120  vector_int2_text_phdr PT_LOAD;
121  vector_int3_lit_phdr PT_LOAD;
122  vector_int3_text_phdr PT_LOAD;
123  vector_int4_lit_phdr PT_LOAD;
124  vector_int4_text_phdr PT_LOAD;
125  vector_int5_lit_phdr PT_LOAD;
126  vector_int5_text_phdr PT_LOAD;
127  vector_int6_lit_phdr PT_LOAD;
128  vector_int6_text_phdr PT_LOAD;
129  vector_int7_lit_phdr PT_LOAD;
130  vector_int7_text_phdr PT_LOAD;
131  vector_kernel_lit_phdr PT_LOAD;
132  vector_kernel_text_phdr PT_LOAD;
133  vector_user_lit_phdr PT_LOAD;
134  vector_user_text_phdr PT_LOAD;
135  vector_double_lit_phdr PT_LOAD;
136  vector_double_text_phdr PT_LOAD;
137  sof_fw_phdr PT_LOAD;
138  wnd0_phdr PT_LOAD;
139  wnd1_phdr PT_LOAD;
140  wnd2_phdr PT_LOAD;
141  wnd3_phdr PT_LOAD;
142  static_uuid_entries_phdr PT_NOTE;
143  static_log_entries_phdr PT_NOTE;
144  metadata_entries_phdr PT_NOTE;
145  lpsram_mem_phdr PT_LOAD;
146}
147
148/*  Default entry point:  */
149ENTRY(_MainEntry)
150_rom_store_table = 0;
151
152/* ABI0 does not use Window base */
153PROVIDE(_memmap_vecbase_reset = HP_SRAM_VECBASE_RESET);
154
155/* Various memory-map dependent cache attribute settings: */
156_memmap_cacheattr_wbna_trapnull = 0xFF42FFF2;
157PROVIDE(_memmap_cacheattr_reset = _memmap_cacheattr_wbna_trapnull);
158
159SECTIONS
160{
161  .MemoryExceptionVector.text : ALIGN(4)
162  {
163    _MemoryExceptionVector_text_start = ABSOLUTE(.);
164    KEEP (*(.MemoryExceptionVector.text))
165    _MemoryExceptionVector_text_end = ABSOLUTE(.);
166  } >vector_memory_text :vector_memory_text_phdr
167
168  .wnd0 (NOLOAD) : ALIGN(8)
169  {
170    . = ALIGN (32);
171    _wnd0_start = ABSOLUTE(.);
172    . = . + HP_SRAM_WIN0_SIZE;
173    _wnd0_end = ABSOLUTE(.);
174  } >wnd0 :wnd0_phdr
175
176  .wnd1 (NOLOAD) : ALIGN(8)
177  {
178    . = ALIGN (32);
179    _wnd1_start = ABSOLUTE(.);
180    . = . + HP_SRAM_WIN1_SIZE;
181    _wnd1_end = ABSOLUTE(.);
182  } >wnd1 :wnd1_phdr
183
184  .wnd2 (NOLOAD) : ALIGN(8)
185  {
186    . = ALIGN (32);
187    _wnd2_start = ABSOLUTE(.);
188    . = . + HP_SRAM_WIN2_SIZE;
189    _wnd2_end = ABSOLUTE(.);
190  } >wnd2 :wnd2_phdr
191
192  .wnd3 (NOLOAD) : ALIGN(8)
193  {
194    . = ALIGN (32);
195    _wnd3_start = ABSOLUTE(.);
196    . = . + HP_SRAM_WIN3_SIZE;
197    _wnd3_end = ABSOLUTE(.);
198  } >wnd3 :wnd3_phdr
199
200  .WindowVectors.text : ALIGN(4)
201  {
202    _WindowVectors_text_start = ABSOLUTE(.);
203    KEEP (*(.WindowVectors.text))
204    _WindowVectors_text_end = ABSOLUTE(.);
205  } >vector_base_text :vector_base_text_phdr
206
207  .Level2InterruptVector.literal : ALIGN(4)
208  {
209    _Level2InterruptVector_literal_start = ABSOLUTE(.);
210    *(.Level2InterruptVector.literal)
211    _Level2InterruptVector_literal_end = ABSOLUTE(.);
212  } >vector_int2_lit :vector_int2_lit_phdr
213
214  .Level2InterruptVector.text : ALIGN(4)
215  {
216    _Level2InterruptVector_text_start = ABSOLUTE(.);
217    KEEP (*(.Level2InterruptVector.text))
218    _Level2InterruptVector_text_end = ABSOLUTE(.);
219  } >vector_int2_text :vector_int2_text_phdr
220
221  .Level3InterruptVector.literal : ALIGN(4)
222  {
223    _Level3InterruptVector_literal_start = ABSOLUTE(.);
224    *(.Level3InterruptVector.literal)
225    _Level3InterruptVector_literal_end = ABSOLUTE(.);
226  } >vector_int3_lit :vector_int3_lit_phdr
227
228  .Level3InterruptVector.text : ALIGN(4)
229  {
230    _Level3InterruptVector_text_start = ABSOLUTE(.);
231    KEEP (*(.Level3InterruptVector.text))
232    _Level3InterruptVector_text_end = ABSOLUTE(.);
233  } >vector_int3_text :vector_int3_text_phdr
234
235  .Level4InterruptVector.literal : ALIGN(4)
236  {
237    _Level4InterruptVector_literal_start = ABSOLUTE(.);
238    *(.Level4InterruptVector.literal)
239    _Level4InterruptVector_literal_end = ABSOLUTE(.);
240  } >vector_int4_lit :vector_int4_lit_phdr
241
242  .Level4InterruptVector.text : ALIGN(4)
243  {
244    _Level4InterruptVector_text_start = ABSOLUTE(.);
245    KEEP (*(.Level4InterruptVector.text))
246    _Level4InterruptVector_text_end = ABSOLUTE(.);
247  } >vector_int4_text :vector_int4_text_phdr
248
249  .Level5InterruptVector.literal : ALIGN(4)
250  {
251    _Level5InterruptVector_literal_start = ABSOLUTE(.);
252    *(.Level5InterruptVector.literal)
253    _Level5InterruptVector_literal_end = ABSOLUTE(.);
254  } >vector_int5_lit :vector_int5_lit_phdr
255
256  .Level5InterruptVector.text : ALIGN(4)
257  {
258    _Level5InterruptVector_text_start = ABSOLUTE(.);
259    KEEP (*(.Level5InterruptVector.text))
260    _Level5InterruptVector_text_end = ABSOLUTE(.);
261  } >vector_int5_text :vector_int5_text_phdr
262
263  .DebugExceptionVector.literal : ALIGN(4)
264  {
265    _DebugExceptionVector_literal_start = ABSOLUTE(.);
266    *(.DebugExceptionVector.literal)
267    _DebugExceptionVector_literal_end = ABSOLUTE(.);
268  } >vector_int6_lit :vector_int6_lit_phdr
269
270  .DebugExceptionVector.text : ALIGN(4)
271  {
272    _DebugExceptionVector_text_start = ABSOLUTE(.);
273    KEEP (*(.DebugExceptionVector.text))
274    _DebugExceptionVector_text_end = ABSOLUTE(.);
275  } >vector_int6_text :vector_int6_text_phdr
276
277  .NMIExceptionVector.literal : ALIGN(4)
278  {
279    _NMIExceptionVector_literal_start = ABSOLUTE(.);
280    *(.NMIExceptionVector.literal)
281    _NMIExceptionVector_literal_end = ABSOLUTE(.);
282  } >vector_int7_lit :vector_int7_lit_phdr
283
284  .NMIExceptionVector.text : ALIGN(4)
285  {
286    _NMIExceptionVector_text_start = ABSOLUTE(.);
287    KEEP (*(.NMIExceptionVector.text))
288    _NMIExceptionVector_text_end = ABSOLUTE(.);
289  } >vector_int7_text :vector_int7_text_phdr
290
291  .KernelExceptionVector.literal : ALIGN(4)
292  {
293    _KernelExceptionVector_literal_start = ABSOLUTE(.);
294    *(.KernelExceptionVector.literal)
295    _KernelExceptionVector_literal_end = ABSOLUTE(.);
296  } >vector_kernel_lit :vector_kernel_lit_phdr
297
298  .KernelExceptionVector.text : ALIGN(4)
299  {
300    _KernelExceptionVector_text_start = ABSOLUTE(.);
301    KEEP (*(.KernelExceptionVector.text))
302    _KernelExceptionVector_text_end = ABSOLUTE(.);
303  } >vector_kernel_text :vector_kernel_text_phdr
304
305  .UserExceptionVector.literal : ALIGN(4)
306  {
307    _UserExceptionVector_literal_start = ABSOLUTE(.);
308    *(.UserExceptionVector.literal)
309    _UserExceptionVector_literal_end = ABSOLUTE(.);
310  } >vector_user_lit :vector_user_lit_phdr
311
312  .UserExceptionVector.text : ALIGN(4)
313  {
314    _UserExceptionVector_text_start = ABSOLUTE(.);
315    KEEP (*(.UserExceptionVector.text))
316    _UserExceptionVector_text_end = ABSOLUTE(.);
317  } >vector_user_text :vector_user_text_phdr
318
319  .DoubleExceptionVector.literal : ALIGN(4)
320  {
321    _DoubleExceptionVector_literal_start = ABSOLUTE(.);
322    *(.DoubleExceptionVector.literal)
323    _DoubleExceptionVector_literal_end = ABSOLUTE(.);
324  } >vector_double_lit :vector_double_lit_phdr
325
326  .DoubleExceptionVector.text : ALIGN(4)
327  {
328    _DoubleExceptionVector_text_start = ABSOLUTE(.);
329    KEEP (*(.DoubleExceptionVector.text))
330    _DoubleExceptionVector_text_end = ABSOLUTE(.);
331  } >vector_double_text :vector_double_text_phdr
332
333  .text : ALIGN(4)
334  {
335    _stext = .;
336    _text_start = ABSOLUTE(.);
337    KEEP (*(.MainEntry.text))
338    *(.entry.text)
339    *(.init.literal)
340    KEEP(*(.init))
341    KEEP(*(.lps_vector))
342    *(.literal .text .literal.* .text.* .stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*)
343    *(.fini.literal)
344    KEEP(*(.fini))
345    *(.gnu.version)
346    KEEP (*(.ResetHandler.text))
347    _text_end = ABSOLUTE(.);
348    _etext = .;
349  } >sof_fw :sof_fw_phdr
350
351  .rodata : ALIGN(4096)
352  {
353    _rodata_start = ABSOLUTE(.);
354    *(.rodata)
355    *(.rodata.*)
356    *(.gnu.linkonce.r.*)
357    *(.rodata1)
358    __XT_EXCEPTION_TABLE__ = ABSOLUTE(.);
359    KEEP (*(.xt_except_table))
360    KEEP (*(.gcc_except_table))
361    *(.gnu.linkonce.e.*)
362    *(.gnu.version_r)
363    KEEP (*(.eh_frame))
364    /*  C++ constructor and destructor tables, properly ordered:  */
365    KEEP (*crtbegin.o(.ctors))
366    KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
367    KEEP (*(SORT(.ctors.*)))
368    KEEP (*(.ctors))
369    KEEP (*crtbegin.o(.dtors))
370    KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
371    KEEP (*(SORT(.dtors.*)))
372    KEEP (*(.dtors))
373    /*  C++ exception handlers table:  */
374    __XT_EXCEPTION_DESCS__ = ABSOLUTE(.);
375    *(.xt_except_desc)
376    *(.gnu.linkonce.h.*)
377    __XT_EXCEPTION_DESCS_END__ = ABSOLUTE(.);
378    *(.xt_except_desc_end)
379    *(.dynamic)
380    *(.gnu.version_d)
381    . = ALIGN(4);		/* this table MUST be 4-byte aligned */
382    _bss_table_start = ABSOLUTE(.);
383    LONG(_bss_start)
384    LONG(_bss_end)
385    _bss_table_end = ABSOLUTE(.);
386    _rodata_end = ABSOLUTE(.);
387  } >sof_fw :sof_fw_phdr
388
389  .module_init : ALIGN(4)
390  {
391    _module_init_start = ABSOLUTE(.);
392    *(*.module_init)
393    _module_init_end = ABSOLUTE(.);
394  } >sof_fw :sof_fw_phdr
395
396  .shared_data : ALIGN(PLATFORM_DCACHE_ALIGN)
397  {
398    _shared_data_start = ABSOLUTE(.);
399    *(*.shared_data)
400    _shared_data_end = ABSOLUTE(.);
401    . = ALIGN(PLATFORM_DCACHE_ALIGN);
402  } >sof_fw :sof_fw_phdr
403
404  .data : ALIGN(4)
405  {
406    _data_start = ABSOLUTE(.);
407    *(.data)
408    *(.data.*)
409    *(.gnu.linkonce.d.*)
410    KEEP(*(.gnu.linkonce.d.*personality*))
411    *(.data1)
412    *(.sdata)
413    *(.sdata.*)
414    *(.gnu.linkonce.s.*)
415    *(.sdata2)
416    *(.sdata2.*)
417    *(.gnu.linkonce.s2.*)
418    KEEP(*(.jcr))
419    _trace_ctx_start = ABSOLUTE(.);
420    *(.trace_ctx)
421    _trace_ctx_end = ABSOLUTE(.);
422    _data_end = ABSOLUTE(.);
423  } >sof_fw :sof_fw_phdr
424
425  .lit4 : ALIGN(4)
426  {
427    _lit4_start = ABSOLUTE(.);
428    *(*.lit4)
429    *(.lit4.*)
430    *(.gnu.linkonce.lit4.*)
431    _lit4_end = ABSOLUTE(.);
432  } >sof_fw :sof_fw_phdr
433
434  .fw_ready : ALIGN(4)
435  {
436    KEEP (*(.fw_ready))
437    KEEP (*(.fw_ready_metadata))
438  } >sof_fw :sof_fw_phdr
439
440  .bss (NOLOAD) : ALIGN(4096)
441  {
442    . = ALIGN (8);
443    _bss_start = ABSOLUTE(.);
444    *(.dynsbss)
445    *(.sbss)
446    *(.sbss.*)
447    *(.gnu.linkonce.sb.*)
448    *(.scommon)
449    *(.sbss2)
450    *(.sbss2.*)
451    *(.gnu.linkonce.sb2.*)
452    *(.dynbss)
453    *(.bss)
454    *(.bss.*)
455    *(.gnu.linkonce.b.*)
456    *(COMMON)
457
458    . = ALIGN (SRAM_BANK_SIZE);
459    _runtime_heap_start = ABSOLUTE(.);
460    . = . + HEAP_RUNTIME_SIZE;
461    _runtime_heap_end = ABSOLUTE(.);
462
463    . = ALIGN (HEAP_BUF_ALIGNMENT);
464    _buffer_heap_start = ABSOLUTE(.);
465    . = . + HEAP_BUFFER_SIZE;
466    _buffer_heap_end = ABSOLUTE(.);
467
468    . = ALIGN (SRAM_BANK_SIZE);
469    _system_heap_start = ABSOLUTE(.);
470    . = . + HEAP_SYSTEM_M_SIZE;
471    _system_heap_end = ABSOLUTE(.);
472
473    . = ALIGN (HEAP_BUF_ALIGNMENT);
474    _system_runtime_heap_start = ABSOLUTE(.);
475    . = . + HEAP_SYS_RUNTIME_M_SIZE;
476    _system_runtime_heap_end = ABSOLUTE(.);
477
478    . = ALIGN (PLATFORM_DCACHE_ALIGN);
479    _runtime_shared_heap_start = ABSOLUTE(.);
480    . = . + HEAP_RUNTIME_SHARED_SIZE;
481    . = ALIGN (PLATFORM_DCACHE_ALIGN);
482    _runtime_shared_heap_end = ABSOLUTE(.);
483
484    . = ALIGN (PLATFORM_DCACHE_ALIGN);
485    _system_shared_heap_start = ABSOLUTE(.);
486    . = . + HEAP_SYSTEM_SHARED_SIZE;
487    . = ALIGN (PLATFORM_DCACHE_ALIGN);
488    _system_shared_heap_end = ABSOLUTE(.);
489
490    . = ALIGN (4096);
491    _sof_stack_start = ABSOLUTE(.);
492    . = . + SOF_STACK_SIZE;
493    _sof_stack_end = ABSOLUTE(.);
494
495    . = ALIGN (SRAM_BANK_SIZE);
496    _sof_core_s_start = ABSOLUTE(.);
497    . = . + SOF_CORE_S_T_SIZE;
498    _sof_core_s_end = ABSOLUTE(.);
499
500    _bss_end = ABSOLUTE(.);
501  } >sof_fw :sof_fw_phdr
502
503  /* stack */
504  _end = _sof_stack_start;
505  PROVIDE(end = _sof_stack_start);
506  _stack_sentry = _sof_stack_start;
507  __stack = _sof_stack_end;
508
509  /* Secondary core size */
510  _core_s_size = SOF_CORE_S_SIZE;
511
512  /* System Heap */
513  _system_heap = _system_heap_start;
514
515  /* system runtime heap */
516  _system_runtime_heap = _system_runtime_heap_start;
517
518  /* Shared Heap */
519  _runtime_shared_heap = _runtime_shared_heap_start;
520  _system_shared_heap = _system_shared_heap_start;
521
522  /* module heap */
523  _module_heap = _runtime_heap_start;
524
525  /* buffer heap */
526  _buffer_heap = _buffer_heap_start;
527  _buffer_heap_end = _buffer_heap_end;
528
529  .debug  0 :  { *(.debug) }
530  .line  0 :  { *(.line) }
531  .debug_srcinfo  0 :  { *(.debug_srcinfo) }
532  .debug_sfnames  0 :  { *(.debug_sfnames) }
533  .debug_aranges  0 :  { *(.debug_aranges) }
534  .debug_pubnames  0 :  { *(.debug_pubnames) }
535  .debug_info  0 :  { *(.debug_info) }
536  .debug_abbrev  0 :  { *(.debug_abbrev) }
537  .debug_line  0 :  { *(.debug_line) }
538  .debug_frame  0 :  { *(.debug_frame) }
539  .debug_str  0 :  { *(.debug_str) }
540  .debug_loc  0 :  { *(.debug_loc) }
541  .debug_macinfo  0 :  { *(.debug_macinfo) }
542  .debug_weaknames  0 :  { *(.debug_weaknames) }
543  .debug_funcnames  0 :  { *(.debug_funcnames) }
544  .debug_typenames  0 :  { *(.debug_typenames) }
545  .debug_varnames  0 :  { *(.debug_varnames) }
546
547  .xt.insn 0 :
548  {
549    KEEP (*(.xt.insn))
550    KEEP (*(.gnu.linkonce.x.*))
551  }
552  .xt.prop 0 :
553  {
554    KEEP (*(.xt.prop))
555    KEEP (*(.xt.prop.*))
556    KEEP (*(.gnu.linkonce.prop.*))
557  }
558  .xt.lit 0 :
559  {
560    KEEP (*(.xt.lit))
561    KEEP (*(.xt.lit.*))
562    KEEP (*(.gnu.linkonce.p.*))
563  }
564  .xt.profile_range 0 :
565  {
566    KEEP (*(.xt.profile_range))
567    KEEP (*(.gnu.linkonce.profile_range.*))
568  }
569  .xt.profile_ranges 0 :
570  {
571    KEEP (*(.xt.profile_ranges))
572    KEEP (*(.gnu.linkonce.xt.profile_ranges.*))
573  }
574  .xt.profile_files 0 :
575  {
576    KEEP (*(.xt.profile_files))
577    KEEP (*(.gnu.linkonce.xt.profile_files.*))
578  }
579
580  .static_uuid_entries (COPY) : ALIGN(1024)
581  {
582    *(*.static_uuids)
583  } > static_uuid_entries_seg :static_uuid_entries_phdr
584
585  .static_log_entries (COPY) : ALIGN(1024)
586  {
587    *(*.static_log*)
588  } > static_log_entries_seg :static_log_entries_phdr
589
590  .fw_metadata (COPY) : ALIGN(1024)
591  {
592    KEEP (*(.fw_metadata))
593    . = ALIGN(_EXT_MAN_ALIGN_);
594  } >fw_metadata_seg :metadata_entries_phdr
595
596  .lpsram(NOLOAD) : ALIGN(8)
597  {
598    _lpsram_start = ABSOLUTE(.);
599    KEEP (*(*.lpsram))
600    _lpsram_end = ABSOLUTE(.);
601  } >lpsram_mem :lpsram_mem_phdr
602
603}
604