Thread (4 messages) 4 messages, 3 authors, 2011-02-05

page size change on MIPS

From: naveen yadav <hidden>
Date: 2011-02-04 04:16:27
Also in: linux-mips

Possibly related (same subject, not in this thread)

Hi, I am adding readelf info also .

mips-linux-gnu-readelf -S squashfs-root/bin/busybox
There are 35 section headers, starting at offset 0x174290:

Section Headers:
  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al
  [ 0]                   NULL            00000000 000000 000000 00      0   0  0
  [ 1] .note.ABI-tag     NOTE            004000d4 0000d4 000020 00   A  0   0  4
  [ 2] .reginfo          MIPS_REGINFO    004000f4 0000f4 000018 18   A  0   0  4
  [ 3] .rel.dyn          REL             0040010c 00010c 000010 08   A  0   0  4
  [ 4] .init             PROGBITS        0040011c 00011c 00005c 00  AX  0   0  4
  [ 5] .text             PROGBITS        00400180 000180 11d2b0 00  AX  0   0 16
  [ 6] __libc_freeres_fn PROGBITS        0051d430 11d430 001368 00  AX  0   0  4
  [ 7] __libc_thread_fre PROGBITS        0051e798 11e798 000148 00  AX  0   0  4
  [ 8] .fini             PROGBITS        0051e8e0 11e8e0 000034 00  AX  0   0  4
  [ 9] .rodata           PROGBITS        0051e920 11e920 02d560 00   A  0   0 16
  [10] __libc_subfreeres PROGBITS        0054be80 14be80 000058 00   A  0   0  4
  [11] __libc_atexit     PROGBITS        0054bed8 14bed8 000004 00   A  0   0  4
  [12] __libc_thread_sub PROGBITS        0054bedc 14bedc 000008 00   A  0   0  4
  [13] .gcc_except_table PROGBITS        0054bee4 14bee4 0001fb 00   A  0   0  1
  [14] .eh_frame         PROGBITS        0055c0e0 14c0e0 002464 00  WA  0   0  4
  [15] .tdata            PROGBITS        0055e544 14e544 000018 00 WAT  0   0  4
  [16] .tbss             NOBITS          0055e55c 14e55c 000034 00 WAT  0   0  4
  [17] .ctors            PROGBITS        0055e55c 14e55c 000008 00  WA  0   0  4
  [18] .dtors            PROGBITS        0055e564 14e564 00000c 00  WA  0   0  4
  [19] .jcr              PROGBITS        0055e570 14e570 000004 00  WA  0   0  4
  [20] .data.rel.ro      PROGBITS        0055e574 14e574 000030 00  WA  0   0  4
  [21] .data             PROGBITS        0055e5b0 14e5b0 000b30 00  WA  0   0 16
  [22] .got              PROGBITS        0055f0e0 14f0e0 000148 04 WAp  0   0 16
  [23] .sdata            PROGBITS        0055f228 14f228 000004 00 WAp  0   0  4
  [24] .sbss             NOBITS          0055f230 14f22c 000184 00 WAp  0   0  8
  [25] .bss              NOBITS          0055f3c0 14f22c 00516c 00  WA  0   0 16
  [26] __libc_freeres_pt NOBITS          0056452c 14f22c 000040 00  WA  0   0  4
  [27] .pdr              PROGBITS        00000000 14f22c 016880 00      0   0  4
  [28] .comment          PROGBITS        00000000 165aac 0027e0 00      0   0  1
  [29] .debug_frame      MIPS_DWARF      00000000 16828c 00be88 00      0   0  4
  [30] .gnu.attributes   LOOS+ffffff5    00000000 174114 000010 00      0   0  1
  [31] .mdebug.abi32     PROGBITS        000030c0 174124 000000 00      0   0  1
  [32] .shstrtab         STRTAB          00000000 174124 00016c 00      0   0  1
  [33] .symtab           SYMTAB          00000000 174808 015320 10
34 2843  4
  [34] .strtab           STRTAB          00000000 189b28 012f65 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)


On Fri, Feb 4, 2011 at 8:54 AM, naveen yadav [off-list ref] wrote:
thanaks a lot for your suggestion ..


I debug this issue further, and here is my observations:

1. If I replace init with simple static link executable binary, this
can be executed.
2. In case of busy-box, I debug the reason why init fails to excute.

When I execute init command from busybox the control goes in main()
function of busybox(appletlib.c) with argv value
as the command you are suppose to execute, which in our case is init.

But when i check argv is coming null when page size is 64KB and it
comes init when page size is 16KB.

This behaviour is very strange and i am still debugging this issue.


I have check in Glibc, the max_page size it support is 64 KB in
codesourcercy toolchain 4.4.1

How can I check alignment issue as mention by Mr. Ralf Baechle.



Kind regards




On Mon, Jan 31, 2011 at 6:38 PM, Ralf Baechle [off-list ref] wrote:
quoted
On Sun, Jan 30, 2011 at 08:32:43PM +0530, Himanshu Aggarwal wrote:
quoted
Why should the application or the toolchains depend on pagesize? I am
not very clear on this. Can someone explain it?
To allow loading directly with mmap the executable file's layout must
be such that it's it's segments are on offsets that are a multiple of
the page size so in turn the linker must know that alignment.

?Ralf
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help