Raspbian automatic forward porter [Thu, 7 Feb 2019 14:05:03 +0000 (14:05 +0000)]
Merge version 2.0.4-15+rpi1 and 2.0.6-1 to produce 2.0.6-1+rpi1
Ben Hutchings [Fri, 1 Feb 2019 05:00:57 +0000 (05:00 +0000)]
Merge klibc (2.0.6-1) import into refs/heads/workingbranch
Ben Hutchings [Thu, 19 Jul 2018 20:34:08 +0000 (21:34 +0100)]
resume: Backward compatibility for resume_offset
In Debian we will need to maintain backward compatibility with Linux
4.9 at least until after the "buster" release. Therefore we need to
accept that /sys/power/resume_offset might not exist.
If we can't open that file because it doesn't exist, we should check
whether the offset we are trying to set is the offset that the kernel
would use anyway. In that case, continue.
Gbp-Pq: Name resume-backward-compatibility-for-resume_offset.patch
Ben Hutchings [Fri, 1 Feb 2019 05:00:57 +0000 (05:00 +0000)]
klibc (2.0.6-1) unstable; urgency=medium
* New upstream version:
- ia64: Fix shared build (thanks to James Clarke)
- Drop nearly all patches, which are either included or obsoleted
* debian/control: Change Architecture of all packages to linux-any
* debian/control: Mark libklibc as M-A: same (suggested by Matthias Klose)
* debian/control: Mark klibc-utils as M-A: foreign
* initramfs-tools: Remove checks for shell installed as "sh.shared"
* debian/rules: Change override_dh_auto_test rule to actually run tests
[dgit import unpatched klibc 2.0.6-1]
Ben Hutchings [Fri, 1 Feb 2019 05:00:57 +0000 (05:00 +0000)]
Import klibc_2.0.6.orig.tar.gz
[dgit import orig klibc_2.0.6.orig.tar.gz]
Ben Hutchings [Fri, 1 Feb 2019 05:00:57 +0000 (05:00 +0000)]
Import klibc_2.0.6-1.debian.tar.xz
[dgit import tarball klibc 2.0.6-1 klibc_2.0.6-1.debian.tar.xz]
Raspbian automatic forward porter [Tue, 15 Jan 2019 11:32:43 +0000 (11:32 +0000)]
Merge version 2.0.4-14+rpi1 and 2.0.4-15 to produce 2.0.4-15+rpi1
Ben Hutchings [Sun, 6 Jan 2019 19:33:01 +0000 (19:33 +0000)]
Merge klibc (2.0.4-15) import into refs/heads/workingbranch
Ben Hutchings [Sun, 6 Jan 2019 03:44:40 +0000 (03:44 +0000)]
Disable PIE
We link all executables as non-relocatable, so it makes no sense to
generate PIE code. In addition, PIE code on i386 requires a working
GOT which we don't generate.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Gbp-Pq: Name disable-pie.patch
Ben Hutchings [Sun, 6 Jan 2019 03:19:51 +0000 (03:19 +0000)]
i386: Use -Ttext-segment to avoid address collision
Building klibc for i386 with binutils 2.31 adds an extra
.note.gnu.property section to klibc.so, the address of which is not
affected by the -Ttext option. Loading a klibc executable then
fails with the following kernel log message:
9409 (sh.shared): Uhuuh, elf segment at
0000000000600000 requested but the memory is mapped already
I don't exactly see why this is happening, but it is triggered by the
new section and the collision can be avoided by passing -Ttext-segment
instead of -Ttext, similarly to x86_64.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Gbp-Pq: Name i386-use-ttext-segment-to-avoid-address-collision.patch
Ben Hutchings [Thu, 19 Jul 2018 20:34:08 +0000 (21:34 +0100)]
resume: Backward compatibility for resume_offset
In Debian we will need to maintain backward compatibility with Linux
4.9 at least until after the "buster" release. Therefore we need to
accept that /sys/power/resume_offset might not exist.
If we can't open that file because it doesn't exist, we should check
whether the offset we are trying to set is the offset that the kernel
would use anyway. In that case, continue.
Gbp-Pq: Name resume-backward-compatibility-for-resume_offset.patch
Ben Hutchings [Thu, 19 Jul 2018 19:09:28 +0000 (20:09 +0100)]
resume: Write resume_offset attribute
Support for a device offset as part of the string written to
/sys/power/resume never got into a mainline kernel.
However, since Linux 4.17 there is a separate resume_offset attribute
that we can use to set the offset before attempting to resume.
Change resume() to write the resume_offset attribute instead.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Gbp-Pq: Name resume-write-resume_offset-parameter.patch
James Clarke [Wed, 18 Jul 2018 21:30:42 +0000 (22:30 +0100)]
Fix sparc assembly when compiled as PIC
Some distributions default to PIE for their compilers, which on sparc is passed
on to the assembler. Since the behaviour of %hi/%lo changes under PIC to become
GOT offsets, the current assembly files need adapting to not try to use a GOT
offset as an absolute address.
Gbp-Pq: Name sparc-pie.patch
Ben Hutchings [Tue, 17 Jul 2018 01:55:19 +0000 (02:55 +0100)]
Add RISC-V (RV64) port
RISC-V is pretty boring. I've cribbed most of this from the MIPS and
AArch64 ports.
I ran into difficulty with initialisation of the gp,register, which I
think has to be process-global - the psABI says that signal handlers
can rely on it, and they could come from any module. This means that
klibc.so and the executable using it need to agree on a single value.
Currently they don't, and this causes gp-relative addressing to go
wrong.
gp-relative addressing is introduced by "relaxation" in the linker,
so I've disabled that for now.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Gbp-Pq: Name add-riscv-rv64-port.patch
Ben Hutchings [Mon, 16 Jul 2018 17:24:08 +0000 (18:24 +0100)]
rename, renameat: Use renameat2() system call
New architectures only define the renameat2() system call, which was
added in Linux 3.15. Define rename() and renameat() as wrappers for
it if necessary.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Gbp-Pq: Name rename-renameat-use-rename2-system-call.patch
Ben Hutchings [Sat, 5 Jan 2019 20:59:33 +0000 (20:59 +0000)]
x86_64: Use -Ttext-segment to avoid address collision
Building klibc for x86_64 with binutils 2.31 adds an extra
.note.gnu.property section to klibc.so, the address of which is not
affected by the -Ttext option. Loading a klibc executable then
fails with the following kernel log message:
9409 (sh.shared): Uhuuh, elf segment at
0000000000200000 requested but the memory is mapped already
I don't exactly see why this is happening, but it is triggered by the
new section and the collision can be avoided by passing -Ttext-segment
instead of -Ttext. A similar change was applied to MIPS recently.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Gbp-Pq: Name x86_64-use-ttext-segment-to-avoid-address-collision.patch
Ben Hutchings [Sun, 15 Jul 2018 20:27:09 +0000 (21:27 +0100)]
x86_64: Reduce ld max-page-size option again
Building klibc with binutils 2.30 results in the following layout
for klibc.so:
Idx Name Size VMA LMA File off Algn
0 .text
0000d1ff 0000000000200200 0000000000200200 00000200 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .rodata
000031af 0000000000300000 0000000000300000 00100000 2**5
CONTENTS, ALLOC, LOAD, READONLY, DATA
2 .data.rel.ro
00000990 0000000000403660 0000000000403660 00103660 2**5
CONTENTS, ALLOC, LOAD, DATA
3 .data
00000140 0000000000404000 0000000000404000 00104000 2**5
CONTENTS, ALLOC, LOAD, DATA
4 .bss
000042f8 0000000000404140 0000000000404140 00104140 2**5
ALLOC
The .text and .rodata sections have each been padded to the specified
maximum page size of 1 MB, causing the following sections to overlap
the executable.
This causes all klibc executables to crash immediately.
Since there's no architectural page size betwen 4 KB and 2MB, set
max-page-size to 4 KB.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Gbp-Pq: Name x86_64-reduce-ld-max-page-size-option-again.patch
maximilian attems [Sun, 6 Jan 2019 19:33:01 +0000 (19:33 +0000)]
add-reboot-argument-support
Bug-Debian ;https://bugs.debian.org/863761
Forwarded: http://www.zytor.com/pipermail/klibc/2017-May/003957.html
Last-Update: 2017-05-22
Gbp-Pq: Name add-reboot-argument-support.patch
James Cowgill [Fri, 2 Mar 2018 14:48:21 +0000 (14:48 +0000)]
mips64: compile with -mno-abicalls
By default, the MIPS toolchain compiles all code as PIC. Since klibc
links everything at static addresses, we don't need PIC code so use
-mno-abicalls to disable it. To fix subsequent link errors, use
-Ttext-segment to adjust the base address of klibc to a more sensible
location.
This fixes a bug in the shared library form of klibc where programs
would segfault in the syscall handler because we tried to store into the
"errno" variable without setting up the gp register. This is only required
under the PIC ABI.
Signed-off-by: James Cowgill <james.cowgill@mips.com>
Gbp-Pq: Name mips64-compile-with-mno-abicalls.patch
Benjamin Drung [Wed, 13 Jun 2018 09:48:39 +0000 (11:48 +0200)]
mount_main: Fix empty string check
gcc 7.3.0 complains:
```
usr/utils/mount_main.c: In function ‘print_mount’:
usr/utils/mount_main.c:46:46: warning: comparison between pointer and zero character constant [-Wpointer-compare]
if (mnt->mnt_type != NULL && mnt->mnt_type != '\0')
^~
usr/utils/mount_main.c:46:32: note: did you mean to dereference the pointer?
if (mnt->mnt_type != NULL && mnt->mnt_type != '\0')
^
usr/utils/mount_main.c:48:46: warning: comparison between pointer and zero character constant [-Wpointer-compare]
if (mnt->mnt_opts != NULL && mnt->mnt_opts != '\0')
^~
usr/utils/mount_main.c:48:32: note: did you mean to dereference the pointer?
if (mnt->mnt_opts != NULL && mnt->mnt_opts != '\0')
^
```
Gbp-Pq: Name mount_main-Fix-empty-string-check.patch
Benjamin Drung [Wed, 13 Dec 2017 22:04:29 +0000 (23:04 +0100)]
Implement classless static routes
Implement classless static routes support as specified in RFC3442.
Bug-Debian: https://bugs.debian.org/884716
Bug-Ubuntu: https://launchpad.net/bugs/
1526956
Signed-off-by: Benjamin Drung <benjamin.drung@profitbricks.com>
Gbp-Pq: Name Implement-classless-static-routes.patch
maximilian attems [Sun, 6 Jan 2019 19:33:01 +0000 (19:33 +0000)]
ia64-build-static-tools
Gbp-Pq: Name ia64-build-static-tools.patch
H. Peter Anvin [Wed, 6 Jan 2016 02:31:40 +0000 (18:31 -0800)]
Add accept4(), handle fallback from accept() to accept4()
Add support for the accept4() system call.
Some architectures now have accept4() but not accept(), so introduce a
standard fallback. However, since accept() is a socketcall, we have
to do some special hacks.
While we are at it, handle conditional socketcall stubs based on
their existence <linux/net.h>, analogous to <asm/unistd.h>.
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Gbp-Pq: Name klibc-add-accept4-handle-fallback-from-accept-to-acc.patch
H. Peter Anvin [Wed, 6 Jan 2016 00:43:50 +0000 (16:43 -0800)]
i386: remove special handling of socketcall
As of kernel 4.3, i386 now has direct system calls for sockets, so
drop the special handling for i386 socketcall. If built on older
kernels, it will still generate socketcall stubs although they will be
less efficient.
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
[bwh: Backported to 2.0.4: adjust context]
Gbp-Pq: Name klibc-i386-remove-special-handling-of-socketcall.patch
maximilian attems [Sun, 6 Jan 2019 19:33:01 +0000 (19:33 +0000)]
dhcp-one-socket-per-interface
Gbp-Pq: Name dhcp-one-socket-per-interface.patch
Mathieu Trudel-Lapierre [Sun, 6 Jan 2019 19:33:01 +0000 (19:33 +0000)]
Set broadcast when sending DHCPREQUEST and DHCPDISCOVER
We need to do this, since our devices are probably not configured yet and
there may be more than one device we're trying to do DHCP on on the same
network. Otherwise, things might be dropped.
Patch is originally from here:
https://bugs.launchpad.net/ubuntu/+source/klibc/+bug/
1327412/comments/5
... but the reporter "patpat" has not provided contact information, and
this is independently verifiable by looking at RFC 2131, section 4.1,
page 24.
Gbp-Pq: Name broadcast_dhcp_send.patch
Ben Hutchings [Sun, 17 Jan 2016 19:50:28 +0000 (19:50 +0000)]
run-init: Add dry-run mode
initramfs-tools wants to validate the real init program before running
it, as there is no way out once it has exec'd run-init. This is
complicated by the increasing use of symlinks for /sbin/init and for
/sbin itself. We can't simply resolve them with 'readlink -f' because
any absolute symlinks will be resolved using the wrong root. Add a
dry-run mode (-n option) to run-init that goes as far as possible to
validate that the given init is executable.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Gbp-Pq: Name run-init-add-dry-run-mode.patch
YunQiang Su [Sat, 5 Sep 2015 13:39:25 +0000 (06:39 -0700)]
mips/setjmp.S: don't save and restore floating-point registers
Klibc FTBFS with '-mno-odd-spreg' on mips32(el) platforms,
As it try to save/restore odd-number FPR.
Indeed no other architectures save/restore FPR at all.
It shouldn't be needed.
Gbp-Pq: Name klibc-mips-setjmp-s-don-t-save-and-restore-floating-point.patch
Ben Hutchings [Fri, 18 Sep 2015 19:59:17 +0000 (21:59 +0200)]
gzip: Fix silent fallback to decompression
If the gzip utilities are built without support for compression,
they will always attempt to carry out decompression even if the
command name and options don't imply that. Instead they should
fail with an explicit error in this case.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Gbp-Pq: Name gzip-fix-silent-fallback-to-decompression.patch
Aurelien Jarno [Sat, 25 Apr 2015 12:16:16 +0000 (14:16 +0200)]
ppc64: fix struct stat
On ppc64 the struct stat defined by klibc matches the kernel one.
However it contains implicit padding before the st_rdev field due to the
64-bit alignement. For internal reasons, klibc defines st_rdev as a pair
of 32-bit values (using the __stdev64 macro). They only need to be
32-bit aligned and as a consequence st->st_rdev is incorrectly defined.
The solution is to add an explicit padding in the structure. This fixes
the resume binary on ppc64 BE and LE, and probably other things.
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Gbp-Pq: Name klibc-ppc64-fix-struct-stat.patch
Helge Deller [Wed, 23 Apr 2014 20:52:53 +0000 (22:52 +0200)]
Add pread and pwrite 32bit syscall wrappers for parisc
On the hppa arch (32bit userspace and 32 or 64bit kernel), the fstype
program fails to detect the filesystem. The reason for this failure
is, that fstype calls the pread() syscall, which has on some
architectures with 32bit userspace a different calling syntax. I
noticed this bug on hppa, but I assume s390 (32bit) and others might
run into similiar issues.
Signed-off-by: Helge Deller <deller@gmx.de>
Gbp-Pq: Name klibc-add-pread-and-pwrite-32bit-syscall-wrappers-for-parisc.patch
Ben Hutchings [Wed, 9 Sep 2015 01:12:40 +0000 (02:12 +0100)]
dash: mkbuiltins: Fix sort order harder
LC_COLLATE can be overriden by LC_ALL, so set LC_ALL instead when
running sort.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Gbp-Pq: Name dash-mkbuiltins-fix-sort-order-harder.patch
Ben Hutchings [Wed, 9 Sep 2015 00:24:56 +0000 (01:24 +0100)]
Install headers with consistent mode
Currently we ensure the installed headers are readable by everyone,
but write permissions will depend on the current umask. Turn off the
group and other writable bits to ensure consistent results.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Gbp-Pq: Name install-headers-with-consistent-mode.patch
Dejan Latinovic [Fri, 6 Mar 2015 00:51:45 +0000 (16:51 -0800)]
add-mips64-support-arch-mips64-specific
Description: Adding mips64 specific chagnes.
Modeled on mips 32 and adapted for 64 bit ABI.
- MCONFIG: using existing klibc.ld scrpit
- crt0.S: adapted gp initialization
- setjmp.S: do not save floating-point state
Gbp-Pq: Name 0003-add-mips64-support-arch-mips64-specific.patch
Dejan Latinovic [Fri, 6 Mar 2015 00:51:44 +0000 (16:51 -0800)]
add-mips64-support-arch-mips32
Description: Add mips64 support, using existing mips32 code.
- using mips32 assembler source files: pipe.S vfork.S syscall.S
- sysstub.ph: copied over from klibc/arch/mips
Gbp-Pq: Name 0002-add-mips64-support-arch-mips32.patch
Dejan Latinovic [Fri, 6 Mar 2015 00:51:44 +0000 (16:51 -0800)]
add-mips64-support-headers
Description: Added header files for mips64.
Modeled on mips 32 header files and adapted for 64 bit ABI.
- archsetjmp.h: do not save floating-point state
- asm.h: Symbolic register names for 64 bit ABI
Gbp-Pq: Name 0001-add-mips64-support-headers.patch
Ben Hutchings [Sun, 5 Oct 2014 00:08:21 +0000 (01:08 +0100)]
MIPS: Update archfcntl.h
Update usr/include/arch/mips/archfcntl.h from kernel headers:
- Add definitions of O_PATH, O_TMPFILE
- Update value of O_SYNC to include __O_SYNC
- Add definitions of F_{SET,GET}OWN_EX, F_GETOWNER_UIDS,
F_OFD_{GETLK,SETLK,SETLKW}, F_OWNER_{TID,PID,PGRP}
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Gbp-Pq: Name mips-update-archfcntl-h.patch
Ben Hutchings [Sat, 4 Oct 2014 15:32:39 +0000 (16:32 +0100)]
mount: Implement -o defaults
This is needed to support mounting non-root filesystems in
initramfs-tools.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Gbp-Pq: Name mount-implement-o-defaults.patch
Mauricio Faria de Oliveira [Tue, 9 Sep 2014 22:17:19 +0000 (15:17 -0700)]
ppc64: ELFv2: Load TOC value in system call stub
This fixes a segmentation fault in the system call's error handling path with
dynamically-linked binaries on PowerPC64 little endian. The system call stub
wasn't loading up r2 with the appropriate TOC value in its global entry point.
The r2 setup code comes from the FUNC_START macro in gcc [1] and an equivalent
one can also be found in the LOCALENTRY macro in glibc [2].
On the ELFv2 ABI (see [1]):
- The global entry point is expected to load up r2 with the appropriate TOC
value for this function.
- The local entry point expects r2 to be set up to the current TOC.
The problem happened with dynamically-linked binaries because:
- the system call is an indirect call (via global entry point) from the binary
to the shared library, landing in the syscall stub (which didn't load up r2
with the TOC of the shared library)
- its branch to __syscall_error is a direct call (via local entry point) within
the shared library, landing in the function (which expects r2 to be set up to
that TOC)
- when the function attempts to store errno (in an address relative to the TOC),
that address incorrectly pointed to a read-only segment -- segmentation fault.
The problem didn't happen with statically-linked binaries because the TOC value
wasn't different on that case.
Thanks and credits to Alan Modra and Ulrich Weigand, for helping with this and
pointing out the solution.
[1] https://gcc.gnu.org/ml/gcc-patches/2013-11/msg01141.html
[2] https://www.sourceware.org/ml/libc-alpha/2013-11/msg00315.html
Signed-off-by: Mauricio Faria de Oliveira <mauricfo@linux.vnet.ibm.com>
Gbp-Pq: Name ppc64el-load-toc-syscall-stub.patch
maximilian attems [Sun, 6 Jan 2019 19:33:01 +0000 (19:33 +0000)]
multiarch-include-path
Gbp-Pq: Name multiarch-include-path
Ben Hutchings [Sun, 14 Mar 2010 18:41:56 +0000 (18:41 +0000)]
Fix klibc Debian specific build trouble
Simply remove the headers_install invocation and rely on linux-libc-dev.
With these changes:
(the extra chmod was needed to allow for umask > 022) I could compile,
link and run this program:
#include <unistd.h>
int main(void)
{
write(1, "Hello world\n", 12);
return 0;
}
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
[ added multi arch support ]
Signed-off-by: Colin Watson <cjwatson@ubuntu.com>
Signed-off-by: maximilian attems <max@stro.at>
[ fixed cross building ]
Signed-off-by: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
Gbp-Pq: Name klibc-linux-libc-dev
Ben Hutchings [Sun, 15 Jul 2018 20:53:39 +0000 (21:53 +0100)]
Never clean files in quilt status directory
The top-level "distclean" and "mrproper" targets delete zero-size
files in the source, perhaps assumed to be stamp files. This is fine
for actual source direcgtories, but disastrous for a quilt status
directory.
For each patch, quilt stores the previous versions of the modified
files in a subdirectory of .pc. If the patch creates a file, this
file will be empty. Removing it effectively removes the file creation
from the patch.
The .git directory is already excluded from the clean rules for
a similar reason, so do the same for .pc.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Gbp-Pq: Name never-clean-files-in-quilt-status-directory.patch
Ben Hutchings [Sun, 6 Jan 2019 19:33:01 +0000 (19:33 +0000)]
klibc (2.0.4-15) unstable; urgency=medium
* resume: Write resume_offset attribute
* resume: Backward compatibility for resume_offset
* x86_64: Use -Ttext-segment to avoid address collision
* i386: Use -Ttext-segment to avoid address collision
* Disable PIE, since we link all executables as non-relocatable
(Closes: #907404)
[dgit import unpatched klibc 2.0.4-15]
Ben Hutchings [Sun, 6 Jan 2019 19:33:01 +0000 (19:33 +0000)]
Import klibc_2.0.4-15.debian.tar.xz
[dgit import tarball klibc 2.0.4-15 klibc_2.0.4-15.debian.tar.xz]
Raspbian forward pporter [Thu, 26 Jul 2018 14:48:14 +0000 (15:48 +0100)]
Merge version 2.0.4-11+rpi1 and 2.0.4-14 to produce 2.0.4-14+rpi1
Ben Hutchings [Thu, 19 Jul 2018 00:13:54 +0000 (01:13 +0100)]
Merge klibc (2.0.4-14) import into refs/heads/workingbranch
James Clarke [Wed, 18 Jul 2018 21:30:42 +0000 (22:30 +0100)]
Fix sparc assembly when compiled as PIC
Some distributions default to PIE for their compilers, which on sparc is passed
on to the assembler. Since the behaviour of %hi/%lo changes under PIC to become
GOT offsets, the current assembly files need adapting to not try to use a GOT
offset as an absolute address.
Gbp-Pq: Name sparc-pie.patch
Ben Hutchings [Tue, 17 Jul 2018 01:55:19 +0000 (02:55 +0100)]
Add RISC-V (RV64) port
RISC-V is pretty boring. I've cribbed most of this from the MIPS and
AArch64 ports.
I ran into difficulty with initialisation of the gp,register, which I
think has to be process-global - the psABI says that signal handlers
can rely on it, and they could come from any module. This means that
klibc.so and the executable using it need to agree on a single value.
Currently they don't, and this causes gp-relative addressing to go
wrong.
gp-relative addressing is introduced by "relaxation" in the linker,
so I've disabled that for now.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Gbp-Pq: Name add-riscv-rv64-port.patch
Ben Hutchings [Mon, 16 Jul 2018 17:24:08 +0000 (18:24 +0100)]
rename, renameat: Use renameat2() system call
New architectures only define the renameat2() system call, which was
added in Linux 3.15. Define rename() and renameat() as wrappers for
it if necessary.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Gbp-Pq: Name rename-renameat-use-rename2-system-call.patch
Ben Hutchings [Sun, 15 Jul 2018 20:27:09 +0000 (21:27 +0100)]
x86_64: Reduce ld max-page-size option again
Building klibc with binutils 2.30 results in the following layout
for klibc.so:
Idx Name Size VMA LMA File off Algn
0 .text
0000d1ff 0000000000200200 0000000000200200 00000200 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .rodata
000031af 0000000000300000 0000000000300000 00100000 2**5
CONTENTS, ALLOC, LOAD, READONLY, DATA
2 .data.rel.ro
00000990 0000000000403660 0000000000403660 00103660 2**5
CONTENTS, ALLOC, LOAD, DATA
3 .data
00000140 0000000000404000 0000000000404000 00104000 2**5
CONTENTS, ALLOC, LOAD, DATA
4 .bss
000042f8 0000000000404140 0000000000404140 00104140 2**5
ALLOC
The .text and .rodata sections have each been padded to the specified
maximum page size of 1 MB, causing the following sections to overlap
the executable.
This causes all klibc executables to crash immediately.
Since there's no architectural page size betwen 4 KB and 2MB, set
max-page-size to 4 KB.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Gbp-Pq: Name x86_64-reduce-ld-max-page-size-option-again.patch
maximilian attems [Thu, 19 Jul 2018 00:13:54 +0000 (01:13 +0100)]
add-reboot-argument-support
Bug-Debian ;https://bugs.debian.org/863761
Forwarded: http://www.zytor.com/pipermail/klibc/2017-May/003957.html
Last-Update: 2017-05-22
Gbp-Pq: Name add-reboot-argument-support.patch
James Cowgill [Fri, 2 Mar 2018 14:48:21 +0000 (14:48 +0000)]
mips64: compile with -mno-abicalls
By default, the MIPS toolchain compiles all code as PIC. Since klibc
links everything at static addresses, we don't need PIC code so use
-mno-abicalls to disable it. To fix subsequent link errors, use
-Ttext-segment to adjust the base address of klibc to a more sensible
location.
This fixes a bug in the shared library form of klibc where programs
would segfault in the syscall handler because we tried to store into the
"errno" variable without setting up the gp register. This is only required
under the PIC ABI.
Signed-off-by: James Cowgill <james.cowgill@mips.com>
Gbp-Pq: Name mips64-compile-with-mno-abicalls.patch
Benjamin Drung [Wed, 13 Jun 2018 09:48:39 +0000 (11:48 +0200)]
mount_main: Fix empty string check
gcc 7.3.0 complains:
```
usr/utils/mount_main.c: In function ‘print_mount’:
usr/utils/mount_main.c:46:46: warning: comparison between pointer and zero character constant [-Wpointer-compare]
if (mnt->mnt_type != NULL && mnt->mnt_type != '\0')
^~
usr/utils/mount_main.c:46:32: note: did you mean to dereference the pointer?
if (mnt->mnt_type != NULL && mnt->mnt_type != '\0')
^
usr/utils/mount_main.c:48:46: warning: comparison between pointer and zero character constant [-Wpointer-compare]
if (mnt->mnt_opts != NULL && mnt->mnt_opts != '\0')
^~
usr/utils/mount_main.c:48:32: note: did you mean to dereference the pointer?
if (mnt->mnt_opts != NULL && mnt->mnt_opts != '\0')
^
```
Gbp-Pq: Name mount_main-Fix-empty-string-check.patch
Benjamin Drung [Wed, 13 Dec 2017 22:04:29 +0000 (23:04 +0100)]
Implement classless static routes
Implement classless static routes support as specified in RFC3442.
Bug-Debian: https://bugs.debian.org/884716
Bug-Ubuntu: https://launchpad.net/bugs/
1526956
Signed-off-by: Benjamin Drung <benjamin.drung@profitbricks.com>
Gbp-Pq: Name Implement-classless-static-routes.patch
maximilian attems [Thu, 19 Jul 2018 00:13:54 +0000 (01:13 +0100)]
ia64-build-static-tools
Gbp-Pq: Name ia64-build-static-tools.patch
H. Peter Anvin [Wed, 6 Jan 2016 02:31:40 +0000 (18:31 -0800)]
Add accept4(), handle fallback from accept() to accept4()
Add support for the accept4() system call.
Some architectures now have accept4() but not accept(), so introduce a
standard fallback. However, since accept() is a socketcall, we have
to do some special hacks.
While we are at it, handle conditional socketcall stubs based on
their existence <linux/net.h>, analogous to <asm/unistd.h>.
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Gbp-Pq: Name klibc-add-accept4-handle-fallback-from-accept-to-acc.patch
H. Peter Anvin [Wed, 6 Jan 2016 00:43:50 +0000 (16:43 -0800)]
i386: remove special handling of socketcall
As of kernel 4.3, i386 now has direct system calls for sockets, so
drop the special handling for i386 socketcall. If built on older
kernels, it will still generate socketcall stubs although they will be
less efficient.
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
[bwh: Backported to 2.0.4: adjust context]
Gbp-Pq: Name klibc-i386-remove-special-handling-of-socketcall.patch
maximilian attems [Thu, 19 Jul 2018 00:13:54 +0000 (01:13 +0100)]
dhcp-one-socket-per-interface
Gbp-Pq: Name dhcp-one-socket-per-interface.patch
Mathieu Trudel-Lapierre [Thu, 19 Jul 2018 00:13:54 +0000 (01:13 +0100)]
Set broadcast when sending DHCPREQUEST and DHCPDISCOVER
We need to do this, since our devices are probably not configured yet and
there may be more than one device we're trying to do DHCP on on the same
network. Otherwise, things might be dropped.
Patch is originally from here:
https://bugs.launchpad.net/ubuntu/+source/klibc/+bug/
1327412/comments/5
... but the reporter "patpat" has not provided contact information, and
this is independently verifiable by looking at RFC 2131, section 4.1,
page 24.
Gbp-Pq: Name broadcast_dhcp_send.patch
Ben Hutchings [Sun, 17 Jan 2016 19:50:28 +0000 (19:50 +0000)]
run-init: Add dry-run mode
initramfs-tools wants to validate the real init program before running
it, as there is no way out once it has exec'd run-init. This is
complicated by the increasing use of symlinks for /sbin/init and for
/sbin itself. We can't simply resolve them with 'readlink -f' because
any absolute symlinks will be resolved using the wrong root. Add a
dry-run mode (-n option) to run-init that goes as far as possible to
validate that the given init is executable.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Gbp-Pq: Name run-init-add-dry-run-mode.patch
YunQiang Su [Sat, 5 Sep 2015 13:39:25 +0000 (06:39 -0700)]
mips/setjmp.S: don't save and restore floating-point registers
Klibc FTBFS with '-mno-odd-spreg' on mips32(el) platforms,
As it try to save/restore odd-number FPR.
Indeed no other architectures save/restore FPR at all.
It shouldn't be needed.
Gbp-Pq: Name klibc-mips-setjmp-s-don-t-save-and-restore-floating-point.patch
Ben Hutchings [Fri, 18 Sep 2015 19:59:17 +0000 (21:59 +0200)]
gzip: Fix silent fallback to decompression
If the gzip utilities are built without support for compression,
they will always attempt to carry out decompression even if the
command name and options don't imply that. Instead they should
fail with an explicit error in this case.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Gbp-Pq: Name gzip-fix-silent-fallback-to-decompression.patch
Aurelien Jarno [Sat, 25 Apr 2015 12:16:16 +0000 (14:16 +0200)]
ppc64: fix struct stat
On ppc64 the struct stat defined by klibc matches the kernel one.
However it contains implicit padding before the st_rdev field due to the
64-bit alignement. For internal reasons, klibc defines st_rdev as a pair
of 32-bit values (using the __stdev64 macro). They only need to be
32-bit aligned and as a consequence st->st_rdev is incorrectly defined.
The solution is to add an explicit padding in the structure. This fixes
the resume binary on ppc64 BE and LE, and probably other things.
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Gbp-Pq: Name klibc-ppc64-fix-struct-stat.patch
Helge Deller [Wed, 23 Apr 2014 20:52:53 +0000 (22:52 +0200)]
Add pread and pwrite 32bit syscall wrappers for parisc
On the hppa arch (32bit userspace and 32 or 64bit kernel), the fstype
program fails to detect the filesystem. The reason for this failure
is, that fstype calls the pread() syscall, which has on some
architectures with 32bit userspace a different calling syntax. I
noticed this bug on hppa, but I assume s390 (32bit) and others might
run into similiar issues.
Signed-off-by: Helge Deller <deller@gmx.de>
Gbp-Pq: Name klibc-add-pread-and-pwrite-32bit-syscall-wrappers-for-parisc.patch
Ben Hutchings [Wed, 9 Sep 2015 01:12:40 +0000 (02:12 +0100)]
dash: mkbuiltins: Fix sort order harder
LC_COLLATE can be overriden by LC_ALL, so set LC_ALL instead when
running sort.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Gbp-Pq: Name dash-mkbuiltins-fix-sort-order-harder.patch
Ben Hutchings [Wed, 9 Sep 2015 00:24:56 +0000 (01:24 +0100)]
Install headers with consistent mode
Currently we ensure the installed headers are readable by everyone,
but write permissions will depend on the current umask. Turn off the
group and other writable bits to ensure consistent results.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Gbp-Pq: Name install-headers-with-consistent-mode.patch
Dejan Latinovic [Fri, 6 Mar 2015 00:51:45 +0000 (16:51 -0800)]
add-mips64-support-arch-mips64-specific
Description: Adding mips64 specific chagnes.
Modeled on mips 32 and adapted for 64 bit ABI.
- MCONFIG: using existing klibc.ld scrpit
- crt0.S: adapted gp initialization
- setjmp.S: do not save floating-point state
Gbp-Pq: Name 0003-add-mips64-support-arch-mips64-specific.patch
Dejan Latinovic [Fri, 6 Mar 2015 00:51:44 +0000 (16:51 -0800)]
add-mips64-support-arch-mips32
Description: Add mips64 support, using existing mips32 code.
- using mips32 assembler source files: pipe.S vfork.S syscall.S
- sysstub.ph: copied over from klibc/arch/mips
Gbp-Pq: Name 0002-add-mips64-support-arch-mips32.patch
Dejan Latinovic [Fri, 6 Mar 2015 00:51:44 +0000 (16:51 -0800)]
add-mips64-support-headers
Description: Added header files for mips64.
Modeled on mips 32 header files and adapted for 64 bit ABI.
- archsetjmp.h: do not save floating-point state
- asm.h: Symbolic register names for 64 bit ABI
Gbp-Pq: Name 0001-add-mips64-support-headers.patch
Ben Hutchings [Sun, 5 Oct 2014 00:08:21 +0000 (01:08 +0100)]
MIPS: Update archfcntl.h
Update usr/include/arch/mips/archfcntl.h from kernel headers:
- Add definitions of O_PATH, O_TMPFILE
- Update value of O_SYNC to include __O_SYNC
- Add definitions of F_{SET,GET}OWN_EX, F_GETOWNER_UIDS,
F_OFD_{GETLK,SETLK,SETLKW}, F_OWNER_{TID,PID,PGRP}
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Gbp-Pq: Name mips-update-archfcntl-h.patch
Ben Hutchings [Sat, 4 Oct 2014 15:32:39 +0000 (16:32 +0100)]
mount: Implement -o defaults
This is needed to support mounting non-root filesystems in
initramfs-tools.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Gbp-Pq: Name mount-implement-o-defaults.patch
Mauricio Faria de Oliveira [Tue, 9 Sep 2014 22:17:19 +0000 (15:17 -0700)]
ppc64: ELFv2: Load TOC value in system call stub
This fixes a segmentation fault in the system call's error handling path with
dynamically-linked binaries on PowerPC64 little endian. The system call stub
wasn't loading up r2 with the appropriate TOC value in its global entry point.
The r2 setup code comes from the FUNC_START macro in gcc [1] and an equivalent
one can also be found in the LOCALENTRY macro in glibc [2].
On the ELFv2 ABI (see [1]):
- The global entry point is expected to load up r2 with the appropriate TOC
value for this function.
- The local entry point expects r2 to be set up to the current TOC.
The problem happened with dynamically-linked binaries because:
- the system call is an indirect call (via global entry point) from the binary
to the shared library, landing in the syscall stub (which didn't load up r2
with the TOC of the shared library)
- its branch to __syscall_error is a direct call (via local entry point) within
the shared library, landing in the function (which expects r2 to be set up to
that TOC)
- when the function attempts to store errno (in an address relative to the TOC),
that address incorrectly pointed to a read-only segment -- segmentation fault.
The problem didn't happen with statically-linked binaries because the TOC value
wasn't different on that case.
Thanks and credits to Alan Modra and Ulrich Weigand, for helping with this and
pointing out the solution.
[1] https://gcc.gnu.org/ml/gcc-patches/2013-11/msg01141.html
[2] https://www.sourceware.org/ml/libc-alpha/2013-11/msg00315.html
Signed-off-by: Mauricio Faria de Oliveira <mauricfo@linux.vnet.ibm.com>
Gbp-Pq: Name ppc64el-load-toc-syscall-stub.patch
maximilian attems [Thu, 19 Jul 2018 00:13:54 +0000 (01:13 +0100)]
multiarch-include-path
Gbp-Pq: Name multiarch-include-path
Ben Hutchings [Sun, 14 Mar 2010 18:41:56 +0000 (18:41 +0000)]
Fix klibc Debian specific build trouble
Simply remove the headers_install invocation and rely on linux-libc-dev.
With these changes:
(the extra chmod was needed to allow for umask > 022) I could compile,
link and run this program:
#include <unistd.h>
int main(void)
{
write(1, "Hello world\n", 12);
return 0;
}
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
[ added multi arch support ]
Signed-off-by: Colin Watson <cjwatson@ubuntu.com>
Signed-off-by: maximilian attems <max@stro.at>
[ fixed cross building ]
Signed-off-by: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
Gbp-Pq: Name klibc-linux-libc-dev
Ben Hutchings [Sun, 15 Jul 2018 20:53:39 +0000 (21:53 +0100)]
Never clean files in quilt status directory
The top-level "distclean" and "mrproper" targets delete zero-size
files in the source, perhaps assumed to be stamp files. This is fine
for actual source direcgtories, but disastrous for a quilt status
directory.
For each patch, quilt stores the previous versions of the modified
files in a subdirectory of .pc. If the patch creates a file, this
file will be empty. Removing it effectively removes the file creation
from the patch.
The .git directory is already excluded from the clean rules for
a similar reason, so do the same for .pc.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Gbp-Pq: Name never-clean-files-in-quilt-status-directory.patch
Ben Hutchings [Thu, 19 Jul 2018 00:13:54 +0000 (01:13 +0100)]
klibc (2.0.4-14) unstable; urgency=medium
[ James Clarke ]
* [klibc] Fix sparc assembly when compiled as PIC (Closes: #885852)
[dgit import unpatched klibc 2.0.4-14]
Ben Hutchings [Thu, 19 Jul 2018 00:13:54 +0000 (01:13 +0100)]
Import klibc_2.0.4-14.debian.tar.xz
[dgit import tarball klibc 2.0.4-14 klibc_2.0.4-14.debian.tar.xz]
Raspbian forward pporter [Fri, 5 Jan 2018 14:58:59 +0000 (14:58 +0000)]
Merge version 2.0.4-9+rpi1 and 2.0.4-11 to produce 2.0.4-11+rpi1
Ben Hutchings [Sat, 30 Dec 2017 22:09:36 +0000 (22:09 +0000)]
Merge klibc (2.0.4-11) import into refs/heads/workingbranch
H. Peter Anvin [Wed, 6 Jan 2016 02:31:40 +0000 (18:31 -0800)]
Add accept4(), handle fallback from accept() to accept4()
Add support for the accept4() system call.
Some architectures now have accept4() but not accept(), so introduce a
standard fallback. However, since accept() is a socketcall, we have
to do some special hacks.
While we are at it, handle conditional socketcall stubs based on
their existence <linux/net.h>, analogous to <asm/unistd.h>.
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Gbp-Pq: Name klibc-add-accept4-handle-fallback-from-accept-to-acc.patch
H. Peter Anvin [Wed, 6 Jan 2016 00:43:50 +0000 (16:43 -0800)]
i386: remove special handling of socketcall
As of kernel 4.3, i386 now has direct system calls for sockets, so
drop the special handling for i386 socketcall. If built on older
kernels, it will still generate socketcall stubs although they will be
less efficient.
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
[bwh: Backported to 2.0.4: adjust context]
Gbp-Pq: Name klibc-i386-remove-special-handling-of-socketcall.patch
maximilian attems [Sat, 30 Dec 2017 22:09:36 +0000 (22:09 +0000)]
dhcp-one-socket-per-interface
Gbp-Pq: Name dhcp-one-socket-per-interface.patch
Mathieu Trudel-Lapierre [Sat, 30 Dec 2017 22:09:36 +0000 (22:09 +0000)]
Set broadcast when sending DHCPREQUEST and DHCPDISCOVER
We need to do this, since our devices are probably not configured yet and
there may be more than one device we're trying to do DHCP on on the same
network. Otherwise, things might be dropped.
Patch is originally from here:
https://bugs.launchpad.net/ubuntu/+source/klibc/+bug/
1327412/comments/5
... but the reporter "patpat" has not provided contact information, and
this is independently verifiable by looking at RFC 2131, section 4.1,
page 24.
Gbp-Pq: Name broadcast_dhcp_send.patch
Ben Hutchings [Sun, 17 Jan 2016 19:50:28 +0000 (19:50 +0000)]
run-init: Add dry-run mode
initramfs-tools wants to validate the real init program before running
it, as there is no way out once it has exec'd run-init. This is
complicated by the increasing use of symlinks for /sbin/init and for
/sbin itself. We can't simply resolve them with 'readlink -f' because
any absolute symlinks will be resolved using the wrong root. Add a
dry-run mode (-n option) to run-init that goes as far as possible to
validate that the given init is executable.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Gbp-Pq: Name run-init-add-dry-run-mode.patch
YunQiang Su [Sat, 5 Sep 2015 13:39:25 +0000 (06:39 -0700)]
mips/setjmp.S: don't save and restore floating-point registers
Klibc FTBFS with '-mno-odd-spreg' on mips32(el) platforms,
As it try to save/restore odd-number FPR.
Indeed no other architectures save/restore FPR at all.
It shouldn't be needed.
Gbp-Pq: Name klibc-mips-setjmp-s-don-t-save-and-restore-floating-point.patch
Ben Hutchings [Fri, 18 Sep 2015 19:59:17 +0000 (21:59 +0200)]
gzip: Fix silent fallback to decompression
If the gzip utilities are built without support for compression,
they will always attempt to carry out decompression even if the
command name and options don't imply that. Instead they should
fail with an explicit error in this case.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Gbp-Pq: Name gzip-fix-silent-fallback-to-decompression.patch
Aurelien Jarno [Sat, 25 Apr 2015 12:16:16 +0000 (14:16 +0200)]
ppc64: fix struct stat
On ppc64 the struct stat defined by klibc matches the kernel one.
However it contains implicit padding before the st_rdev field due to the
64-bit alignement. For internal reasons, klibc defines st_rdev as a pair
of 32-bit values (using the __stdev64 macro). They only need to be
32-bit aligned and as a consequence st->st_rdev is incorrectly defined.
The solution is to add an explicit padding in the structure. This fixes
the resume binary on ppc64 BE and LE, and probably other things.
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Gbp-Pq: Name klibc-ppc64-fix-struct-stat.patch
Helge Deller [Wed, 23 Apr 2014 20:52:53 +0000 (22:52 +0200)]
Add pread and pwrite 32bit syscall wrappers for parisc
On the hppa arch (32bit userspace and 32 or 64bit kernel), the fstype
program fails to detect the filesystem. The reason for this failure
is, that fstype calls the pread() syscall, which has on some
architectures with 32bit userspace a different calling syntax. I
noticed this bug on hppa, but I assume s390 (32bit) and others might
run into similiar issues.
Signed-off-by: Helge Deller <deller@gmx.de>
Gbp-Pq: Name klibc-add-pread-and-pwrite-32bit-syscall-wrappers-for-parisc.patch
Ben Hutchings [Wed, 9 Sep 2015 01:12:40 +0000 (02:12 +0100)]
dash: mkbuiltins: Fix sort order harder
LC_COLLATE can be overriden by LC_ALL, so set LC_ALL instead when
running sort.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Gbp-Pq: Name dash-mkbuiltins-fix-sort-order-harder.patch
Ben Hutchings [Wed, 9 Sep 2015 00:24:56 +0000 (01:24 +0100)]
Install headers with consistent mode
Currently we ensure the installed headers are readable by everyone,
but write permissions will depend on the current umask. Turn off the
group and other writable bits to ensure consistent results.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Gbp-Pq: Name install-headers-with-consistent-mode.patch
Dejan Latinovic [Fri, 6 Mar 2015 00:51:45 +0000 (16:51 -0800)]
add-mips64-support-arch-mips64-specific
Description: Adding mips64 specific chagnes.
Modeled on mips 32 and adapted for 64 bit ABI.
- MCONFIG: using existing klibc.ld scrpit
- crt0.S: adapted gp initialization
- setjmp.S: do not save floating-point state
Gbp-Pq: Name 0003-add-mips64-support-arch-mips64-specific.patch
Dejan Latinovic [Fri, 6 Mar 2015 00:51:44 +0000 (16:51 -0800)]
add-mips64-support-arch-mips32
Description: Add mips64 support, using existing mips32 code.
- using mips32 assembler source files: pipe.S vfork.S syscall.S
- sysstub.ph: copied over from klibc/arch/mips
Gbp-Pq: Name 0002-add-mips64-support-arch-mips32.patch
Dejan Latinovic [Fri, 6 Mar 2015 00:51:44 +0000 (16:51 -0800)]
add-mips64-support-headers
Description: Added header files for mips64.
Modeled on mips 32 header files and adapted for 64 bit ABI.
- archsetjmp.h: do not save floating-point state
- asm.h: Symbolic register names for 64 bit ABI
Gbp-Pq: Name 0001-add-mips64-support-headers.patch
Ben Hutchings [Sun, 5 Oct 2014 00:08:21 +0000 (01:08 +0100)]
MIPS: Update archfcntl.h
Update usr/include/arch/mips/archfcntl.h from kernel headers:
- Add definitions of O_PATH, O_TMPFILE
- Update value of O_SYNC to include __O_SYNC
- Add definitions of F_{SET,GET}OWN_EX, F_GETOWNER_UIDS,
F_OFD_{GETLK,SETLK,SETLKW}, F_OWNER_{TID,PID,PGRP}
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Gbp-Pq: Name mips-update-archfcntl-h.patch
Ben Hutchings [Sat, 4 Oct 2014 15:32:39 +0000 (16:32 +0100)]
mount: Implement -o defaults
This is needed to support mounting non-root filesystems in
initramfs-tools.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Gbp-Pq: Name mount-implement-o-defaults.patch
Mauricio Faria de Oliveira [Tue, 9 Sep 2014 22:17:19 +0000 (15:17 -0700)]
ppc64: ELFv2: Load TOC value in system call stub
This fixes a segmentation fault in the system call's error handling path with
dynamically-linked binaries on PowerPC64 little endian. The system call stub
wasn't loading up r2 with the appropriate TOC value in its global entry point.
The r2 setup code comes from the FUNC_START macro in gcc [1] and an equivalent
one can also be found in the LOCALENTRY macro in glibc [2].
On the ELFv2 ABI (see [1]):
- The global entry point is expected to load up r2 with the appropriate TOC
value for this function.
- The local entry point expects r2 to be set up to the current TOC.
The problem happened with dynamically-linked binaries because:
- the system call is an indirect call (via global entry point) from the binary
to the shared library, landing in the syscall stub (which didn't load up r2
with the TOC of the shared library)
- its branch to __syscall_error is a direct call (via local entry point) within
the shared library, landing in the function (which expects r2 to be set up to
that TOC)
- when the function attempts to store errno (in an address relative to the TOC),
that address incorrectly pointed to a read-only segment -- segmentation fault.
The problem didn't happen with statically-linked binaries because the TOC value
wasn't different on that case.
Thanks and credits to Alan Modra and Ulrich Weigand, for helping with this and
pointing out the solution.
[1] https://gcc.gnu.org/ml/gcc-patches/2013-11/msg01141.html
[2] https://www.sourceware.org/ml/libc-alpha/2013-11/msg00315.html
Signed-off-by: Mauricio Faria de Oliveira <mauricfo@linux.vnet.ibm.com>
Gbp-Pq: Name ppc64el-load-toc-syscall-stub.patch
maximilian attems [Sat, 30 Dec 2017 22:09:36 +0000 (22:09 +0000)]
multiarch-include-path
Gbp-Pq: Name multiarch-include-path
Ben Hutchings [Sun, 14 Mar 2010 18:41:56 +0000 (18:41 +0000)]
Fix klibc Debian specific build trouble
Simply remove the headers_install invocation and rely on linux-libc-dev.
With these changes:
(the extra chmod was needed to allow for umask > 022) I could compile,
link and run this program:
#include <unistd.h>
int main(void)
{
write(1, "Hello world\n", 12);
return 0;
}
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
[ added multi arch support ]
Signed-off-by: Colin Watson <cjwatson@ubuntu.com>
Signed-off-by: maximilian attems <max@stro.at>
[ fixed cross building ]
Signed-off-by: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
Gbp-Pq: Name klibc-linux-libc-dev
Ben Hutchings [Sat, 30 Dec 2017 22:09:36 +0000 (22:09 +0000)]
klibc (2.0.4-11) unstable; urgency=medium
* Apply i386 syscall changes from upstream (fixes FTBFS):
- [klibc] i386: remove special handling of socketcall
- [klibc] Add accept4(), handle fallback from accept() to accept4()
[dgit import unpatched klibc 2.0.4-11]
Ben Hutchings [Sat, 30 Dec 2017 22:09:36 +0000 (22:09 +0000)]
Import klibc_2.0.4-11.debian.tar.xz
[dgit import tarball klibc 2.0.4-11 klibc_2.0.4-11.debian.tar.xz]