!485 fix gdb debug hashmap bucket counts entry sizes issue

From: @protkhn 
Reviewed-by: @licunlong 
Signed-off-by: @licunlong
This commit is contained in:
openeuler-ci-bot 2023-12-18 06:49:52 +00:00 committed by Gitee
commit dc5a6dd2a7
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
2 changed files with 51 additions and 1 deletions

View File

@ -0,0 +1,46 @@
From 3aff6c79170717478ba89bb1a3b8bb2063adc735 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
Date: Wed, 27 May 2020 11:37:58 +0200
Subject: [PATCH] gdb: update accessors for bucket counts and entry sizes
Afaict, this code never worked, since even when this code was added in
2ea8c08306c7e33f8217a878cf990fc491c9432c, neither all_entry_sizes nor
all_direct_buckets were defined.
---
tools/gdb-sd_dump_hashmaps.py | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/tools/gdb-sd_dump_hashmaps.py b/tools/gdb-sd_dump_hashmaps.py
index 4e8593f..6933d2d 100644
--- a/tools/gdb-sd_dump_hashmaps.py
+++ b/tools/gdb-sd_dump_hashmaps.py
@@ -13,8 +13,7 @@ class sd_dump_hashmaps(gdb.Command):
def invoke(self, arg, from_tty):
d = gdb.parse_and_eval("hashmap_debug_list")
- all_entry_sizes = gdb.parse_and_eval("all_entry_sizes")
- all_direct_buckets = gdb.parse_and_eval("all_direct_buckets")
+ hashmap_type_info = gdb.parse_and_eval("hashmap_type_info")
uchar_t = gdb.lookup_type("unsigned char")
ulong_t = gdb.lookup_type("unsigned long")
debug_offset = gdb.parse_and_eval("(unsigned long)&((HashmapBase*)0)->debug")
@@ -30,14 +29,14 @@ class sd_dump_hashmaps(gdb.Command):
else:
storage_ptr = h["direct"]["storage"].cast(uchar_t.pointer())
n_entries = h["n_direct_entries"]
- n_buckets = all_direct_buckets[int(h["type"])];
+ n_buckets = hashmap_type_info[h["type"]]["n_direct_buckets"]
t = ["plain", "ordered", "set"][int(h["type"])]
print("{}, {}, {}, {}, {}, {}, {} ({}:{})".format(t, h["hash_ops"], bool(h["has_indirect"]), n_entries, d["max_entries"], n_buckets, d["func"], d["file"], d["line"]))
if arg != "" and n_entries > 0:
- dib_raw_addr = storage_ptr + (all_entry_sizes[h["type"]] * n_buckets)
+ dib_raw_addr = storage_ptr + hashmap_type_info[h["type"]]["entry_size"] * n_buckets
histogram = {}
for i in xrange(0, n_buckets):
--
2.27.0

View File

@ -16,7 +16,7 @@
Name: systemd
Url: https://www.freedesktop.org/wiki/Software/systemd
Version: 243
Release: 68
Release: 69
License: MIT and LGPLv2+ and GPLv2+
Summary: System and Service Manager
@ -264,6 +264,7 @@ Patch0216: backport-core-make-sure-we-don-t-get-confused-when-setting-TE.pa
Patch0217: backport-mount-setup-change-the-system-mount-propagation-to-s.patch
Patch0218: backport-core-transition-to-FINAL_SIGTERM-state-after-ExecSto.patch
Patch0219: backport-journalctl-verify-that-old-entries-are-not-sealed-wi.patch
Patch0220: backport-gdb-update-accessors-for-bucket-counts-and-entry-sizes.patch
#openEuler
Patch9002: 1509-fix-journal-file-descriptors-leak-problems.patch
@ -1671,6 +1672,9 @@ fi
%exclude /usr/share/man/man3/*
%changelog
* Thu Dec 14 2023 hanjinpeng <hanjinpeng@kylinos.cn> - 243-69
- fix gdb debug hashmap bucket counts and entry sizes issue
* Tue Dec 12 2023 hongjinghao <hongjinghao@huawei.com> - 243-68
- backport: sync patches from systemd community