[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[avr-libc-commit] [2130] More testscripts: test free() works as expected
From: |
Joerg Wunsch |
Subject: |
[avr-libc-commit] [2130] More testscripts: test free() works as expected. |
Date: |
Mon, 07 Jun 2010 16:27:16 +0000 |
Revision: 2130
http://svn.sv.gnu.org/viewvc/?view=rev&root=avr-libc&revision=2130
Author: joerg_wunsch
Date: 2010-06-07 16:27:16 +0000 (Mon, 07 Jun 2010)
Log Message:
-----------
More testscripts: test free() works as expected.
Modified Paths:
--------------
trunk/avr-libc/ChangeLog
Added Paths:
-----------
trunk/avr-libc/tests/simulate/stdlib/malloc-5.c
trunk/avr-libc/tests/simulate/stdlib/malloc-6.c
trunk/avr-libc/tests/simulate/stdlib/malloc-7.c
Modified: trunk/avr-libc/ChangeLog
===================================================================
--- trunk/avr-libc/ChangeLog 2010-06-07 15:39:10 UTC (rev 2129)
+++ trunk/avr-libc/ChangeLog 2010-06-07 16:27:16 UTC (rev 2130)
@@ -1,5 +1,12 @@
2010-06-07 Joerg Wunsch <address@hidden>
+ More testscripts: test free() works as expected.
+ * tests/simulate/stdlib/malloc-5.c: New file.
+ * tests/simulate/stdlib/malloc-6.c: (Ditto.)
+ * tests/simulate/stdlib/malloc-7.c: (Ditto.)
+
+2010-06-07 Joerg Wunsch <address@hidden>
+
Submitted by Stefan Ernst:
bug #27243: malloc: small error in comment
* stdlib/malloc.c: Fix comment.
Added: trunk/avr-libc/tests/simulate/stdlib/malloc-5.c
===================================================================
--- trunk/avr-libc/tests/simulate/stdlib/malloc-5.c
(rev 0)
+++ trunk/avr-libc/tests/simulate/stdlib/malloc-5.c 2010-06-07 16:27:16 UTC
(rev 2130)
@@ -0,0 +1,78 @@
+/* Copyright (c) 2010 Joerg Wunsch
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ * Neither the name of the copyright holders nor the names of
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/* $Id$ */
+
+/* Freelist test #1: bottom of freelist. */
+
+#ifndef __AVR__
+
+/* There is no sense to check on host computer. */
+int main ()
+{
+ return 0;
+}
+
+#else
+
+#include <stdint.h>
+#include <stdlib.h>
+
+struct __freelist {
+ size_t sz;
+ struct __freelist *nx;
+};
+
+extern char *__brkval; /* first location not yet allocated */
+extern struct __freelist *__flp; /* freelist pointer (head of freelist) */
+extern char *__malloc_heap_start;
+extern char *__malloc_heap_end;
+
+int main(void)
+{
+ void *ptrs[6];
+ uint8_t i;
+
+ for (i = 0; i < 6; i++)
+ {
+ void *p = malloc(10);
+ if (p == NULL) return __LINE__;
+ ptrs[i] = p;
+ }
+
+ free(ptrs[0]);
+ /* There must be exactly one entry in freelist. */
+ if ((char *)(ptrs[0]) - 2 != (void *)__flp) return __LINE__;
+ if (__flp->sz != 10) return __LINE__;
+ if (__flp->nx != NULL) return __LINE__;
+
+ return 0;
+}
+
+#endif /* !AVR */
Property changes on: trunk/avr-libc/tests/simulate/stdlib/malloc-5.c
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: svn:keywords
+ Author Id Date
Added: svn:eol-style
+ native
Added: trunk/avr-libc/tests/simulate/stdlib/malloc-6.c
===================================================================
--- trunk/avr-libc/tests/simulate/stdlib/malloc-6.c
(rev 0)
+++ trunk/avr-libc/tests/simulate/stdlib/malloc-6.c 2010-06-07 16:27:16 UTC
(rev 2130)
@@ -0,0 +1,79 @@
+/* Copyright (c) 2010 Joerg Wunsch
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ * Neither the name of the copyright holders nor the names of
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/* $Id$ */
+
+/* Freelist test #2: top of freelist. */
+
+#ifndef __AVR__
+
+/* There is no sense to check on host computer. */
+int main ()
+{
+ return 0;
+}
+
+#else
+
+#include <stdint.h>
+#include <stdlib.h>
+
+struct __freelist {
+ size_t sz;
+ struct __freelist *nx;
+};
+
+extern char *__brkval; /* first location not yet allocated */
+extern struct __freelist *__flp; /* freelist pointer (head of freelist) */
+extern char *__malloc_heap_start;
+extern char *__malloc_heap_end;
+
+int main(void)
+{
+ void *ptrs[6];
+ uint8_t i;
+
+ for (i = 0; i < 6; i++)
+ {
+ void *p = malloc(10);
+ if (p == NULL) return __LINE__;
+ ptrs[i] = p;
+ }
+
+ free(ptrs[5]);
+ /* There must be exactly one entry in freelist. */
+ if ((char *)(ptrs[5]) - 2 != (void *)__flp) return __LINE__;
+ if (__flp->sz != 10) return __LINE__;
+ if (__flp->nx != NULL) return __LINE__;
+ if ((char *)(ptrs[5]) + 10 != (void *)__brkval) return __LINE__;
+
+ return 0;
+}
+
+#endif /* !AVR */
Property changes on: trunk/avr-libc/tests/simulate/stdlib/malloc-6.c
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: svn:keywords
+ Author Id Date
Added: svn:eol-style
+ native
Added: trunk/avr-libc/tests/simulate/stdlib/malloc-7.c
===================================================================
--- trunk/avr-libc/tests/simulate/stdlib/malloc-7.c
(rev 0)
+++ trunk/avr-libc/tests/simulate/stdlib/malloc-7.c 2010-06-07 16:27:16 UTC
(rev 2130)
@@ -0,0 +1,107 @@
+/* Copyright (c) 2010 Joerg Wunsch
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ * Neither the name of the copyright holders nor the names of
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/* $Id$ */
+
+/* Freelist test #3: aggregation test. */
+
+#ifndef __AVR__
+
+/* There is no sense to check on host computer. */
+int main ()
+{
+ return 0;
+}
+
+#else
+
+#include <stdint.h>
+#include <stdlib.h>
+
+struct __freelist {
+ size_t sz;
+ struct __freelist *nx;
+};
+
+extern char *__brkval; /* first location not yet allocated */
+extern struct __freelist *__flp; /* freelist pointer (head of freelist) */
+extern char *__malloc_heap_start;
+extern char *__malloc_heap_end;
+
+int main(void)
+{
+ void *ptrs[6];
+ uint8_t i;
+
+ for (i = 0; i < 6; i++)
+ {
+ void *p = malloc(10);
+ if (p == NULL) return __LINE__;
+ ptrs[i] = p;
+ }
+
+ free(ptrs[5]);
+ /* There must be exactly one entry in freelist. */
+ if ((char *)(ptrs[5]) - 2 != (void *)__flp) return __LINE__;
+ if (__flp->sz != 10) return __LINE__;
+ if (__flp->nx != NULL) return __LINE__;
+ if ((char *)(ptrs[5]) + 10 != (void *)__brkval) return __LINE__;
+
+ free(ptrs[4]);
+ /* Still one entry expected. */
+ if ((char *)(ptrs[4]) - 2 != (void *)__flp) return __LINE__;
+ if (__flp->sz != 22) return __LINE__;
+ if (__flp->nx != NULL) return __LINE__;
+ if ((char *)(ptrs[4]) + 22 != (void *)__brkval) return __LINE__;
+
+ struct __freelist *ofp = __flp;
+
+ free(ptrs[1]);
+ /* Another entry added. */
+ if ((char *)(ptrs[1]) - 2 != (void *)__flp) return __LINE__;
+ if (__flp->sz != 10) return __LINE__;
+ if (__flp->nx != (void *)ofp) return __LINE__;
+
+ free(ptrs[3]);
+ /* Second entry must have been extended. */
+ if ((char *)(ptrs[3]) - 2 != (void *)__flp->nx) return __LINE__;
+ if (__flp->nx->sz != 34) return __LINE__;
+ if (__flp->nx->nx != NULL) return __LINE__;
+ if ((char *)(ptrs[3]) + 34 != (void *)__brkval) return __LINE__;
+
+ free(ptrs[2]);
+ /* Both chunks must have been combined. */
+ if (__flp->sz != 58) return __LINE__;
+ if (__flp->nx != NULL) return __LINE__;
+ if ((char *)(ptrs[1]) + 58 != (void *)__brkval) return __LINE__;
+
+ return 0;
+}
+
+#endif /* !AVR */
Property changes on: trunk/avr-libc/tests/simulate/stdlib/malloc-7.c
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: svn:keywords
+ Author Id Date
Added: svn:eol-style
+ native
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [avr-libc-commit] [2130] More testscripts: test free() works as expected.,
Joerg Wunsch <=