Patchwork silo fails to build with e2fsprogs-1.41.14 (undefined references to posix_memalign)

login
register
mail settings
Submitter Alex Buell
Date Jan. 17, 2011, 5:35 p.m.
Message ID <1295285727.13721.8.camel@lithium>
Download mbox | patch
Permalink /patch/79201/
State Accepted
Delegated to: David Miller
Headers show

Comments

Alex Buell - Jan. 17, 2011, 5:35 p.m.
On Mon, 2011-01-17 at 17:23 +0000, Alex Buell wrote:
> On Mon, 2011-01-17 at 17:02 +0000, Richard Mortimer wrote:
> 
> > >> -    malloc_ptr = (char *) ((((unsigned long) malloc_ptr) + 7)&
> (~7));
> > >> +    malloc_ptr = align_ptr_to(malloc_ptr, 7UL);
> > I think that should be 8UL because align_ptr_to does -1 to make it
> 7.
> 
> > >> +    malloc_ptr = align_ptr_to(malloc_ptr, 7UL);
> > Ditto
> 
> That would explain the different error, this time it was 256, the
> previous error was -1^32. 
> 
> I'll change the patch with the new values and see if that works. 

Well done, that fixed the problem. Thank you. For anyone who's
interested, here's the patch in full with Richard Mortimer's changes:

     if (m == last_alloc)
David Miller - Jan. 17, 2011, 9:12 p.m.
From: Alex Buell <alex.buell@munted.org.uk>
Date: Mon, 17 Jan 2011 17:35:27 +0000

> On Mon, 2011-01-17 at 17:23 +0000, Alex Buell wrote:
>> On Mon, 2011-01-17 at 17:02 +0000, Richard Mortimer wrote:
>> 
>> > >> -    malloc_ptr = (char *) ((((unsigned long) malloc_ptr) + 7)&
>> (~7));
>> > >> +    malloc_ptr = align_ptr_to(malloc_ptr, 7UL);
>> > I think that should be 8UL because align_ptr_to does -1 to make it
>> 7.
>> 
>> > >> +    malloc_ptr = align_ptr_to(malloc_ptr, 7UL);
>> > Ditto
>> 
>> That would explain the different error, this time it was 256, the
>> previous error was -1^32. 
>> 
>> I'll change the patch with the new values and see if that works. 
> 
> Well done, that fixed the problem. Thank you. For anyone who's
> interested, here's the patch in full with Richard Mortimer's changes:

Thanks a lot, sorry for the stupid thinko :-)
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Miller - Jan. 17, 2011, 9:14 p.m.
From: Alex Buell <alex.buell@munted.org.uk>
Date: Mon, 17 Jan 2011 17:35:27 +0000

> Well done, that fixed the problem. Thank you. For anyone who's
> interested, here's the patch in full with Richard Mortimer's changes:

The final working version is pushed to the silo GIT repo, please
double check that it works fine there too.

Thanks!
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff -uNr silo-1.4.14/second/fs/ext2.c silo/second/fs/ext2.c
--- a/common/malloc.c
+++ b/common/malloc.c
@@ -27,6 +27,12 @@  static char *malloc_ptr = (char *) MALLOC_BASE;
 
 static char *last_alloc = 0;
 
+static char *align_ptr_to(char *ptr, unsigned long align)
+{
+    return (char *) ((((unsigned long) ptr) + (align - 1UL)) &
+                    ~(align - 1UL));
+}
+
 void *malloc (int size)
 {
     char *caddr;
@@ -34,10 +40,34 @@  void *malloc (int size)
     caddr = malloc_ptr;
     malloc_ptr += size;
     last_alloc = caddr;
-    malloc_ptr = (char *) ((((unsigned long) malloc_ptr) + 7) & (~7));
+    malloc_ptr = align_ptr_to(malloc_ptr, 8UL);
     return caddr;
 }
 
+int posix_memalign(void **memptr, unsigned long alignment, unsigned
long size)
+{
+    char *caddr;
+
+    if (alignment & (alignment - 1UL))
+        return -1;
+    if (alignment & (sizeof(void *) - 1UL))
+        return -1;
+
+    if (size == 0) {
+      *memptr = (void *) 0;
+      return 0;
+    }
+
+    caddr = align_ptr_to(malloc_ptr, alignment);
+    malloc_ptr = (caddr + size);
+    last_alloc = caddr;
+    malloc_ptr = align_ptr_to(malloc_ptr, 8UL);
+
+    *memptr = caddr;
+
+    return 0;
+}
+
 void free (void *m)
 {