"causes a section type conflict"
Dukextra
mahuhta@gmail.com
Thu Mar 11 05:13:00 GMT 2010
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.
More information about the Gcc-help
mailing list