Hi, On Tue, Oct 4, 2011 at 9:48 AM, Philippe Gerum <[email protected]> wrote: > On Tue, 2011-10-04 at 09:40 +0200, Thomas De Schampheleire wrote: >> Hi, >> >> We're experiencing problems with ELF symbol interposition with xenomai forge. >> The symbol mem_alloc, declared in include/copperplate/heapobj.h and >> defined in lib/copperplate/heapobj-malloc.c, is also present in our >> own executable. When linking our objects with the xenomai-forge >> libraries, the symbols from our objects take precedence. >> >> As a result, when heapobj_alloc() calls mem_alloc(), it calls the >> mem_alloc from our application code, which of course is totally >> incompatible. >> >> There isn't really a good solution to this problem. I think it will be >> necessary to make sure that all exported functions from the >> xenomai-forge libraries have a unique name. The name 'mem_alloc' (and >> many of the functions in lib/copperplate/heapobj-malloc.c) is too >> common. >> >> Another solution may be to mark certain symbols as hidden, provided >> they do not need to be exported to applications. Some references to it >> appear here: >> http://www.airs.com/blog/archives/307 >> >> What is your view on this? > > Restricted visibility won't work the way we want, since we have > references to these symbols from static inlines callable from > application code. We need a rename.
In the specific case I encountered, renaming the five mem_ functions worked for me. I added 'heapobj_' as prefix for: mem_destroy, mem_extend, mem_alloc, mem_free and mem_inquire. I changed them in include/copperplate/heapobj.h lib/copperplate/heapobj-malloc.c but I assume the same should be done in the other heapobj-* files. Best regards, Thomas _______________________________________________ Xenomai-help mailing list [email protected] https://mail.gna.org/listinfo/xenomai-help
