Source: libiberty
Version: 20211102-1
Severity: wishlist
Tags: patch

Hi,

Attached is a patch that adds an autopkgtest to libiberty that exercises
some of its functionality. I agree to keep this up-to-date with new
releases.

Thanks for your consideration

-- System Information:
Debian Release: bookworm/sid
  APT prefers testing-debug
  APT policy: (500, 'testing-debug'), (500, 'testing'), (2, 'unstable-
debug'), (2, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 5.18.0-2-amd64 (SMP w/2 CPU threads; PREEMPT)
Kernel taint flags: TAINT_USER, TAINT_WARN, TAINT_FIRMWARE_WORKAROUND
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE
not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

diff -wruN a/debian/changelog b/debian/changelog
--- a/debian/changelog	2021-11-02 09:09:37.000000000 -0400
+++ b/debian/changelog	2022-07-10 10:17:53.840907340 -0400
@@ -1,3 +1,10 @@
+libiberty (20211102-2) UNRELEASED; urgency=medium
+
+  [ John Scott ]
+  * Add a DEP-8 test leveraging some functionality of libiberty.
+
+ -- Debian GCC Maintainers <debian-gcc@lists.debian.org>  Sun, 10 Jul 2022 10:17:31 -0400
+
 libiberty (20211102-1) unstable; urgency=medium
 
   * Update to 20210106.
diff -wruN a/debian/copyright b/debian/copyright
--- a/debian/copyright	2017-09-13 06:48:31.000000000 -0400
+++ b/debian/copyright	2022-07-10 10:24:34.296994497 -0400
@@ -135,6 +135,7 @@
 
 Files: debian/*
 Copyright: 2013-2014 Matthias Klose <d...@debian.org>
+ 2022 John Scott <jsc...@posteo.net>
 License: GPL-2+
  This package is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
diff -wruN a/debian/tests/control b/debian/tests/control
--- a/debian/tests/control	1969-12-31 19:00:00.000000000 -0500
+++ b/debian/tests/control	2022-07-10 10:23:05.448979031 -0400
@@ -0,0 +1,2 @@
+Test-Command: gcc debian/tests/libiberty.c -liberty -o "$AUTOPKGTEST_TMP"/liberty && "$AUTOPKGTEST_TMP"/liberty
+Depends: gcc, libc-dev, libiberty-dev
diff -wruN a/debian/tests/libiberty.c b/debian/tests/libiberty.c
--- a/debian/tests/libiberty.c	1969-12-31 19:00:00.000000000 -0500
+++ b/debian/tests/libiberty.c	2022-07-10 10:18:06.384910899 -0400
@@ -0,0 +1,68 @@
+#define _POSIX_C_SOURCE 200809L
+#include <errno.h>
+#include <fcntl.h>
+#include <libiberty/libiberty.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+int main(void) {
+	char *s = concat("foo", "bar", "bat", "baz", "cat", "ding", "dong", NULL);
+	if(puts(s) == EOF) {
+		perror("Failed to print string");
+		abort();
+	}
+	free(s);
+
+	if(faccessat(AT_FDCWD, "/proc/self/fd/0", R_OK, AT_EACCESS) != -1) {
+		const int zerofd = open("/proc/self/fd/0", O_RDONLY);
+		if(zerofd == -1) {
+			perror("Failed to open /proc/self/fd/0");
+			abort();
+		}
+		if(!fdmatch(0, zerofd)) {
+			fputs("fds do not match!\n", stderr);
+			abort();
+		}
+		if(close(zerofd) == -1) {
+			perror("Failed to close file descriptor");
+			abort();
+		}
+	}
+
+	if(puts(getpwd()) == EOF) {
+		perror("Failed to print working directory");
+		abort();
+	}
+	if(EINVAL != strtoerrno("EINVAL")) {
+		fputs("strtoerrno failed\n", stderr);
+		abort();
+	}
+	if(strcmp("ERANGE", strerrno(ERANGE))) {
+		fputs("strerrno failed\n", stderr);
+		abort();
+	}
+	if(strcmp("SIGSEGV", strsigno(SIGSEGV))) {
+		fputs("strsigno failed\n", stderr);
+		abort();
+	}
+	if(SIGABRT != strtosigno("SIGABRT")) {
+		fputs("strtosigno failed\n", stderr);
+		abort();
+	}
+
+	s = xasprintf("%d", 0);
+	if(puts(s) == EOF) {
+		perror("Failed to print string");
+		abort();
+	}
+	if(strcmp("0", s)) {
+		fputs("xasprintf gave unexpected results\n", stderr);
+		abort();
+	}
+	free(s);
+
+
+}

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to