Okay, I've gone back to building with gcc calling ld, vs calling ld directly. I'm using Yagarto 20080408. If I have this in SECTIONS: /**********************************************/ /* the program code is stored in the .text section, which goes to Flash */ .text : { . = ALIGN(4); *(.text) /* remaining code */ *(.text.*) /* remaining code */ *(.rodata) /* read-only data (constants) */ *(.rodata*) *(.glue_7) *(.glue_7t) . = ALIGN(4); _etext = .; /* This is used by the startup in order to initialize the .data secion */ } >FLASH /* .data section which is used for initialized data */ /* This is used by the startup in order to initialize the .data secion */ _sidata = .; .data : AT (_sidata) { . = ALIGN(4); /* This is used by the startup in order to initialize the .data secion */ _sdata = . ; *(.data) *(.data.*) . = ALIGN(4); /* This is used by the startup in order to initialize the .data secion */ _edata = . ; } >DATA /**********************************************/ My build fails: c:/yagarto/bin/arm-elf-gcc -Todu-gnuarm.ld -Wall -I. -Iinclude -gdwarf-2 -MD -DGNUARM -mcpu=arm9e -std=c99 -mlittle-endian -Os -g -Wl,-Map=odu.map,--cref,--no-warn-mismatch,-static startup/91x_initga.o main.o 91x_it.o feprom.o atmel_flash_memory.o Internal_flash_memory.o source/91x_adc.o source/91x_caps.o source/91x_gpio.o source/91x_lib.o source/91x_rtc.o source/91x_uart.o source/91x_vic.o source/91x_wdg.o source/91x_fmi.o source/91x_scu.o source/91x_emi.o source/91x_dma.o -o odu.elf c:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/bin/ld.exe: section .data [0002cf48 -> 0002db77] overlaps section .init [0002cf48 -> 0002cf67] c:/yagarto/bin/../lib/gcc/arm-elf/4.2.2/../../../../arm-elf/bin/ld.exe: section .fini [0002cf68 -> 0002cf83] overlaps section .data [0002cf48 -> 0002db77] collect2: ld returned 1 exit status make: *** [odu.elf] Error 1 /**********************************************/ However, if I change it to .data : /* collect all initialized .data sections that go into RAM */ It builds successfully!! So what's the difference?? Does omitting the "AT (location)" statement actually put the data somewhere else?? I don't understand why that would be the case. What is actually being done with the data in each case, and how do the two statements differ??
Dan Miller wrote: > Okay, I've gone back to building with gcc calling ld, vs calling ld > directly. > I'm using Yagarto 20080408. > Not sure what is causing your problem. Find attached one of my linker scripts, works with arm-elf and arm-eabi compilers. Cheers Spen
Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
Log in with Google account
No account? Register here.