Bug! when a function is the parameter of another function.

Martin v. Loewis martin@loewis.home.cs.tu-berlin.de
Mon Mar 6 01:17:00 GMT 2000


>     Assume in m68k platform :
>     My question is that if I want to produce a position-independent-code,
>     the data is based on some register (ex:A5), function label is based on PC.
>     GCC produce PIC code that data and function label referenced are based on A5.
>     It can't reference correct postion for function that is the parameter of another function in PIC.

Thanks for your bug report. Please have a look at

http://www.gnu.org/software/gcc/bugs.html

and try to make a *COMPLETE* bug report. I.e. give us some source
code, say what operating system you are using, show us the assembler
code, say what happens when you run the program, and why you think
this is incorrect.

For example, consider the program

#include <stdio.h>

void foo(){
  printf("Here\n");
}

void bar(void (*f)()){
  f();
}

int main()
{
  bar(foo);
}

When run, it should print 'Here'. What happens when you compile this
program on your system? What if you use -fPIC instead of -fpic?

Please also have a look at

http://gcc.gnu.org/ml/gcc/1998-02/msg00977.html
http://gcc.gnu.org/ml/gcc/1998-02/msg01000.html
http://gcc.gnu.org/ml/gcc/1999-10n/msg00415.html
http://gcc.gnu.org/ml/gcc/1999-10n/msg00442.html

Regards,
Martin


More information about the Gcc-bugs mailing list