From: Eric Wong <e@80x24.org>
To: mwrap-perl@80x24.org
Subject: [PATCH 1/6] test cfree and aligned_alloc aliases
Date: Tue, 15 Nov 2022 19:33:36 +0000 [thread overview]
Message-ID: <20221115193341.3948245-2-e@80x24.org> (raw)
In-Reply-To: <20221115193341.3948245-1-e@80x24.org>
These aliases aren't necessary for modern glibc, at least,
but they also don't hurt. This quiets an old warning about
cfree.
---
.gitignore | 1 +
Mwrap.xs | 4 +++-
t/mwrap.t | 31 +++++++++++++++++++++++++++++++
3 files changed, 35 insertions(+), 1 deletion(-)
diff --git a/.gitignore b/.gitignore
index 10623de..c228ee1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,3 +9,4 @@
/blib
/pm_to_blib
/config.mak
+/_Inline
diff --git a/Mwrap.xs b/Mwrap.xs
index 31e9394..518edb1 100644
--- a/Mwrap.xs
+++ b/Mwrap.xs
@@ -542,8 +542,10 @@ int posix_memalign(void **p, size_t alignment, size_t size)
return internal_memalign(p, alignment, size, RETURN_ADDRESS(0));
}
+/* these aliases aren't needed for glibc, not sure about other libcs... */
void *aligned_alloc(size_t, size_t) __attribute__((alias("memalign")));
-void cfree(void *) __attribute__((alias("free")));
+void cfree(void *) __attribute__((__nothrow__))
+ __attribute__((__leaf__)) __attribute__((alias("free")));
void *valloc(size_t size)
{
diff --git a/t/mwrap.t b/t/mwrap.t
index c6e589c..0bb3ea8 100644
--- a/t/mwrap.t
+++ b/t/mwrap.t
@@ -141,6 +141,37 @@ diag slurp($out);
is(Devel::Mwrap::quiet(1), 0, 'was not quiet, before');
is(Devel::Mwrap::quiet(0), 1, 'was quiet, before');
+SKIP: {
+ eval { require Inline::C } or skip 'Inline::C not available', 1;
+ $ENV{TEST_ALIASES} or skip 'TEST_ALIASES unset', 1;
+ my $c_src = <<'EOM';
+#include <stdlib.h>
+void cfree(void *); /* lold glibc version */
+int test_aliases()
+{
+ size_t i;
+ void *p;
+ for (i = 0; i < 100; i++) {
+ if (i % 3 == 0)
+ p = aligned_alloc(64, i);
+ else
+ p = malloc(i);
+ if (i % 2 == 0)
+ cfree(p);
+ else
+ free(p);
+ }
+ return 3;
+}
+EOM
+ eval <<'EOM';
+use Inline C => $c_src, BUILD_NOISY => 1
+EOM
+ BAIL_OUT "cannot build $@" if $@;
+ is(test_aliases(), 3,
+ 'aligned_alloc + cfree function ran w/o crashing');
+};
+
done_testing();
sub slurp {
next prev parent reply other threads:[~2022-11-15 19:33 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-15 19:33 [PATCH 0/6] bugfixes, workarounds, and built-in malloc Eric Wong
2022-11-15 19:33 ` Eric Wong [this message]
2022-11-15 19:33 ` [PATCH 2/6] Devel::Mwrap::reset is a no-op if `totals' not initialized Eric Wong
2022-11-15 19:33 ` [PATCH 3/6] block signals when spawning URCU-related threads Eric Wong
2022-11-15 19:33 ` [PATCH 4/6] document of kbuf allocation size Eric Wong
2022-11-15 19:33 ` [PATCH 5/6] mwrap-perl: use grep and fix regexp Eric Wong
2022-11-15 19:33 ` [PATCH 6/6] split out mwrap_core.h and use provide our own malloc Eric Wong
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=20221115193341.3948245-2-e@80x24.org \
--to=e@80x24.org \
--cc=mwrap-perl@80x24.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.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mwrap-perl.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).