#1376: Cactus loops endlessly if given the same name for aliased function and actual implementation ---------------------+------------------------------------------------------ Reporter: knarf | Owner: Type: defect | Status: review Priority: minor | Milestone: Component: Cactus | Version: development version Resolution: | Keywords: ---------------------+------------------------------------------------------
Comment (by rhaas):
Replying to [comment:1 eschnett]:
On a related note: In this setup, there should have been two functions
called "fun", and the linker should have complained as well. Would the linker complain with default options? The thorns and flesh appear as libraries to the linker and multiply defined functions in libraries are fine aren't they? This is the way one overrides eg malloc when linking with a debugging library? A quick experiment with two different functions "fun" in two different static libraries returns no error. Just adding --whole-archive makes the link fail but with errors due to libgcc so I am not doing '''that''' the right way it seems. I have used: {{{ ==> main.c <== int fun(int a);
int main(void) { fun(1); return 0; }
==> a.c <== #include <stdio.h> int fun(int a) { printf("a\n"); }
==> b.c <== #include <stdio.h> int fun(int a) { printf("b: %d\n", a); }
gcc -c -o b.o b.c && ar -cvq libb.a b.o gcc -c -o a.o a.c && ar -cvq liba.a a.o gcc -o main main.c -L. -l a -l b # this uses the function in a gcc -o main main.c -L. -l b -l a # this uses the function in b }}}