diff options
author | Richard Biener <rguenther@suse.de> | 2017-08-22 13:54:01 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2017-08-22 13:54:01 +0000 |
commit | d4c550fd0ecb17d577353074c58283e942d1f870 (patch) | |
tree | 1f3e39041bb40ecde0ffe15232c4113ad0a73f32 /libiberty | |
parent | 17691698c98255c459b7ad78e455596c14a94a9c (diff) | |
download | gcc-d4c550fd0ecb17d577353074c58283e942d1f870.zip gcc-d4c550fd0ecb17d577353074c58283e942d1f870.tar.gz gcc-d4c550fd0ecb17d577353074c58283e942d1f870.tar.bz2 |
re PR lto/81925 (early lto debug link failure on aarch64_be)
2017-08-22 Richard Biener <rguenther@suse.de>
PR lto/81925
* simple-object-elf.c (simple_object_elf_write_shdr): Adjust
type of sh_addralign and sh_entsize and properly write
sh_entsize as Elf_Addr.
(simple_object_elf_write_to_file): Read sh_entsize as Elf_Addr.
From-SVN: r251276
Diffstat (limited to 'libiberty')
-rw-r--r-- | libiberty/ChangeLog | 8 | ||||
-rw-r--r-- | libiberty/simple-object-elf.c | 12 |
2 files changed, 14 insertions, 6 deletions
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog index 48ee098..f5c3069 100644 --- a/libiberty/ChangeLog +++ b/libiberty/ChangeLog @@ -1,3 +1,11 @@ +2017-08-22 Richard Biener <rguenther@suse.de> + + PR lto/81925 + * simple-object-elf.c (simple_object_elf_write_shdr): Adjust + type of sh_addralign and sh_entsize and properly write + sh_entsize as Elf_Addr. + (simple_object_elf_write_to_file): Read sh_entsize as Elf_Addr. + 2017-08-21 Richard Biener <rguenther@suse.de> * simple-object-common.h (struct simple_object_functions): Add diff --git a/libiberty/simple-object-elf.c b/libiberty/simple-object-elf.c index 5633626..10bf5e7 100644 --- a/libiberty/simple-object-elf.c +++ b/libiberty/simple-object-elf.c @@ -830,8 +830,8 @@ simple_object_elf_write_shdr (simple_object_write *sobj, int descriptor, off_t sh_addr, unsigned int sh_offset, unsigned int sh_size, unsigned int sh_link, unsigned int sh_info, - unsigned int sh_addralign, - unsigned int sh_entsize, + size_t sh_addralign, + size_t sh_entsize, const char **errmsg, int *err) { struct simple_object_elf_attributes *attrs = @@ -858,7 +858,7 @@ simple_object_elf_write_shdr (simple_object_write *sobj, int descriptor, ELF_SET_FIELD (fns, cl, Shdr, buf, sh_link, Elf_Word, sh_link); ELF_SET_FIELD (fns, cl, Shdr, buf, sh_info, Elf_Word, sh_info); ELF_SET_FIELD (fns, cl, Shdr, buf, sh_addralign, Elf_Addr, sh_addralign); - ELF_SET_FIELD (fns, cl, Shdr, buf, sh_entsize, Elf_Word, sh_entsize); + ELF_SET_FIELD (fns, cl, Shdr, buf, sh_entsize, Elf_Addr, sh_entsize); return simple_object_internal_write (descriptor, offset, buf, shdr_size, errmsg, err); @@ -948,8 +948,8 @@ simple_object_elf_write_to_file (simple_object_write *sobj, int descriptor, off_t sh_addr = 0; unsigned int sh_link = 0; unsigned int sh_info = 0; - unsigned int sh_addralign = 1U << section->align; - unsigned int sh_entsize = 0; + size_t sh_addralign = 1U << section->align; + size_t sh_entsize = 0; if (eow->shdrs) { sh_type = ELF_FETCH_FIELD (attrs->type_functions, attrs->ei_class, Shdr, @@ -972,7 +972,7 @@ simple_object_elf_write_to_file (simple_object_write *sobj, int descriptor, sh_addralign, Elf_Addr); sh_entsize = ELF_FETCH_FIELD (attrs->type_functions, attrs->ei_class, Shdr, eow->shdrs + secnum * shdr_size, - sh_entsize, Elf_Word); + sh_entsize, Elf_Addr); secnum++; } |