public inbox for dwarves@vger.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox