From ea680f0524c1644642b55cadfe91b22797ec3530 Mon Sep 17 00:00:00 2001
From: Luca Boccassi <luca.boccassi@microsoft.com>
Date: Wed, 17 Nov 2021 01:44:33 +0000
Subject: [PATCH] coredump: move elf parsing utilities to src/shared/elf-util

---
 meson.build                                      | 1 -
 src/coredump/coredump.c                          | 7 +------
 src/coredump/meson.build                         | 6 ------
 src/{coredump/stacktrace.c => shared/elf-util.c} | 2 +-
 src/{coredump/stacktrace.h => shared/elf-util.h} | 0
 src/shared/meson.build                           | 7 +++++++
 6 files changed, 9 insertions(+), 14 deletions(-)
 rename src/{coredump/stacktrace.c => shared/elf-util.c} (99%)
 rename src/{coredump/stacktrace.h => shared/elf-util.h} (100%)

diff --git a/meson.build b/meson.build
index b0054b66672..987ceb37b5b 100644
--- a/meson.build
+++ b/meson.build
@@ -2822,7 +2822,6 @@ if conf.get('ENABLE_COREDUMP') == 1
                 link_with : [libshared],
                 dependencies : [threads,
                                 libacl,
-                                libdw,
                                 libxz,
                                 liblz4,
                                 libzstd],
diff --git a/src/coredump/coredump.c b/src/coredump/coredump.c
index c4b393631ab..e2d8b382687 100644
--- a/src/coredump/coredump.c
+++ b/src/coredump/coredump.c
@@ -7,11 +7,6 @@
 #include <sys/xattr.h>
 #include <unistd.h>
 
-#if HAVE_ELFUTILS
-#include <dwarf.h>
-#include <elfutils/libdwfl.h>
-#endif
-
 #include "sd-daemon.h"
 #include "sd-journal.h"
 #include "sd-login.h"
@@ -27,6 +22,7 @@
 #include "copy.h"
 #include "coredump-vacuum.h"
 #include "dirent-util.h"
+#include "elf-util.h"
 #include "escape.h"
 #include "fd-util.h"
 #include "fileio.h"
@@ -43,7 +39,6 @@
 #include "signal-util.h"
 #include "socket-util.h"
 #include "special.h"
-#include "stacktrace.h"
 #include "stat-util.h"
 #include "string-table.h"
 #include "string-util.h"
diff --git a/src/coredump/meson.build b/src/coredump/meson.build
index 5607a78cf53..b832192c9f9 100644
--- a/src/coredump/meson.build
+++ b/src/coredump/meson.build
@@ -6,12 +6,6 @@ systemd_coredump_sources = files('''
         coredump-vacuum.h
 '''.split())
 
-if conf.get('HAVE_ELFUTILS') == 1
-        systemd_coredump_sources += files(
-                'stacktrace.c',
-                'stacktrace.h')
-endif
-
 coredumpctl_sources = files('coredumpctl.c')
 
 if conf.get('ENABLE_COREDUMP') == 1 and install_sysconfdir_samples
diff --git a/src/coredump/stacktrace.c b/src/shared/elf-util.c
similarity index 99%
rename from src/coredump/stacktrace.c
rename to src/shared/elf-util.c
index b430f2b3eae..12b42bf90fb 100644
--- a/src/coredump/stacktrace.c
+++ b/src/shared/elf-util.c
@@ -10,6 +10,7 @@
 #include <unistd.h>
 
 #include "alloc-util.h"
+#include "elf-util.h"
 #include "errno-util.h"
 #include "fileio.h"
 #include "fd-util.h"
@@ -19,7 +20,6 @@
 #include "macro.h"
 #include "process-util.h"
 #include "rlimit-util.h"
-#include "stacktrace.h"
 #include "string-util.h"
 #include "util.h"
 
diff --git a/src/coredump/stacktrace.h b/src/shared/elf-util.h
similarity index 100%
rename from src/coredump/stacktrace.h
rename to src/shared/elf-util.h
diff --git a/src/shared/meson.build b/src/shared/meson.build
index 130c03ec99a..2187cc62052 100644
--- a/src/shared/meson.build
+++ b/src/shared/meson.build
@@ -388,6 +388,12 @@ if conf.get('ENABLE_NSCD') == 1
         shared_sources += files('nscd-flush.c')
 endif
 
+if conf.get('HAVE_ELFUTILS') == 1
+        shared_sources += files(
+                'elf-util.c',
+                'elf-util.h')
+endif
+
 generate_ip_protocol_list = find_program('generate-ip-protocol-list.sh')
 ip_protocol_list_txt = custom_target(
         'ip-protocol-list.txt',
@@ -436,6 +442,7 @@ libshared_deps = [threads,
                   libcap,
                   libcrypt,
                   libdl,
+                  libdw,
                   libgcrypt,
                   libiptc,
                   libkmod,