From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Simpkins, Andy" To: ecos-discuss@sources.redhat.com Subject: RE: [ECOS] forwarded message from Simpkins, Andy Date: Fri, 17 Aug 2001 08:24:00 -0000 Message-id: <919A3A7F776FD311AFD600508B44A7F30179584A@ramhqlon.transcomm.uk.com> X-SW-Source: 2001-08/msg00618.html Configuration of the system Target Platform : Custom board (ARM7TDMI core) Development Host: Windows NT 4 sp6, cygwin, eCos 1.3.1, GCC 2.95.2 This is the current test file I am using: main.cpp (entire file) /* INCLUDES */ #include /* printf */ #include /* strlen */ #include /* All the kernel specific stuff */ #include /* I/O functions */ #include /* CYGNUM_HAL_STACK_SIZE_TYPICAL */ #include /* diag_printf */ #include /* LED Control */ #include void __attribute__ ((section (".2ram.flash_query"), long_call)) flash_query(void) { for (int i=0; i < 0xffff; i++); } extern "C" int main(void) { flash_query(); return 0; } the build process (with errors returned) $ cd /z/TMCB/Build/ARM/eCos/app/testFLASH $ rm *.o $ arm-elf-gcc -c -I /i/eCOSbuilds/a161_install/include/ ../../../../../source/app/testFLASH/*.cpp -fno-rtti -fno-exceptions ../../../../../source/app/testFLASH/main.cpp: In function `void flash_query()': ../../../../../source/app/testFLASH/main.cpp:14: warning: `long_call' attribute directive ignored $ arm-elf-gcc *.o -L /i/eCOSbuilds/a161_install/lib/ -Ttarget.ld -nostdlib -Xlinker -Map -Xlinker mapfile.txt main.o: In function `main': main.o(.text+0x10): relocation truncated to fit: R_ARM_PC24 flash_query(void) collect2: ld returned 1 exit status and to round things off the mods to arm.ld (extract) as suggested by Jesper... #define SECTION_data(_region_, _vma_, _lma_) \ .data _vma_ : _lma_ \ { __ram_data_start = ABSOLUTE (.); *(.data*) *(.data1) MERGE_IN_RODATA \ _GOT1_START_ = ABSOLUTE (.); *(.got1) _GOT1_END_ = ABSOLUTE (.); \ _GOT2_START_ = ABSOLUTE (.); *(.got2) _GOT2_END_ = ABSOLUTE (.); \ . = ALIGN (4); \ __DEVTAB__ = ABSOLUTE (.); KEEP (*(SORT (.devtab*))) __DEVTAB_END__ = ABSOLUTE (.); \ __NETDEVTAB__ = ABSOLUTE (.); KEEP (*(SORT (.netdevtab*))) __NETDEVTAB_END__ = ABSOLUTE (.); \ __CTOR_LIST__ = ABSOLUTE (.); KEEP (*(SORT (.ctors*))) __CTOR_END__ = ABSOLUTE (.); \ __DTOR_LIST__ = ABSOLUTE (.); KEEP (*(SORT (.dtors*))) __DTOR_END__ = ABSOLUTE (.); \ *(.dynamic) *(.sdata*) *(.sbss*) \ . = ALIGN (4); *(.2ram.*) } \ > _region_ \ __rom_data_start = LOADADDR (.data); \ __ram_data_end = .; PROVIDE (__ram_data_end = .); _edata = .; PROVIDE (edata = .); \ PROVIDE (__rom_data_end = LOADADDR (.data) + SIZEOF(.data)); --- Transcomm UK Ltd. DDI : +44 (0)23 80662155 Yeoman Park Fax : +44 (0)23 80662120 Test Lane Southampton www.transcomm.uk.com SO16 9JX