Compare commits

...

10 Commits

Author SHA1 Message Date
openeuler-ci-bot
8b2eeab754
!56 [sync] PR-55: riscv64: 增加--enable-frame-pointers配置选项
From: @openeuler-sync-bot 
Reviewed-by: @liqingqing_1229 
Signed-off-by: @liqingqing_1229
2024-04-25 01:07:10 +00:00
laokz
10a4252a65 riscv64: force --enable-frame-pointers configure option
Configure script detect -fno-omit-frame-pointer and -momit-leaf-frame-pointer
compile options both together, see,
  https://github.com/gperftools/gperftools/blob/master/configure.ac#L211

For RISC-V, until gcc14 -momit-leaf-frame-pointer was not supported, see,
  https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=39663298b5934831a0125e12f113ebd83248c3be

We use gcc12, thus the detection would be failed and no fp used in the code,
and then stacktrace_unittest's generic_fp test failed. Add --enable-frame-pointers
configure option can force -fno-omit-frame-pointer alone been used.

Sigend-off-by: laokz <zhangkai@iscas.ac.cn>
(cherry picked from commit 1d913d802acb93f2ef4f648f87ee28385f9a8553)
2024-04-24 17:09:12 +08:00
openeuler-ci-bot
b8bfb3ff2b
!53 Upgrade to 2.15
From: @ni-cunshu 
Reviewed-by: @wangbin224 
Signed-off-by: @wangbin224
2024-02-07 03:11:00 +00:00
Ni Cunshu
e55870e020 Upgrade to 2.15
Signed-off-by: Ni Cunshu <nicunshu@huawei.com>
2024-02-06 21:26:37 +08:00
openeuler-ci-bot
f01e51c651
!46 Resolving loongarch64 build error
From: @dpdwaj 
Reviewed-by: @liqingqing_1229 
Signed-off-by: @liqingqing_1229
2023-07-14 07:46:11 +00:00
doupengda
6f2f66bd01 Resolving loongarch64 build error 2023-07-12 14:35:05 +08:00
openeuler-ci-bot
38e26b3eb2
!35 License compliance rectification
From: @lauk001 
Reviewed-by: @liqingqing_1229 
Signed-off-by: @liqingqing_1229
2022-08-05 01:01:23 +00:00
lauk001
039a5230c6 License compliance rectification 2022-08-04 14:51:45 +08:00
openeuler-ci-bot
cb6db3c4ce
!33 upgrade to 2.10
From: @liqingqing_1229 
Reviewed-by: @yang_yanchao 
Signed-off-by: @yang_yanchao
2022-07-19 09:12:49 +00:00
liqingqing_1229
937cd5221f upgrade to 2.10 2022-07-19 16:07:44 +08:00
7 changed files with 54 additions and 118 deletions

View File

@ -1,33 +0,0 @@
From 85158d45ec66c34f5903a15c3b74600a925703ef Mon Sep 17 00:00:00 2001
From: zhangyiru <zhanguyiru@huawei.com>
Date: Thu, 14 Oct 2021 22:16:15 +0800
Subject: [PATCH] avoid display problem if memleak exceeds range of int
if memleak exceeds range of int, heap checker result is incorrect, so
change it to size_t
---
src/heap-profile-table.cc | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/heap-profile-table.cc b/src/heap-profile-table.cc
index c3ce41c..1001fb3 100644
--- a/src/heap-profile-table.cc
+++ b/src/heap-profile-table.cc
@@ -517,7 +517,7 @@ HeapProfileTable::Snapshot* HeapProfileTable::NonLiveSnapshot(
// Information kept per unique bucket seen
struct HeapProfileTable::Snapshot::Entry {
int count;
- int bytes;
+ size_t bytes;
Bucket* bucket;
Entry() : count(0), bytes(0) { }
@@ -592,7 +592,7 @@ void HeapProfileTable::Snapshot::ReportLeaks(const char* checker_name,
for (int i = 0; i < to_report; i++) {
const Entry& e = entries[i];
base::RawPrinter printer(buffer, kBufSize);
- printer.Printf("Leak of %d bytes in %d objects allocated from:\n",
+ printer.Printf("Leak of %zu bytes in %d objects allocated from:\n",
e.bytes, e.count);
for (int j = 0; j < e.bucket->depth; j++) {
const void* pc = e.bucket->stack[j];
--
2.27.0

BIN
gperftools-2.15.tar.gz Normal file

Binary file not shown.

Binary file not shown.

View File

@ -1,18 +1,16 @@
Name: gperftools
Version: 2.9.1
Release: 3
Version: 2.15
Release: 2
Summary: high-performance malloc and performance analysis tools
License: BSD
License: BSD-3-Clause
URL: https://github.com/gperftools/gperftools
Source0: https://github.com/gperftools/gperftools/releases/download/%{name}-%{version}/%{name}-%{version}.tar.gz
patch1: gperftools-generic-dynamic-tls.patch
Patch9000: issue-1122-fix-bus-error-on-aarch64.patch
#https://github.com/gperftools/gperftools/issues/1309
#Patch9001: skip-arm-in-stacktrace_unittest.patch
Patch9000: skip-arm-in-stacktrace_unittest.patch
#https://github.com/gperftools/gperftools/issues/890
Patch9001: skip-heapchecker-in-arm-arch.patch
Patch9002: avoid-exceed-int-range.patch
BuildRequires: autoconf automake gcc-c++
BuildRequires: libtool libunwind-devel perl-generators
@ -70,6 +68,9 @@ CXXFLAGS=`echo $RPM_OPT_FLAGS -fno-strict-aliasing -Wno-unused-local-typedefs -D
%configure \
%ifarch s390x aarch64
--disable-general-dynamic-tls \
%endif
%ifarch riscv64
--enable-frame-pointers \
%endif
--disable-dynamic-sized-delete-support \
@ -107,6 +108,22 @@ LD_LIBRARY_PATH=./.libs make check
%{_mandir}/man1/*.1.gz
%changelog
* Mon Apr 22 2024 laokz <zhangkai@iscas.ac.cn> - 2.15-2
- riscv64: force --enable-frame-pointers due to unsupported
-momit-leaf-frame-pointer compile option until gcc14
* Mon Feb 5 2024 nicunshu <nicunshu@huawei.com> - 2.15-1
- Upgrade tp 2.15
* Wed Jul 12 2023 doupengda <doupengda@loongson.cn> - 2.10-3
- Resolving loongarch64 build error
* Wed Aug 03 2022 liukuo <liukuo@kylinos.cn> - 2.10-2
- License compliance rectification
* Tue Jul 19 2022 Qingqing Li <liqingqing3@huawei.com> - 2.10-1
- upgrade to 2.10
* Mon Feb 28 2022 liusirui <liusirui@huawei.com> - 2.9.1-3
- remove the dependency of the main package and pprof
@ -159,4 +176,4 @@ LD_LIBRARY_PATH=./.libs make check
- DESC: peripheral package quality reinforcement: backport bugfix patches from community
* Tue Mar 5 2019 openEuler Buildteam <buildteam@openeuler.org> - 2.7-2
- Package init
- Package init

View File

@ -1,42 +0,0 @@
From 42dbe9e2ced74ae7f0f3b70daabf634edf44d3d3 Mon Sep 17 00:00:00 2001
From: Zhipeng Xie <xiezhipeng1@huawei.com>
Date: Thu, 13 Jun 2019 23:16:43 +0800
Subject: [PATCH] issue-1122: fix bus error on aarch64
According to the ARMv8 Instruction Set Overview, among other documents,
"... if SP is used as the base register then the value of the stack
pointer prior to adding any offset must be quadword (16 byte) aligned,
or else a stack alignment exception will be generated.". So, we pass
the child_stack 16 byte aligned to sys_clone.
Signed-off-by: Zhipeng Xie <xiezhipeng1@huawei.com>
---
src/base/linuxthreads.cc | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/base/linuxthreads.cc b/src/base/linuxthreads.cc
index 891e70c..00b1ea3 100644
--- a/src/base/linuxthreads.cc
+++ b/src/base/linuxthreads.cc
@@ -105,6 +105,7 @@ static int local_clone (int (*fn)(void *), void *arg, ...)
#define CLONE_STACK_SIZE 4096
#endif
+#define ALIGN(x, a) (((x) + (a) - 1) & ~((a) - 1))
static int local_clone (int (*fn)(void *), void *arg, ...) {
/* Leave 4kB of gap between the callers stack and the new clone. This
* should be more than sufficient for the caller to call waitpid() until
@@ -120,7 +121,9 @@ static int local_clone (int (*fn)(void *), void *arg, ...) {
* is being debugged. This is OK and the error code will be reported
* correctly.
*/
- return sys_clone(fn, (char *)&arg - CLONE_STACK_SIZE,
+ void *child_stack = (void *)ALIGN(((unsigned long)&arg - CLONE_STACK_SIZE),
+ 16);
+ return sys_clone(fn, child_stack,
CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_UNTRACED, arg, 0, 0, 0);
}
--
1.7.12.4

View File

@ -8,27 +8,23 @@ function is not affected, so skip it.
Signed-off-by: zhangyiru <zhangyiru3@huawei.com>
---
src/tests/stacktrace_unittest.cc | 5 +++++
1 file changed, 5 insertions(+)
src/tests/stacktrace_unittest.cc | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/tests/stacktrace_unittest.cc b/src/tests/stacktrace_unittest.cc
index e55a632..85c0bcd 100644
index 55cb054..85e5916 100644
--- a/src/tests/stacktrace_unittest.cc
+++ b/src/tests/stacktrace_unittest.cc
@@ -285,8 +285,13 @@ void ATTRIBUTE_NOINLINE CheckStackTrace(int i) {
//-----------------------------------------------------------------------//
@@ -376,6 +376,10 @@ const char* TEST_bump_stacktrace_implementation(const char*);
}
int main(int argc, char ** argv) {
+#if defined(__x86_64__)
CheckStackTrace(0);
printf("PASS\n");
+#else
int main(int argc, char** argv) {
+#if defined(__aarch64__)
+ printf("ARM SKIP\n");
+ exit(77);
+#endif
#if TEST_UCONTEXT_BITS
leaf_capture_fn = CaptureLeafUContext;
if (argc > 1 && strcmp(argv[1], "--skip-ucontext") == 0) {
argc--;
argv--;
--
1.8.3.1
2.33.0

View File

@ -9,8 +9,8 @@ testcases.
Signed-off-by: zhangyiru <zhangyiru3@huawei.com>
---
src/tests/heap-checker-death_unittest.sh | 5 +++++
src/tests/heap-checker_unittest.sh | 5 +++++
2 files changed, 10 insertions(+)
src/tests/heap-checker_unittest.cc | 4 ++++
2 files changed, 9 insertions(+)
diff --git a/src/tests/heap-checker-death_unittest.sh b/src/tests/heap-checker-death_unittest.sh
index 69db0c9..deac493 100755
@ -19,7 +19,7 @@ index 69db0c9..deac493 100755
@@ -34,6 +34,11 @@
# Run the heap checker unittest in a mode where it is supposed to crash and
# return an error if it doesn't.
+arch=$(uname -r | grep x86)
+if [[ $arch == "" ]]; then
+# skip this test, libtool define EXIT_SKIP=77
@ -28,22 +28,20 @@ index 69db0c9..deac493 100755
# We expect BINDIR to be set in the environment.
# If not, we set it to some reasonable value.
BINDIR="${BINDIR:-.}"
diff --git a/src/tests/heap-checker_unittest.sh b/src/tests/heap-checker_unittest.sh
index 3c9c0e9..7c27044 100755
--- a/src/tests/heap-checker_unittest.sh
+++ b/src/tests/heap-checker_unittest.sh
@@ -37,6 +37,11 @@
# and heap checker via environment variables. This test makes sure
# they all play well together.
+arch=$(uname -r | grep x86)
+if [[ $arch == "" ]]; then
+# skip this test, libtool define EXIT_SKIP=77
+ exit 77
+fi
# We expect BINDIR and PPROF_PATH to be set in the environment.
# If not, we set them to some reasonable values
BINDIR="${BINDIR:-.}"
--
2.27.0
diff --git a/src/tests/heap-checker_unittest.cc b/src/tests/heap-checker_unittest.cc
index 9a7086c..be483fe 100644
--- a/src/tests/heap-checker_unittest.cc
+++ b/src/tests/heap-checker_unittest.cc
@@ -1412,6 +1412,10 @@ bool spawn_subtest(const char* mode, char** argv) {
}
int main(int argc, char** argv) {
+#if defined(__aarch64__)
+ printf("ARM SKIP\n");
+ exit(77);
+#endif
if (getenv("HEAPCHECK") == nullptr) {
CHECK(!HeapLeakChecker::IsActive());
--
2.33.0