* Latest libiberty update - Intel CET?
@ 2020-04-29 17:03 Simon Marchi
2020-04-29 21:27 ` [PATCH] Sync config and libiberty with GCC H.J. Lu
0 siblings, 1 reply; 4+ messages in thread
From: Simon Marchi @ 2020-04-29 17:03 UTC (permalink / raw)
To: Nick Clifton; +Cc: Binutils, gdb-patches
Hi Nick,
Since commit 56b1e56d2c2fa ("Rebase libiberty source with latest changes from gcc."), I get
this when libiberty gets configured:
checking for CET support... configure: error: Intel CET must be enabled on Intel CET enabled host
Is it expected? I don't really know what that means, but hopefully we don't have to pass
--enable-cet to every build.
In any case, something's not right, because the GCC_CET_HOST_FLAGS macro is not defined in
the binutils-gdb repo. So when I `autoreconf -vf` libiberty, the configure script does
not get re-generated correctly.
Simon
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH] Sync config and libiberty with GCC
2020-04-29 17:03 Latest libiberty update - Intel CET? Simon Marchi
@ 2020-04-29 21:27 ` H.J. Lu
2020-04-30 7:25 ` Nick Clifton
0 siblings, 1 reply; 4+ messages in thread
From: H.J. Lu @ 2020-04-29 21:27 UTC (permalink / raw)
To: Simon Marchi; +Cc: Nick Clifton, Binutils, gdb-patches
[-- Attachment #1: Type: text/plain, Size: 732 bytes --]
On Wed, Apr 29, 2020 at 11:07 AM Simon Marchi via Gdb-patches
<gdb-patches@sourceware.org> wrote:
>
> Hi Nick,
>
> Since commit 56b1e56d2c2fa ("Rebase libiberty source with latest changes from gcc."), I get
> this when libiberty gets configured:
>
> checking for CET support... configure: error: Intel CET must be enabled on Intel CET enabled host
>
> Is it expected? I don't really know what that means, but hopefully we don't have to pass
> --enable-cet to every build.
>
> In any case, something's not right, because the GCC_CET_HOST_FLAGS macro is not defined in
> the binutils-gdb repo. So when I `autoreconf -vf` libiberty, the configure script does
> not get re-generated correctly.
This is what I checked in.
--
H.J.
[-- Attachment #2: 0001-Sync-config-and-libiberty-with-GCC.patch --]
[-- Type: text/x-patch, Size: 11965 bytes --]
From 87c66b2e70e421983a826518ff5e03d17eaa8f4c Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Wed, 29 Apr 2020 14:25:36 -0700
Subject: [PATCH] Sync config and libiberty with GCC
config/
2020-04-29 H.J. Lu <hongjiu.lu@intel.com>
Sync with GCC
2020-04-28 H.J. Lu <hongjiu.lu@intel.com>
PR bootstrap/94739
* cet.m4 (GCC_CET_HOST_FLAGS): Add -fcf-protection=none to
-Wl,-z,ibt,-z,shstk. Check whether -fcf-protection=none
-Wl,-z,ibt,-z,shstk works first.
2020-04-25 H.J. Lu <hongjiu.lu@intel.com>
PR bootstrap/94739
* cet.m4 (GCC_CET_HOST_FLAGS): New.
2020-04-22 Jakub Jelinek <jakub@redhat.com>
PR libfortran/94694
PR libfortran/94586
* math.m4 (GCC_CHECK_MATH_INLINE_BUILTIN_FALLBACK1,
GCC_CHECK_MATH_INLINE_BUILTIN_FALLBACK2): New.
libiberty/
2020-04-28 H.J. Lu <hongjiu.lu@intel.com>
PR bootstrap/94739
* configure: Regenerated.
---
config/ChangeLog | 22 ++++++++
config/cet.m4 | 105 ++++++++++++++++++++++++++++++++++++
config/math.m4 | 64 ++++++++++++++++++++++
libiberty/ChangeLog | 5 ++
libiberty/configure | 126 +++++++++++++++++++++++++++-----------------
5 files changed, 273 insertions(+), 49 deletions(-)
diff --git a/config/ChangeLog b/config/ChangeLog
index 959695d8f3..ece21f28fb 100644
--- a/config/ChangeLog
+++ b/config/ChangeLog
@@ -1,3 +1,25 @@
+2020-04-29 H.J. Lu <hongjiu.lu@intel.com>
+
+ Sync with GCC
+ 2020-04-28 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR bootstrap/94739
+ * cet.m4 (GCC_CET_HOST_FLAGS): Add -fcf-protection=none to
+ -Wl,-z,ibt,-z,shstk. Check whether -fcf-protection=none
+ -Wl,-z,ibt,-z,shstk works first.
+
+ 2020-04-25 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR bootstrap/94739
+ * cet.m4 (GCC_CET_HOST_FLAGS): New.
+
+ 2020-04-22 Jakub Jelinek <jakub@redhat.com>
+
+ PR libfortran/94694
+ PR libfortran/94586
+ * math.m4 (GCC_CHECK_MATH_INLINE_BUILTIN_FALLBACK1,
+ GCC_CHECK_MATH_INLINE_BUILTIN_FALLBACK2): New.
+
2020-02-19 Andrew Burgess <andrew.burgess@embecosm.com>
* ax_count_cpus.m4: New file, backported from GCC.
diff --git a/config/cet.m4 b/config/cet.m4
index b53c1bbd5c..ea616b728a 100644
--- a/config/cet.m4
+++ b/config/cet.m4
@@ -48,3 +48,108 @@ else
AC_MSG_RESULT([no])
fi
])
+
+dnl
+dnl GCC_CET_HOST_FLAGS
+dnl (SHELL-CODE_HANDLER)
+dnl
+AC_DEFUN([GCC_CET_HOST_FLAGS],[dnl
+GCC_ENABLE(cet, auto, ,[enable Intel CET in host libraries],
+ permit yes|no|auto)
+AC_MSG_CHECKING([for CET support])
+
+case "$host" in
+ i[[34567]]86-*-linux* | x86_64-*-linux*)
+ may_have_cet=yes
+ save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -fcf-protection"
+ case "$enable_cet" in
+ auto)
+ # Check if target supports multi-byte NOPs
+ # and if assembler supports CET insn.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [],
+ [
+#if !defined(__SSE2__)
+#error target does not support multi-byte NOPs
+#else
+asm ("setssbsy");
+#endif
+ ])],
+ [enable_cet=yes],
+ [enable_cet=no])
+ ;;
+ yes)
+ # Check if assembler supports CET.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [],
+ [asm ("setssbsy");])],
+ [],
+ [AC_MSG_ERROR([assembler with CET support is required for --enable-cet])])
+ ;;
+ esac
+ CFLAGS="$save_CFLAGS"
+ ;;
+ *)
+ may_have_cet=no
+ enable_cet=no
+ ;;
+esac
+
+save_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -fcf-protection=none"
+save_LDFLAGS="$LDFLAGS"
+LDFLAGS="$LDFLAGS -Wl,-z,ibt,-z,shstk"
+if test x$may_have_cet = xyes; then
+ # Check whether -fcf-protection=none -Wl,-z,ibt,-z,shstk work.
+ AC_TRY_LINK(
+ [],[return 0;],
+ [may_have_cet=yes],
+ [may_have_cet=no])
+fi
+
+if test x$may_have_cet = xyes; then
+ AC_TRY_RUN([
+static void
+foo (void)
+{
+}
+
+static void
+__attribute__ ((noinline, noclone))
+xxx (void (*f) (void))
+{
+ f ();
+}
+
+static void
+__attribute__ ((noinline, noclone))
+bar (void)
+{
+ xxx (foo);
+}
+
+int
+main ()
+{
+ bar ();
+ return 0;
+}
+ ],
+ [have_cet=no],
+ [have_cet=yes])
+ if test x$enable_cet = xno -a x$have_cet = xyes; then
+ AC_MSG_ERROR([Intel CET must be enabled on Intel CET enabled host])
+ fi
+fi
+if test x$enable_cet = xyes; then
+ $1="-fcf-protection"
+ AC_MSG_RESULT([yes])
+else
+ AC_MSG_RESULT([no])
+fi
+CFLAGS="$save_CFLAGS"
+LDFLAGS="$save_LDFLAGS"
+])
diff --git a/config/math.m4 b/config/math.m4
index 155967e507..e1e88d075e 100644
--- a/config/math.m4
+++ b/config/math.m4
@@ -48,3 +48,67 @@ main ()
[Define to 1 if you have the `$1' function.])
fi
])
+
+dnl GCC_CHECK_MATH_INLINE_BUILTIN_FALLBACK1([name], [type])
+dnl
+dnl Check if math function NAME fallback for function with single
+dnl TYPE argument and TYPE result can be implemented using
+dnl __builtin_NAME expanded inline without needing unavailable math
+dnl library function.
+AC_DEFUN([GCC_CHECK_MATH_INLINE_BUILTIN_FALLBACK1],
+[
+ AC_REQUIRE([GCC_CHECK_LIBM])
+if test $gcc_cv_math_func_$1 = no; then
+ AC_CACHE_CHECK([for inline __builtin_$1], [gcc_cv_math_inline_builtin_$1],
+ [AC_LINK_IFELSE([AC_LANG_SOURCE([
+$2
+$1_fallback ($2 x)
+{
+ return __builtin_$1 (x);
+}
+
+int
+main ()
+{
+ return 0;
+}
+])],
+[gcc_cv_math_inline_builtin_$1=yes],
+[gcc_cv_math_inline_builtin_$1=no])])
+ if test $gcc_cv_math_inline_builtin_$1 = yes; then
+ AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_INLINE_BUILTIN_$1),[1],
+ [Define to 1 if `__builtin_$1' is expanded inline.])
+ fi
+fi])
+
+dnl GCC_CHECK_MATH_INLINE_BUILTIN_FALLBACK2([name], [type])
+dnl
+dnl Check if math function NAME fallback for function with two
+dnl TYPE arguments and TYPE result can be implemented using
+dnl __builtin_NAME expanded inline without needing unavailable math
+dnl library function.
+AC_DEFUN([GCC_CHECK_MATH_INLINE_BUILTIN_FALLBACK2],
+[
+ AC_REQUIRE([GCC_CHECK_LIBM])
+if test $gcc_cv_math_func_$1 = no; then
+ AC_CACHE_CHECK([for inline __builtin_$1], [gcc_cv_math_inline_builtin_$1],
+ [AC_LINK_IFELSE([AC_LANG_SOURCE([
+$2
+$1_fallback ($2 x, $2 y)
+{
+ return __builtin_$1 (x, y);
+}
+
+int
+main ()
+{
+ return 0;
+}
+])],
+[gcc_cv_math_inline_builtin_$1=yes],
+[gcc_cv_math_inline_builtin_$1=no])])
+ if test $gcc_cv_math_inline_builtin_$1 = yes; then
+ AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_INLINE_BUILTIN_$1),[1],
+ [Define to 1 if `__builtin_$1' is expanded inline.])
+ fi
+fi])
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index 3b61aaca93..a757715850 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,8 @@
+2020-04-28 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR bootstrap/94739
+ * configure: Regenerated.
+
2020-04-27 Jakub Jelinek <jakub@redhat.com>
PR demangler/94797
diff --git a/libiberty/configure b/libiberty/configure
index 2b52ce86c8..bb76cf1b82 100755
--- a/libiberty/configure
+++ b/libiberty/configure
@@ -1674,6 +1674,52 @@ $as_echo "$ac_res" >&6; }
} # ac_fn_c_check_header_compile
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext conftest$ac_exeext
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ test -x conftest$ac_exeext
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+ # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+ # interfere with the next link command; also delete a directory that is
+ # left behind by Apple's compiler. We do this before executing the actions.
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
# ac_fn_c_check_header_preproc LINENO HEADER VAR
# ----------------------------------------------
# Tests whether HEADER is present, setting the cache variable VAR accordingly.
@@ -1940,52 +1986,6 @@ $as_echo "$ac_res" >&6; }
} # ac_fn_c_check_type
-# ac_fn_c_try_link LINENO
-# -----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_link ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- rm -f conftest.$ac_objext conftest$ac_exeext
- if { { ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_link") 2>conftest.err
- ac_status=$?
- if test -s conftest.err; then
- grep -v '^ *+' conftest.err >conftest.er1
- cat conftest.er1 >&5
- mv -f conftest.er1 conftest.err
- fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- test -x conftest$ac_exeext
- }; then :
- ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_retval=1
-fi
- # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
- # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
- # interfere with the next link command; also delete a directory that is
- # left behind by Apple's compiler. We do this before executing the actions.
- rm -rf conftest.dSYM conftest_ipa8_conftest.oo
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
- as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_link
-
# ac_fn_c_check_func LINENO FUNC VAR
# ----------------------------------
# Tests whether FUNC exists, setting the cache variable VAR accordingly
@@ -5345,9 +5345,36 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
;;
esac
+save_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -fcf-protection=none"
+save_LDFLAGS="$LDFLAGS"
+LDFLAGS="$LDFLAGS -Wl,-z,ibt,-z,shstk"
+if test x$may_have_cet = xyes; then
+ # Check whether -fcf-protection=none -Wl,-z,ibt,-z,shstk work.
+ if test x$gcc_no_link = xyes; then
+ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ may_have_cet=yes
+else
+ may_have_cet=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+
if test x$may_have_cet = xyes; then
- save_LDFLAGS="$LDFLAGS"
- LDFLAGS="$LDFLAGS -Wl,-z,ibt,-z,shstk"
if test "$cross_compiling" = yes; then :
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -5393,7 +5420,6 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
- LDFLAGS="$save_LDFLAGS"
if test x$enable_cet = xno -a x$have_cet = xyes; then
as_fn_error $? "Intel CET must be enabled on Intel CET enabled host" "$LINENO" 5
fi
@@ -5406,6 +5432,8 @@ else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
+CFLAGS="$save_CFLAGS"
+LDFLAGS="$save_LDFLAGS"
--
2.26.2
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] Sync config and libiberty with GCC
2020-04-29 21:27 ` [PATCH] Sync config and libiberty with GCC H.J. Lu
@ 2020-04-30 7:25 ` Nick Clifton
0 siblings, 0 replies; 4+ messages in thread
From: Nick Clifton @ 2020-04-30 7:25 UTC (permalink / raw)
To: H.J. Lu, Simon Marchi; +Cc: Binutils, gdb-patches
Hi H.J.
> This is what I checked in.
Thanks H.J.
Sorry for not checking for something like this before committing the libiberty update.
Cheers
Nick
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH] Sync config and libiberty with GCC
@ 2020-05-13 1:37 H.J. Lu
0 siblings, 0 replies; 4+ messages in thread
From: H.J. Lu @ 2020-05-13 1:37 UTC (permalink / raw)
To: binutils
config/
PR bootstrap/94998
* cet.m4 (GCC_CET_HOST_FLAGS): Enable CET in cross compiler if
possible.
libiberty/
PR bootstrap/94998
* configure: Regenerated.
---
config/ChangeLog | 9 +++++++++
config/cet.m4 | 18 ++++++++++++------
libiberty/ChangeLog | 5 +++++
libiberty/configure | 12 +++++++++---
4 files changed, 35 insertions(+), 9 deletions(-)
diff --git a/config/ChangeLog b/config/ChangeLog
index ece21f28fb..de8c327b54 100644
--- a/config/ChangeLog
+++ b/config/ChangeLog
@@ -1,3 +1,12 @@
+2020-05-12 H.J. Lu <hongjiu.lu@intel.com>
+
+ Sync with GCC
+ 2020-05-12 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR bootstrap/94998
+ * cet.m4 (GCC_CET_HOST_FLAGS): Enable CET in cross compiler if
+ possible.
+
2020-04-29 H.J. Lu <hongjiu.lu@intel.com>
Sync with GCC
diff --git a/config/cet.m4 b/config/cet.m4
index ea616b728a..d9608699cd 100644
--- a/config/cet.m4
+++ b/config/cet.m4
@@ -111,7 +111,8 @@ if test x$may_have_cet = xyes; then
fi
if test x$may_have_cet = xyes; then
- AC_TRY_RUN([
+ if test x$cross_compiling = xno; then
+ AC_TRY_RUN([
static void
foo (void)
{
@@ -137,12 +138,17 @@ main ()
bar ();
return 0;
}
- ],
- [have_cet=no],
- [have_cet=yes])
- if test x$enable_cet = xno -a x$have_cet = xyes; then
- AC_MSG_ERROR([Intel CET must be enabled on Intel CET enabled host])
+ ],
+ [have_cet=no],
+ [have_cet=yes])
+ if test x$enable_cet = xno -a x$have_cet = xyes; then
+ AC_MSG_ERROR([Intel CET must be enabled on Intel CET enabled host])
+ fi
fi
+else
+ # Enable CET in cross compiler if possible so that it will run on both
+ # CET and non-CET hosts.
+ have_cet=yes
fi
if test x$enable_cet = xyes; then
$1="-fcf-protection"
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index a757715850..f5691180e4 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,8 @@
+2020-05-12 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR bootstrap/94998
+ * configure: Regenerated.
+
2020-04-28 H.J. Lu <hongjiu.lu@intel.com>
PR bootstrap/94739
diff --git a/libiberty/configure b/libiberty/configure
index bb76cf1b82..3f82c5bb86 100755
--- a/libiberty/configure
+++ b/libiberty/configure
@@ -5375,7 +5375,8 @@ rm -f core conftest.err conftest.$ac_objext \
fi
if test x$may_have_cet = xyes; then
- if test "$cross_compiling" = yes; then :
+ if test x$cross_compiling = xno; then
+ if test "$cross_compiling" = yes; then :
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "cannot run test program while cross compiling
@@ -5420,9 +5421,14 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
- if test x$enable_cet = xno -a x$have_cet = xyes; then
- as_fn_error $? "Intel CET must be enabled on Intel CET enabled host" "$LINENO" 5
+ if test x$enable_cet = xno -a x$have_cet = xyes; then
+ as_fn_error $? "Intel CET must be enabled on Intel CET enabled host" "$LINENO" 5
+ fi
fi
+else
+ # Enable CET in cross compiler if possible so that it will run on both
+ # CET and non-CET hosts.
+ have_cet=yes
fi
if test x$enable_cet = xyes; then
CET_HOST_FLAGS="-fcf-protection"
--
2.26.2
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2020-05-13 1:37 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-29 17:03 Latest libiberty update - Intel CET? Simon Marchi
2020-04-29 21:27 ` [PATCH] Sync config and libiberty with GCC H.J. Lu
2020-04-30 7:25 ` Nick Clifton
2020-05-13 1:37 H.J. Lu
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).