All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Douglas RAILLARD <douglas.raillard@arm.com>
Cc: acme@redhat.com, dwarves@vger.kernel.org
Subject: Re: [PATCH] CMakeLists.txt: Add STATIC_LINK option
Date: Fri, 15 Oct 2021 11:39:34 -0300	[thread overview]
Message-ID: <YWmSpjBrLUFF87Tj@kernel.org> (raw)
In-Reply-To: <YWmOOP0/fF2BEd/s@kernel.org>

Em Fri, Oct 15, 2021 at 11:20:40AM -0300, Arnaldo Carvalho de Melo escreveu:
> Em Fri, Oct 15, 2021 at 10:22:43AM -0300, Arnaldo Carvalho de Melo escreveu:
> > Em Fri, Oct 15, 2021 at 10:18:41AM -0300, Arnaldo Carvalho de Melo escreveu:
> > CMake Error at cmake/modules/FindDWARF.cmake:103 (message):
> >   Could NOT find some ELF and DWARF libraries, please install the missing
> >   packages
> > Call Stack (most recent call first):
> >   CMakeLists.txt:64 (find_package)
> > 
> > 
> > -- Configuring incomplete, errors occurred!
> > See also "/var/home/acme/git/pahole/build/CMakeFiles/CMakeOutput.log".
> > ⬢[acme@toolbox build]$
> > 
> > Which means I don't have those static library files, will try installing
> > them.
> 
> I'm trying with the latest fedora that comes with static libraries,
> fedora:32, and there I noticed that we need to look for libzstd as well,
> I added it manually to:
> 
> target_link_libraries(dwarves ${DWARF_LIBRARIES} ${ZLIB_LIBRARIES} ${LIBBPF_LIBRARIES} ${ARGP_LIBRARY} ${OBSTACK_LIBRARY} ${BZ2_LIBRARY} ${LZMA_LIBRARY} -lzstd)
> 
> [root@cc85f3a7b96f dwarves-1.22]# rpm -qa | grep -- -static
> zlib-static-1.2.11-21.fc32.x86_64
> glibc-static-2.31-6.fc32.x86_64
> elfutils-devel-static-0.183-1.fc32.x86_64
> xz-static-5.2.5-1.fc32.x86_64
> libxcrypt-static-4.4.20-2.fc32.x86_64
> libzstd-static-1.4.9-1.fc32.x86_64
> elfutils-libelf-devel-static-0.183-1.fc32.x86_64
> bzip2-static-1.0.8-2.fc32.x86_64
> [root@cc85f3a7b96f dwarves-1.22]# cat /etc/fedora-release
> Fedora release 32 (Thirty Two)
> [root@cc85f3a7b96f dwarves-1.22]#
> 
> now I'm at:
> 
> /usr/bin/ld: /usr/lib/gcc/x86_64-redhat-linux/10/../../../../lib64/libdw.a(debuginfod-client.o): in function `__libdwfl_debuginfod_init':
> (.text.startup[.text.startup.group]+0x1b): undefined reference to `dlopen'
> /usr/bin/ld: (.text.startup[.text.startup.group]+0x36): undefined reference to `dlsym'
> /usr/bin/ld: (.text.startup[.text.startup.group]+0x4f): undefined reference to `dlsym'
> /usr/bin/ld: (.text.startup[.text.startup.group]+0x68): undefined reference to `dlsym'
> /usr/bin/ld: (.text.startup[.text.startup.group]+0x81): undefined reference to `dlsym'
> /usr/bin/ld: (.text.startup[.text.startup.group]+0xe0): undefined reference to `dlclose'
> 
> that needs some more magic that I already forgot :-\
> 
> But now out to lunch.

Before that:

[root@cc85f3a7b96f dwarves-1.22]# file build/pahole
build/pahole: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, BuildID[sha1]=c972bee0f67994e0c161ac3cf8bcc8b7f609d6ee, for GNU/Linux 3.2.0, with debug_info, not stripped, too many notes (256)
[root@cc85f3a7b96f dwarves-1.22]#

This after applying the patch below after yours, but then:

[root@cc85f3a7b96f dwarves-1.22]#  build/pahole  build/pahole
Segmentation fault (core dumped)
[root@cc85f3a7b96f dwarves-1.22]#

That doesn't happen with a non-static build:

[root@cc85f3a7b96f dwarves-1.22]# build/pahole list_head
struct list_head {
	struct list_head *         next;                 /*     0     8 */
	struct list_head *         prev;                 /*     8     8 */

	/* size: 16, cachelines: 1, members: 2 */
	/* last cacheline: 16 bytes */
};
[root@cc85f3a7b96f dwarves-1.22]# ldd build/pahole
	linux-vdso.so.1 (0x00007fff08654000)
	libdwarves_reorganize.so.1 => /root/dwarves-1.22/build/libdwarves_reorganize.so.1 (0x00007f8af5b45000)
	libdwarves.so.1 => /root/dwarves-1.22/build/libdwarves.so.1 (0x00007f8af5aad000)
	libdw.so.1 => /lib64/libdw.so.1 (0x00007f8af5a07000)
	libelf.so.1 => /lib64/libelf.so.1 (0x00007f8af59ec000)
	libz.so.1 => /lib64/libz.so.1 (0x00007f8af59d2000)
	libbz2.so.1 => /lib64/libbz2.so.1 (0x00007f8af59bf000)
	liblzma.so.5 => /lib64/liblzma.so.5 (0x00007f8af5993000)
	libzstd.so.1 => /lib64/libzstd.so.1 (0x00007f8af58b5000)
	libdl.so.2 => /lib64/libdl.so.2 (0x00007f8af58ae000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f8af588c000)
	libc.so.6 => /lib64/libc.so.6 (0x00007f8af56c2000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f8af5b4d000)
[root@cc85f3a7b96f dwarves-1.22]#

- Arnaldo

diff --git a/CMakeLists.txt b/CMakeLists.txt
index ba467bf4dcff3106..73d8919056281f94 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -127,7 +127,7 @@ endif()
 add_library(dwarves ${dwarves_LIB_SRCS})
 set_target_properties(dwarves PROPERTIES VERSION 1.0.0 SOVERSION 1)
 set_target_properties(dwarves PROPERTIES INTERFACE_LINK_LIBRARIES "")
-target_link_libraries(dwarves ${DWARF_LIBRARIES} ${ZLIB_LIBRARIES} ${LIBBPF_LIBRARIES} ${ARGP_LIBRARY} ${OBSTACK_LIBRARY} ${BZ2_LIBRARY} ${LZMA_LIBRARY})
+target_link_libraries(dwarves ${DWARF_LIBRARIES} ${ZLIB_LIBRARIES} ${LIBBPF_LIBRARIES} ${ARGP_LIBRARY} ${OBSTACK_LIBRARY} ${BZ2_LIBRARY} ${LZMA_LIBRARY} ${ZSTD_LIBRARY} ${DL_LIBRARY})
 
 set(dwarves_emit_LIB_SRCS dwarves_emit.c)
 add_library(dwarves_emit ${dwarves_emit_LIB_SRCS})
diff --git a/cmake/modules/FindDWARF.cmake b/cmake/modules/FindDWARF.cmake
index 1b4ac499ea07e267..8fa5cc47cea86486 100644
--- a/cmake/modules/FindDWARF.cmake
+++ b/cmake/modules/FindDWARF.cmake
@@ -47,6 +47,16 @@ find_library(LZMA_LIBRARY
 	PATHS /usr/lib /usr/local/lib /usr/lib64 /usr/local/lib64 ~/usr/local/lib ~/usr/local/lib64
 )
 
+find_library(ZSTD_LIBRARY
+	NAMES zstd
+	PATHS /usr/lib /usr/local/lib /usr/lib64 /usr/local/lib64 ~/usr/local/lib ~/usr/local/lib64
+)
+
+find_library(DL_LIBRARY
+	NAMES dl
+	PATHS /lib /lib64 /usr/lib /usr/local/lib /usr/lib64 /usr/local/lib64 ~/usr/local/lib ~/usr/local/lib64
+)
+
 if (DWARF_INCLUDE_DIR AND LIBDW_INCLUDE_DIR AND DWARF_LIBRARY AND ELF_LIBRARY)
 	set(DWARF_FOUND TRUE)
 	set(DWARF_LIBRARIES ${DWARF_LIBRARY} ${ELF_LIBRARY})

  reply	other threads:[~2021-10-15 14:39 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-15 10:10 [PATCH] CMakeLists.txt: Add STATIC_LINK option Douglas RAILLARD
2021-10-15 13:18 ` Arnaldo Carvalho de Melo
2021-10-15 13:22   ` Arnaldo Carvalho de Melo
2021-10-15 14:20     ` Arnaldo Carvalho de Melo
2021-10-15 14:39       ` Arnaldo Carvalho de Melo [this message]
2021-10-18  9:57       ` Douglas Raillard
2021-10-19 15:24         ` Arnaldo Carvalho de Melo
2021-10-19 16:03           ` Douglas Raillard
2021-10-19 17:29           ` Douglas Raillard
2021-10-20 12:49             ` Arnaldo Carvalho de Melo

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

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=YWmSpjBrLUFF87Tj@kernel.org \
    --to=acme@kernel.org \
    --cc=acme@redhat.com \
    --cc=douglas.raillard@arm.com \
    --cc=dwarves@vger.kernel.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.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.