• R/O
  • HTTP
  • SSH
  • HTTPS

List of commits

Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

RSS
Rev. Time Author
e803847 2020-09-02 16:45:17 Waldemar Brodkorb

Revert "Fix static linking with GCC-10"

This reverts commit 5b58a1ebd89a4f05778441814e81817c82193fa3.

This breaks all static builds earlier to gcc 10 :(
Bad testing on my side.

7b504fe 2020-08-28 17:58:16 Waldemar Brodkorb

bump for release 1.0.35

f3fa882 2020-08-25 23:23:54 Yann Sionneau

ldso: Fix pointer cast warning

Fixes the following compilation warning for 64-bit arch with TLS support:

CC ldso/libdl/libdl.oS
ldso/libdl/libdl.c: In function 'do_dlsym':
ldso/libdl/libdl.c:739:59: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
ret = _dl_tls_symaddr ((struct link_map *)sym_ref.tpnt, (Elf32_Addr)ret);
^

8bc41f1 2020-08-19 20:48:46 Petr Vorel

Add {name, open}_to_handle_at() implementation

copied from musl 1.2.1.

Signed-off-by: Petr Vorel <petr.vorel@gmail.com>

8b1f6b2 2020-08-17 22:46:44 Waldemar Brodkorb

riscv64: add __riscv_flush_icache

Always use the systemcall as uClibc-ng has no vdso support.
Tested with libffi and python in qemu-system-riscv64.

00972c0 2020-08-16 02:11:46 Waldemar Brodkorb

sys/random.h include stddef.h

Reported-By: akater <nuclearspace@gmail.com>

5b58a1e 2020-08-11 20:39:05 Lance Fredrickson

Fix static linking with GCC-10

Starting with GCC-10 multiple definitions of global variables by will be
rejected.
https://gcc.gnu.org/gcc-10/porting_to.html

This fixes multiple definitions of _dl_pagesize and _dl_tls_static_size
while attempting static linking.
Of course this only occurs when compiling something that requires these
symbols.
First patch submission so hopefully all done correctly.

thanks,
Lance Fredrickson

From e0686f7c03ce8e51ccffefeb6365e50311e6dd10 Mon Sep 17 00:00:00 2001
From: lancethepants <lancethepants@gmail.com>
Date: Wed, 15 Jul 2020 13:09:26 -0600
Subject: [PATCH] Starting with GCC-10 multiple definitions of global variables
by will be rejected. This fixes multiple definitions of _dl_pagesize and
_dl_tls_static_size while attempting static linking.

fc48f4f 2020-08-11 20:35:02 Max Filippov

xtensa: add exclusive access support

Add XCHAL definitions for S32C1I and EXCLUSIVE options to
xtensa-config.h, include it in places that implement atomic operations
and add implementations with exclusive access option opcodes.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>

c2e5177 2020-08-11 20:35:02 Max Filippov

xtensa: relax memory constraint in atomic assembly

Replace "a" constraints with "+m" to avoid forcing atomic variable
address into a register and let the compiler use non-zero offset in
load/store opcodes.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>

9327731 2020-07-02 15:25:47 Ed Wildgoose

Rename __unused struct members to include a namespace

Rename various spare fields in structs to include a namespace
This should avoid accidental clashes with uses of the __unused symbol
in upstream projects. eg currently it causes a compile error in dhcpcd 8.x
due to their re-use of the __unused symbol as a macro

This follows the style of glibc which does something equivalent

a852c99 2020-06-19 15:41:19 Clement Leger

inet: add sockatmark implementation

Import musl C sockatmark implementation into uClibc-ng.

Signed-off-by: Clement Leger <cleger@kalray.eu>
Acked-by: Yann Sionneau <ysionneau@kalray.eu>

85ec6b4 2020-05-17 19:07:55 Romain Naour

mips: Do not include hi and lo in __SYSCALL_CLOBBERS for R6

From [1]
"GCC 10 (PR 91233) won't silently allow registers that are not architecturally
available to be present in the clobber list anymore, resulting in build failure
for mips*r6 targets in form of:
...
.../sysdep.h:146:2: error: the register ‘lo’ cannot be clobbered in ‘asm’ for the current target
146 | __asm__ volatile ( \
| ^~~~~~~

This is because base R6 ISA doesn't define hi and lo registers w/o DSP extension.
This patch provides the alternative definitions of __SYSCALL_CLOBBERS for r6
targets that won't include those registers."

[1] https://sourceware.org/git/?p=glibc.git;a=commit;h=020b2a97bb15f807c0482f0faee2184ed05bcad8

Signed-off-by: Romain Naour <romain.naour@gmail.com>
Cc: Waldemar Brodkorb <wbx@openadk.org>

40a337c 2020-05-06 16:20:38 Waldemar Brodkorb

prepare for release 1.0.34

25751e7 2020-04-27 19:30:45 Marcel Patzlaff

Rules.mak: Fix check_as for recent binutils versions

As described in https://bugs.busybox.net/show_bug.cgi?id=12801 the
check for '-Wa,--noexecstack' is not working since binutils 2.31.x.

This fix adapts the approach already taken with check_ld and uses a
temporary file. Further, check_gcc is also adapted to avoid future
problems.

Signed-off-by: Marcel Patzlaff <m.patzlaff@pilz.de>

d987468 2020-04-02 05:56:40 Waldemar Brodkorb

statx: make include conditional, fixes non-csky arch buildroot builds

db4b12a 2020-04-02 04:43:45 Yann Sionneau

or1k: fix some TLS issues

Before this commit tst-tls-at-ctor test would segfault.
After it passes.

testsuite run before: https://pastebin.com/504JgQXa
testsuite run after: https://pastebin.com/d2aNciVt

Stafford Horne already fixed it in glibc:
* https://github.com/openrisc/or1k-glibc/blob/bcd87396ebe78228645c0731b06c934dfd88855a/sysdeps/or1k/dl-machine.h#L298
* https://github.com/openrisc/or1k-glibc/blob/bcd87396ebe78228645c0731b06c934dfd88855a/sysdeps/or1k/dl-machine.h#L99

cb6a910 2020-04-02 04:43:45 Waldemar Brodkorb

statx: make include conditional, fixes non-csky arch buildroot builds

440e6c1 2020-04-02 04:43:28 Eyal Itkin

Resolve bug when using unusual MALLOC_ALIGNMENT

Safe-Linking alignment checks should be done on the user's buffer and not
the mchunkptr. The new check adds support for cases in which:
MALLOC_ALIGNMENT != 2*(sizeof(size_t))

The default case for both 32 bits and 64 bits was already supported, and
this patch adds support for the described irregular case.

6f7c688 2020-02-19 18:18:03 Waldemar Brodkorb

malloc: add missing header for some arch (alpha)

4275f78 2020-02-16 20:43:11 Waldemar Brodkorb

bump to 1.0.33 for release

886878b 2020-02-16 20:32:21 Eyal Itkin

Add Safe-Linking to fastbins

Safe-Linking is a security mechanism that protects single-linked
lists (such as the fastbins) from being tampered by attackers. The
mechanism makes use of randomness from ASLR (mmap_base), and when
combined with chunk alignment integrity checks, it protects the
pointers from being hijacked by an attacker.

While Safe-Unlinking protects double-linked lists (such as the small
bins), there wasn't any similar protection for attacks against
single-linked lists. This solution protects against 3 common attacks:
* Partial pointer override: modifies the lower bytes (Little Endian)
* Full pointer override: hijacks the pointer to an attacker's location
* Unaligned chunks: pointing the list to an unaligned address

The design assumes an attacker doesn't know where the heap is located,
and uses the ASLR randomness to "sign" the single-linked pointers. We
mark the pointer as P and the location in which it is stored as L, and
the calculation will be:
* PROTECT(P) := (L >> PAGE_SHIFT) XOR (P)
* *L = PROTECT(P)

This way, the random bits from the address L (which start at the bits
in the PAGE_SHIFT position), will be merged with the LSB of the stored
protected pointer. This protection layer prevents an attacker from
modifying the pointer into a controlled value.

An additional check that the chunks are MALLOC_ALIGNed adds an
important layer:
* Attackers can't point to illegal (unaligned) memory addresses
* Attackers must guess correctly the alignment bits

On standard 32 bit Linux machines, an attacker will directly fail 7
out of 8 times, and on 64 bit machines it will fail 15 out of 16
times.

The proposed solution adds 3-4 asm instructions per malloc()/free()
and therefore has only minor performance implications if it has
any. A similar protection was added to Chromium's version of TCMalloc
in 2013, and according to their documentation the performance overhead
was less than 2%.

Signed-off-by: Eyal Itkin <eyalit@checkpoint.com>

90f24fc 2020-02-10 16:11:05 Max Filippov

include/ctype.h: restore __isctype_l definition

Recent is*_l fix broke uclibc build because removed __isctype_l
definition was used in libc/misc/ctype/ctype.c. Restore it.

Fixes: d1a3ca7ca566 ("include/ctype.h: drop is*_l macro definitions")
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>

901462c 2020-02-07 22:37:15 Vladimir Murzin

aarch64/bits: provide sigstack.h

It fixes tst-signal6 and friends.

Signed-off-by: Vladimir Murzin <vladimir.murzin@arm.com>

b5fc5f8 2020-02-07 22:37:15 Vladimir Murzin

aarch64/sys: update ucontext.h

It fixes tst-cancel1 and friends.

Signed-off-by: Vladimir Murzin <vladimir.murzin@arm.com>

28c3e6d 2020-02-07 22:37:15 Vladimir Murzin

common/bits: Fix ipc_perm and semid_ds definitions for 64-bit arches

It fixes:

FAIL sem got 1 expected 0
failed: incorrect sem_nsems!
semget(IPC_CREAT) = 0
semctl(k) = 0
sem_nsems = 0

for aarch64.

Signed-off-by: Vladimir Murzin <vladimir.murzin@arm.com>

d13a57c 2020-02-07 22:37:14 Vladimir Murzin

aarch64: always use MMU

Only MMU variant is supported.

Signed-off-by: Vladimir Murzin <vladimir.murzin@arm.com>

d1a3ca7 2020-02-04 16:56:57 Max Filippov

include/ctype.h: drop is*_l macro definitions

ctype locale-specific macro definitions are broken because they result
in dereference of pointer to structure of incomplete type.
Drop these macros since they are optional and let applications use
functions with the same names.

This change fixes parted-3.3 build with uClibc-ng:
http://autobuild.buildroot.net/results/b7ba1210d5aa184b133f0171da621d2b0083ec39/build-end.log

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>

8a04c4d 2020-02-03 19:50:54 Waldemar Brodkorb

csky: add statx conditionals

Similar to glibc commit
https://sourceware.org/git/?p=glibc.git;a=commit;h=6bbfc5c09fc5b5e3d4a0cddbbd4e2e457767dae7
we need to handle Linux kernel change, which removed stat64 family from default syscall set.

Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
Signed-off-by: Waldemar Brodkorb <wbrodkorb@conet.de>

6b21a5a 2020-01-30 17:44:41 Vincent Hou

Fix map_newlink abort when interface list changes during getifaddrs

map_newlink() may abort when interface list changed between netlink
request for getting interfaces and getting addresses. This commit is
ported from the same change from glibc commit.

Signed-off-by: Vincent Hou <vincent.houyi@gmail.com>

24681d3 2020-01-30 17:26:42 Yann Sionneau

poll: avoid calling select with empty sets which hangs the process

Avoid calling select with empty sets which hangs the process

This makes uClibc-ng act like glibc and musl
Without this fix the test_poll of python3 testsuite hangs forever

Scenario of the issue:
If you call poll with only invalid file descriptors, like in python3
testsuite
(https://github.com/python/cpython/blob/master/Lib/test/test_poll.py#L83)
You will go through uClibc poll emulation code, which is based on
select syscall.

Your first call to select will fail, it will return -1 and errno will be
set to EBADF: https://github.com/wbx-github/uclibc-ng/blob/master/libc/sysdeps/linux/common/poll.c#L120
Then you will go through the for loop which tests individually each file descriptor by calling
select on each one: https://github.com/wbx-github/uclibc-ng/blob/master/libc/sysdeps/linux/common/poll.c#L163
each call will also return -1 with errno being equal to EBADF.
Therefore all pollfd will have the POLLNVAL flag in their respective revents field.
And, the most important, rset/wset/xset will stay empty.

Then the for loop ends, the "continue" makes the while loop run again.
The following select() is run again: https://github.com/wbx-github/uclibc-ng/blob/master/libc/sysdeps/linux/common/poll.c#L120

But this time the sets are empty.
If the poll was called with timeout set to -1, this select will hang forever because there is no timeout
and the sets are empty so no event will ever wake it up.

test program:

int main(void)
{
struct pollfd pfd;
int ret;
int pipe_fds[2];

pipe(pipe_fds);
close(pipe_fds[0]);
close(pipe_fds[1]);

pfd.fd = pipe_fds[0];
pfd.events = POLLIN | POLLOUT | POLLPRI;
pfd.revents = 0;

ret = poll(&pfd, 1, -1);

printf("ret: %d\n", ret);
if (ret < 0)
printf("error: %s", strerror(errno));
else {
puts("revents: ");
if (pfd.revents & POLLERR)
printf(" POLLERR");
if (pfd.revents & POLLHUP)
printf(" POLLHUP");
if (pfd.revents & POLLNVAL)
printf(" POLLNVAL");
puts("");
}

return 0;
}

This hangs on uClibc-ng aarch64 and Kalray's arch (kv3) but does the following on musl and glibc:
"
ret: 1
revents:
POLLNVAL
"

strace output of this program with uClibc *without* the patch applied:

pselect6(4, [3], [3], [3], NULL, NULL) = -1 EBADF (Bad file descriptor)
pselect6(4, [3], [3], [3], {tv_sec=0, tv_nsec=0}, NULL) = -1 EBADF (Bad file descriptor)
pselect6(0, 0x7ffffffb80, 0x7ffffffb68, 0x7ffffffb50, NULL, NULL
(never finishes)

strace output of this program with uClibc *with* the patch applied:
pselect6(4, [3], [3], [3], NULL, NULL) = -1 EBADF (Bad file descriptor)
pselect6(4, [3], [3], [3], {tv_sec=0, tv_nsec=0}, NULL) = -1 EBADF (Bad file descriptor)
write(1, "ret: 1\n", 7ret: 1
) = 7
write(1, "revents: \n", 10revents:
) = 10
write(1, " POLLNVAL\n", 10 POLLNVAL
) = 10
exit_group(0) = ?
+++ exited with 0 +++