This is the mail archive of the
newlib@sourceware.org
mailing list for the newlib project.
Does nano-malloc support target without unaligned load/store instructions?
- From: Pei-Shiang Hung <pshung807 at gmail dot com>
- To: newlib at sourceware dot org
- Date: Fri, 22 Jan 2016 17:14:38 +0800
- Subject: Does nano-malloc support target without unaligned load/store instructions?
- Authentication-results: sourceware.org; auth=none
In nano-mallocr.c,
262 while (r)
263 {
264 int rem = r->size - alloc_size;
265 if (rem >= 0)
266 {
267 if (rem >= MALLOC_MINCHUNK)
268 {
269 /* Find a chunk that much larger than required size, break
270 * it into two chunks and return the second one */
271 r->size = rem;
272 r = (chunk *)((char *)r + rem);
273 r->size = alloc_size;
274 }
line 272, it is dangerous to cast 'r' to 'char *', plus 'rem', then
cast back to 'chunk *'. What if the given 'rem' is not a word-aligned
number? It can cause unaligned access exception. (This does happen in
my application.)
So, does nano-malloc be designed for specific target with unaligned
memory access instructions only(eg. ARM)?
Thanks all.