Re: Rename symbol at link time

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





Václav Zeman wrote:
> 
> On 6 June 2012 09:27, DamienDaG wrote:
>>
>> Hi
>>
>> I'm trying to build a very simple project composed of one source file and
>> a
>> linker script :
>>
>> file f1.c :
>> #include <stdio.h>
>>
>> extern void fct1_wrongname();
>>
>> void fct9()
>> {
>>        printf("I'm fct9\n");
>> }
>>
>> int main( int argc, char** argv)
>> {
>>        fct1_wrongname();
>>        return 0;
>> }
>> end of file f1.c
>>
>> 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.
> Is it possible that the linker script should contain leading
> underscores for the symbols? E.g., _fct1_wrongname=_fct9? Take a look
> at nm -AB output for the f1.o file.
> 
> -- 
> VZ
> 
> 

I tried many combinations with/without leanding underscores :
with
_fct1_wrongname = fct9 ;
I get 
Link.cmd:4: undefined symbol `fct9' referenced in expression

with
_fct1_wrongname = _fct9 ;
and
fct1_wrongname = _fct9 ;
I get 
ld: BFD 2.13 assertion fail ../../src/bfd/stabs.c:783

nm -AB f1.o outputs :
$ nm -AB f1.o
f1.o:00000000 b .bss
f1.o:00000000 d .data
f1.o:00000000 N .stab
f1.o:00000000 N .stabstr
f1.o:00000000 t .text
f1.o:         U ___main
f1.o:         U __alloca
f1.o:         U _fct1_wrongname
f1.o:         U _fct2
f1.o:00000012 T _fct9
f1.o:0000002a T _main
f1.o:         U _printf

Thanks

Damien
-- 
View this message in context: http://old.nabble.com/Rename-symbol-at-link-time-tp33968382p33968581.html
Sent from the gcc - Help mailing list archive at Nabble.com.




[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux