lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <49FF08AC.3030901@caviumnetworks.com>
Date:	Mon, 04 May 2009 08:24:28 -0700
From:	David Daney <ddaney@...iumnetworks.com>
To:	Sam Ravnborg <sam@...nborg.org>
CC:	Manuel Lauss <mano@...rinelk.homelinux.net>,
	Anders Kaseorg <andersk@....edu>,
	LKML <linux-kernel@...r.kernel.org>,
	Linux-MIPS <linux-mips@...ux-mips.org>
Subject: Re: Lots of unexpected non-allocatable section warnings

Sam Ravnborg wrote:

> From: Anders Kaseorg <andersk@....EDU>
> Date: Sun, 3 May 2009 22:02:55 +0200
> Subject: [PATCH 1/2] kbuild, modpost: fix unexpected non-allocatable section when cross compiling
> 
> The missing TO_NATIVE(sechdrs[i].sh_flags) was causing many
> unexpected non-allocatable section warnings when cross-compiling
> for an architecture with a different endianness.
> 
> Fix endianness of all the fields in the ELF header and
> section headers, not just some of them so we are not
> hit by this anohter time.
> 
> Signed-off-by: Anders Kaseorg <andersk@....edu>
> Reported-by: Sean MacLennan <smaclennan@...atech.com>
> Signed-off-by: Sam Ravnborg <sam@...nborg.org>

Acked-by: David Daney <ddaney@...iumnetworks.com>

This is essentially what I did in my local tree to fix the problems.


> ---
>  scripts/mod/modpost.c |   35 +++++++++++++++++++++++------------
>  1 files changed, 23 insertions(+), 12 deletions(-)
> 
> diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
> index 936b6f8..a5c17db 100644
> --- a/scripts/mod/modpost.c
> +++ b/scripts/mod/modpost.c
> @@ -384,11 +384,19 @@ static int parse_elf(struct elf_info *info, const char *filename)
>  		return 0;
>  	}
>  	/* Fix endianness in ELF header */
> -	hdr->e_shoff    = TO_NATIVE(hdr->e_shoff);
> -	hdr->e_shstrndx = TO_NATIVE(hdr->e_shstrndx);
> -	hdr->e_shnum    = TO_NATIVE(hdr->e_shnum);
> -	hdr->e_machine  = TO_NATIVE(hdr->e_machine);
> -	hdr->e_type     = TO_NATIVE(hdr->e_type);
> +	hdr->e_type      = TO_NATIVE(hdr->e_type);
> +	hdr->e_machine   = TO_NATIVE(hdr->e_machine);
> +	hdr->e_version   = TO_NATIVE(hdr->e_version);
> +	hdr->e_entry     = TO_NATIVE(hdr->e_entry);
> +	hdr->e_phoff     = TO_NATIVE(hdr->e_phoff);
> +	hdr->e_shoff     = TO_NATIVE(hdr->e_shoff);
> +	hdr->e_flags     = TO_NATIVE(hdr->e_flags);
> +	hdr->e_ehsize    = TO_NATIVE(hdr->e_ehsize);
> +	hdr->e_phentsize = TO_NATIVE(hdr->e_phentsize);
> +	hdr->e_phnum     = TO_NATIVE(hdr->e_phnum);
> +	hdr->e_shentsize = TO_NATIVE(hdr->e_shentsize);
> +	hdr->e_shnum     = TO_NATIVE(hdr->e_shnum);
> +	hdr->e_shstrndx  = TO_NATIVE(hdr->e_shstrndx);
>  	sechdrs = (void *)hdr + hdr->e_shoff;
>  	info->sechdrs = sechdrs;
>  
> @@ -402,13 +410,16 @@ static int parse_elf(struct elf_info *info, const char *filename)
>  
>  	/* Fix endianness in section headers */
>  	for (i = 0; i < hdr->e_shnum; i++) {
> -		sechdrs[i].sh_type   = TO_NATIVE(sechdrs[i].sh_type);
> -		sechdrs[i].sh_offset = TO_NATIVE(sechdrs[i].sh_offset);
> -		sechdrs[i].sh_size   = TO_NATIVE(sechdrs[i].sh_size);
> -		sechdrs[i].sh_link   = TO_NATIVE(sechdrs[i].sh_link);
> -		sechdrs[i].sh_name   = TO_NATIVE(sechdrs[i].sh_name);
> -		sechdrs[i].sh_info   = TO_NATIVE(sechdrs[i].sh_info);
> -		sechdrs[i].sh_addr   = TO_NATIVE(sechdrs[i].sh_addr);
> +		sechdrs[i].sh_name      = TO_NATIVE(sechdrs[i].sh_name);
> +		sechdrs[i].sh_type      = TO_NATIVE(sechdrs[i].sh_type);
> +		sechdrs[i].sh_flags     = TO_NATIVE(sechdrs[i].sh_flags);
> +		sechdrs[i].sh_addr      = TO_NATIVE(sechdrs[i].sh_addr);
> +		sechdrs[i].sh_offset    = TO_NATIVE(sechdrs[i].sh_offset);
> +		sechdrs[i].sh_size      = TO_NATIVE(sechdrs[i].sh_size);
> +		sechdrs[i].sh_link      = TO_NATIVE(sechdrs[i].sh_link);
> +		sechdrs[i].sh_info      = TO_NATIVE(sechdrs[i].sh_info);
> +		sechdrs[i].sh_addralign = TO_NATIVE(sechdrs[i].sh_addralign);
> +		sechdrs[i].sh_entsize   = TO_NATIVE(sechdrs[i].sh_entsize);
>  	}
>  	/* Find symbol table. */
>  	for (i = 1; i < hdr->e_shnum; i++) {

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ