Axel Freyn wrote: > > Hi Ian, >> > I have problem with GNU linker. >> > >> > I will show you simple example how it appears. But basically if I have >> set >> > one function to specified memory section and try to call function with >> > string parameter. then linker says "causes a section type conflict". >> > >> > >> > char FooBar(const char *) >> __attribute__((section(".defined_section"))); >> > void TestFunction(void) __attribute__((section(".defined_section"))); >> > >> > char FooBar(const char * s) >> > { >> > if(s) return 1; >> > else return 0; >> > } >> > >> > void TestFunction(void) >> > { >> > FooBar(1); // This works fine >> > FooBar("1") // This doesnt work, linker script says: " >> TestFunction >> > causes a section type conflict" >> > } >> > >> > >> > So what is that error message? Google didnt find any solve for this. >> >> I can't find that error message anywhere in the linker. >> >> What version of gcc? What version of GNU ld? What target? Please >> give us a complete standalone test case. Please show us the exact >> output of the linker. > At least on my machine, this error-message can result from the compiler, > not the linker. For the differen file text.c (from the (quite old) > discussion http://gcc.gnu.org/ml/gcc/2001-10/msg00707.html): > > static const int a __attribute__ ((__section__ (".data.init"))) = 1; > static int b __attribute__ ((__section__ (".data.init"))) = 1; > > I obtain: > > gcc -c test.c > test.c:2: error: b causes a section type conflict > > Maybe the OP also obtains the error from the compiler? However, for me > (gcc 4.3.2) his example compiles cleanly (except the missing ";") > > Axel > > Hi My GCC is 4.4.1 and target is PowerPC. ld-version is 2.19.1. Same problem causes with GCC-version 2.95.3. First of all. I am trying to put these functions to specified section in rom (.defined_section). Then in linker script I put/map these functions to ram memory like this. MEMORY { . . . defined_section: org = 0x10000, len = 0xFFFF section_in_rom: org = 0x4F0000, len = 0xFFFF } SECTION { . . . .section_in_rom : AT (0x10000) { *(.defined_section) } > section_in_rom } In program I copy these functions from rom to ram. Eveything of these works fine, but if I add for example one static variable in function or string parameter (like in example) I get these "causes section type error". -- View this message in context: http://old.nabble.com/%22causes-a-section-type-conflict%22-tp27847975p27859408.html Sent from the gcc - Help mailing list archive at Nabble.com.