Christophe Milard
2016-10-13 10:49:57 UTC
Hi,
I am working for ODP (OpenDataPlane: http://opendataplane.org) and we
are using autotools (including libtool)
We want to have connectable plug-ins to implements some functions
(actually user-space NIC drivers). These plug-ins would be either
linked dynamicaly (using dlopen()) or staticaly, at build time, that
is, some can be selected at build time, and some other at run time.
All these drivers will register themselves using a driver_register()
function provided by ODP "core" , when booting, i.e. each driver will
call driver_register() from a __constructor__ or .init function
present in each driver. From there a set of function pointers will be
exchanged to achieve the wished functionality.
As many drivers can co-exist, it is not possible for the ODP "core" to
call any known driver symbol (there would be multiple definition of
this symbol when many drivers are included at the same time)
Focusing on the build-time drivers, this means that no obvious
reference will be seen by the linker from ODP core to the drivers's
"lib".
I have searched a while for a solution to pass the --whole-archive
option to the linker but as autotools reorder the linker options, that
did not work well.
Same problem with the --start-group option...
Maybe you understand that I eventually reached the following threads:
https://lists.gnu.org/archive/html/automake/2006-04/msg00101.html
The situation described in the following thread:
http://lists.gnu.org/archive/html/automake/2006-03/msg00042.html
Part II (motivation), section 3 is pretty much my situation...
But the thread status is not clear to me...It just dies... I could not
find what that lead to...
Did the patches reached autotools in some way?
Is there any noinst_RELOCATABLES usable? Or if not, how should such a
situation be handled?
Thanks,
Christophe MILARD
I am working for ODP (OpenDataPlane: http://opendataplane.org) and we
are using autotools (including libtool)
We want to have connectable plug-ins to implements some functions
(actually user-space NIC drivers). These plug-ins would be either
linked dynamicaly (using dlopen()) or staticaly, at build time, that
is, some can be selected at build time, and some other at run time.
All these drivers will register themselves using a driver_register()
function provided by ODP "core" , when booting, i.e. each driver will
call driver_register() from a __constructor__ or .init function
present in each driver. From there a set of function pointers will be
exchanged to achieve the wished functionality.
As many drivers can co-exist, it is not possible for the ODP "core" to
call any known driver symbol (there would be multiple definition of
this symbol when many drivers are included at the same time)
Focusing on the build-time drivers, this means that no obvious
reference will be seen by the linker from ODP core to the drivers's
"lib".
I have searched a while for a solution to pass the --whole-archive
option to the linker but as autotools reorder the linker options, that
did not work well.
Same problem with the --start-group option...
Maybe you understand that I eventually reached the following threads:
https://lists.gnu.org/archive/html/automake/2006-04/msg00101.html
The situation described in the following thread:
http://lists.gnu.org/archive/html/automake/2006-03/msg00042.html
Part II (motivation), section 3 is pretty much my situation...
But the thread status is not clear to me...It just dies... I could not
find what that lead to...
Did the patches reached autotools in some way?
Is there any noinst_RELOCATABLES usable? Or if not, how should such a
situation be handled?
Thanks,
Christophe MILARD