tech-toolchain archive

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

Re: install/38943: i386 floppy installation now prompts for each floppy twice



I'm looking at this problem and I think I've managed to analyze it.
The problem is backward lseek(), which is introduced into
recent src/sys/lib/libsa/loadfile_elf32.c.

loadfile_elf32() now reads the kernel note section
after loading section headers, but the note section
is located before section headers:
---
% readelf -e /netbsd
 :
  Start of program headers:          52 (bytes into file)
  Start of section headers:          7525156 (bytes into file)
 :
Section Headers:
  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al
  [ 0]                   NULL            00000000 000000 000000 00      0   0  0
  [ 1] .text             PROGBITS        c0100000 001000 4b42fc 00  AX  0   0 64
  [ 2] .rodata           PROGBITS        c05b4300 4b5300 21a72b 00   A  0   0 32
 :
  [12] .bss              NOBITS          c0801880 701844 071c94 00  WA  0   0 64
  [13] .note.netbsd.iden NOTE            c0873514 701844 000018 00      0   0  4
 :
  [24] .shstrtab         STRTAB          00000000 72d1d1 000153 00      0   0  1
  [25] .symtab           SYMTAB          00000000 72d75c 057e10 10     26 9848  
4

---

Such backward lseek() causes ustarfs to read a whole
kernel from the beginning again.

Is there any workaround (against ldscript etc.) for this?
---
Izumi Tsutsui


Home | Main Index | Thread Index | Old Index