From: Brian Kubisiak <brian@kubisiak.com>
To: Mathieu Othacehe <othacehe@gnu.org>
Cc: 54619@debbugs.gnu.org
Subject: [bug#54619] [PATCH] gnu: lsof: Fix cross-compilation.
Date: Tue, 29 Mar 2022 16:05:24 -0700 [thread overview]
Message-ID: <20220329230524.uzyn5k5bdlteoz36@peregrine> (raw)
In-Reply-To: <87r16l6t00.fsf@gnu.org>
Hello Mathieu,
I see the following compiler errors during the build phase when trying
to build with `guix build --target=aarch64-linux-gnu lsof':
dsock.c: In function ‘build_IPstates’:
dsock.c:392:49: error: ‘TCP_ESTABLISHED’ undeclared (first use in this function)
392 | (void) enter_IPstate("TCP", "ESTABLISHED", TCP_ESTABLISHED);
| ^~~~~~~~~~~~~~~
dsock.c:392:49: note: each undeclared identifier is reported only once for each function it appears in
aarch64-linux-gnu-gcc -DLINUXV=00000 -DHASNORPC_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -DLSOF_VSTR=\"0.0.0\" -O -c -o usage.o usage.c
dsock.c:393:46: error: ‘TCP_SYN_SENT’ undeclared (first use in this function); did you mean ‘TCP_SYNCNT’?
393 | (void) enter_IPstate("TCP", "SYN_SENT", TCP_SYN_SENT);
| ^~~~~~~~~~~~
| TCP_SYNCNT
dsock.c:394:46: error: ‘TCP_SYN_RECV’ undeclared (first use in this function)
394 | (void) enter_IPstate("TCP", "SYN_RECV", TCP_SYN_RECV);
| ^~~~~~~~~~~~
dsock.c:395:47: error: ‘TCP_FIN_WAIT1’ undeclared (first use in this function)
395 | (void) enter_IPstate("TCP", "FIN_WAIT1", TCP_FIN_WAIT1);
| ^~~~~~~~~~~~~
dsock.c:396:47: error: ‘TCP_FIN_WAIT2’ undeclared (first use in this function)
396 | (void) enter_IPstate("TCP", "FIN_WAIT2", TCP_FIN_WAIT2);
| ^~~~~~~~~~~~~
dsock.c:397:47: error: ‘TCP_TIME_WAIT’ undeclared (first use in this function); did you mean ‘TCP_TIMESTAMP’?
397 | (void) enter_IPstate("TCP", "TIME_WAIT", TCP_TIME_WAIT);
| ^~~~~~~~~~~~~
| TCP_TIMESTAMP
dsock.c:398:43: error: ‘TCP_CLOSE’ undeclared (first use in this function); did you mean ‘TCP_CORK’?
398 | (void) enter_IPstate("TCP", "CLOSE", TCP_CLOSE);
| ^~~~~~~~~
| TCP_CORK
dsock.c:399:48: error: ‘TCP_CLOSE_WAIT’ undeclared (first use in this function)
399 | (void) enter_IPstate("TCP", "CLOSE_WAIT", TCP_CLOSE_WAIT);
| ^~~~~~~~~~~~~~
dsock.c:400:46: error: ‘TCP_LAST_ACK’ undeclared (first use in this function); did you mean ‘TCP_FLAG_ACK’?
400 | (void) enter_IPstate("TCP", "LAST_ACK", TCP_LAST_ACK);
| ^~~~~~~~~~~~
| TCP_FLAG_ACK
dsock.c:401:44: error: ‘TCP_LISTEN’ undeclared (first use in this function); did you mean ‘TCP_FASTOPEN’?
401 | (void) enter_IPstate("TCP", "LISTEN", TCP_LISTEN);
| ^~~~~~~~~~
| TCP_FASTOPEN
dsock.c:402:45: error: ‘TCP_CLOSING’ undeclared (first use in this function); did you mean ‘POF_CLOSING’?
402 | (void) enter_IPstate("TCP", "CLOSING", TCP_CLOSING);
| ^~~~~~~~~~~
| POF_CLOSING
dsock.c: In function ‘get_tcpudp’:
dsock.c:2998:20: error: ‘TCP_ESTABLISHED’ undeclared (first use in this function)
2998 | if (tp->state == TCP_ESTABLISHED) {
| ^~~~~~~~~~~~~~~
dsock.c: In function ‘get_unix’:
dsock.c:3527:64: error: ‘UINT32_MAX’ undeclared (first use in this function); did you mean ‘UINT_MAX’?
3527 | || (ty = (uint32_t)strtoul(fp[4], &ep, 16)) == (uint32_t)UINT32_MAX
| ^~~~~~~~~~
| UINT_MAX
make: *** [<builtin>: dsock.o] Error 1
make: *** Waiting for unfinished jobs....
Checking the build log, I see the following error:
Testing C library type with aarch64-linux-gnu-gcc ... ./Configure: line 2922: ./lsof_Configure_tmp_26.x: cannot execute binary file: Exec format error
done
Cannot determine C library type; assuming it is not glibc.
So I believe the compiler errors are caused by attempting to build
with glibc without adding glibc-specific build flags. The root cause
of this is that the c library detection in lsof builds and runs a
small program in order to see if it's using glibc. Since it is
building this with the cross-compiler, the resulting binary (usually)
won't be able to run on the host.
If you have binfmt_misc + qemu set up on your machine, you may not see
this error.
The solution is to point LINUX_CONF_CC at the build machine's compiler
instead of using the cross compiler for this step, which should build
and execute the test program natively.
Thanks,
Brian
next prev parent reply other threads:[~2022-03-29 23:06 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-29 1:37 [bug#54619] [PATCH] gnu: lsof: Fix cross-compilation Brian Kubisiak
2022-03-29 8:51 ` Mathieu Othacehe
2022-03-29 23:05 ` Brian Kubisiak [this message]
2022-03-30 9:53 ` bug#54619: " Mathieu Othacehe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220329230524.uzyn5k5bdlteoz36@peregrine \
--to=brian@kubisiak.com \
--cc=54619@debbugs.gnu.org \
--cc=othacehe@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).