This is the mail archive of the binutils@sourceware.org mailing list for the binutils 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] |
On Tuesday 17 November 2009 12:56:14 Matthias Urlichs wrote: > Some legacy mixed c/c++ code (*cough* originally for Mac OS X *cough* > and Windows *cough*cough*) which I'm trying to port to Linux requires > that a (large) number of functions have more than one name. > > Usually, that's quite easy to accomplish -- GCC has an "alias" directive > to do this, case closed. > > Unfortunately, that alias directive needs to be in the same source file > as the original code, which is unfortunate -- on said Mac OS, this can > be done with an external table that's fed to the linker. > > Is there a way to accomplish this with gnu tools? i think i tried this before and you cant alias one symbol to one in a different object. a linker script could do it just fine though i bet. > As an example, I'd like to make the code below work: > > $ cat foo.c > int foo(void) { return 42; } > $ cat bar.c > #include <stdio.h> > extern int foo_alias(void); > int main() { printf("%d\n",foo_alias()); } > $ cat alias_table > foo foo_alias > $ gcc -c foo.c bar.c > $ gcc -o foo foo.o bar.o _SOME_MAGIC_HERE_ > $ ./foo > 42 > $ > > ... without changing foo.c or bar.c. i'm not sure how representative this example is to your actual needs. are you actually [final] linking an application ? or do you really need to create a shared library and/or static archive with the aliases contained in there ? if it's just for finally linked applications, you could try the --defsym= or --wrap= linker options. -mike
Attachment:
signature.asc
Description: This is a digitally signed message part.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |