public inbox for frysk-cvs@sourceware.org help / color / mirror / Atom feed
From: cagney@sourceware.org To: frysk-cvs@sourceware.org Subject: [SCM] master: Factor frysk.config.Host from frysk.config.Config. Date: Mon, 14 Apr 2008 17:56:00 -0000 [thread overview] Message-ID: <20080414175633.17230.qmail@sourceware.org> (raw) The branch, master has been updated via 919e5663a51ff87897a8988fb2ce9bd3b6092bc2 (commit) from 701ccd302e772219f2031219afa5fdcf69f27618 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit 919e5663a51ff87897a8988fb2ce9bd3b6092bc2 Author: Andrew Cagney <cagney@redhat.com> Date: Mon Apr 14 13:40:34 2008 -0400 Factor frysk.config.Host from frysk.config.Config. frysk-common/ChangeLog 2008-04-14 Andrew Cagney <cagney@redhat.com> * Makefile.rules (SUBST_SED): Substitute @host_cpu@. * frysk-common.ac: Add AC_CANONICAL_HOST. frysk-core/frysk/debuginfo/ChangeLog 2008-04-14 Andrew Cagney <cagney@redhat.com> * LocationExpression.java: Use frysk.config.Host. frysk-core/frysk/expr/ChangeLog 2008-04-14 Andrew Cagney <cagney@redhat.com> * ScratchSymTab.java: Use frysk.config.Host. * TestbedSymTab.java: Ditto. frysk-core/frysk/proc/live/ChangeLog 2008-04-14 Andrew Cagney <cagney@redhat.com> * PtraceRegisterBanksFactory.java: Use frysk.config.Host. frysk-core/frysk/value/ChangeLog 2008-04-14 Andrew Cagney <cagney@redhat.com> * TestValue.java: Use frysk.config.Host. frysk-sys/frysk/config/ChangeLog 2008-04-14 Andrew Cagney <cagney@redhat.com> * jni/Config.cxx (Java_frysk_config_Config_getWordSize): Delete. (Java_frysk_config_Config_getTargetCpuXXX): Delete. * cni/Config.cxx-in (Config::getWordSize): Delete. (Config::getTargetCpuXXX): Delete. * Host.java: Extract from Config.java. * Config.java(getWordSize()): Delete. (getTargetCpuXXX()): Delete. * TestConfig.java: Update. * jni/Host.cxx-in: New. * cni/Host.cxx-in: New. frysk-sys/frysk/junit/ChangeLog 2008-04-14 Andrew Cagney <cagney@redhat.com> * Runner.java: Update; use frysk.config.Host. * TestCase.java: Ditto. frysk-sys/lib/opcodes/ChangeLog 2008-04-14 Andrew Cagney <cagney@redhat.com> * TestDisassembler.java: Update; use frysk.config.Host. ----------------------------------------------------------------------- Summary of changes: frysk-common/ChangeLog | 5 ++ frysk-common/Makefile.rules | 1 + frysk-common/frysk-common.ac | 8 ++- frysk-core/frysk/debuginfo/ChangeLog | 4 + frysk-core/frysk/debuginfo/LocationExpression.java | 6 +- frysk-core/frysk/expr/ChangeLog | 5 ++ frysk-core/frysk/expr/ScratchSymTab.java | 4 +- frysk-core/frysk/expr/TestbedSymTab.java | 5 +- frysk-core/frysk/proc/live/ChangeLog | 4 + .../proc/live/PtraceRegisterBanksFactory.java | 6 +- frysk-core/frysk/value/ChangeLog | 4 + frysk-core/frysk/value/TestValue.java | 4 +- frysk-sys/frysk/config/ChangeLog | 13 ++++ frysk-sys/frysk/config/Config.java | 19 ----- .../frysk/config/Host.java | 76 ++++++-------------- frysk-sys/frysk/config/TestConfig.java | 12 ++-- frysk-sys/frysk/config/cni/Config.cxx-in | 12 --- frysk-sys/frysk/config/cni/Host.cxx-in | 55 ++++++++++++++ frysk-sys/frysk/config/jni/Config.cxx | 20 ----- frysk-sys/frysk/config/jni/Host.cxx-in | 52 +++++++++++++ frysk-sys/frysk/junit/ChangeLog | 5 ++ frysk-sys/frysk/junit/Runner.java | 3 +- frysk-sys/frysk/junit/TestCase.java | 15 ++-- frysk-sys/lib/opcodes/ChangeLog | 4 + frysk-sys/lib/opcodes/TestDisassembler.java | 6 +- 25 files changed, 210 insertions(+), 138 deletions(-) copy frysk-core/frysk/expr/ScratchSymTab.java => frysk-sys/frysk/config/Host.java (58%) create mode 100644 frysk-sys/frysk/config/cni/Host.cxx-in create mode 100644 frysk-sys/frysk/config/jni/Host.cxx-in First 500 lines of diff: diff --git a/frysk-common/ChangeLog b/frysk-common/ChangeLog index 69be125..e1f4304 100644 --- a/frysk-common/ChangeLog +++ b/frysk-common/ChangeLog @@ -1,3 +1,8 @@ +2008-04-14 Andrew Cagney <cagney@redhat.com> + + * Makefile.rules (SUBST_SED): Substitute @host_cpu@. + * frysk-common.ac: Add AC_CANONICAL_HOST. + 2008-04-13 Andrew Cagney <cagney@redhat.com> * Makefile.gen.sh: Generate compile rules for .{c,S,cxx}-{in,sh}. diff --git a/frysk-common/Makefile.rules b/frysk-common/Makefile.rules index d5c147a..df72855 100644 --- a/frysk-common/Makefile.rules +++ b/frysk-common/Makefile.rules @@ -278,6 +278,7 @@ SUBST_SED = sed \ -e 's,[@]GEN_DIRNAME[@],$(GEN_DIRNAME),g' \ -e 's,[@]GEN_PACKAGENAME[@],$(GEN_PACKAGENAME),g' \ -e 's,[@]VERSION[@],$(VERSION),g' \ + -e 's,[@]host_cpu[@],@host_cpu@,g' \ -e 's,[@]target_cpu[@],@target_cpu@,g' SUBST = \ diff --git a/frysk-common/frysk-common.ac b/frysk-common/frysk-common.ac index dd1a97d..6231560 100644 --- a/frysk-common/frysk-common.ac +++ b/frysk-common/frysk-common.ac @@ -1,6 +1,6 @@ # This file is part of the program FRYSK. # -# Copyright 2005, 2006, 2007, Red Hat Inc. +# Copyright 2005, 2006, 2007, 2008, Red Hat Inc. # Copyright 2007 Oracle Corporation. # # FRYSK is free software; you can redistribute it and/or modify it @@ -38,6 +38,12 @@ # version and license this file solely under the GPL without # exception. +# Determine the host information - needed when deciding how native +# tests should be run. + +AC_CANONICAL_HOST + + AC_ARG_VAR([GCJFLAGS], [GCJ compiler flags]) dnl This test is used by `elfutils' and as we share its interface we need diff --git a/frysk-core/frysk/debuginfo/ChangeLog b/frysk-core/frysk/debuginfo/ChangeLog index 45ebaaf..98204bd 100644 --- a/frysk-core/frysk/debuginfo/ChangeLog +++ b/frysk-core/frysk/debuginfo/ChangeLog @@ -1,3 +1,7 @@ +2008-04-14 Andrew Cagney <cagney@redhat.com> + + * LocationExpression.java: Use frysk.config.Host. + 2008-04-13 Andrew Cagney <cagney@redhat.com> * gen-type-expect-tests.py: Remove unresolved, bug 6396. diff --git a/frysk-core/frysk/debuginfo/LocationExpression.java b/frysk-core/frysk/debuginfo/LocationExpression.java index 6cb5dea..7695f2f 100644 --- a/frysk-core/frysk/debuginfo/LocationExpression.java +++ b/frysk-core/frysk/debuginfo/LocationExpression.java @@ -47,7 +47,7 @@ import lib.dwfl.DwAt; import lib.dwfl.DwOp; import lib.dwfl.DwarfDie; import lib.dwfl.DwarfOp; -import frysk.config.Config; +import frysk.config.Host; import frysk.isa.registers.Register; import frysk.isa.registers.RegisterMap; import frysk.stack.Frame; @@ -84,7 +84,7 @@ public class LocationExpression { // MemoryPiece, RegisterPiece or UnavaiablePiece ArrayList pieces = new ArrayList(); - long wordMask = (Config.getWordSize() == 32)? + long wordMask = (Host.wordSize() == 32)? 0xffffffffL : 0xffffffffffffffffL; if (nops == 0) @@ -236,7 +236,7 @@ public class LocationExpression { // so we make that assumption when casting element 0 to MemoryPiece stack.addFirst(new Long(operand1 + ((MemoryPiece) frameBaseOps.decode(frame, - die.getFrameBase(pc), Config.getWordSize()) + die.getFrameBase(pc), Host.wordSize()) .get(0)).getMemory())); break; diff --git a/frysk-core/frysk/expr/ChangeLog b/frysk-core/frysk/expr/ChangeLog index b718896..c8fc857 100644 --- a/frysk-core/frysk/expr/ChangeLog +++ b/frysk-core/frysk/expr/ChangeLog @@ -1,3 +1,8 @@ +2008-04-14 Andrew Cagney <cagney@redhat.com> + + * ScratchSymTab.java: Use frysk.config.Host. + * TestbedSymTab.java: Ditto. + 2008-04-09 Sami Wagiaalla <swagiaal@redhat.com> Renamed ObjectDeclarationSearchEngine.getVariable to diff --git a/frysk-core/frysk/expr/ScratchSymTab.java b/frysk-core/frysk/expr/ScratchSymTab.java index 6690b27..876a053 100644 --- a/frysk-core/frysk/expr/ScratchSymTab.java +++ b/frysk-core/frysk/expr/ScratchSymTab.java @@ -42,7 +42,7 @@ package frysk.expr; import inua.eio.ByteBuffer; import inua.eio.ByteOrder; import java.util.List; -import frysk.config.Config; +import frysk.config.Host; import frysk.value.ObjectDeclaration; import frysk.value.Type; import frysk.value.Value; @@ -91,7 +91,7 @@ public class ScratchSymTab implements ExprSymTab { public int getWordSize() { // Since no debugee word size available, return word size of // debugger. Required for some expression evaluation. - return Config.getWordSize (); + return Host.wordSize(); } public void complete(String incomplete, List candidates) { diff --git a/frysk-core/frysk/expr/TestbedSymTab.java b/frysk-core/frysk/expr/TestbedSymTab.java index d4bdf2a..9453aef 100644 --- a/frysk-core/frysk/expr/TestbedSymTab.java +++ b/frysk-core/frysk/expr/TestbedSymTab.java @@ -45,8 +45,7 @@ import inua.eio.ByteOrder; import java.util.HashMap; import java.util.Iterator; import java.util.List; - -import frysk.config.Config; +import frysk.config.Host; import frysk.scopes.SourceLocation; import frysk.value.ClassType; import frysk.value.ObjectDeclaration; @@ -128,7 +127,7 @@ class TestbedSymTab implements ExprSymTab { public int getWordSize() { // Since no debugee word size available, return word size of // debugger. Required for some expression evaluation, test cases. - return Config.getWordSize (); + return Host.wordSize(); } public void complete(String incomplete, List candidates) { diff --git a/frysk-core/frysk/proc/live/ChangeLog b/frysk-core/frysk/proc/live/ChangeLog index 68dccd1..ca9c6bb 100644 --- a/frysk-core/frysk/proc/live/ChangeLog +++ b/frysk-core/frysk/proc/live/ChangeLog @@ -1,3 +1,7 @@ +2008-04-14 Andrew Cagney <cagney@redhat.com> + + * PtraceRegisterBanksFactory.java: Use frysk.config.Host. + 2008-04-11 Mark Wielaard <mwielaard@redhat.com> * LinuxPtraceTaskState.java (Running.setupSteppingBreakpoint): diff --git a/frysk-core/frysk/proc/live/PtraceRegisterBanksFactory.java b/frysk-core/frysk/proc/live/PtraceRegisterBanksFactory.java index 16348dc..daa86d9 100644 --- a/frysk-core/frysk/proc/live/PtraceRegisterBanksFactory.java +++ b/frysk-core/frysk/proc/live/PtraceRegisterBanksFactory.java @@ -49,7 +49,7 @@ import frysk.sys.ptrace.AddressSpace; import frysk.isa.banks.RegisterBanks; import frysk.isa.banks.X86BankRegisters; import frysk.isa.banks.PPCBankRegisters; -import frysk.config.Config; +import frysk.config.Host; /** * The target has registers scattered across one or more register @@ -99,7 +99,7 @@ class PtraceRegisterBanksFactory { return new RegisterBanks(X86BankRegisters.X8664, x8664Banks(pid)); } else if (isa == ISA.IA32) { - if (Config.getTargetCpuXXX().equals ("x86_64")) + if (Host.cpuXXX().equals ("x86_64")) return new RegisterBanks(X86BankRegisters.IA32_ON_X8664, x8664Banks(pid)); else @@ -109,7 +109,7 @@ class PtraceRegisterBanksFactory { return new RegisterBanks(PPCBankRegisters.PPC64BE, ppcBanksBE(pid)); } else if (isa == ISA.PPC32BE) { - if (Config.getTargetCpuXXX().equals("powerpc64")) + if (Host.cpuXXX().equals("powerpc64")) return new RegisterBanks(PPCBankRegisters.PPC32BE_ON_PPC64BE, ppcBanksBE(pid)); else diff --git a/frysk-core/frysk/value/ChangeLog b/frysk-core/frysk/value/ChangeLog index 2e650fb..f4e34a9 100644 --- a/frysk-core/frysk/value/ChangeLog +++ b/frysk-core/frysk/value/ChangeLog @@ -1,3 +1,7 @@ +2008-04-14 Andrew Cagney <cagney@redhat.com> + + * TestValue.java: Use frysk.config.Host. + 2008-04-10 Sami Wagiaalla <swagiaal@redhat.com> * ObjectDeclaration.java: Changed from abstract class to interface diff --git a/frysk-core/frysk/value/TestValue.java b/frysk-core/frysk/value/TestValue.java index aa96f3a..7ee22b2 100644 --- a/frysk-core/frysk/value/TestValue.java +++ b/frysk-core/frysk/value/TestValue.java @@ -40,7 +40,7 @@ package frysk.value; import inua.eio.ByteOrder; -import frysk.config.Config; +import frysk.config.Host; import frysk.junit.TestCase; public class TestValue @@ -58,7 +58,7 @@ public class TestValue private ArithmeticType floatType = new FloatingPointType("float", ByteOrder.LITTLE_ENDIAN, 4); private ArithmeticType doubleType = new FloatingPointType("double", ByteOrder.LITTLE_ENDIAN, 8); - private int wordSize = Config.getWordSize(); + private int wordSize = Host.wordSize(); public void testNumber () { diff --git a/frysk-sys/frysk/config/ChangeLog b/frysk-sys/frysk/config/ChangeLog index b0c9982..0d6da54 100644 --- a/frysk-sys/frysk/config/ChangeLog +++ b/frysk-sys/frysk/config/ChangeLog @@ -1,3 +1,16 @@ +2008-04-14 Andrew Cagney <cagney@redhat.com> + + * jni/Config.cxx (Java_frysk_config_Config_getWordSize): Delete. + (Java_frysk_config_Config_getTargetCpuXXX): Delete. + * cni/Config.cxx-in (Config::getWordSize): Delete. + (Config::getTargetCpuXXX): Delete. + * Host.java: Extract from Config.java. + * Config.java(getWordSize()): Delete. + (getTargetCpuXXX()): Delete. + * TestConfig.java: Update. + * jni/Host.cxx-in: New. + * cni/Host.cxx-in: New. + 2008-04-11 Andrew Cagney <cagney@redhat.com> * jni/BuildCompiler.cxx: New. diff --git a/frysk-sys/frysk/config/Config.java b/frysk-sys/frysk/config/Config.java index ac4355c..e08bc93 100644 --- a/frysk-sys/frysk/config/Config.java +++ b/frysk-sys/frysk/config/Config.java @@ -264,23 +264,4 @@ public class Config * such as frysk-imports et.al. */ public static final native String getAbsRootSrcDir (); - - /** - * The word size of the underlying architecture. - */ - public static final native int getWordSize (); - - /** - * Return the <tt>autoconf</tt>target_cpu</tt> specified when - * building frysk. - * - * XXX: This variable's value is not a reliable indicator of the - * system's architecture. For instance, on an IA032 system, it - * could contain any of i386, i586, or i686. - * - * XXX: This code was folded in from frysk.*.Build.BUILD_ARCH when - * that file was deleted. It is much more likely that code needs - * to know the arch family, and not some arbitrary string. - */ - public static final native String getTargetCpuXXX (); } diff --git a/frysk-core/frysk/expr/ScratchSymTab.java b/frysk-sys/frysk/config/Host.java similarity index 58% copy from frysk-core/frysk/expr/ScratchSymTab.java copy to frysk-sys/frysk/config/Host.java index 6690b27..ce0f644 100644 --- a/frysk-core/frysk/expr/ScratchSymTab.java +++ b/frysk-sys/frysk/config/Host.java @@ -1,6 +1,6 @@ // This file is part of the program FRYSK. // -// Copyright 2007, 2008 Red Hat Inc. +// Copyright 2005, 2006, 2007, 2008, Red Hat Inc. // // FRYSK is free software; you can redistribute it and/or modify it // under the terms of the GNU General Public License as published by @@ -37,64 +37,30 @@ // version and license this file solely under the GPL without // exception. -package frysk.expr; +package frysk.config; -import inua.eio.ByteBuffer; -import inua.eio.ByteOrder; -import java.util.List; -import frysk.config.Config; -import frysk.value.ObjectDeclaration; -import frysk.value.Type; -import frysk.value.Value; -import frysk.scopes.Variable; +/** + * Host (or executable) configuration information. + */ -public class ScratchSymTab implements ExprSymTab { +public class Host { /** - * Lookup S, assuming S is variable or constant. + * The word size of the host architecture (this is the + * architecture for which the frysk executable built). */ - public Value getValue(String s) { - throw new RuntimeException("no values"); - } - /** - * Lookup S, assuming S is a variable. - */ - public ObjectDeclaration getObjectInScope(String s) { - throw new RuntimeException("no variables"); - } - /** - * The byte order to use when creating new values. - */ - public ByteOrder order() { - throw new RuntimeException("no byte-order"); - } - /** - * Return the task's memory buffer - */ - public ByteBuffer taskMemory() { - throw new RuntimeException("no memory"); - } - /** - * Return the variable's value. - */ - public Value getValue(Variable v) { - throw new RuntimeException("no values"); - } + public static native int wordSize(); + /** - * Given a variable, return its type. + * Return the <tt>autoconf</tt> <tt>target_cpu</tt> specified when + * building frysk. + * + * XXX: This variable's value is not a reliable indicator of the + * system's architecture. For instance, on an IA032 system, it + * could contain any of i386, i586, or i686. + * + * XXX: This code was folded in from frysk.*.Build.BUILD_ARCH when + * that file was deleted. It is much more likely that code needs + * to know the arch family, and not some arbitrary string. */ - public Type getType(Variable variable) { - throw new RuntimeException("no types"); - } - /** - * Return the wordsize. - */ - public int getWordSize() { - // Since no debugee word size available, return word size of - // debugger. Required for some expression evaluation. - return Config.getWordSize (); - } - - public void complete(String incomplete, List candidates) { - return; - } + public static native String cpuXXX(); } diff --git a/frysk-sys/frysk/config/TestConfig.java b/frysk-sys/frysk/config/TestConfig.java index e70e1a4..c0e5cbd 100644 --- a/frysk-sys/frysk/config/TestConfig.java +++ b/frysk-sys/frysk/config/TestConfig.java @@ -117,7 +117,7 @@ public class TestConfig public void testInstallDirs () { Config.set (Config.createInstallConfig ()); - switch (Config.getWordSize()) { + switch (Host.wordSize()) { case 32: validate(32); break; @@ -136,7 +136,7 @@ public class TestConfig public void testBuildDirs () { Config.set (Config.createBuildConfig ("src-dir", "build-dir")); - switch (Config.getWordSize()) { + switch (Host.wordSize()) { case 32: validate(32); break; @@ -150,7 +150,7 @@ public class TestConfig public void testBuild32() { Config.set (Config.createBuildConfig32("src-dir", "build-dir")); - switch (Config.getWordSize()) { + switch (Host.wordSize()) { case 32: validate(32); break; @@ -163,7 +163,7 @@ public class TestConfig } public void testInstall32() { Config.set (Config.createInstallConfig32()); - switch (Config.getWordSize()) { + switch (Host.wordSize()) { case 32: validate(32); break; @@ -176,7 +176,7 @@ public class TestConfig } public void testBuild64() { Config.set (Config.createBuildConfig64("src-dir", "build-dir")); - switch (Config.getWordSize()) { + switch (Host.wordSize()) { case 32: assertNull("config", Config.get()); break; @@ -189,7 +189,7 @@ public class TestConfig } public void testInstall64() { Config.set (Config.createInstallConfig64()); - switch (Config.getWordSize()) { + switch (Host.wordSize()) { case 32: assertNull("config", Config.get()); break; diff --git a/frysk-sys/frysk/config/cni/Config.cxx-in b/frysk-sys/frysk/config/cni/Config.cxx-in index f81747b..6ba5f8a 100644 --- a/frysk-sys/frysk/config/cni/Config.cxx-in +++ b/frysk-sys/frysk/config/cni/Config.cxx-in @@ -74,18 +74,6 @@ frysk::config::Config::getAbsRootSrcDir () return JvNewStringUTF ("@abs_root_srcdir@"); } -jint -frysk::config::Config::getWordSize () -{ - return sizeof (long) * 8; -} - -jstring -frysk::config::Config::getTargetCpuXXX () -{ - return JvNewStringUTF ("@target_cpu@"); -} - frysk::config::Config* frysk::config::Config::createInstallConfig () { diff --git a/frysk-sys/frysk/config/cni/Host.cxx-in b/frysk-sys/frysk/config/cni/Host.cxx-in new file mode 100644 index 0000000..98c195f --- /dev/null +++ b/frysk-sys/frysk/config/cni/Host.cxx-in @@ -0,0 +1,55 @@ +// -*- C++ -*- + +// This file is part of the program FRYSK. +// +// Copyright 2008, Red Hat Inc. +// +// FRYSK is free software; you can redistribute it and/or modify it +// under the terms of the GNU General Public License as published by +// the Free Software Foundation; version 2 of the License. +// +// FRYSK is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with FRYSK; if not, write to the Free Software Foundation, +// Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. +// +// In addition, as a special exception, Red Hat, Inc. gives You the +// additional right to link the code of FRYSK with code not covered +// under the GNU General Public License ("Non-GPL Code") and to +// distribute linked combinations including the two, subject to the +// limitations in this paragraph. Non-GPL Code permitted under this +// exception must only link to the code of FRYSK through those well +// defined interfaces identified in the file named EXCEPTION found in +// the source code files (the "Approved Interfaces"). The files of +// Non-GPL Code may instantiate templates or use macros or inline +// functions from the Approved Interfaces without causing the +// resulting work to be covered by the GNU General Public +// License. Only Red Hat, Inc. may make changes or additions to the +// list of Approved Interfaces. You must obey the GNU General Public +// License in all respects for all of the FRYSK code and other code +// used in conjunction with FRYSK except the Non-GPL Code covered by +// this exception. If you modify this file, you may extend this +// exception to your version of the file, but you are not obligated to hooks/post-receive -- frysk system monitor/debugger
reply other threads:[~2008-04-14 17:56 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=20080414175633.17230.qmail@sourceware.org \ --to=cagney@sourceware.org \ --cc=frysk-cvs@sourceware.org \ --cc=frysk@sourceware.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 a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).