Re: Current break round up
Frank Kotler <[email protected]> Wed, 01 Oct 2008 16:27:29 -0400
| Newsgroups | org.kernel.vger.linux-assembly |
|---|---|
| Message-ID | <[email protected]> |
Kircsi Tibor wrote: > Hi, > > I may have misunderstood what you wrote, but I took a probe: (debugged > with cgdb) > > .include "../sharedlibs/linux.s" > > .section .text > .globl _start > _start: > movl %esp, %ebp > > # 1st brk call > movl $0, %ebx # %ebx = 0, get the current > curret_break > movl $SYS_BRK, %eax > int $INT # %eax = address of > current_break > > # 2nd brk call > addl $0x1002, %eax # add 4098 to current > current_break > movl %eax, %ebx # %ebx = the address of the new > current_break > movl $SYS_BRK, %eax > int $INT > > # 3rd brk call > movl $0, %ebx > movl $SYS_BRK, %eax > int $INT > > # 4th brk call > movl $SYS_BRK, %eax > int $INT > > # 5th brk call > movl $SYS_BRK, %eax > int $INT > > # sys_exit > movl $0, %ebx # set the return value of the > program > movl $SYS_EXIT, %eax > int $INT > > addresses: > 1st - 0x8049000 it's OK, because linux loads programs into the 0x8048000 > virtual address space, so this is the first page > 2nd - 0x804a002 not aligned to 0x804b000 > 3rd - 0x804a002 same > 4th - same > 5th - same > > That's ok, after the 2nd brk I just always ask for the current break > with %ebx = 0. So, it seems unaligned return after the 4th call too. Hi Tibor, (sorry I called you "Kircsi") I didn't mean that sys_brk aligned itself "automatically" by repeated calls. I ASSume that, unseen in the "strace" output, %ebx is being aligned "by hand" to a page boundary before that last sys_brk. >> Randall Hyde wrote: BTW, Randy, I ASSumed that you intended to reply to the list. Ya gotta hit "reply all" or it goes just to the sender... I don't disagree that sys_mmap (or sys_mmap2?) is a better bet for allocating memory, but it isn't much use for "exploring" sys_brk... Best, Frank