<feed xmlns='http://www.w3.org/2005/Atom'>
<title>glibc/ChangeLog, branch vdso</title>
<subtitle>Fork of glibc for development</subtitle>
<id>https://git.zx2c4.com/glibc/atom/ChangeLog?h=vdso</id>
<link rel='self' href='https://git.zx2c4.com/glibc/atom/ChangeLog?h=vdso'/>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/glibc/'/>
<updated>2019-10-11T20:42:32Z</updated>
<entry>
<title>Move ChangeLog to ChangeLog.old/ChangeLog.19</title>
<updated>2019-10-11T20:42:32Z</updated>
<author>
<name>Florian Weimer</name>
<email>fweimer@redhat.com</email>
</author>
<published>2019-10-11T20:42:32Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/glibc/commit/?id=2e4e75727eb05eef4c10470d865bd42962d5fae7'/>
<id>urn:sha1:2e4e75727eb05eef4c10470d865bd42962d5fae7</id>
<content type='text'>
We no longer maintain a manually-written ChangeLog file:

  &lt;https://sourceware.org/ml/libc-alpha/2019-09/msg00333.html&gt;
  &lt;https://sourceware.org/ml/libc-alpha/2019-10/msg00131.html&gt;

Instead the release manager is expected to generate a ChangeLog-like
file using scripts/gitlog_to_changelog.py.  For further details,
see commit f2144b7874b23be7c7eb184ec601633ec6fa8fac ("Script to
generate ChangeLog-like output from git log").

Reviewed-by: Carlos O'Donell &lt;carlos@redhat.com&gt;
</content>
</entry>
<entry>
<title>manual: Remove warning in the documentation of the abort function</title>
<updated>2019-10-11T18:15:24Z</updated>
<author>
<name>Florian Weimer</name>
<email>fweimer@redhat.com</email>
</author>
<published>2019-10-11T18:15:24Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/glibc/commit/?id=7f0e1933f08d52b22b02fdcd075382506f7b2e9c'/>
<id>urn:sha1:7f0e1933f08d52b22b02fdcd075382506f7b2e9c</id>
<content type='text'>
The warning is confusing to those who do not understand the context,
and the warning is easy to misunderstand:

A reader needs to know that it was written by someone who is generally
skeptical of government influence and control, otherwise it reads as
an affirmation of the U.S. government's role as the ultimate editor of
the manual.  This is precisely the opposite of what the warning
intends to convey.  (Reportedly, it criticizes that several
U.S. administrations have tried to restrict the medical advice that
U.S.-funded health care workers can provide abroad, considering that
censorship.)

The warning is also misleading on a technical level.  A reader who
makes the connection to pregnancy termination will get the wrong
impression that calling the abort function will terminate subprocesses
of the current process, but this is not what generally happens.

Finally, for both GNU and the FSF, it is inappropriate to use female
reproductive health as mere joke material, since these organizations
do not concern themselves with such issues otherwise, and the warning
is purportedly about something else entirely.

This reinstates commit 340d9652b9d0e1d4136588f18b726662d195777c
("manual/startup.texi (Aborting a Program): Remove inappropriate
joke."), effectively reverting the revert in commit
ffa81c22a3ac0fb75ad9bf2b1c3cdbf9eafa0bc9 ("Revert:").

Reviewed-by: Adhemerval Zanella  &lt;adhemerval.zanella@linaro.org&gt;
Reviewed-by: Carlos O'Donell &lt;carlos@redhat.com&gt;
</content>
</entry>
<entry>
<title>sysvipc: Set ipc_perm mode as mode_t (BZ#18231)</title>
<updated>2019-10-10T20:33:27Z</updated>
<author>
<name>Adhemerval Zanella</name>
<email>adhemerval.zanella@linaro.org</email>
</author>
<published>2019-10-10T18:13:11Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/glibc/commit/?id=2f959dfe849e0646e27403f2e4091536496ac0f0'/>
<id>urn:sha1:2f959dfe849e0646e27403f2e4091536496ac0f0</id>
<content type='text'>
This patch sets the mode field in ipc_perm as mode_t for all architectures,
as POSIX specification [1].  The changes required are as follow:

  1. It moves the ipc_perm definition out of ipc.h to its own header
     ipc_perm.h.  It also allows consolidate the IPC_* definition on
     only one header.

  2. The generic implementation follow the kernel ipc64_perm size so the
     syscall can be made directly without temporary buffer copy.  However,
     since glibc defines the MODE field as mode_t, it omits the __PAD1 field
     (since glibc does not export mode_t as 16-bit for any architecture).

     It is a two-fold improvement:

     2.1. New implementation which follow Linux UAPI will not need to
	  provide an arch-specific ipc-perm.h header neither wrongly
          use the wrong 16-bit definition from previous default ipc.h
	  (as csky did).

     2.1. It allows consolidate ipc_perm definition for architectures that
          already provide mode_t as 32-bit.

  3. All kernel ABIs for the supported architectures already provides the
     expected padding for mode type extension to 32-bit.  However, some
     architectures the padding has the wrong placement, so it requires
     the ipc control routines (msgctl, semctl, and shmctl) to adjust the
     mode field accordingly.  Currently they are armeb, microblaze, m68k,
     s390, and sheb.

     A new assume is added, __ASSUME_SYSVIPC_BROKEN_MODE_T, which the
     required ABIs define.

  4. For the ABIs that define __ASSUME_SYSVIPC_BROKEN_MODE_T, it also
     require compat symbols that do not adjust the mode field.

Checked on arm-linux-gnueabihf, aarch64-linux-gnu, powerpc64le-linux-gnu,
and x86_64-linux-gnu. I also checked the sysvipc tests on hppa-linux-gnu,
sh4-linux-gnu, s390x-linux-gnu, and s390-linux-gnu.

I also did a sanity test against armeb qemu usermode for the sysvipc
tests.

	[BZ #18231]
	* sysdeps/unix/sysv/linux/Makefile (sysdep_headers): Add
	bits/ipc-perm.h.
	* sysdeps/unix/sysv/linux/aarch64/bits/ipc.h: Remove file.
	* sysdeps/unix/sysv/linux/alpha/bits/ipc.h: Likewise.
	* sysdeps/unix/sysv/linux/hppa/bits/ipc.h: Likewise.
	* sysdeps/unix/sysv/linux/ia64/bits/ipc.h: Likewise.
	* sysdeps/unix/sysv/linux/mips/bits/ipc.h: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/bits/ipc.h: Likewise.
	* sysdeps/unix/sysv/linux/s390/bits/ipc.h: Likewise.
	* sysdeps/unix/sysv/linux/sparc/bits/ipc.h: Likewise.
	* sysdeps/unix/sysv/linux/arm/kernel-features.h
	[__BYTE_ORDER == __BIG_ENDIAN] (__ASSUME_SYSVIPC_BROKEN_MODE_T):
	Define.
	* sysdeps/sysv/linux/microblaze/kernel-features.h: Likewise.
	* sysdeps/unix/sysv/linux/s390/kernel-features.h
	[!__s390x__] (__ASSUME_SYSVIPC_BROKEN_MODE_T): Define.
	* sysdeps/unix/sysv/linux/sh/kernel-features.h
	(__ASSUME_SYSVIPC_BROKEN_MODE_T): Define.
	* sysdeps/unix/sysv/linux/m68k/kernel-features.h: Likewise.
	* sysdeps/unix/sysv/linux/bits/ipc-perm.h: New file.
	* sysdeps/unix/sysv/linux/powerpc/bits/ipc-perm.h: Likewise.
	* sysdeps/unix/sysv/linux/sparc/bits/ipc-perm.h: Likewise.
	* sysdeps/unix/sysv/linux/bits/ipc.h (ipc_perm): Move to
	bits/ipc-perm.h.
	* sysdeps/unix/sysv/linux/hppa/bits/ipc-perm.h: New file.
	* sysdeps/unix/sysv/linux/kernel-features.h: Add comment about
	__ASSUME_SYSVIPC_BROKEN_MODE_T semantic.
	* sysdeps/unix/sysv/linux/msgctl.c (DEFAULT_VERSION): Define as
	2.31 if __ASSUME_SYSVIPC_BROKEN_MODE_T is defined.
	(msgctl_syscall, __msgctl_mode16): New symbol.
	(__new_msgctl): Add bits for __ASSUME_SYSVIPC_BROKEN_MODE_T.
	* sysdeps/unix/sysv/linux/semctl.c: Likewise.
	* sysdeps/unix/sysv/linux/shmctl.c: Likewise.
	* sysdeps/unix/sysv/linux/arm/be/libc.abilist (GLIBC_2.31): Add
	msgctl, semctl, and shmctl.
	* sysdeps/sysv/linux/microblaze/be/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist: Likewise.
	* sysdeps/unix/sysv/linux/sh/be/libc.abilist: Likewise.
	* conform/data/sys/ipc.h-data: Only xfail {struct ipc_perm} mode_t
	mode for Hurd.
	* sysdeps/unix/sysv/linux/m68k/Versions (libc) [GLIBC_2.31]: Add
	msgctl, semctl, and shmctl.
	* sysdeps/unix/sysv/linux/arm/be/Versions: New file.
	* sysdeps/unix/sysv/linux/microblaze/be/Versions: Likewise.
	* sysdeps/unix/sysv/linux/sh/be/Versions: Likewise.

[1] http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_ipc.h.html
</content>
</entry>
<entry>
<title>Simplify note processing</title>
<updated>2019-10-10T11:01:38Z</updated>
<author>
<name>Andreas Schwab</name>
<email>schwab@suse.de</email>
</author>
<published>2019-10-10T08:45:31Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/glibc/commit/?id=8a3ca0fdd33629854a73ffd9251aa9d77e4766e4'/>
<id>urn:sha1:8a3ca0fdd33629854a73ffd9251aa9d77e4766e4</id>
<content type='text'>
This removes dead code during note processing.
</content>
</entry>
<entry>
<title>syscall-names.list: fix typos in comment</title>
<updated>2019-10-10T00:38:28Z</updated>
<author>
<name>Dmitry V. Levin</name>
<email>ldv@altlinux.org</email>
</author>
<published>2019-10-10T00:38:28Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/glibc/commit/?id=e027ddeff60932b6a17f7f7c8b5c0a044b85722d'/>
<id>urn:sha1:e027ddeff60932b6a17f7f7c8b5c0a044b85722d</id>
<content type='text'>
* sysdeps/unix/sysv/linux/syscall-names.list: Fix typos in comment,
reformat the affected paragraph.
</content>
</entry>
<entry>
<title>y2038: linux: Provide __clock_settime64 implementation</title>
<updated>2019-10-09T22:17:46Z</updated>
<author>
<name>Lukasz Majewski</name>
<email>lukma@denx.de</email>
</author>
<published>2019-09-24T12:22:42Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/glibc/commit/?id=7ce198e1235215df15545a704d6bded4ea728da8'/>
<id>urn:sha1:7ce198e1235215df15545a704d6bded4ea728da8</id>
<content type='text'>
This patch provides new __clock_settime64 explicit 64 bit function for
setting the time. Moreover, a 32 bit version - __clock_settime - has been
refactored to internally use __clock_settime64.

The __clock_settime is now supposed to be used on systems still supporting
32 bit time (__TIMESIZE != 64) - hence the necessary conversion to 64 bit
struct timespec.

The new clock_settime64 syscall available from Linux 5.1+ has been used,
when applicable.

In this patch the internal padding (tv_pad) of struct __timespec64 is
left untouched (on systems with __WORDSIZE == 32) as Linux kernel ignores
upper 32 bits of tv_nsec.

Build tests:
- The code has been tested on x86_64/x86 (native compilation):
make PARALLELMFLAGS="-j8" &amp;&amp; make xcheck PARALLELMFLAGS="-j8"

- The glibc has been build tested (make PARALLELMFLAGS="-j8") for
x86 (i386), x86_64-x32, and armv7

Run-time tests:
- Run specific tests on ARM/x86 32bit systems (qemu):
  https://github.com/lmajewski/meta-y2038 and run tests:
  https://github.com/lmajewski/y2038-tests/commits/master

- Use of cross-test-ssh.sh for ARM (armv7):
  make PARALLELMFLAGS="-j8" test-wrapper='./cross-test-ssh.sh root@192.168.7.2' xcheck

Linux kernel, headers and minimal kernel version for glibc build test
matrix:
- Linux v5.1 (with clock_settime64) and glibc build with v5.1 as minimal
  kernel version (--enable-kernel="5.1.0")
  The __ASSUME_TIME64_SYSCALLS flag defined.

- Linux v5.1 and default minimal kernel version
  The __ASSUME_TIME64_SYSCALLS not defined, but kernel supports
  __clock_settime64 syscalls.

- Linux v4.19 (no clock_settime64 support) with default minimal kernel
  version for contemporary glibc

  This kernel doesn't support __clock_settime64 syscalls, so the fallback
  to clock_settime is tested.

The above tests were performed with Y2038 redirection applied as well as
without (so the __TIMESIZE != 64 execution path is checked as well).

No regressions were observed.

* include/time.h (__clock_settime64):
  Add __clock_settime alias according to __TIMESIZE define
* sysdeps/unix/sysv/linux/clock_settime.c (__clock_settime):
  Refactor this function to be used only on 32 bit machines as a wrapper
  on __clock_settime64.
* sysdeps/unix/sysv/linux/clock_settime.c (__clock_settime64): Add
* sysdeps/unix/sysv/linux/clock_settime.c (__clock_settime64):
  Use clock_settime64 kernel syscall (available from 5.1+ Linux)
</content>
</entry>
<entry>
<title>posix: Use posix_spawn for wordexp</title>
<updated>2019-10-09T20:48:41Z</updated>
<author>
<name>Adhemerval Zanella</name>
<email>adhemerval.zanella@linaro.org</email>
</author>
<published>2019-04-25T17:54:03Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/glibc/commit/?id=db8cbc6a7a435209dd04706cf43c3785baf2e326'/>
<id>urn:sha1:db8cbc6a7a435209dd04706cf43c3785baf2e326</id>
<content type='text'>
This patch replaces the fork+exec by posix_spawn on wordexp, which
allows a better scability on Linux and simplifies the thread
cancellation handling.

The only change which can not be implemented with posix_spawn the
/dev/null check to certify it is indeed the expected device.  I am
not sure how effetive this check is since /dev/null tampering means
something very wrong with the system and this is the least of the
issues.  My view is the tests is really out of the place and the
hardening provided is minimum.

If the idea is still to provide such check, I think a possibilty
would be to open /dev/null, check it, add a dup2 file action, and
close the file descriptor.

Checked on powerpc64le-linux-gnu and x86_64-linux-gnu.

	* include/spawn.h (__posix_spawn_file_actions_addopen): New
	prototype.
	* posix/spawn_faction_addopen.c (posix_spawn_file_actions_addopen):
	Add internal alias.
	* posix/wordexp.c (create_environment, free_environment): New
	functions.
	(exec_comm_child, exec_comm): Use posix_spawn instead of fork+exec.
	* posix/wordexp-test.c: Use libsupport.
</content>
</entry>
<entry>
<title>mips: Do not malloc on getdents64 fallback</title>
<updated>2019-10-09T20:34:38Z</updated>
<author>
<name>Adhemerval Zanella</name>
<email>adhemerval.zanella@linaro.org</email>
</author>
<published>2019-07-24T16:48:12Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/glibc/commit/?id=edcda4c08ac033f40a91cb4def2fd0fa35a760ca'/>
<id>urn:sha1:edcda4c08ac033f40a91cb4def2fd0fa35a760ca</id>
<content type='text'>
This patch changes how the fallback getdents64 implementation calls
non-LFS getdents by replacing the scratch_buffer with static buffer
plus a loop on getdents calls.  This avoids the potential malloc
call on scratch_buffer_set_array_size for large input buffer size
at the cost of more getdents syscalls.

It also adds a small optimization for older kernels, where the first
ENOSYS failure for getdents64 disable subsequent calls.

Check the dirent tests on a mips64-linux-gnu with getdents64 code
disabled.

	* sysdeps/unix/sysv/linux/mips/mips64/getdents64.c (__getdents64):
	Add small optimization for older kernel to avoid issuing
	__NR_getdents64 on each call and replace scratch_buffer usage with
	a static allocated buffer.

Reviewed-by: Florian Weimer &lt;fweimer@redhat.com&gt;
</content>
</entry>
<entry>
<title>sparc: Assume GOTDATA support in the toolchain</title>
<updated>2019-10-09T17:15:33Z</updated>
<author>
<name>Florian Weimer</name>
<email>fweimer@redhat.com</email>
</author>
<published>2019-10-09T17:15:33Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/glibc/commit/?id=00fe3c6657161a96890067666760ea8cf22b791c'/>
<id>urn:sha1:00fe3c6657161a96890067666760ea8cf22b791c</id>
<content type='text'>
HAVE_GCC_GOTDATA has apparently never been used.

Reviewed-by: Adhemerval Zanella &lt;adhemerval.zanella@linaro.org&gt;
</content>
</entry>
<entry>
<title>&lt;dirent.h&gt;: Remove wrong comment about getdents64 declaration</title>
<updated>2019-10-09T09:31:03Z</updated>
<author>
<name>Petr Vorel</name>
<email>pvorel@suse.cz</email>
</author>
<published>2019-10-09T09:31:03Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/glibc/commit/?id=112a630b086541d29c20e3bb024f4270dadd68c6'/>
<id>urn:sha1:112a630b086541d29c20e3bb024f4270dadd68c6</id>
<content type='text'>
Originally the public interface for getdents64 was declared in
&lt;unistd.h&gt; in 51ea67d548. Later, b8b3d5a14e moved it to &lt;dirent.h&gt;.

Fixes: b8b3d5a14e ("Linux: Move getdents64 to &lt;dirent.h&gt;")
</content>
</entry>
</feed>
