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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, 2011-01-16 at 19:59 -0800, David Miller wrote:
> From: Alex Buell <alex.buell@xxxxxxxxxxxxx>
> Date: Sat, 15 Jan 2011 12:57:09 +0000
> 
> > On Sat, 2011-01-15 at 13:07 +0100, RaÃl Porcel wrote:
> >> Thanks, it builds, but silo fails to work:
> >> 
> >> Boot device: disk1  File and args:
> >> SILO Version 1.4.14_git2010228_p1
> >> 
> >> Unknown ext2 error: 4294967295
> >> 
> >> Fatal error: Unable to open filesystem
> >> 
> >> Couldn't load /etc/silo.conf
> >> No config file loaded, you can boot just from this command line
> >> Type [prompath;]part/path_to_image [parameters] on the prompt
> >> E.g. /iommu/sbus/espdma/esp/sd@3,0;4/vmlinux root=/dev/sda4
> >> or 2/vmlinux.live (to load vmlinux.live from 2nd partition of boot disk)
> >> boot:
> > 
> > This problem exists with all versions of silo linked against
> > e2fsprogs-1.41.14. 
> 
> Can you guys please test this patch out?  It's against the current
> tree.
> 
> Thanks!
> 
> --------------------
> malloc: Provide posix_memalign() implementation.
> 
> ext2progs library really wants a working version of this,
> and thankfully it's not that hard to do.
> 
> Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>
> 
> diff --git a/common/malloc.c b/common/malloc.c
> index cc3946d..d05061b 100644
> --- 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, 7UL);
>      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, 7UL);
> +
> +    *memptr = caddr;
> +
> +    return 0;
> +}
> +
>  void free (void *m)
>  {
>      if (m == last_alloc)
> diff --git a/second/fs/ext2.c b/second/fs/ext2.c
> index 12d00dc..57f5e9a 100644
> --- a/second/fs/ext2.c
> +++ b/second/fs/ext2.c
> @@ -163,9 +163,3 @@ void *realloc(void *p, int size)
>  {
>          return NULL;
>  }
> -
> -int posix_memalign(void **memptr, size_t alignment, size_t size)
> -{
> -	*memptr = NULL;
> -	return -1;
> -}

With that patch, I now get a different error:

SILO Version 1.4.14
	ERROR: Last trap: Memory Address not aligned

Error -256
{0] OK

(Now I've got to boot off my rescue CD and rebuild SILO)

Is anyone else getting the same error?
-- 
Tactical Nuclear Kittens
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Kernel Development]     [DCCP]     [Linux ARM Development]     [Linux]     [Photo]     [Yosemite Help]     [Linux ARM Kernel]     [Linux SCSI]     [Linux x86_64]     [Linux Hams]

  Powered by Linux