+static char *
+elf_s390_write_core_note (bfd *abfd, char *buf, int *bufsiz,
+ int note_type, ...)
+{
+ va_list ap;
+
+ switch (note_type)
+ {
+ default:
+ return NULL;
+
+ case NT_PRPSINFO:
+ {
+ char data[136] = { 0 };
+ const char *fname, *psargs;
+
+ va_start (ap, note_type);
+ fname = va_arg (ap, const char *);
+ psargs = va_arg (ap, const char *);
+ va_end (ap);
+
+ strncpy (data + 40, fname, 16);
+ strncpy (data + 56, psargs, 80);
+ return elfcore_write_note (abfd, buf, bufsiz, "CORE", note_type,
+ &data, sizeof (data));
+ }
+
+ case NT_PRSTATUS:
+ {
+ char data[336] = { 0 };
+ long pid;
+ int cursig;
+ const void *gregs;
+
+ va_start (ap, note_type);
+ pid = va_arg (ap, long);
+ cursig = va_arg (ap, int);
+ gregs = va_arg (ap, const void *);
+ va_end (ap);
+
+ bfd_put_16 (abfd, cursig, data + 12);
+ bfd_put_32 (abfd, pid, data + 32);
+ memcpy (data + 112, gregs, 216);
+ return elfcore_write_note (abfd, buf, bufsiz, "CORE", note_type,
+ &data, sizeof (data));
+ }
+ }
+ /* NOTREACHED */
+}
+\f