public inbox for libc-ports@sourceware.org
 help / color / mirror / Atom feed
* [PATCH v2 0/2] Add MicroBlaze Port
@ 2013-03-30 14:28 David Holsgrove
  2013-04-02 23:19 ` Joseph S. Myers
  2013-04-08 22:48 ` Roland McGrath
  0 siblings, 2 replies; 4+ messages in thread
From: David Holsgrove @ 2013-03-30 14:28 UTC (permalink / raw)
  To: libc-ports
  Cc: joseph, david.holsgrove, john.williams, edgar.iglesias,
	vinod.kathail, vidhumouli.hunsigida, nagaraju.mekala, tom.shui

The following patches add support for the MicroBlaze architecture
to libc ports.

TLS support for MicroBlaze has been accepted into binutils, and gcc
mainline as of 2 weeks ago (2013-03-14), and MicroBlaze has been
present in the linux kernel since version 2.6.30.

This glibc work has existed out of tree for several years, and is
included in released MicroBlaze toolchains. The following patches have
been revised in this v2 in response to Joseph Myers helpfully thorough
review (http://sourceware.org/ml/libc-ports/2012-11/msg00139.html)
and have been tested under the cross-test-ssh wrapper and through ltp.

Joseph - I've left the linking with ld.so in the Makefile. I'm
not familiar enough with the core Make infrastructure to suggest
a method without risking breaking other ports (which currently
link as I have for MicroBlaze). If this core change is required
for MicroBlaze port to be added, I'd appreciate some pointers
as to where to look.

I did find that by making the following change to Makerules to
stop reporting unresolved symbols in object files helped, but
again, I'm not confident of the wider implications here;

diff --git a/Makerules b/Makerules
index d88bb62..4555edc 100644
--- a/Makerules
+++ b/Makerules
@@ -442,7 +442,7 @@ lib%.so: lib%_pic.a $(+preinit) $(+postinit) $(+interp)

 define build-shlib-helper
 $(LINK.o) -shared $(static-libgcc) -Wl,-O1 $(sysdep-LDFLAGS) \
-         $(if $($(@F)-no-z-defs)$(no-z-defs),,-Wl,-z,defs) $(rtld-LDFLAGS) \
+         $(rtld-LDFLAGS) \
          $(extra-B-$(@F:lib%.so=%).so) -B$(csu-objpfx) \
          $(extra-B-$(@F:lib%.so=%).so) $(load-map-file) \
          -Wl,-soname=lib$(libprefix)$(@F:lib%.so=%).so$($(@F)-version) \


The first patch is to elf/elf.h and is sent to both libc-alpha
and libc-ports mailing lists. The second adds the MicroBlaze
architecture to ports, and is sent to libc-ports mailing list.

Xilinx have a current FSF copyright assignment on file.

thanks,
David


David Holsgrove (2):
  Adding MicroBlaze support to elf/elf.h
  MicroBlaze Port

 elf/elf.h                                          |   32 +
 ports/ChangeLog.microblaze                         |  105 +
 ports/sysdeps/microblaze/Implies                   |    4 +
 ports/sysdeps/microblaze/Makefile                  |   26 +
 ports/sysdeps/microblaze/__longjmp.S               |   55 +
 ports/sysdeps/microblaze/_mcount.S                 |   91 +
 ports/sysdeps/microblaze/abort-instr.h             |    2 +
 ports/sysdeps/microblaze/asm-syntax.h              |   24 +
 ports/sysdeps/microblaze/backtrace.c               |  133 ++
 ports/sysdeps/microblaze/backtrace_linux.c         |   55 +
 ports/sysdeps/microblaze/bits/atomic.h             |  269 +++
 ports/sysdeps/microblaze/bits/endian.h             |   30 +
 ports/sysdeps/microblaze/bits/fenv.h               |   62 +
 ports/sysdeps/microblaze/bits/link.h               |   55 +
 ports/sysdeps/microblaze/bits/setjmp.h             |   37 +
 ports/sysdeps/microblaze/bsd-_setjmp.S             |   22 +
 ports/sysdeps/microblaze/bsd-setjmp.S              |   22 +
 ports/sysdeps/microblaze/configure                 |    4 +
 ports/sysdeps/microblaze/configure.in              |    8 +
 ports/sysdeps/microblaze/crti.S                    |   72 +
 ports/sysdeps/microblaze/crtn.S                    |   37 +
 ports/sysdeps/microblaze/dl-machine.h              |  302 +++
 ports/sysdeps/microblaze/dl-tls.h                  |   29 +
 ports/sysdeps/microblaze/dl-trampoline.S           |  109 +
 ports/sysdeps/microblaze/fegetround.c              |   24 +
 ports/sysdeps/microblaze/fesetround.c              |   25 +
 ports/sysdeps/microblaze/gccframe.h                |   21 +
 ports/sysdeps/microblaze/jmpbuf-unwind.h           |   46 +
 ports/sysdeps/microblaze/ldsodefs.h                |   41 +
 ports/sysdeps/microblaze/libc-tls.c                |   32 +
 ports/sysdeps/microblaze/libm-test-ulps            | 1728 ++++++++++++++++
 ports/sysdeps/microblaze/machine-gmon.h            |   30 +
 ports/sysdeps/microblaze/math_private.h            |    8 +
 ports/sysdeps/microblaze/memusage.h                |   21 +
 ports/sysdeps/microblaze/nptl/Makefile             |   21 +
 ports/sysdeps/microblaze/nptl/pthread_spin_lock.c  |   24 +
 ports/sysdeps/microblaze/nptl/pthreaddef.h         |   41 +
 ports/sysdeps/microblaze/nptl/tcb-offsets.sym      |   11 +
 ports/sysdeps/microblaze/nptl/tls.h                |  155 ++
 ports/sysdeps/microblaze/preconfigure              |    3 +
 ports/sysdeps/microblaze/setjmp.S                  |   75 +
 ports/sysdeps/microblaze/shlib-versions            |    1 +
 ports/sysdeps/microblaze/sotruss-lib.c             |   49 +
 ports/sysdeps/microblaze/stackinfo.h               |   34 +
 ports/sysdeps/microblaze/start.S                   |   67 +
 ports/sysdeps/microblaze/sysdep.h                  |   91 +
 ports/sysdeps/microblaze/tls-macros.h              |   44 +
 ports/sysdeps/microblaze/tst-audit.h               |   25 +
 ports/sysdeps/unix/sysv/linux/microblaze/Makefile  |    3 +
 ports/sysdeps/unix/sysv/linux/microblaze/Versions  |    5 +
 .../unix/sysv/linux/microblaze/____longjmp_chk.S   |   29 +
 .../unix/sysv/linux/microblaze/bits/fcntl.h        |   86 +
 .../sysdeps/unix/sysv/linux/microblaze/bits/mman.h |   42 +
 .../sysdeps/unix/sysv/linux/microblaze/bits/stat.h |  203 ++
 ports/sysdeps/unix/sysv/linux/microblaze/brk.c     |   44 +
 ports/sysdeps/unix/sysv/linux/microblaze/clone.S   |   70 +
 ports/sysdeps/unix/sysv/linux/microblaze/configure |    4 +
 .../unix/sysv/linux/microblaze/configure.in        |    4 +
 ports/sysdeps/unix/sysv/linux/microblaze/fcntl.c   |    1 +
 ports/sysdeps/unix/sysv/linux/microblaze/fxstat.c  |    1 +
 .../sysdeps/unix/sysv/linux/microblaze/fxstatat.c  |    1 +
 .../unix/sysv/linux/microblaze/getsysstats.c       |   35 +
 .../unix/sysv/linux/microblaze/kernel-features.h   |   30 +
 .../unix/sysv/linux/microblaze/kernel_stat.h       |   49 +
 ports/sysdeps/unix/sysv/linux/microblaze/lxstat.c  |    1 +
 ports/sysdeps/unix/sysv/linux/microblaze/mmap.S    |   50 +
 ports/sysdeps/unix/sysv/linux/microblaze/msgctl.c  |    1 +
 .../sysv/linux/microblaze/nptl/bits/pthreadtypes.h |  185 ++
 .../sysv/linux/microblaze/nptl/bits/semaphore.h    |   35 +
 .../unix/sysv/linux/microblaze/nptl/c++-types.data |   67 +
 .../unix/sysv/linux/microblaze/nptl/createthread.c |   23 +
 .../sysdeps/unix/sysv/linux/microblaze/nptl/fork.c |   29 +
 .../unix/sysv/linux/microblaze/nptl/ld.abilist     |   12 +
 .../linux/microblaze/nptl/libBrokenLocale.abilist  |    3 +
 .../unix/sysv/linux/microblaze/nptl/libanl.abilist |    6 +
 .../unix/sysv/linux/microblaze/nptl/libc.abilist   | 2082 ++++++++++++++++++++
 .../sysv/linux/microblaze/nptl/libcrypt.abilist    |    9 +
 .../unix/sysv/linux/microblaze/nptl/libdl.abilist  |   11 +
 .../unix/sysv/linux/microblaze/nptl/libm.abilist   |  368 ++++
 .../unix/sysv/linux/microblaze/nptl/libnsl.abilist |  123 ++
 .../sysv/linux/microblaze/nptl/libpthread.abilist  |  224 +++
 .../sysv/linux/microblaze/nptl/libresolv.abilist   |   93 +
 .../unix/sysv/linux/microblaze/nptl/librt.abilist  |   42 +
 .../linux/microblaze/nptl/libthread_db.abilist     |   42 +
 .../sysv/linux/microblaze/nptl/libutil.abilist     |    8 +
 .../unix/sysv/linux/microblaze/nptl/localplt.data  |   11 +
 .../unix/sysv/linux/microblaze/nptl/lowlevellock.c |  132 ++
 .../unix/sysv/linux/microblaze/nptl/lowlevellock.h |  325 +++
 .../unix/sysv/linux/microblaze/nptl/pt-vfork.S     |   21 +
 .../unix/sysv/linux/microblaze/nptl/pthread_once.c |   90 +
 .../unix/sysv/linux/microblaze/nptl/vfork.S        |   46 +
 .../unix/sysv/linux/microblaze/profil-counter.h    |   20 +
 ports/sysdeps/unix/sysv/linux/microblaze/semctl.c  |    1 +
 .../sysdeps/unix/sysv/linux/microblaze/setgroups.c |    1 +
 ports/sysdeps/unix/sysv/linux/microblaze/shmctl.c  |    1 +
 .../unix/sysv/linux/microblaze/sigcontextinfo.h    |   25 +
 ports/sysdeps/unix/sysv/linux/microblaze/socket.S  |  126 ++
 .../unix/sysv/linux/microblaze/sys/procfs.h        |  123 ++
 .../sysdeps/unix/sysv/linux/microblaze/sys/user.h  |   77 +
 ports/sysdeps/unix/sysv/linux/microblaze/syscall.S |   37 +
 .../unix/sysv/linux/microblaze/syscalls.list       |   18 +
 ports/sysdeps/unix/sysv/linux/microblaze/sysdep.S  |   39 +
 ports/sysdeps/unix/sysv/linux/microblaze/sysdep.h  |  306 +++
 ports/sysdeps/unix/sysv/linux/microblaze/xstat.c   |    1 +
 104 files changed, 9623 insertions(+), 0 deletions(-)
 create mode 100644 ports/ChangeLog.microblaze
 create mode 100644 ports/sysdeps/microblaze/Implies
 create mode 100644 ports/sysdeps/microblaze/Makefile
 create mode 100644 ports/sysdeps/microblaze/__longjmp.S
 create mode 100644 ports/sysdeps/microblaze/_mcount.S
 create mode 100644 ports/sysdeps/microblaze/abort-instr.h
 create mode 100644 ports/sysdeps/microblaze/asm-syntax.h
 create mode 100644 ports/sysdeps/microblaze/backtrace.c
 create mode 100644 ports/sysdeps/microblaze/backtrace_linux.c
 create mode 100755 ports/sysdeps/microblaze/bits/atomic.h
 create mode 100644 ports/sysdeps/microblaze/bits/endian.h
 create mode 100644 ports/sysdeps/microblaze/bits/fenv.h
 create mode 100644 ports/sysdeps/microblaze/bits/link.h
 create mode 100644 ports/sysdeps/microblaze/bits/setjmp.h
 create mode 100644 ports/sysdeps/microblaze/bsd-_setjmp.S
 create mode 100644 ports/sysdeps/microblaze/bsd-setjmp.S
 create mode 100644 ports/sysdeps/microblaze/configure
 create mode 100644 ports/sysdeps/microblaze/configure.in
 create mode 100644 ports/sysdeps/microblaze/crti.S
 create mode 100644 ports/sysdeps/microblaze/crtn.S
 create mode 100644 ports/sysdeps/microblaze/dl-machine.h
 create mode 100644 ports/sysdeps/microblaze/dl-tls.h
 create mode 100644 ports/sysdeps/microblaze/dl-trampoline.S
 create mode 100644 ports/sysdeps/microblaze/fegetround.c
 create mode 100644 ports/sysdeps/microblaze/fesetround.c
 create mode 100644 ports/sysdeps/microblaze/gccframe.h
 create mode 100644 ports/sysdeps/microblaze/jmpbuf-unwind.h
 create mode 100644 ports/sysdeps/microblaze/ldsodefs.h
 create mode 100644 ports/sysdeps/microblaze/libc-tls.c
 create mode 100644 ports/sysdeps/microblaze/libm-test-ulps
 create mode 100644 ports/sysdeps/microblaze/machine-gmon.h
 create mode 100644 ports/sysdeps/microblaze/math_private.h
 create mode 100644 ports/sysdeps/microblaze/memusage.h
 create mode 100644 ports/sysdeps/microblaze/nptl/Makefile
 create mode 100644 ports/sysdeps/microblaze/nptl/pthread_spin_lock.c
 create mode 100644 ports/sysdeps/microblaze/nptl/pthreaddef.h
 create mode 100644 ports/sysdeps/microblaze/nptl/tcb-offsets.sym
 create mode 100644 ports/sysdeps/microblaze/nptl/tls.h
 create mode 100644 ports/sysdeps/microblaze/preconfigure
 create mode 100644 ports/sysdeps/microblaze/setjmp.S
 create mode 100644 ports/sysdeps/microblaze/shlib-versions
 create mode 100644 ports/sysdeps/microblaze/sotruss-lib.c
 create mode 100644 ports/sysdeps/microblaze/stackinfo.h
 create mode 100644 ports/sysdeps/microblaze/start.S
 create mode 100644 ports/sysdeps/microblaze/sysdep.h
 create mode 100644 ports/sysdeps/microblaze/tls-macros.h
 create mode 100644 ports/sysdeps/microblaze/tst-audit.h
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/Makefile
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/Versions
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/____longjmp_chk.S
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/bits/fcntl.h
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/bits/mman.h
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/bits/stat.h
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/brk.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/clone.S
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/configure
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/configure.in
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/fcntl.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/fxstat.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/fxstatat.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/getsysstats.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/kernel-features.h
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/kernel_stat.h
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/lxstat.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/mmap.S
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/msgctl.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/bits/pthreadtypes.h
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/bits/semaphore.h
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/c++-types.data
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/createthread.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/fork.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/ld.abilist
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/libBrokenLocale.abilist
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/libanl.abilist
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/libc.abilist
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/libcrypt.abilist
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/libdl.abilist
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/libm.abilist
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/libnsl.abilist
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/libpthread.abilist
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/libresolv.abilist
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/librt.abilist
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/libthread_db.abilist
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/libutil.abilist
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/localplt.data
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/lowlevellock.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/lowlevellock.h
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/pt-vfork.S
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/pthread_once.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/vfork.S
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/profil-counter.h
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/semctl.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/setgroups.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/shmctl.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/sigcontextinfo.h
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/socket.S
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/sys/procfs.h
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/sys/user.h
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/syscall.S
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/syscalls.list
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/sysdep.S
 create mode 100755 ports/sysdeps/unix/sysv/linux/microblaze/sysdep.h
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/xstat.c


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v2 0/2] Add MicroBlaze Port
  2013-03-30 14:28 [PATCH v2 0/2] Add MicroBlaze Port David Holsgrove
@ 2013-04-02 23:19 ` Joseph S. Myers
  2013-04-08 22:48 ` Roland McGrath
  1 sibling, 0 replies; 4+ messages in thread
From: Joseph S. Myers @ 2013-04-02 23:19 UTC (permalink / raw)
  To: David Holsgrove
  Cc: libc-ports, john.williams, edgar.iglesias, vinod.kathail,
	vidhumouli.hunsigida, nagaraju.mekala, tom.shui

On Sun, 31 Mar 2013, David Holsgrove wrote:

> Joseph - I've left the linking with ld.so in the Makefile. I'm
> not familiar enough with the core Make infrastructure to suggest
> a method without risking breaking other ports (which currently
> link as I have for MicroBlaze). If this core change is required
> for MicroBlaze port to be added, I'd appreciate some pointers
> as to where to look.

You should raise such questions on libc-alpha in a thread with its own 
subject, giving a self-contained explanation of the issue and why it's a 
problem for MicroBlaze.

-- 
Joseph S. Myers
joseph@codesourcery.com

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v2 0/2] Add MicroBlaze Port
  2013-03-30 14:28 [PATCH v2 0/2] Add MicroBlaze Port David Holsgrove
  2013-04-02 23:19 ` Joseph S. Myers
@ 2013-04-08 22:48 ` Roland McGrath
  2013-04-09  8:12   ` David Holsgrove
  1 sibling, 1 reply; 4+ messages in thread
From: Roland McGrath @ 2013-04-08 22:48 UTC (permalink / raw)
  To: David Holsgrove
  Cc: libc-ports, joseph, john.williams, edgar.iglesias, vinod.kathail,
	vidhumouli.hunsigida, nagaraju.mekala, tom.shui

> I did find that by making the following change to Makerules to
> stop reporting unresolved symbols in object files helped, but
> again, I'm not confident of the wider implications here;

This is a very bad thing to do for multiple reasons.
We'll have to discuss alternatives that work with -z defs.


Thanks,
Roland

^ permalink raw reply	[flat|nested] 4+ messages in thread

* RE: [PATCH v2 0/2] Add MicroBlaze Port
  2013-04-08 22:48 ` Roland McGrath
@ 2013-04-09  8:12   ` David Holsgrove
  0 siblings, 0 replies; 4+ messages in thread
From: David Holsgrove @ 2013-04-09  8:12 UTC (permalink / raw)
  To: Roland McGrath
  Cc: libc-ports, joseph, John Williams, Edgar Iglesias, Vinod Kathail,
	Vidhumouli Hunsigida, Nagaraju Mekala, Tom Shui

> -----Original Message-----
> From: Roland McGrath [mailto:roland@hack.frob.com]
> Sent: Tuesday, 9 April 2013 8:49 am
> To: David Holsgrove
> Cc: libc-ports@sourceware.org; joseph@codesourcery.com; John Williams; Edgar
> Iglesias; Vinod Kathail; Vidhumouli Hunsigida; Nagaraju Mekala; Tom Shui
> Subject: Re: [PATCH v2 0/2] Add MicroBlaze Port
> 
> > I did find that by making the following change to Makerules to
> > stop reporting unresolved symbols in object files helped, but
> > again, I'm not confident of the wider implications here;
> 
> This is a very bad thing to do for multiple reasons.
> We'll have to discuss alternatives that work with -z defs.
> 

Thanks Roland, I understand your concerns posted on the separate libc-alpha
thread (http://sourceware.org/ml/libc-alpha/2013-04/msg00227.html) and agree
that a rushed change to core Make is not the answer here.

I'm eager to get the initial MicroBlaze port included in libc-ports, and then
follow other architectures when a solution is developed.

I see that Joseph is on leave until the 16th April, but in the meantime I'd like
to post my updated patch and reply to his review comments in the original post.

thanks,
David

> 
> Thanks,
> Roland




^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2013-04-09  8:12 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-03-30 14:28 [PATCH v2 0/2] Add MicroBlaze Port David Holsgrove
2013-04-02 23:19 ` Joseph S. Myers
2013-04-08 22:48 ` Roland McGrath
2013-04-09  8:12   ` David Holsgrove

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).