[oe-commits] [meta-openembedded] 15/34: lmbench: fix/clean-up the build for lmbench
git at git.openembedded.org
git at git.openembedded.org
Thu Oct 17 03:29:11 UTC 2019
This is an automated email from the git hooks/post-receive script.
khem pushed a commit to branch master-next
in repository meta-openembedded.
commit 84d159681ea51b605ddc7e97d458390e4fb2e135
Author: Marek Bykowski <marek.bykowski at gmail.com>
AuthorDate: Tue Oct 15 14:13:41 2019 +0200
lmbench: fix/clean-up the build for lmbench
Fix/clean up a couple of things:
- if lmbench doesn't use a return from a function attributed to warn_unused_result
supress it
- fix buffer overflow
- define feature_test_macro __USE_GNU compiling in sched_{get,set}affinity() used
in one of the lmbench binaries
Signed-off-by: Marek Bykowski <marek.bykowski at gmail.com>
Signed-off-by: Marek Bykowski <marek.bykowski at gmail.com>
Reviewed-by: Marcin Lapaj <marcin.lapaj at tieto.com>
Signed-off-by: Khem Raj <raj.khem at gmail.com>
---
.../0001-lmbench-clean-up-the-build.patch | 434 +++++++++++++++++++++
.../recipes-benchmark/lmbench/lmbench_3.0-a9.bb | 1 +
2 files changed, 435 insertions(+)
diff --git a/meta-oe/recipes-benchmark/lmbench/lmbench-3.0-a9/0001-lmbench-clean-up-the-build.patch b/meta-oe/recipes-benchmark/lmbench/lmbench-3.0-a9/0001-lmbench-clean-up-the-build.patch
new file mode 100644
index 0000000..476b371
--- /dev/null
+++ b/meta-oe/recipes-benchmark/lmbench/lmbench-3.0-a9/0001-lmbench-clean-up-the-build.patch
@@ -0,0 +1,434 @@
+From 78b3d1b51ffd4830869cd1db01ce56a279b1c048 Mon Sep 17 00:00:00 2001
+From: Marek Bykowski <marek.bykowski at gmail.com>
+Date: Tue, 15 Oct 2019 05:30:00 -0500
+Subject: [PATCH] lmbench: clean-up the build
+
+Fix/clean up a coule of things:
+- if lmbench doesn't use the return from a function attributed to warn_unused_result
+ supress it
+- fix buffer overflow
+- define feature_test_macro __USE_GNU compiling in sched_{get,set}affinity()
+
+Signed-off-by: Marek Bykowski <marek.bykowski at gmail.com>
+---
+ src/bw_tcp.c | 2 +-
+ src/bw_unix.c | 4 ++--
+ src/hello.c | 2 +-
+ src/lat_connect.c | 2 +-
+ src/lat_fcntl.c | 4 ++--
+ src/lat_fs.c | 2 +-
+ src/lat_http.c | 6 +++---
+ src/lat_proc.c | 2 +-
+ src/lat_select.c | 2 +-
+ src/lat_tcp.c | 8 ++++----
+ src/lat_unix.c | 2 +-
+ src/lat_unix_connect.c | 4 ++--
+ src/lib_sched.c | 7 +++++--
+ src/lib_timing.c | 18 +++++++++---------
+ src/lmhttp.c | 26 +++++++++++++++++---------
+ src/memsize.c | 4 ++--
+ 16 files changed, 53 insertions(+), 42 deletions(-)
+
+diff --git a/src/bw_tcp.c b/src/bw_tcp.c
+index cc27098..bf76fac 100644
+--- a/src/bw_tcp.c
++++ b/src/bw_tcp.c
+@@ -60,7 +60,7 @@ main(int ac, char **av)
+ {
+ int conn;
+ conn = tcp_connect(optarg, TCP_DATA, SOCKOPT_NONE);
+- write(conn, "0", 1);
++ (void) !write(conn, "0", 1);
+ exit(0);
+ }
+ case 'm':
+diff --git a/src/bw_unix.c b/src/bw_unix.c
+index ad71157..493db7c 100644
+--- a/src/bw_unix.c
++++ b/src/bw_unix.c
+@@ -97,7 +97,7 @@ reader(iter_t iterations, void* cookie)
+ size_t todo = state->bytes;
+
+ while (iterations-- > 0) {
+- write(state->control[1], &todo, sizeof(todo));
++ (void) !write(state->control[1], &todo, sizeof(todo));
+ for (done = 0; done < todo; done += n) {
+ if ((n = read(state->pipes[0], state->buf, state->xfer)) <= 0) {
+ /* error! */
+@@ -115,7 +115,7 @@ writer(int controlfd, int writefd, char* buf, void* cookie)
+ struct _state* state = (struct _state*)cookie;
+
+ for ( ;; ) {
+- read(controlfd, &todo, sizeof(todo));
++ (void) !read(controlfd, &todo, sizeof(todo));
+ for (done = 0; done < todo; done += n) {
+ #ifdef TOUCH
+ touch(buf, XFERSIZE);
+diff --git a/src/hello.c b/src/hello.c
+index 15a2493..0f7f237 100644
+--- a/src/hello.c
++++ b/src/hello.c
+@@ -3,6 +3,6 @@
+ int
+ main()
+ {
+- write(1, "Hello world\n", 12);
++ (void) !write(1, "Hello world\n", 12);
+ return (0);
+ }
+diff --git a/src/lat_connect.c b/src/lat_connect.c
+index 4e5538e..2e08731 100644
+--- a/src/lat_connect.c
++++ b/src/lat_connect.c
+@@ -52,7 +52,7 @@ main(int ac, char **av)
+ int sock = tcp_connect(av[optind],
+ TCP_CONNECT,
+ SOCKOPT_NONE);
+- write(sock, "0", 1);
++ (void) !write(sock, "0", 1);
+ close(sock);
+ exit(0);
+ }
+diff --git a/src/lat_fcntl.c b/src/lat_fcntl.c
+index 01847a8..3b9fd65 100644
+--- a/src/lat_fcntl.c
++++ b/src/lat_fcntl.c
+@@ -120,8 +120,8 @@ initialize(iter_t iterations, void* cookie)
+ }
+ unlink(state->filename1);
+ unlink(state->filename2);
+- write(state->fd1, buf, sizeof(buf));
+- write(state->fd2, buf, sizeof(buf));
++ (void) !write(state->fd1, buf, sizeof(buf));
++ (void) !write(state->fd2, buf, sizeof(buf));
+ lock.l_type = F_WRLCK;
+ lock.l_whence = 0;
+ lock.l_start = 0;
+diff --git a/src/lat_fs.c b/src/lat_fs.c
+index 003a4ea..14efa25 100644
+--- a/src/lat_fs.c
++++ b/src/lat_fs.c
+@@ -117,7 +117,7 @@ mkfile(char *name, size_t size)
+
+ while (size > 0) {
+ chunk = ((size > (128*1024)) ? (128*1024) : size);
+- write(fd, buf, chunk);
++ (void) !write(fd, buf, chunk);
+ size -= chunk;
+ }
+ close(fd);
+diff --git a/src/lat_http.c b/src/lat_http.c
+index 28d04f7..6ccc88e 100644
+--- a/src/lat_http.c
++++ b/src/lat_http.c
+@@ -29,11 +29,11 @@ http(char *server, char *file, int prog)
+ if (debug) {
+ printf("%s", buf);
+ }
+- write(sock, buf, strlen(buf));
++ (void) !write(sock, buf, strlen(buf));
+ while ((n = read(sock, buf, XFERSIZE)) > 0) {
+ b += n;
+ if (echo) {
+- write(1, buf, n);
++ (void) !write(1, buf, n);
+ }
+ }
+ close(sock);
+@@ -49,7 +49,7 @@ killhttp(char *server, int prog)
+ int sock;
+
+ sock = tcp_connect(server, prog, SOCKOPT_REUSE);
+- write(sock, "EXIT", 4);
++ (void) !write(sock, "EXIT", 4);
+ close(sock);
+ }
+
+diff --git a/src/lat_proc.c b/src/lat_proc.c
+index 6142661..e368956 100644
+--- a/src/lat_proc.c
++++ b/src/lat_proc.c
+@@ -111,7 +111,7 @@ do_shell(iter_t iterations, void* cookie)
+ case 0: /* child */
+ handle_scheduler(benchmp_childid(), 1, 1);
+ close(1);
+- execlp("/bin/sh", "sh", "-c", PROG, 0);
++ execlp("/bin/sh", "sh", "-c", PROG, (char *)0);
+ exit(1);
+
+ default:
+diff --git a/src/lat_select.c b/src/lat_select.c
+index 5217878..662e0ac 100644
+--- a/src/lat_select.c
++++ b/src/lat_select.c
+@@ -131,7 +131,7 @@ server(void* cookie)
+ /* child server process */
+ while (pid == getppid()) {
+ int newsock = tcp_accept(state->sock, SOCKOPT_NONE);
+- read(newsock, &state->fid, 1);
++ (void) !read(newsock, &state->fid, 1);
+ close(newsock);
+ }
+ exit(0);
+diff --git a/src/lat_tcp.c b/src/lat_tcp.c
+index 6a11996..aad56b3 100644
+--- a/src/lat_tcp.c
++++ b/src/lat_tcp.c
+@@ -104,7 +104,7 @@ init(iter_t iterations, void* cookie)
+ exit(1);
+ }
+
+- write(state->sock, &msize, sizeof(int));
++ (void) !write(state->sock, &msize, sizeof(int));
+ }
+
+ void
+@@ -125,8 +125,8 @@ doclient(iter_t iterations, void* cookie)
+ int sock = state->sock;
+
+ while (iterations-- > 0) {
+- write(sock, state->buf, state->msize);
+- read(sock, state->buf, state->msize);
++ (void) !write(sock, state->buf, state->msize);
++ (void) !read(sock, state->buf, state->msize);
+ }
+ }
+
+@@ -169,7 +169,7 @@ doserver(int sock)
+ exit(4);
+ }
+ for (n = 0; read(sock, buf, msize) > 0; n++) {
+- write(sock, buf, msize);
++ (void) !write(sock, buf, msize);
+ }
+ free(buf);
+ } else {
+diff --git a/src/lat_unix.c b/src/lat_unix.c
+index 43ad6a3..d7ed2f3 100644
+--- a/src/lat_unix.c
++++ b/src/lat_unix.c
+@@ -93,7 +93,7 @@ initialize(iter_t iterations, void* cookie)
+ /* Child sits and ping-pongs packets back to parent */
+ signal(SIGTERM, exit);
+ while (read(pState->sv[0], pState->buf, pState->msize) == pState->msize) {
+- write(pState->sv[0], pState->buf, pState->msize);
++ (void) !write(pState->sv[0], pState->buf, pState->msize);
+ }
+ exit(0);
+ }
+diff --git a/src/lat_unix_connect.c b/src/lat_unix_connect.c
+index a66b256..d21747c 100644
+--- a/src/lat_unix_connect.c
++++ b/src/lat_unix_connect.c
+@@ -47,7 +47,7 @@ int main(int ac, char **av)
+ }
+ if (!strcmp(av[1], "-S")) {
+ int sock = unix_connect(CONNAME);
+- write(sock, "0", 1);
++ (void) !write(sock, "0", 1);
+ close(sock);
+ exit(0);
+ }
+@@ -92,7 +92,7 @@ void server_main(void)
+ for (;;) {
+ newsock = unix_accept(sock);
+ c = 0;
+- read(newsock, &c, 1);
++ (void) !read(newsock, &c, 1);
+ if (c && c == '0') {
+ unix_done(sock, CONNAME);
+ exit(0);
+diff --git a/src/lib_sched.c b/src/lib_sched.c
+index fc5f82d..635685f 100644
+--- a/src/lib_sched.c
++++ b/src/lib_sched.c
+@@ -22,6 +22,7 @@
+ #endif
+
+ #if defined(HAVE_SCHED_SETAFFINITY)
++#define __USE_GNU
+ #include <sched.h>
+ #endif
+
+@@ -205,7 +206,8 @@ sched_pin(int cpu)
+ sz = 1 + (2 * sched_ncpus()) / (8 * sizeof(unsigned long));
+ mask = (unsigned long*)malloc(sz * sizeof(unsigned long));
+ cpumask = (unsigned long*)malloc(sz * sizeof(unsigned long));
+- retval = sched_getaffinity(0, sz * sizeof(unsigned long), cpumask);
++ retval = sched_getaffinity(0, sz * sizeof(unsigned long),
++ (cpu_set_t *) cpumask);
+ if (retval < 0) perror("sched_getaffinity:");
+ if (retval < 0) return retval;
+
+@@ -229,7 +231,8 @@ sched_pin(int cpu)
+ j++;
+ }
+ }
+- retval = sched_setaffinity(0, sz * sizeof(unsigned long), mask);
++ retval = sched_setaffinity(0, sz * sizeof(unsigned long),
++ (const cpu_set_t *) mask);
+ if (retval < 0) perror("sched_setaffinity:");
+ #ifdef _DEBUG
+ fprintf(stderr, "sched_pin(%d): pid=%d, returning %d\n", cpu, (int)getpid(), retval);
+diff --git a/src/lib_timing.c b/src/lib_timing.c
+index 714f0da..db84e8f 100644
+--- a/src/lib_timing.c
++++ b/src/lib_timing.c
+@@ -398,7 +398,7 @@ benchmp_parent( int response,
+ }
+
+ /* send 'start' signal */
+- write(start_signal, signals, parallel * sizeof(char));
++ (void) !write(start_signal, signals, parallel * sizeof(char));
+
+ /* Collect 'done' signals */
+ for (i = 0; i < parallel * sizeof(char); i += bytes_read) {
+@@ -443,7 +443,7 @@ benchmp_parent( int response,
+ FD_ZERO(&fds_error);
+
+ /* tell one child to report its results */
+- write(result_signal, buf, sizeof(char));
++ (void) !write(result_signal, buf, sizeof(char));
+
+ for (; n > 0; n -= bytes_read, buf += bytes_read) {
+ bytes_read = 0;
+@@ -484,7 +484,7 @@ benchmp_parent( int response,
+ signal(SIGCHLD, SIG_DFL);
+
+ /* send 'exit' signals */
+- write(exit_signal, results, parallel * sizeof(char));
++ (void) !write(exit_signal, results, parallel * sizeof(char));
+
+ /* Compute median time; iterations is constant! */
+ set_results(merged_results);
+@@ -690,13 +690,13 @@ benchmp_interval(void* _state)
+ NULL, &timeout);
+ if (FD_ISSET(state->start_signal, &fds)) {
+ state->state = timing_interval;
+- read(state->start_signal, &c, sizeof(char));
++ (void) !read(state->start_signal, &c, sizeof(char));
+ iterations = state->iterations;
+ }
+ if (state->need_warmup) {
+ state->need_warmup = 0;
+ /* send 'ready' */
+- write(state->response, &c, sizeof(char));
++ (void) !write(state->response, &c, sizeof(char));
+ }
+ break;
+ case timing_interval:
+@@ -726,7 +726,7 @@ benchmp_interval(void* _state)
+ state->iterations = iterations;
+ if (state->state == cooldown) {
+ /* send 'done' */
+- write(state->response, (void*)&c, sizeof(char));
++ (void) !write(state->response, (void*)&c, sizeof(char));
+ iterations = state->iterations_batch;
+ }
+ break;
+@@ -741,8 +741,8 @@ benchmp_interval(void* _state)
+ * the parent to tell us to send our results back.
+ * From this point on, we will do no more "work".
+ */
+- read(state->result_signal, (void*)&c, sizeof(char));
+- write(state->response, (void*)get_results(), state->r_size);
++ (void) !read(state->result_signal, (void*)&c, sizeof(char));
++ (void) !write(state->response, (void*)get_results(), state->r_size);
+ if (state->cleanup) {
+ if (benchmp_sigchld_handler == SIG_DFL)
+ signal(SIGCHLD, SIG_DFL);
+@@ -750,7 +750,7 @@ benchmp_interval(void* _state)
+ }
+
+ /* Now wait for signal to exit */
+- read(state->exit_signal, (void*)&c, sizeof(char));
++ (void) !read(state->exit_signal, (void*)&c, sizeof(char));
+ exit(0);
+ }
+ };
+diff --git a/src/lmhttp.c b/src/lmhttp.c
+index 41d9949..080b462 100644
+--- a/src/lmhttp.c
++++ b/src/lmhttp.c
+@@ -277,26 +277,34 @@ void
+ dodir(char *name, int sock)
+ {
+ FILE *p;
+- char buf[1024];
++ char *buf;
+ char path[1024];
++ size_t bytes;
+
+ if (dflg) printf("dodir(%s)\n", name);
++ /* figure out a buf size and allocate with malloc */
++ bytes = snprintf(buf, 0, "cd %s && ls -1a", name);
++ buf = (char*) malloc(bytes + 1);
+ sprintf(buf, "cd %s && ls -1a", name);
+ p = popen(buf, "r");
+ if (!p && dflg) printf("Couldn't popen %s\n", buf);
++ bytes = snprintf(buf, 0, "\
++<HTML><HEAD>\n<TITLE>Index of /%s</TITLE></HEAD><BODY><H1>Index of /%s</H1>\n",
++ name, name);
++ buf = (char*) realloc(buf, bytes + 1);
+ sprintf(buf, "\
+ <HTML><HEAD>\n<TITLE>Index of /%s</TITLE></HEAD><BODY><H1>Index of /%s</H1>\n",
+ name, name);
+- write(sock, buf, strlen(buf));
++ (void) !write(sock, buf, strlen(buf));
+ while (fgets(buf, sizeof(buf), p)) {
+ buf[strlen(buf) - 1] = 0;
+ sprintf(path, "/%s/%s", name, buf);
+ if (dflg) printf("\t%s\n", path);
+- write(sock, "<A HREF=\"", 9);
+- write(sock, path, strlen(path));
+- write(sock, "\">", 2);
+- write(sock, buf, strlen(buf));
+- write(sock, "</A><BR>\n", 9);
++ (void) !write(sock, "<A HREF=\"", 9);
++ (void) !write(sock, path, strlen(path));
++ (void) !write(sock, "\">", 2);
++ (void) !write(sock, buf, strlen(buf));
++ (void) !write(sock, "</A><BR>\n", 9);
+ }
+ pclose(p);
+ }
+@@ -380,7 +388,7 @@ logit(int sock, char *name, int size)
+ len = sprintf(buf, "%u %u %s %u\n",
+ *((unsigned int*)&sin.sin_addr), (unsigned int)time(0), name, size);
+ if (nbytes + len >= sizeof(logbuf)) {
+- write(logfile, logbuf, nbytes);
++ (void) !write(logfile, logbuf, nbytes);
+ nbytes = 0;
+ }
+ bcopy(buf, &logbuf[nbytes], len);
+@@ -390,7 +398,7 @@ logit(int sock, char *name, int size)
+ void die()
+ {
+ if (nbytes) {
+- write(logfile, logbuf, nbytes);
++ (void) !write(logfile, logbuf, nbytes);
+ nbytes = 0;
+ }
+ exit(1);
+diff --git a/src/memsize.c b/src/memsize.c
+index 82d7faf..35fff9d 100644
+--- a/src/memsize.c
++++ b/src/memsize.c
+@@ -111,7 +111,7 @@ timeit(char *where, size_t size)
+ clear_alarm();
+ if ((sum / n) > too_long || alarm_triggered) {
+ size = range - incr;
+- fprintf(stderr, "Error! Memory testing timeout! Touch one page of memory needs more than %d (usecs)\n ", too_long);
++ fprintf(stderr, "Error! Memory testing timeout! Touch one page of memory needs more than %zu (usecs)\n ", too_long);
+ break;
+ }
+ for (s = s_prev; s <= range; s_prev = s, s *= 2)
+@@ -157,7 +157,7 @@ test_malloc(size_t size)
+ close(fid[0]);
+ p = malloc(size);
+ result = (p ? 1 : 0);
+- write(fid[1], &result, sizeof(int));
++ (void) !write(fid[1], &result, sizeof(int));
+ close(fid[1]);
+ if (p) free(p);
+ exit(0);
diff --git a/meta-oe/recipes-benchmark/lmbench/lmbench_3.0-a9.bb b/meta-oe/recipes-benchmark/lmbench/lmbench_3.0-a9.bb
index 7e20b7d..ce3448c 100644
--- a/meta-oe/recipes-benchmark/lmbench/lmbench_3.0-a9.bb
+++ b/meta-oe/recipes-benchmark/lmbench/lmbench_3.0-a9.bb
@@ -26,6 +26,7 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/lmbench/lmbench-${PV}.tgz \
file://0001-Check-for-musl-define-guard-before-redefining-sockle.patch \
file://0002-build-Adjust-CFLAGS-LDFLAGS-to-append-values-passed-.patch \
file://0001-src-Makefile-use-libdir-instead-of-hardcoded-lib.patch \
+ file://0001-lmbench-clean-up-the-build.patch \
"
SRC_URI[md5sum] = "b3351a3294db66a72e2864a199d37cbf"
SRC_URI[sha256sum] = "cbd5777d15f44eab7666dcac418054c3c09df99826961a397d9acf43d8a2a551"
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Openembedded-commits
mailing list