This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Rename symbol at link time


On 06/06/12 09:27, DamienDaG wrote:
> Hi
>
> I'm trying to build a very simple project composed of one source file and a
> linker script : 
> (...)
> This file is compiled with command :
> gcc -O0 -xc -g -Wall -c f1.c -of1.o
> then build with :
> ld -T'Link.cmd' -O0 -Map out.map -o rename.exe f1.o
>
> file Link.cmd contains :
>
> fct1_wrongname = fct9 ;
>
> end of file Link.cmd
>
>
> Function fct1_wrongname doesn't exist, and I want to replace the call of
> this function by a call of fct9.
>
> I always get this error message :
> Link.cmd:4: undefined symbol `fct9' referenced in expression
>
> I need to use a linker script (here Link.cmd) to apply this to a larger
> project, and I can't use symbol definition (i.e. -D"fct1_wrongname=fct9")
> because there are to many symbols.
> I've been looking for a solution for a long time, but I couldn't find
> anything.
>
> Can anybody help me ?
>
> Thanks in advance
>
> Damien
Works for me on Linux.
Just with that code I get undefined reference to `puts' (puts instead of
printf due to a gcc optimization),
which was solved just by adding -L/usr/lib -lc, and then I needed to add
-dynamic-linker because the default interpreter was the missing
/lib/ld64.so.1 (that's ELF specific, as you're building a PE you don't
need to worry).

It dies by sigkill as soon as i try to run it, though :S
Adding crti.o crtbegin.o crtend.o crtn.o doesn't solve the crashing.

I tried adding a dummy to make an alias, and it worked:
Just create a file link.s with content:
-- begin file --
.global fct1_wrongname
.set fct1_wrongname, fct9
fct1_wrongname:
-- end of file--

And add it to the compilation *before* f1.c:
gcc link.s f1.c -o rename.exe


(there are probably many things wrong with this approach, but it
apparently works)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]