[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Need help: alternative module inclusion - duplicate symbols
From: |
Vladimir 'phcoder' Serbinenko |
Subject: |
Re: Need help: alternative module inclusion - duplicate symbols |
Date: |
Mon, 26 Feb 2024 16:38:36 +0300 |
You can add a dispatcher which switches between 2 modules. E.g.
real_do_stuff (...);
fake_do_stuff(...);
static int (*do_stuff)( ...);
And switch pointer between 2 implementations. See terminal output and
grub_xputs for examples
On Mon, Feb 26, 2024 at 1:51 PM Michael Lawnick via Grub-devel
<grub-devel@gnu.org> wrote:
>
> Hi group,
>
> hope you can help me:
> I have modules pci_fpga.c and pci_fpga_emul.c with same functions in
> them but different implementation, one for the real device, the other
> one is just emulating.
>
> What I now want is being able to include one of both versions through
> build command. I started with this:
>
> Makefile.core.def:
> ...
> module = {
> name = pci_fpga;
> common = startlib/board/pci_fpga.c;
> enable = efi;
> };
>
> module = {
> name = pci_fpga_emul;
> common = startlib/board/pci_fpga_emul.c;
> enable = efi;
> };
> ...
>
> but then I get duplicate symbols error even without giving pci_fpga or
> pci_fpga_emul on the build.
>
> For using different packages than 'common' like this
> module = {
> name = pci_fpga;
> pci_fpga = startlib/board/pci_fpga.c;
> enable = efi;
> };
> I could not find means to get pci_fpga included.
>
> Same problem if trying to approach it via different enable flag: How to do?
>
> Can anybody help? In docs I couldn't find usable hints.
>
> --
> KR
> Michael
>
> _______________________________________________
> Grub-devel mailing list
> Grub-devel@gnu.org
> https://lists.gnu.org/mailman/listinfo/grub-devel
--
Regards
Vladimir 'phcoder' Serbinenko