From: Geert Uytterhoeven <geert@linux-m68k.org> To: Kees Cook <keescook@chromium.org> Cc: Ingo Molnar <mingo@kernel.org>, Ard Biesheuvel <ardb@kernel.org>, Catalin Marinas <catalin.marinas@arm.com>, Mark Rutland <mark.rutland@arm.com>, Peter Collingbourne <pcc@google.com>, James Morse <james.morse@arm.com>, Borislav Petkov <bp@suse.de>, Ingo Molnar <mingo@redhat.com>, Russell King <linux@armlinux.org.uk>, Masahiro Yamada <masahiroy@kernel.org>, Arvind Sankar <nivedita@alum.mit.edu>, Nick Desaulniers <ndesaulniers@google.com>, Nathan Chancellor <natechancellor@gmail.com>, Arnd Bergmann <arnd@arndb.de>, "the arch/x86 maintainers" <x86@kernel.org>, clang-built-linux <clang-built-linux@googlegroups.com>, Linux-Arch <linux-arch@vger.kernel.org>, linux-efi <linux-efi@vger.kernel.org>, Linux ARM <linux-arm-kernel@lists.infradead.org>, Linux Kernel Mailing List <linux-kernel@vger.kernel.org>, Linux-Renesas <linux-renesas-soc@vger.kernel.org> Subject: Re: [PATCH v6 13/29] arm64/build: Assert for unwanted sections Date: Mon, 26 Oct 2020 13:29:22 +0100 [thread overview] Message-ID: <CAMuHMdUg0WJHEcq6to0-eODpXPOywLot6UD2=GFHpzoj_hCoBQ@mail.gmail.com> (raw) In-Reply-To: <20200821194310.3089815-14-keescook@chromium.org> Hi Kees, On Fri, Aug 21, 2020 at 9:56 PM Kees Cook <keescook@chromium.org> wrote: > In preparation for warning on orphan sections, discard > unwanted non-zero-sized generated sections, and enforce other > expected-to-be-zero-sized sections (since discarding them might hide > problems with them suddenly gaining unexpected entries). > > Suggested-by: Ard Biesheuvel <ardb@kernel.org> > Signed-off-by: Kees Cook <keescook@chromium.org> This is now commit be2881824ae9eb92 ("arm64/build: Assert for unwanted sections") in v5.10-rc1, and is causing the following error with renesas_defconfig[1]: aarch64-linux-gnu-ld: warning: orphan section `.eh_frame' from `kernel/bpf/core.o' being placed in section `.eh_frame' aarch64-linux-gnu-ld: Unexpected GOT/PLT entries detected! aarch64-linux-gnu-ld: Unexpected run-time procedure linkages detected! I cannot reproduce this with the standard arm64 defconfig. I bisected the error to the aforementioned commit, but understand this is not the real reason. If I revert this commit, I still get: aarch64-linux-gnu-ld: warning: orphan section `.got.plt' from `arch/arm64/kernel/head.o' being placed in section `.got.plt' aarch64-linux-gnu-ld: warning: orphan section `.plt' from `arch/arm64/kernel/head.o' being placed in section `.plt' aarch64-linux-gnu-ld: warning: orphan section `.data.rel.ro' from `arch/arm64/kernel/head.o' being placed in section `.data.rel.ro' aarch64-linux-gnu-ld: warning: orphan section `.eh_frame' from `kernel/bpf/core.o' being placed in section `.eh_frame' I.e. including the ".eh_frame" warning. I have tried bisecting that warning (i.e. with be2881824ae9eb92 reverted), but that leads me to commit b3e5d80d0c48c0cc ("arm64/build: Warn on orphan section placement"), which is another red herring. Note that even on plain be2881824ae9eb92, I get: aarch64-linux-gnu-ld: Unexpected GOT/PLT entries detected! aarch64-linux-gnu-ld: Unexpected run-time procedure linkages detected! The parent commit obviously doesn't show that (but probably still has the problem). Do you have a clue! Thanks! > --- a/arch/arm64/kernel/vmlinux.lds.S > +++ b/arch/arm64/kernel/vmlinux.lds.S > @@ -121,6 +121,14 @@ SECTIONS > *(.got) /* Global offset table */ > } > > + /* > + * Make sure that the .got.plt is either completely empty or it > + * contains only the lazy dispatch entries. > + */ > + .got.plt : { *(.got.plt) } > + ASSERT(SIZEOF(.got.plt) == 0 || SIZEOF(.got.plt) == 0x18, > + "Unexpected GOT/PLT entries detected!") > + > . = ALIGN(SEGMENT_ALIGN); > _etext = .; /* End of text section */ > > @@ -243,6 +251,18 @@ SECTIONS > ELF_DETAILS > > HEAD_SYMBOLS > + > + /* > + * Sections that should stay zero sized, which is safer to > + * explicitly check instead of blindly discarding. > + */ > + .plt : { > + *(.plt) *(.plt.*) *(.iplt) *(.igot) > + } > + ASSERT(SIZEOF(.plt) == 0, "Unexpected run-time procedure linkages detected!") > + > + .data.rel.ro : { *(.data.rel.ro) } > + ASSERT(SIZEOF(.data.rel.ro) == 0, "Unexpected RELRO detected!") > } > > #include "image-vars.h" [1] https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel.git/log/?h=topic/renesas-defconfig Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds
WARNING: multiple messages have this Message-ID (diff)
From: Geert Uytterhoeven <geert@linux-m68k.org> To: Kees Cook <keescook@chromium.org> Cc: Mark Rutland <mark.rutland@arm.com>, Linux-Arch <linux-arch@vger.kernel.org>, linux-efi <linux-efi@vger.kernel.org>, Linux Kernel Mailing List <linux-kernel@vger.kernel.org>, Arnd Bergmann <arnd@arndb.de>, Catalin Marinas <catalin.marinas@arm.com>, Masahiro Yamada <masahiroy@kernel.org>, the arch/x86 maintainers <x86@kernel.org>, Nick Desaulniers <ndesaulniers@google.com>, Russell King <linux@armlinux.org.uk>, Ard Biesheuvel <ardb@kernel.org>, Linux-Renesas <linux-renesas-soc@vger.kernel.org>, clang-built-linux <clang-built-linux@googlegroups.com>, Arvind Sankar <nivedita@alum.mit.edu>, Ingo Molnar <mingo@redhat.com>, James Morse <james.morse@arm.com>, Nathan Chancellor <natechancellor@gmail.com>, Borislav Petkov <bp@suse.de>, Peter Collingbourne <pcc@google.com>, Ingo Molnar <mingo@kernel.org>, Linux ARM <linux-arm-kernel@lists.infradead.org> Subject: Re: [PATCH v6 13/29] arm64/build: Assert for unwanted sections Date: Mon, 26 Oct 2020 13:29:22 +0100 [thread overview] Message-ID: <CAMuHMdUg0WJHEcq6to0-eODpXPOywLot6UD2=GFHpzoj_hCoBQ@mail.gmail.com> (raw) In-Reply-To: <20200821194310.3089815-14-keescook@chromium.org> Hi Kees, On Fri, Aug 21, 2020 at 9:56 PM Kees Cook <keescook@chromium.org> wrote: > In preparation for warning on orphan sections, discard > unwanted non-zero-sized generated sections, and enforce other > expected-to-be-zero-sized sections (since discarding them might hide > problems with them suddenly gaining unexpected entries). > > Suggested-by: Ard Biesheuvel <ardb@kernel.org> > Signed-off-by: Kees Cook <keescook@chromium.org> This is now commit be2881824ae9eb92 ("arm64/build: Assert for unwanted sections") in v5.10-rc1, and is causing the following error with renesas_defconfig[1]: aarch64-linux-gnu-ld: warning: orphan section `.eh_frame' from `kernel/bpf/core.o' being placed in section `.eh_frame' aarch64-linux-gnu-ld: Unexpected GOT/PLT entries detected! aarch64-linux-gnu-ld: Unexpected run-time procedure linkages detected! I cannot reproduce this with the standard arm64 defconfig. I bisected the error to the aforementioned commit, but understand this is not the real reason. If I revert this commit, I still get: aarch64-linux-gnu-ld: warning: orphan section `.got.plt' from `arch/arm64/kernel/head.o' being placed in section `.got.plt' aarch64-linux-gnu-ld: warning: orphan section `.plt' from `arch/arm64/kernel/head.o' being placed in section `.plt' aarch64-linux-gnu-ld: warning: orphan section `.data.rel.ro' from `arch/arm64/kernel/head.o' being placed in section `.data.rel.ro' aarch64-linux-gnu-ld: warning: orphan section `.eh_frame' from `kernel/bpf/core.o' being placed in section `.eh_frame' I.e. including the ".eh_frame" warning. I have tried bisecting that warning (i.e. with be2881824ae9eb92 reverted), but that leads me to commit b3e5d80d0c48c0cc ("arm64/build: Warn on orphan section placement"), which is another red herring. Note that even on plain be2881824ae9eb92, I get: aarch64-linux-gnu-ld: Unexpected GOT/PLT entries detected! aarch64-linux-gnu-ld: Unexpected run-time procedure linkages detected! The parent commit obviously doesn't show that (but probably still has the problem). Do you have a clue! Thanks! > --- a/arch/arm64/kernel/vmlinux.lds.S > +++ b/arch/arm64/kernel/vmlinux.lds.S > @@ -121,6 +121,14 @@ SECTIONS > *(.got) /* Global offset table */ > } > > + /* > + * Make sure that the .got.plt is either completely empty or it > + * contains only the lazy dispatch entries. > + */ > + .got.plt : { *(.got.plt) } > + ASSERT(SIZEOF(.got.plt) == 0 || SIZEOF(.got.plt) == 0x18, > + "Unexpected GOT/PLT entries detected!") > + > . = ALIGN(SEGMENT_ALIGN); > _etext = .; /* End of text section */ > > @@ -243,6 +251,18 @@ SECTIONS > ELF_DETAILS > > HEAD_SYMBOLS > + > + /* > + * Sections that should stay zero sized, which is safer to > + * explicitly check instead of blindly discarding. > + */ > + .plt : { > + *(.plt) *(.plt.*) *(.iplt) *(.igot) > + } > + ASSERT(SIZEOF(.plt) == 0, "Unexpected run-time procedure linkages detected!") > + > + .data.rel.ro : { *(.data.rel.ro) } > + ASSERT(SIZEOF(.data.rel.ro) == 0, "Unexpected RELRO detected!") > } > > #include "image-vars.h" [1] https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel.git/log/?h=topic/renesas-defconfig Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2020-10-26 12:29 UTC|newest] Thread overview: 160+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-08-21 19:42 [PATCH v6 00/29] Warn on orphan section placement Kees Cook 2020-08-21 19:42 ` Kees Cook 2020-08-21 19:42 ` [PATCH v6 01/29] vmlinux.lds.h: Create COMMON_DISCARDS Kees Cook 2020-08-21 19:42 ` Kees Cook 2020-09-01 11:48 ` [tip: core/build] " tip-bot2 for Kees Cook 2020-08-21 19:42 ` [PATCH v6 02/29] vmlinux.lds.h: Add .gnu.version* to COMMON_DISCARDS Kees Cook 2020-08-21 19:42 ` Kees Cook 2020-09-01 11:48 ` [tip: core/build] " tip-bot2 for Kees Cook 2020-08-21 19:42 ` [PATCH v6 03/29] vmlinux.lds.h: Avoid KASAN and KCSAN's unwanted sections Kees Cook 2020-08-21 19:42 ` Kees Cook 2020-09-01 11:48 ` [tip: core/build] " tip-bot2 for Kees Cook 2020-08-21 19:42 ` [PATCH v6 04/29] vmlinux.lds.h: Split ELF_DETAILS from STABS_DEBUG Kees Cook 2020-08-21 19:42 ` Kees Cook 2020-09-01 11:48 ` [tip: core/build] " tip-bot2 for Kees Cook 2020-08-21 19:42 ` [PATCH v6 05/29] vmlinux.lds.h: Add .symtab, .strtab, and .shstrtab to ELF_DETAILS Kees Cook 2020-08-21 19:42 ` Kees Cook 2020-09-01 11:47 ` [tip: core/build] " tip-bot2 for Kees Cook 2020-08-21 19:42 ` [PATCH v6 06/29] vmlinux.lds.h: add PGO and AutoFDO input sections Kees Cook 2020-08-21 19:42 ` Kees Cook 2020-09-01 11:47 ` [tip: core/build] vmlinux.lds.h: Add " tip-bot2 for Nick Desaulniers 2020-08-21 19:42 ` [PATCH v6 07/29] efi/libstub: Disable -mbranch-protection Kees Cook 2020-08-21 19:42 ` Kees Cook 2020-09-01 11:47 ` [tip: core/build] " tip-bot2 for Kees Cook 2020-08-21 19:42 ` [PATCH v6 08/29] arm64/mm: Remove needless section quotes Kees Cook 2020-08-21 19:42 ` Kees Cook 2020-09-01 11:47 ` [tip: core/build] " tip-bot2 for Kees Cook 2020-08-21 19:42 ` [PATCH v6 09/29] arm64/kernel: Remove needless Call Frame Information annotations Kees Cook 2020-08-21 19:42 ` Kees Cook 2020-09-01 11:47 ` [tip: core/build] " tip-bot2 for Kees Cook 2020-08-21 19:42 ` [PATCH v6 10/29] arm64/build: Remove .eh_frame* sections due to unwind tables Kees Cook 2020-08-21 19:42 ` Kees Cook 2020-09-01 11:47 ` [tip: core/build] " tip-bot2 for Kees Cook 2020-08-21 19:42 ` [PATCH v6 11/29] arm64/build: Use common DISCARDS in linker script Kees Cook 2020-08-21 19:42 ` Kees Cook 2020-09-01 11:47 ` [tip: core/build] " tip-bot2 for Kees Cook 2020-08-21 19:42 ` [PATCH v6 12/29] arm64/build: Add missing DWARF sections Kees Cook 2020-08-21 19:42 ` Kees Cook 2020-09-01 11:47 ` [tip: core/build] " tip-bot2 for Kees Cook 2020-08-21 19:42 ` [PATCH v6 13/29] arm64/build: Assert for unwanted sections Kees Cook 2020-08-21 19:42 ` Kees Cook 2020-09-01 11:47 ` [tip: core/build] " tip-bot2 for Kees Cook 2020-10-26 12:29 ` Geert Uytterhoeven [this message] 2020-10-26 12:29 ` [PATCH v6 13/29] " Geert Uytterhoeven 2020-10-26 13:29 ` Geert Uytterhoeven 2020-10-26 13:29 ` Geert Uytterhoeven 2020-10-26 16:01 ` Geert Uytterhoeven 2020-10-26 16:01 ` Geert Uytterhoeven 2020-10-26 17:38 ` Ard Biesheuvel 2020-10-26 17:38 ` Ard Biesheuvel 2020-10-26 17:43 ` Geert Uytterhoeven 2020-10-26 17:43 ` Geert Uytterhoeven 2020-10-26 17:48 ` Nick Desaulniers 2020-10-26 17:48 ` Nick Desaulniers 2020-10-26 17:53 ` Geert Uytterhoeven 2020-10-26 17:53 ` Geert Uytterhoeven 2020-10-27 8:37 ` Geert Uytterhoeven 2020-10-27 8:37 ` Geert Uytterhoeven 2020-10-27 19:25 ` Geert Uytterhoeven 2020-10-27 19:25 ` Geert Uytterhoeven 2020-10-27 19:33 ` Ard Biesheuvel 2020-10-27 19:33 ` Ard Biesheuvel 2020-10-27 20:00 ` Arvind Sankar 2020-10-27 20:00 ` Arvind Sankar 2020-10-27 20:12 ` Nick Desaulniers 2020-10-27 20:12 ` Nick Desaulniers 2020-10-27 20:15 ` Ard Biesheuvel 2020-10-27 20:15 ` Ard Biesheuvel 2020-10-27 20:17 ` Nick Desaulniers 2020-10-27 20:17 ` Nick Desaulniers 2020-10-27 20:30 ` Arvind Sankar 2020-10-27 20:30 ` Arvind Sankar 2020-10-27 20:40 ` Nick Desaulniers 2020-10-27 20:40 ` Nick Desaulniers 2020-10-27 21:24 ` Arvind Sankar 2020-10-27 21:24 ` Arvind Sankar 2020-10-27 20:28 ` Nick Desaulniers 2020-10-27 20:28 ` Nick Desaulniers 2020-10-27 20:32 ` Arvind Sankar 2020-10-27 20:32 ` Arvind Sankar 2020-10-27 20:36 ` Nick Desaulniers 2020-10-27 20:36 ` Nick Desaulniers 2020-10-28 21:36 ` Alexei Starovoitov 2020-10-28 21:36 ` Alexei Starovoitov 2020-10-27 8:51 ` Geert Uytterhoeven 2020-10-27 8:51 ` Geert Uytterhoeven 2020-10-27 10:08 ` Jean-Philippe Brucker 2020-10-27 10:08 ` Jean-Philippe Brucker 2020-10-27 10:20 ` Geert Uytterhoeven 2020-10-27 10:20 ` Geert Uytterhoeven 2020-10-27 11:29 ` Ard Biesheuvel 2020-10-27 11:29 ` Ard Biesheuvel 2020-10-27 11:53 ` Naresh Kamboju 2020-10-27 11:53 ` Naresh Kamboju 2020-10-27 13:56 ` Ard Biesheuvel 2020-10-27 13:56 ` Ard Biesheuvel 2020-08-21 19:42 ` [PATCH v6 14/29] arm64/build: Warn on orphan section placement Kees Cook 2020-08-21 19:42 ` Kees Cook 2020-08-21 19:42 ` [PATCH v6 15/29] arm/build: Refactor linker script headers Kees Cook 2020-08-21 19:42 ` Kees Cook 2020-09-01 11:47 ` [tip: core/build] " tip-bot2 for Kees Cook 2020-08-21 19:42 ` [PATCH v6 16/29] arm/build: Explicitly keep .ARM.attributes sections Kees Cook 2020-08-21 19:42 ` Kees Cook 2020-09-01 11:47 ` [tip: core/build] " tip-bot2 for Kees Cook 2020-08-21 19:42 ` [PATCH v6 17/29] arm/build: Add missing sections Kees Cook 2020-08-21 19:42 ` Kees Cook 2020-09-01 11:47 ` [tip: core/build] " tip-bot2 for Kees Cook 2020-08-21 19:42 ` [PATCH v6 18/29] arm/build: Assert for unwanted sections Kees Cook 2020-08-21 19:42 ` Kees Cook 2020-09-01 11:47 ` [tip: core/build] " tip-bot2 for Kees Cook 2020-08-21 19:43 ` [PATCH v6 19/29] arm/build: Warn on orphan section placement Kees Cook 2020-08-21 19:43 ` Kees Cook 2020-08-21 19:43 ` [PATCH v6 20/29] arm/boot: Handle all sections explicitly Kees Cook 2020-08-21 19:43 ` Kees Cook 2020-09-01 11:47 ` [tip: core/build] " tip-bot2 for Kees Cook 2020-08-21 19:43 ` [PATCH v6 21/29] arm/boot: Warn on orphan section placement Kees Cook 2020-08-21 19:43 ` Kees Cook 2020-08-21 19:43 ` [PATCH v6 22/29] x86/asm: Avoid generating unused kprobe sections Kees Cook 2020-08-21 19:43 ` Kees Cook 2020-09-01 11:47 ` [tip: core/build] " tip-bot2 for Kees Cook 2020-08-21 19:43 ` [PATCH v6 23/29] x86/build: Enforce an empty .got.plt section Kees Cook 2020-08-21 19:43 ` Kees Cook 2020-09-01 11:47 ` [tip: core/build] " tip-bot2 for Kees Cook 2020-08-21 19:43 ` [PATCH v6 24/29] x86/build: Assert for unwanted sections Kees Cook 2020-08-21 19:43 ` Kees Cook 2020-09-01 11:47 ` [tip: core/build] x86/build: Add asserts " tip-bot2 for Kees Cook 2020-08-21 19:43 ` [PATCH v6 25/29] x86/build: Warn on orphan section placement Kees Cook 2020-08-21 19:43 ` Kees Cook 2020-08-21 19:43 ` [PATCH v6 26/29] x86/boot/compressed: Reorganize zero-size section asserts Kees Cook 2020-08-21 19:43 ` Kees Cook 2020-09-01 11:47 ` [tip: core/build] " tip-bot2 for Kees Cook 2020-08-21 19:43 ` [PATCH v6 27/29] x86/boot/compressed: Remove, discard, or assert for unwanted sections Kees Cook 2020-08-21 19:43 ` Kees Cook 2020-08-21 20:01 ` Arvind Sankar 2020-08-21 20:01 ` Arvind Sankar 2020-08-21 21:21 ` Kees Cook 2020-08-21 21:21 ` Kees Cook 2020-08-21 21:28 ` Arvind Sankar 2020-08-21 21:28 ` Arvind Sankar 2020-09-01 11:47 ` [tip: core/build] " tip-bot2 for Kees Cook 2020-08-21 19:43 ` [PATCH v6 28/29] x86/boot/compressed: Add missing debugging sections to output Kees Cook 2020-08-21 19:43 ` Kees Cook 2020-09-01 11:47 ` [tip: core/build] " tip-bot2 for Kees Cook 2020-08-21 19:43 ` [PATCH v6 29/29] x86/boot/compressed: Warn on orphan section placement Kees Cook 2020-08-21 19:43 ` Kees Cook 2020-08-31 19:41 ` [PATCH v6 00/29] " Kees Cook 2020-08-31 19:41 ` Kees Cook 2020-09-01 7:11 ` Ingo Molnar 2020-09-01 7:11 ` Ingo Molnar 2020-09-01 7:59 ` Ingo Molnar 2020-09-01 7:59 ` Ingo Molnar 2020-09-01 8:16 ` Ingo Molnar 2020-09-01 8:16 ` Ingo Molnar 2020-09-01 15:17 ` Kees Cook 2020-09-01 15:17 ` Kees Cook 2020-09-01 18:02 ` Nick Desaulniers 2020-09-01 18:02 ` Nick Desaulniers 2020-09-01 23:18 ` Kees Cook 2020-09-01 23:18 ` Kees Cook 2020-09-01 23:54 ` Nick Desaulniers 2020-09-01 23:54 ` Nick Desaulniers
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to='CAMuHMdUg0WJHEcq6to0-eODpXPOywLot6UD2=GFHpzoj_hCoBQ@mail.gmail.com' \ --to=geert@linux-m68k.org \ --cc=ardb@kernel.org \ --cc=arnd@arndb.de \ --cc=bp@suse.de \ --cc=catalin.marinas@arm.com \ --cc=clang-built-linux@googlegroups.com \ --cc=james.morse@arm.com \ --cc=keescook@chromium.org \ --cc=linux-arch@vger.kernel.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-efi@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-renesas-soc@vger.kernel.org \ --cc=linux@armlinux.org.uk \ --cc=mark.rutland@arm.com \ --cc=masahiroy@kernel.org \ --cc=mingo@kernel.org \ --cc=mingo@redhat.com \ --cc=natechancellor@gmail.com \ --cc=ndesaulniers@google.com \ --cc=nivedita@alum.mit.edu \ --cc=pcc@google.com \ --cc=x86@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
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.