* [PATCH 0/2] symbols/x86: avoid symbols-dummy @ 2025-11-25 14:12 Jan Beulich 2025-11-25 14:13 ` [PATCH 1/2] symbols/x86: re-number intermediate files Jan Beulich 2025-11-25 14:14 ` [PATCH 2/2] symbols/x86: don't use symbols-dummy Jan Beulich 0 siblings, 2 replies; 7+ messages in thread From: Jan Beulich @ 2025-11-25 14:12 UTC (permalink / raw) To: xen-devel@lists.xenproject.org Cc: Andrew Cooper, Julien Grall, Stefano Stabellini, Anthony PERARD, Michal Orzel, Roger Pau Monné For the time being these two patches go on top of the previously submitted "symbols: check table sizes don't change between linking passes 2 and 3". Presumably what is done here addresses on of the RFC remarks there, so the order may need switching around anyway. 1: re-number intermediate files 2: don't use symbols-dummy Jan ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/2] symbols/x86: re-number intermediate files 2025-11-25 14:12 [PATCH 0/2] symbols/x86: avoid symbols-dummy Jan Beulich @ 2025-11-25 14:13 ` Jan Beulich 2025-11-25 17:24 ` Roger Pau Monné 2025-11-25 14:14 ` [PATCH 2/2] symbols/x86: don't use symbols-dummy Jan Beulich 1 sibling, 1 reply; 7+ messages in thread From: Jan Beulich @ 2025-11-25 14:13 UTC (permalink / raw) To: xen-devel@lists.xenproject.org Cc: Andrew Cooper, Julien Grall, Stefano Stabellini, Anthony PERARD, Michal Orzel, Roger Pau Monné In preparation to do away with symbols-dummy, re-number the file assembly and object files used, for the numbers to match the next passes real output. This is to make 0 available to use for what now is handled by symbols-dummy. (Mirror the numbering to the intermediate reloc files for xen.efi, just to avoid confusion.) Signed-off-by: Jan Beulich <jbeulich@suse.com> --- Will want mirroring to other arch-es if the other patch is to be mirrored. --- a/xen/arch/x86/Makefile +++ b/xen/arch/x86/Makefile @@ -138,17 +138,17 @@ $(TARGET)-syms: $(objtree)/prelink.o $(o $(objtree)/common/symbols-dummy.o -o $(dot-target).0 $(NM) -pa --format=sysv $(dot-target).0 \ | $(objtree)/tools/symbols $(all_symbols) --sysv --sort \ - > $(dot-target).0.S - $(MAKE) $(build)=$(@D) $(dot-target).0.o + > $(dot-target).1.S + $(MAKE) $(build)=$(@D) $(dot-target).1.o $(LD) $(XEN_LDFLAGS) -T $(obj)/xen.lds $< $(build_id_linker) \ - $(dot-target).0.o -o $(dot-target).1 + $(dot-target).1.o -o $(dot-target).1 $(NM) -pa --format=sysv $(dot-target).1 \ | $(objtree)/tools/symbols $(all_symbols) --sysv --sort $(syms-warn-dup-y) \ - > $(dot-target).1.S - $(MAKE) $(build)=$(@D) $(dot-target).1.o - $(call compare-symbol-tables, $(dot-target).0.o, $(dot-target).1.o) + > $(dot-target).2.S + $(MAKE) $(build)=$(@D) $(dot-target).2.o + $(call compare-symbol-tables, $(dot-target).1.o, $(dot-target).2.o) $(LD) $(XEN_LDFLAGS) -T $(obj)/xen.lds $< $(build_id_linker) \ - $(orphan-handling-y) $(dot-target).1.o -o $@ + $(orphan-handling-y) $(dot-target).2.o -o $@ $(NM) -pa --format=sysv $@ \ | $(objtree)/tools/symbols --all-symbols --xensyms --sysv --sort \ > $@.map @@ -212,25 +212,25 @@ endif $(objtree)/common/symbols-dummy.o $(note_file_option) \ -o $(dot-target).$(base).0 &&) : $(MKRELOC) $(foreach base,$(VIRT_BASE) $(ALT_BASE),$(dot-target).$(base).0) \ - > $(dot-target).0r.S + > $(dot-target).1r.S $(NM) -pa --format=sysv $(dot-target).$(VIRT_BASE).0 \ | $(objtree)/tools/symbols $(all_symbols) --sysv --sort \ - > $(dot-target).0s.S - $(MAKE) $(build)=$(@D) .$(@F).0r.o .$(@F).0s.o + > $(dot-target).1s.S + $(MAKE) $(build)=$(@D) .$(@F).1r.o .$(@F).1s.o $(foreach base, $(VIRT_BASE) $(ALT_BASE), \ $(LD) $(call EFI_LDFLAGS,$(base)) -T $(obj)/efi.lds $< \ - $(dot-target).0r.o $(dot-target).0s.o $(note_file_option) \ + $(dot-target).1r.o $(dot-target).1s.o $(note_file_option) \ -o $(dot-target).$(base).1 &&) : $(MKRELOC) $(foreach base,$(VIRT_BASE) $(ALT_BASE),$(dot-target).$(base).1) \ - > $(dot-target).1r.S + > $(dot-target).2r.S $(NM) -pa --format=sysv $(dot-target).$(VIRT_BASE).1 \ | $(objtree)/tools/symbols $(all_symbols) --sysv --sort \ - > $(dot-target).1s.S - $(MAKE) $(build)=$(@D) .$(@F).1r.o .$(@F).1s.o - $(call compare-symbol-tables, $(dot-target).0r.o, $(dot-target).1r.o) - $(call compare-symbol-tables, $(dot-target).0s.o, $(dot-target).1s.o) + > $(dot-target).2s.S + $(MAKE) $(build)=$(@D) .$(@F).2r.o .$(@F).2s.o + $(call compare-symbol-tables, $(dot-target).1r.o, $(dot-target).2r.o) + $(call compare-symbol-tables, $(dot-target).1s.o, $(dot-target).2s.o) $(LD) $(call EFI_LDFLAGS,$(VIRT_BASE)) -T $(obj)/efi.lds $< \ - $(dot-target).1r.o $(dot-target).1s.o $(orphan-handling-y) \ + $(dot-target).2r.o $(dot-target).2s.o $(orphan-handling-y) \ $(note_file_option) -o $@ $(NM) -pa --format=sysv $@ \ | $(objtree)/tools/symbols --all-symbols --xensyms --sysv --sort \ ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] symbols/x86: re-number intermediate files 2025-11-25 14:13 ` [PATCH 1/2] symbols/x86: re-number intermediate files Jan Beulich @ 2025-11-25 17:24 ` Roger Pau Monné 0 siblings, 0 replies; 7+ messages in thread From: Roger Pau Monné @ 2025-11-25 17:24 UTC (permalink / raw) To: Jan Beulich Cc: xen-devel@lists.xenproject.org, Andrew Cooper, Julien Grall, Stefano Stabellini, Anthony PERARD, Michal Orzel On Tue, Nov 25, 2025 at 03:13:28PM +0100, Jan Beulich wrote: > In preparation to do away with symbols-dummy, re-number the file assembly > and object files used, for the numbers to match the next passes real > output. This is to make 0 available to use for what now is handled by > symbols-dummy. (Mirror the numbering to the intermediate reloc files for > xen.efi, just to avoid confusion.) > > Signed-off-by: Jan Beulich <jbeulich@suse.com> Acked-by: Roger Pau Monné <roger.pau@citrix.com> Thanks, Roger. ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 2/2] symbols/x86: don't use symbols-dummy 2025-11-25 14:12 [PATCH 0/2] symbols/x86: avoid symbols-dummy Jan Beulich 2025-11-25 14:13 ` [PATCH 1/2] symbols/x86: re-number intermediate files Jan Beulich @ 2025-11-25 14:14 ` Jan Beulich 2025-11-25 17:36 ` Roger Pau Monné 1 sibling, 1 reply; 7+ messages in thread From: Jan Beulich @ 2025-11-25 14:14 UTC (permalink / raw) To: xen-devel@lists.xenproject.org Cc: Andrew Cooper, Julien Grall, Stefano Stabellini, Anthony PERARD, Michal Orzel, Roger Pau Monné In particular when linking with lld, which converts hidden symbols to local ones, the ELF symbol table can change in unhelpful ways between the first two linking passes, resulting in the .rodata contributions to change between the 2nd and 3rd pass. That, however, renders our embedded symbol table pretty much unusable; the recently introduced self-test may then also fail. (Another difference between compiling a C file and assembling the generated ones is that - with -fdata-sections in use - the .rodata contributions move between passes 1 and 2, when we'd prefer them not to.) Make tools/symbols capable of producing an "empty" assembly file, such that unwanted differences between passes 1 and 2 go away when then using the corresponding objects in place of common/symbols-dummy.o. Reported-by: Andrew Cooper <andrew.cooper3@citrix.com> Reported-by: Roger Pau Monné <roger.pau@citrix.com> Signed-off-by: Jan Beulich <jbeulich@suse.com> --- May want mirroring to other arch-es. --- a/xen/arch/x86/Makefile +++ b/xen/arch/x86/Makefile @@ -134,8 +134,10 @@ $(TARGET): $(TARGET)-syms $(efi-y) $(obj CFLAGS-$(XEN_BUILD_EFI) += -DXEN_BUILD_EFI $(TARGET)-syms: $(objtree)/prelink.o $(obj)/xen.lds + $(objtree)/tools/symbols $(all_symbols) --empty > $(dot-target).0.S + $(MAKE) $(build)=$(@D) $(dot-target).0.o $(LD) $(XEN_LDFLAGS) -T $(obj)/xen.lds $< $(build_id_linker) \ - $(objtree)/common/symbols-dummy.o -o $(dot-target).0 + $(dot-target).0.o -o $(dot-target).0 $(NM) -pa --format=sysv $(dot-target).0 \ | $(objtree)/tools/symbols $(all_symbols) --sysv --sort \ > $(dot-target).1.S @@ -207,9 +209,11 @@ $(TARGET).efi: $(objtree)/prelink.o $(no ifeq ($(CONFIG_DEBUG_INFO),y) $(if $(filter --strip-debug,$(EFI_LDFLAGS)),echo,:) "Will strip debug info from $(@F)" endif + $(objtree)/tools/symbols $(all_symbols) --empty > $(dot-target).0s.S + $(MAKE) $(build)=$(@D) .$(@F).0s.o $(foreach base, $(VIRT_BASE) $(ALT_BASE), \ $(LD) $(call EFI_LDFLAGS,$(base)) -T $(obj)/efi.lds $< $(relocs-dummy) \ - $(objtree)/common/symbols-dummy.o $(note_file_option) \ + $(dot-target).0s.o $(note_file_option) \ -o $(dot-target).$(base).0 &&) : $(MKRELOC) $(foreach base,$(VIRT_BASE) $(ALT_BASE),$(dot-target).$(base).0) \ > $(dot-target).1r.S --- a/xen/tools/symbols.c +++ b/xen/tools/symbols.c @@ -672,7 +672,10 @@ int main(int argc, char **argv) warn_dup = true; else if (strcmp(argv[i], "--error-dup") == 0) warn_dup = error_dup = true; - else if (strcmp(argv[i], "--xensyms") == 0) + else if (strcmp(argv[i], "--empty") == 0) { + write_src(); + return 0; + } else if (strcmp(argv[i], "--xensyms") == 0) map_only = true; else usage(); ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] symbols/x86: don't use symbols-dummy 2025-11-25 14:14 ` [PATCH 2/2] symbols/x86: don't use symbols-dummy Jan Beulich @ 2025-11-25 17:36 ` Roger Pau Monné 2025-11-26 6:21 ` Jan Beulich 0 siblings, 1 reply; 7+ messages in thread From: Roger Pau Monné @ 2025-11-25 17:36 UTC (permalink / raw) To: Jan Beulich Cc: xen-devel@lists.xenproject.org, Andrew Cooper, Julien Grall, Stefano Stabellini, Anthony PERARD, Michal Orzel On Tue, Nov 25, 2025 at 03:14:27PM +0100, Jan Beulich wrote: > In particular when linking with lld, which converts hidden symbols to > local ones, the ELF symbol table can change in unhelpful ways between the > first two linking passes, resulting in the .rodata contributions to change > between the 2nd and 3rd pass. That, however, renders our embedded symbol > table pretty much unusable; the recently introduced self-test may then > also fail. (Another difference between compiling a C file and assembling > the generated ones is that - with -fdata-sections in use - the .rodata > contributions move between passes 1 and 2, when we'd prefer them not to.) > > Make tools/symbols capable of producing an "empty" assembly file, such > that unwanted differences between passes 1 and 2 go away when then using > the corresponding objects in place of common/symbols-dummy.o. > > Reported-by: Andrew Cooper <andrew.cooper3@citrix.com> > Reported-by: Roger Pau Monné <roger.pau@citrix.com> > Signed-off-by: Jan Beulich <jbeulich@suse.com> LGTM, not sure whether you want to extend to other arches in this same patch, or simply guard the build of symbols-dummy.o for non-x86 arches. > --- > May want mirroring to other arch-es. > > --- a/xen/arch/x86/Makefile > +++ b/xen/arch/x86/Makefile > @@ -134,8 +134,10 @@ $(TARGET): $(TARGET)-syms $(efi-y) $(obj > CFLAGS-$(XEN_BUILD_EFI) += -DXEN_BUILD_EFI > > $(TARGET)-syms: $(objtree)/prelink.o $(obj)/xen.lds > + $(objtree)/tools/symbols $(all_symbols) --empty > $(dot-target).0.S > + $(MAKE) $(build)=$(@D) $(dot-target).0.o > $(LD) $(XEN_LDFLAGS) -T $(obj)/xen.lds $< $(build_id_linker) \ > - $(objtree)/common/symbols-dummy.o -o $(dot-target).0 It would be good if we could now stop building symbols-dummy.o as part of extra-y. Maybe you could guard it with ifneq ($(CONFIG_X86),y) in the Makefile? Or otherwise remove this from all arches thus removing common/symbols-dummy.c. > + $(dot-target).0.o -o $(dot-target).0 > $(NM) -pa --format=sysv $(dot-target).0 \ > | $(objtree)/tools/symbols $(all_symbols) --sysv --sort \ > > $(dot-target).1.S > @@ -207,9 +209,11 @@ $(TARGET).efi: $(objtree)/prelink.o $(no > ifeq ($(CONFIG_DEBUG_INFO),y) > $(if $(filter --strip-debug,$(EFI_LDFLAGS)),echo,:) "Will strip debug info from $(@F)" > endif > + $(objtree)/tools/symbols $(all_symbols) --empty > $(dot-target).0s.S > + $(MAKE) $(build)=$(@D) .$(@F).0s.o > $(foreach base, $(VIRT_BASE) $(ALT_BASE), \ > $(LD) $(call EFI_LDFLAGS,$(base)) -T $(obj)/efi.lds $< $(relocs-dummy) \ > - $(objtree)/common/symbols-dummy.o $(note_file_option) \ > + $(dot-target).0s.o $(note_file_option) \ > -o $(dot-target).$(base).0 &&) : > $(MKRELOC) $(foreach base,$(VIRT_BASE) $(ALT_BASE),$(dot-target).$(base).0) \ > > $(dot-target).1r.S > --- a/xen/tools/symbols.c > +++ b/xen/tools/symbols.c > @@ -672,7 +672,10 @@ int main(int argc, char **argv) > warn_dup = true; > else if (strcmp(argv[i], "--error-dup") == 0) > warn_dup = error_dup = true; > - else if (strcmp(argv[i], "--xensyms") == 0) > + else if (strcmp(argv[i], "--empty") == 0) { > + write_src(); > + return 0; Oh, that was easier than I was expecting for symbols to generate a working empty assembly file. Thanks, Roger. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] symbols/x86: don't use symbols-dummy 2025-11-25 17:36 ` Roger Pau Monné @ 2025-11-26 6:21 ` Jan Beulich 2025-11-26 8:21 ` Roger Pau Monné 0 siblings, 1 reply; 7+ messages in thread From: Jan Beulich @ 2025-11-26 6:21 UTC (permalink / raw) To: Roger Pau Monné Cc: xen-devel@lists.xenproject.org, Andrew Cooper, Julien Grall, Stefano Stabellini, Anthony PERARD, Michal Orzel On 25.11.2025 18:36, Roger Pau Monné wrote: > On Tue, Nov 25, 2025 at 03:14:27PM +0100, Jan Beulich wrote: >> In particular when linking with lld, which converts hidden symbols to >> local ones, the ELF symbol table can change in unhelpful ways between the >> first two linking passes, resulting in the .rodata contributions to change >> between the 2nd and 3rd pass. That, however, renders our embedded symbol >> table pretty much unusable; the recently introduced self-test may then >> also fail. (Another difference between compiling a C file and assembling >> the generated ones is that - with -fdata-sections in use - the .rodata >> contributions move between passes 1 and 2, when we'd prefer them not to.) >> >> Make tools/symbols capable of producing an "empty" assembly file, such >> that unwanted differences between passes 1 and 2 go away when then using >> the corresponding objects in place of common/symbols-dummy.o. >> >> Reported-by: Andrew Cooper <andrew.cooper3@citrix.com> >> Reported-by: Roger Pau Monné <roger.pau@citrix.com> >> Signed-off-by: Jan Beulich <jbeulich@suse.com> > > LGTM, not sure whether you want to extend to other arches in this > same patch, or simply guard the build of symbols-dummy.o for non-x86 > arches. I think I'd prefer to mirror it to other arch-es, but in separate patches (so they can go in independently). Then once all are in, ... >> --- >> May want mirroring to other arch-es. >> >> --- a/xen/arch/x86/Makefile >> +++ b/xen/arch/x86/Makefile >> @@ -134,8 +134,10 @@ $(TARGET): $(TARGET)-syms $(efi-y) $(obj >> CFLAGS-$(XEN_BUILD_EFI) += -DXEN_BUILD_EFI >> >> $(TARGET)-syms: $(objtree)/prelink.o $(obj)/xen.lds >> + $(objtree)/tools/symbols $(all_symbols) --empty > $(dot-target).0.S >> + $(MAKE) $(build)=$(@D) $(dot-target).0.o >> $(LD) $(XEN_LDFLAGS) -T $(obj)/xen.lds $< $(build_id_linker) \ >> - $(objtree)/common/symbols-dummy.o -o $(dot-target).0 > > It would be good if we could now stop building symbols-dummy.o as part > of extra-y. Maybe you could guard it with ifneq ($(CONFIG_X86),y) in > the Makefile? > > Or otherwise remove this from all arches thus removing > common/symbols-dummy.c. ... I'd remove symbols-dummy altogether. I don't think there's a need to transiently disable building of symbols-dummy.o for just some of the arch-es (like foe x86 right here). >> --- a/xen/tools/symbols.c >> +++ b/xen/tools/symbols.c >> @@ -672,7 +672,10 @@ int main(int argc, char **argv) >> warn_dup = true; >> else if (strcmp(argv[i], "--error-dup") == 0) >> warn_dup = error_dup = true; >> - else if (strcmp(argv[i], "--xensyms") == 0) >> + else if (strcmp(argv[i], "--empty") == 0) { >> + write_src(); >> + return 0; > > Oh, that was easier than I was expecting for symbols to generate a > working empty assembly file. Yeah, I also expected it to be more intrusive. The file isn't exactly, though - two of the tables (the ones with 256 entries) are emitted nevertheless. I didn't consider this an issue, though. Jan ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] symbols/x86: don't use symbols-dummy 2025-11-26 6:21 ` Jan Beulich @ 2025-11-26 8:21 ` Roger Pau Monné 0 siblings, 0 replies; 7+ messages in thread From: Roger Pau Monné @ 2025-11-26 8:21 UTC (permalink / raw) To: Jan Beulich Cc: xen-devel@lists.xenproject.org, Andrew Cooper, Julien Grall, Stefano Stabellini, Anthony PERARD, Michal Orzel On Wed, Nov 26, 2025 at 07:21:09AM +0100, Jan Beulich wrote: > On 25.11.2025 18:36, Roger Pau Monné wrote: > > On Tue, Nov 25, 2025 at 03:14:27PM +0100, Jan Beulich wrote: > >> In particular when linking with lld, which converts hidden symbols to > >> local ones, the ELF symbol table can change in unhelpful ways between the > >> first two linking passes, resulting in the .rodata contributions to change > >> between the 2nd and 3rd pass. That, however, renders our embedded symbol > >> table pretty much unusable; the recently introduced self-test may then > >> also fail. (Another difference between compiling a C file and assembling > >> the generated ones is that - with -fdata-sections in use - the .rodata > >> contributions move between passes 1 and 2, when we'd prefer them not to.) > >> > >> Make tools/symbols capable of producing an "empty" assembly file, such > >> that unwanted differences between passes 1 and 2 go away when then using > >> the corresponding objects in place of common/symbols-dummy.o. > >> > >> Reported-by: Andrew Cooper <andrew.cooper3@citrix.com> > >> Reported-by: Roger Pau Monné <roger.pau@citrix.com> > >> Signed-off-by: Jan Beulich <jbeulich@suse.com> > > > > LGTM, not sure whether you want to extend to other arches in this > > same patch, or simply guard the build of symbols-dummy.o for non-x86 > > arches. > > I think I'd prefer to mirror it to other arch-es, but in separate > patches (so they can go in independently). Then once all are in, ... Reviewed-by: Roger Pau Monné <roger.pau@citrix.com> > >> --- > >> May want mirroring to other arch-es. > >> > >> --- a/xen/arch/x86/Makefile > >> +++ b/xen/arch/x86/Makefile > >> @@ -134,8 +134,10 @@ $(TARGET): $(TARGET)-syms $(efi-y) $(obj > >> CFLAGS-$(XEN_BUILD_EFI) += -DXEN_BUILD_EFI > >> > >> $(TARGET)-syms: $(objtree)/prelink.o $(obj)/xen.lds > >> + $(objtree)/tools/symbols $(all_symbols) --empty > $(dot-target).0.S > >> + $(MAKE) $(build)=$(@D) $(dot-target).0.o > >> $(LD) $(XEN_LDFLAGS) -T $(obj)/xen.lds $< $(build_id_linker) \ > >> - $(objtree)/common/symbols-dummy.o -o $(dot-target).0 > > > > It would be good if we could now stop building symbols-dummy.o as part > > of extra-y. Maybe you could guard it with ifneq ($(CONFIG_X86),y) in > > the Makefile? > > > > Or otherwise remove this from all arches thus removing > > common/symbols-dummy.c. > > ... I'd remove symbols-dummy altogether. I don't think there's a need > to transiently disable building of symbols-dummy.o for just some of the > arch-es (like foe x86 right here). OK, as long as those other patches don't get stuck that's fine for me. > >> --- a/xen/tools/symbols.c > >> +++ b/xen/tools/symbols.c > >> @@ -672,7 +672,10 @@ int main(int argc, char **argv) > >> warn_dup = true; > >> else if (strcmp(argv[i], "--error-dup") == 0) > >> warn_dup = error_dup = true; > >> - else if (strcmp(argv[i], "--xensyms") == 0) > >> + else if (strcmp(argv[i], "--empty") == 0) { > >> + write_src(); > >> + return 0; > > > > Oh, that was easier than I was expecting for symbols to generate a > > working empty assembly file. > > Yeah, I also expected it to be more intrusive. The file isn't exactly, > though - two of the tables (the ones with 256 entries) are emitted > nevertheless. I didn't consider this an issue, though. As long as it builds and has the same symbols defined, it's all fine. IMO, We don't care about the sizes at this point, just using the same sections for the defined symbols. Thanks, Roger. ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2025-11-26 8:21 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-11-25 14:12 [PATCH 0/2] symbols/x86: avoid symbols-dummy Jan Beulich 2025-11-25 14:13 ` [PATCH 1/2] symbols/x86: re-number intermediate files Jan Beulich 2025-11-25 17:24 ` Roger Pau Monné 2025-11-25 14:14 ` [PATCH 2/2] symbols/x86: don't use symbols-dummy Jan Beulich 2025-11-25 17:36 ` Roger Pau Monné 2025-11-26 6:21 ` Jan Beulich 2025-11-26 8:21 ` Roger Pau Monné
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.