Subbaraman Narayanamurthy | 8bcd5fd | 2011-01-17 17:18:44 -0800 | [diff] [blame] | 1 | OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
|
| 2 | OUTPUT_ARCH(arm)
|
| 3 |
|
| 4 | ENTRY(_start)
|
| 5 | SECTIONS
|
| 6 | {
|
| 7 | /*Added TRUSTZONE at 0x0. Moving rest of APPSBL to %MEMBASE% */
|
| 8 | . = 0x0;
|
| 9 | .tzbsp 0x0 : {*tzbsp_bin.o(.data)}
|
| 10 | .romlite 0xBF000 : {*romlite_toc_and_data.o(.data.rom_lite_preflashed_data)}
|
| 11 | . = %MEMBASE%;
|
| 12 | .interp : { *(.interp) }
|
| 13 | .hash : { *(.hash) }
|
| 14 | .dynsym : { *(.dynsym) }
|
| 15 | .dynstr : { *(.dynstr) }
|
| 16 | .rel.text : { *(.rel.text) *(.rel.gnu.linkonce.t*) }
|
| 17 | .rela.text : { *(.rela.text) *(.rela.gnu.linkonce.t*) }
|
| 18 | .rel.data : { *(.rel.data) *(.rel.gnu.linkonce.d*) }
|
| 19 | .rela.data : { *(.rela.data) *(.rela.gnu.linkonce.d*) }
|
| 20 | .rel.rodata : { *(.rel.rodata) *(.rel.gnu.linkonce.r*) }
|
| 21 | .rela.rodata : { *(.rela.rodata) *(.rela.gnu.linkonce.r*) }
|
| 22 | .rel.got : { *(.rel.got) }
|
| 23 | .rela.got : { *(.rela.got) }
|
| 24 | .rel.ctors : { *(.rel.ctors) }
|
| 25 | .rela.ctors : { *(.rela.ctors) }
|
| 26 | .rel.dtors : { *(.rel.dtors) }
|
| 27 | .rela.dtors : { *(.rela.dtors) }
|
| 28 | .rel.init : { *(.rel.init) }
|
| 29 | .rela.init : { *(.rela.init) }
|
| 30 | .rel.fini : { *(.rel.fini) }
|
| 31 | .rela.fini : { *(.rela.fini) }
|
| 32 | .rel.bss : { *(.rel.bss) }
|
| 33 | .rela.bss : { *(.rela.bss) }
|
| 34 | .rel.plt : { *(.rel.plt) }
|
| 35 | .rela.plt : { *(.rela.plt) }
|
| 36 | /*Moving harcoded addresses by a displacement of %MEMBASE% */
|
| 37 | .init : { *(.init) } = %MEMBASE% + 0x9090
|
| 38 | .plt : { *(.plt) }
|
| 39 |
|
| 40 | /* text/read-only data */
|
| 41 |
|
| 42 | /*Moving harcoded addresses by a displacement of %MEMBASE% */
|
| 43 | .text : { *(.text .text.* .glue_7* .gnu.linkonce.t.*) } = %MEMBASE% + 0x9090
|
| 44 |
|
| 45 | .rodata : {
|
| 46 | *(.rodata .rodata.* .gnu.linkonce.r.*)
|
| 47 | . = ALIGN(4);
|
| 48 | __commands_start = .;
|
| 49 | KEEP (*(.commands))
|
| 50 | __commands_end = .;
|
| 51 | . = ALIGN(4);
|
| 52 | __apps_start = .;
|
| 53 | KEEP (*(.apps))
|
| 54 | __apps_end = .;
|
| 55 | . = ALIGN(4);
|
| 56 | __rodata_end = . ;
|
| 57 | }
|
| 58 |
|
| 59 | /* writable data */
|
| 60 | __data_start_rom = .; /* in one segment binaries, the rom data address is on top of the ram data address */
|
| 61 | __data_start = .;
|
| 62 | .data : SUBALIGN(4) { *(.data .data.* .gnu.linkonce.d.*) }
|
| 63 |
|
| 64 | __ctor_list = .;
|
| 65 | .ctors : { *(.ctors) }
|
| 66 | __ctor_end = .;
|
| 67 | __dtor_list = .;
|
| 68 | .dtors : { *(.dtors) }
|
| 69 | __dtor_end = .;
|
| 70 | .got : { *(.got.plt) *(.got) }
|
| 71 | .dynamic : { *(.dynamic) }
|
| 72 |
|
| 73 | __data_end = .;
|
| 74 |
|
| 75 | /* unintialized data (in same segment as writable data) */
|
| 76 | . = ALIGN(4);
|
| 77 | __bss_start = .;
|
| 78 | .bss : { *(.bss .bss.*) }
|
| 79 |
|
| 80 |
|
| 81 |
|
| 82 |
|
| 83 | . = ALIGN(4);
|
| 84 | _end = .;
|
| 85 |
|
| 86 |
|
| 87 |
|
| 88 | . = %MEMBASE% + %MEMSIZE%;
|
| 89 | _end_of_ram = .;
|
| 90 |
|
| 91 | /* Strip unnecessary stuff */
|
| 92 | /DISCARD/ : { *(.comment .note .eh_frame) }
|
| 93 | }
|