Hello
trying to compile the following simple source file using arm-elf-gcc 4.0
void pig(void) __attribute__ ((long_call));
void pig(void)
{
}
yields:
error: conflicting types for 'pig'
error: previous declaration of 'pig' was here
The same with gcc3.3. With other function attributes (isr, sec
void pig(void) __attribute__ ((long_call));
void pig(void)
{
}
Yes, that's the way it's currently coded.
The problem, it seems to me, is that we want to fault:
void pig(void) __attribute__ ((long_call));
...
void pig(void);
and
void pig(void);
Is there anything tricky that prevents an easy implementation?
Yes, internally the routine that's doing the comparison can't
distinguish declarations from definitions. We need to diagnose
Is the routine arm_comp_type_attributes() in gcc/config/arm/arm.c by any chance?
conflicting declarati
void __attribute__ ((long_call)) pig(void)
{
}
Ok thanks, with such change to the definition the file compiles.
I didn't know one can attribute definitions too, and info gcc says:
"
The keyword `__attribute__' allows you to specify special attributes
when making a declaration.
"
So I suppos
John Carter wrote:
I'm trying to create a cross compiler hosted on i386 linux targetting an
embedded arm thumb device with thumb-interworking on.
You need to the modify gcc-4.X/gcc/config/arm/t-arm-elf file to enable multilib for thumb
interworking before building gcc. For gcc 4.0 targetting e