- To: gcc-help@xxxxxxxxxxx
- Subject: Re: Rename symbol at link time
- From: DamienDaG <deusnei-div@xxxxxxxx>
- Date: Wed, 6 Jun 2012 01:12:44 -0700 (PDT)
- Comment: DKIM? See http://www.dkim.org
- Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys
- In-reply-to: <CAKw7uVjw_9FiBMMMoCTQAY67GwNxJAR-9o30SCu38H=hJ6UXOQ@mail.gmail.com>
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.
[Linux C Programming]
[Linux Kernel]
[eCos]
[Fedora Development]
[Fedora Announce]
[Autoconf]
[The DWARVES Debugging Tools]
[Yosemite Campsites]
[Yosemite News]
[Linux GCC]