Nmap Security Scanner
*Intro
*Ref Guide
*Install Guide
*Download
*Changelog
*Book
*Docs
Security Lists
*Nmap Hackers
*Nmap Dev
*Bugtraq
*Full Disclosure
*Pen Test
*Basics
*More
Security Tools
*Pass crackers
*Sniffers
*Vuln Scanners
*Web scanners
*Wireless
*Exploitation
*Packet crafters
*More
Site News
Site Search:
Exploit World
Advertising
About/Contact
Credits
Sponsors:
edgeos



Vulnerability Development: Re: get SP on Solaris (SPARC) with GCC 3.3.2

Re: get SP on Solaris (SPARC) with GCC 3.3.2

From: Jonathon Giffin <giffin_at_cs.wisc.edu>
Date: Tue, 13 Jan 2004 15:06:27 -0600 (CST)

> (gdb) disass get_sp
> Dump of assembler code for function get_sp:
> 0x00010dd8 <get_sp+0>: mov %sp, %i0
> 0x00010ddc <get_sp+4>: retl
> 0x00010de0 <get_sp+8>: nop
> End of assembler dump.

What you have included here is a leaf function and does not shift register
windows. This is a standard compiler optimization done to functions that
call no other functions (and are hence leaf nodes in the call graph). You
need to use "mov %sp, %o0" not "mov %sp, %i0" to have the correct value
returned.

You should pass return values in %i0 only for non-leaf functions that
use "save" and "restore" to shift the current register window. The restore
instruction will rename the %i0 register to %o0, which is the return
value register. If you do not shift register windows--and your code
above does not--then you must move the return value to %o0 yourself.

If you are unfamiliar with register windows, see for example:
        http://www.sics.se/~psm/sparcstack.html .

Your code above actually violates register safety, as %i0 may be live at
the point of a call to get_sp() and your get_sp() function clobbers the
value. Standard SPARC register usage convention stipulates that out
registers are volatile across function calls but in registers are not
volatile.

> Another way to get SP (maybe more simple) it's get the ARGV[0] of out
> program... work fine, but now I would try to undestand why with gcc
> 3.3.2 doesn't work this function...

Sorry, I don't understand this comment, but that may be because I do not
know the context of your work. What do you mean by "out program"?

Thanks,

Jon
Received on Jan 13 2004

[ Nmap | Sec Tools | Mailing Lists | Site News | About/Contact | Advertising | Privacy ]
edgeos