* PPC ld test failure @ 2002-04-02 3:51 Andreas Jaeger 2002-04-02 23:59 ` Alan Modra 0 siblings, 1 reply; 3+ messages in thread From: Andreas Jaeger @ 2002-04-02 3:51 UTC (permalink / raw) To: binutils The vers14 test from ld fails for me on powerpc with HJ's latest binutils release with: /usr/src/packages/BUILD/binutils-2.12.90.0.3/build-dir/ld/../binutils/strip-new tmpdir/vers14.so BFD: tmpdir/stJdPpsP: warning: allocated section `.data' not in segment This looks broken to me, readelf on the file shows that .data is empty but is in the segment: Section Headers: [Nr] Name Type Addr Off Size ES Flg Lk Inf Al [ 0] NULL 00000000 000000 000000 00 0 0 0 [ 1] .hash HASH 00000094 000094 0000d4 04 A 2 0 4 [ 2] .dynsym DYNSYM 00000168 000168 000220 10 A 3 11 4 [ 3] .dynstr STRTAB 00000388 000388 000094 00 A 0 0 1 [ 4] .gnu.version VERSYM 0000041c 00041c 000044 02 A 2 0 2 [ 5] .gnu.version_d VERDEF 00000460 000460 000080 00 A 3 4 4 [ 6] .rela.dyn RELA 000004e0 0004e0 000048 0c A 2 0 4 [ 7] .text PROGBITS 00000528 000528 000098 00 AX 0 0 4 [ 8] .rodata PROGBITS 000005c0 0005c0 000008 00 A 0 0 4 [ 9] .data PROGBITS 000105c8 0005c8 000000 00 WA 0 0 1 [10] .dynamic DYNAMIC 000105c8 0005c8 000090 08 WA 3 0 4 [11] .got PROGBITS 00010658 000658 000010 04 WA 0 0 4 [12] .sdata2 PROGBITS 00010668 000668 000000 00 A 0 0 4 [13] .sdata PROGBITS 00010668 000668 000008 00 WA 0 0 4 [14] .sbss NOBITS 00010670 000670 000000 00 WA 0 0 1 [15] .bss NOBITS 00010670 000670 000000 00 WA 0 0 1 [16] .comment PROGBITS 00000000 000670 000046 00 0 0 1 [17] .shstrtab STRTAB 00000000 0006b6 00009c 00 0 0 1 [18] .symtab SYMTAB 00000000 000a74 0002b0 10 19 1a 4 [19] .strtab STRTAB 00000000 000d24 000114 00 0 0 1 Key to Flags: W (write), A (alloc), X (execute), M (merge), S (strings) I (info), L (link order), G (group), x (unknown) O (extra OS processing required) o (OS specific), p (processor specific) Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align LOAD 0x000000 0x00000000 0x00000000 0x005c8 0x005c8 R E 0x10000 LOAD 0x0005c8 0x000105c8 0x000105c8 0x000a8 0x000a8 RW 0x10000 DYNAMIC 0x0005c8 0x000105c8 0x000105c8 0x00090 0x00090 RW 0x4 Any ideas? Andreas -- Andreas Jaeger SuSE Labs aj@suse.de private aj@arthur.inka.de http://www.suse.de/~aj ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: PPC ld test failure 2002-04-02 3:51 PPC ld test failure Andreas Jaeger @ 2002-04-02 23:59 ` Alan Modra 2002-04-03 5:25 ` Alan Modra 0 siblings, 1 reply; 3+ messages in thread From: Alan Modra @ 2002-04-02 23:59 UTC (permalink / raw) To: Andreas Jaeger; +Cc: binutils On Tue, Apr 02, 2002 at 01:51:42PM +0200, Andreas Jaeger wrote: > > The vers14 test from ld fails for me on powerpc with HJ's latest > binutils release with: > /usr/src/packages/BUILD/binutils-2.12.90.0.3/build-dir/ld/../binutils/strip-new tmpdir/vers14.so > BFD: tmpdir/stJdPpsP: warning: allocated section `.data' not in segment > > Any ideas? Broken by 2002-03-23 Alan Modra <amodra@bigpond.net.au> * elf.c (_bfd_elf_make_section_from_shdr): Don't set lma based on section file offset for !SEC_LOAD sections. It's not that the above patch is wrong, but rather that the test for whether a section is included in a segment: if (phdr->p_type == PT_LOAD && (bfd_vma) hdr->sh_offset >= phdr->p_offset && (hdr->sh_offset + hdr->sh_size <= phdr->p_offset + phdr->p_memsz) && ((flags & SEC_LOAD) == 0 || (phdr->p_offset + phdr->p_filesz >= hdr->sh_offset + hdr->sh_size))) is broken. (gdb) p phdr[0] $1 = {p_type = 1, p_flags = 5, p_offset = 0, p_vaddr = 0, p_paddr = 0, p_filesz = 1848, p_memsz = 1848, p_align = 65536} (gdb) p phdr[1] $2 = {p_type = 1, p_flags = 6, p_offset = 1848, p_vaddr = 67384, p_paddr = 67384, p_filesz = 168, p_memsz = 168, p_align = 65536} (gdb) p *hdr $3 = {sh_name = 108, sh_type = 1, sh_flags = 3, sh_addr = 67384, sh_size = 0, sh_entsize = 0, sh_link = 0, sh_info = 0, sh_offset = 1848, sh_addralign = 1, bfd_section = 0x0, contents = 0x0} This hdr ought to be part of the second segment, but we decide that it's part of the first. I think we need a test of hdr->sh_addr against phdr->p_paddr. -- Alan Modra IBM OzLabs - Linux Technology Centre ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: PPC ld test failure 2002-04-02 23:59 ` Alan Modra @ 2002-04-03 5:25 ` Alan Modra 0 siblings, 0 replies; 3+ messages in thread From: Alan Modra @ 2002-04-03 5:25 UTC (permalink / raw) To: binutils Hmm, Richard Earnshaw's 2001-10-30 change removed the p_vaddr tests in order to support non-contiguous VMAs. * elf.c (_bfd_elf_make_section_from_shdr): When setting section LMAs, loop over segments until p_vaddr and p_memsz specify an extent enclosing the section. Note that newsect->lma = hdr->sh_addr courtesy of bfd_set_section_vma, so the first hunk isn't really changing anything. Index: bfd/elf.c =================================================================== RCS file: /cvs/src/src/bfd/elf.c,v retrieving revision 1.134 diff -u -p -r1.134 elf.c --- elf.c 2002/04/01 18:31:46 1.134 +++ elf.c 2002/04/03 13:04:30 @@ -665,11 +665,12 @@ _bfd_elf_make_section_from_shdr (abfd, h && (hdr->sh_offset + hdr->sh_size <= phdr->p_offset + phdr->p_memsz) && ((flags & SEC_LOAD) == 0 - || (phdr->p_offset + phdr->p_filesz - >= hdr->sh_offset + hdr->sh_size))) + || (hdr->sh_offset + hdr->sh_size + <= phdr->p_offset + phdr->p_filesz))) { if ((flags & SEC_LOAD) == 0) - newsect->lma += phdr->p_paddr - phdr->p_vaddr; + newsect->lma = (phdr->p_paddr + + hdr->sh_addr - phdr->p_vaddr); else /* We used to use the same adjustment for SEC_LOAD sections, but that doesn't work if the segment @@ -680,7 +681,15 @@ _bfd_elf_make_section_from_shdr (abfd, h LMAs, even if the VMAs are not. */ newsect->lma = (phdr->p_paddr + hdr->sh_offset - phdr->p_offset); - break; + + /* With contiguous segments, we can't tell from file + offsets whether a section with zero size should + be placed at the end of one segment or the + beginning of the next. Decide based on vaddr. */ + if (hdr->sh_addr >= phdr->p_vaddr + && (hdr->sh_addr + hdr->sh_size + <= phdr->p_vaddr + phdr->p_memsz)) + break; } } } -- Alan Modra IBM OzLabs - Linux Technology Centre ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2002-04-03 13:25 UTC | newest] Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2002-04-02 3:51 PPC ld test failure Andreas Jaeger 2002-04-02 23:59 ` Alan Modra 2002-04-03 5:25 ` Alan Modra
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).