Re: [PATCH] tools/testing/cxl: Don't wrap cxl_core's own exported symbols

Richard Cheng <[email protected]>
Newsgroups org.kernel.vger.linux-cxl,org.kernel.vger.linux-kernel
Message-ID <aoZhnl_uj4KmoO5L@MWDK4CY14F>
On Wed, Aug 19, 2026 at 08:23:47PM +0800, shaikh kamaluddin wrote:
> On Tue, Jul 21, 2026 at 04:40:09PM +0800, Richard Cheng wrote:
> > Building cxl_test with LLVM=1 (ld.lld) fails in modpost:
> > 
> > """
> >   cxl_core: .export_symbol section references '__wrap_...', but it
> >   does not seem to be an export symbol
> > """
> > 
> > cxl_test --wraps 6 symbols that cxl_core both defines and exports.
> > GNU ld only wraps undefined references, but ld.lld also redirects
> > references to defined symbols, so cxl_core's own EXPORT_SYMBOL entries
> > get rewritten to __wrap_* and modpost rejects them.
> > 
> > cxl_core never calls these symbols, so wrap them only in the caller
> > modules via LDFLAGS_<module>.o instead of the global ldflags-y.
> > 
> > Signed-off-by: Richard Cheng <[email protected]>
> > ---
> >  tools/testing/cxl/Kbuild | 16 ++++++++++------
> >  1 file changed, 10 insertions(+), 6 deletions(-)
> > 
> > diff --git a/tools/testing/cxl/Kbuild b/tools/testing/cxl/Kbuild
> > index 2be1df80fcc9..e49ce644b4b1 100644
> > --- a/tools/testing/cxl/Kbuild
> > +++ b/tools/testing/cxl/Kbuild
> > @@ -4,16 +4,20 @@ ldflags-y += --wrap=is_acpi_device_node
> >  ldflags-y += --wrap=acpi_evaluate_integer
> >  ldflags-y += --wrap=acpi_pci_find_root
> >  ldflags-y += --wrap=nvdimm_bus_register
> > -ldflags-y += --wrap=cxl_await_media_ready
> > -ldflags-y += --wrap=devm_cxl_add_rch_dport
> > -ldflags-y += --wrap=cxl_endpoint_parse_cdat
> > -ldflags-y += --wrap=devm_cxl_endpoint_decoders_setup
> >  ldflags-y += --wrap=hmat_get_extended_linear_cache_size
> > -ldflags-y += --wrap=devm_cxl_add_dport_by_dev
> > -ldflags-y += --wrap=devm_cxl_switch_port_decoders_setup
> >  ldflags-y += --wrap=walk_hmem_resources
> >  ldflags-y += --wrap=region_intersects
> >  ldflags-y += --wrap=region_intersects_soft_reserve
> > +wrap_cxl_core := --wrap=cxl_await_media_ready
> > +wrap_cxl_core += --wrap=devm_cxl_add_rch_dport
> > +wrap_cxl_core += --wrap=devm_cxl_add_dport_by_dev
> > +wrap_cxl_core += --wrap=devm_cxl_switch_port_decoders_setup
> > +wrap_cxl_core += --wrap=devm_cxl_endpoint_decoders_setup
> > +wrap_cxl_core += --wrap=cxl_endpoint_parse_cdat
> > +LDFLAGS_cxl_acpi.o += $(wrap_cxl_core)
> > +LDFLAGS_cxl_pmem.o += $(wrap_cxl_core)
> > +LDFLAGS_cxl_port.o += $(wrap_cxl_core)
> > +LDFLAGS_cxl_mem.o  += $(wrap_cxl_core)
> >  
> >  DRIVERS := ../../../drivers
> >  DAX_HMEM_SRC := $(DRIVERS)/dax/hmem
> > -- 
> > 2.43.0
> >
> 
> Hi Richard,
> 
> I was hitting the same tools/testing/cxl build failure on current cxl/next.
> modpost was failing on wrapped CXL symbols, for example:
> 
> .export_symbol section references '__wrap_devm_cxl_add_rch_dport',
> but it does not seem to be an export symbol
> 
> .export_symbol section references '__wrap_devm_cxl_add_dport_by_dev',
> but it does not seem to be an export symbol
> 
> .export_symbol section references '__wrap_cxl_await_media_ready',
> but it does not seem to be an export symbol
> 
> I found this patch while investigating the failure and applied it to my tree. 
> With the patch applied, the wrapped-symbol build issue is resolved and tools/testing/cxl 
> builds successfully for me.
> 
> Tested-by: Shaikh Kamaluddin <[email protected]>

Hi Shaikh,

Happy to hear that, appreciate for this.

Best regards,
Richard Cheng.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.