Commit 1b137837 by Jakub Jelinek Committed by Jakub Jelinek

lto-elf.c (ELFOSABI_NONE, [...]): Define if not defined.

	* lto-elf.c (ELFOSABI_NONE, ELFOSABI_LINUX): Define if not defined.
	(validate_file): Allow merging of ELFOSABI_NONE with ELFOSABI_LINUX
	objects.

From-SVN: r161935
parent fc0f0c8b
2010-07-07 Jakub Jelinek <jakub@redhat.com>
* lto-elf.c (ELFOSABI_NONE, ELFOSABI_LINUX): Define if not defined.
(validate_file): Allow merging of ELFOSABI_NONE with ELFOSABI_LINUX
objects.
2010-07-05 Jan Hubicka <jh@suse.cz> 2010-07-05 Jan Hubicka <jh@suse.cz>
* lto.c (add_cgraph_node_to_partition): Forward declare; walk also * lto.c (add_cgraph_node_to_partition): Forward declare; walk also
......
...@@ -38,6 +38,13 @@ along with GCC; see the file COPYING3. If not see ...@@ -38,6 +38,13 @@ along with GCC; see the file COPYING3. If not see
# define EM_SPARC32PLUS 18 # define EM_SPARC32PLUS 18
#endif #endif
#ifndef ELFOSABI_NONE
# define ELFOSABI_NONE 0
#endif
#ifndef ELFOSABI_LINUX
# define ELFOSABI_LINUX 3
#endif
/* Handle opening elf files on hosts, such as Windows, that may use /* Handle opening elf files on hosts, such as Windows, that may use
text file handling that will break binary access. */ text file handling that will break binary access. */
...@@ -519,10 +526,28 @@ validate_file (lto_elf_file *elf_file) ...@@ -519,10 +526,28 @@ validate_file (lto_elf_file *elf_file)
memcpy (cached_file_attrs.elf_ident, elf_ident, memcpy (cached_file_attrs.elf_ident, elf_ident,
sizeof cached_file_attrs.elf_ident); sizeof cached_file_attrs.elf_ident);
} }
else
{
char elf_ident_buf[EI_NIDENT];
memcpy (elf_ident_buf, elf_ident, sizeof elf_ident_buf);
if (memcmp (elf_ident, cached_file_attrs.elf_ident, if (elf_ident_buf[EI_OSABI] != cached_file_attrs.elf_ident[EI_OSABI])
sizeof cached_file_attrs.elf_ident)) {
return false; /* Allow mixing ELFOSABI_NONE with ELFOSABI_LINUX, with the result
ELFOSABI_LINUX. */
if (elf_ident_buf[EI_OSABI] == ELFOSABI_NONE
&& cached_file_attrs.elf_ident[EI_OSABI] == ELFOSABI_LINUX)
elf_ident_buf[EI_OSABI] = cached_file_attrs.elf_ident[EI_OSABI];
else if (elf_ident_buf[EI_OSABI] == ELFOSABI_LINUX
&& cached_file_attrs.elf_ident[EI_OSABI] == ELFOSABI_NONE)
cached_file_attrs.elf_ident[EI_OSABI] = elf_ident_buf[EI_OSABI];
}
if (memcmp (elf_ident_buf, cached_file_attrs.elf_ident,
sizeof cached_file_attrs.elf_ident))
return false;
}
/* Check that the input file is a relocatable object file with the correct /* Check that the input file is a relocatable object file with the correct
architecture. */ architecture. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment