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: Inode <inode_at_mediaservice.net>
Date: Tue, 13 Jan 2004 21:35:47 +0100

On my box the problem seem to be another...

(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.
(gdb)

but doesn't work...

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...

Inode

Jonathon Giffin ha scritto:

> My reply is based on my experimentation on my machine; results elsewhere
> may differ.
>
> I don't know why, but 3.3.2 (with no optimization) inserts an extra
> assembly instruction into get_sp:
> save %sp, -112, %sp
> mov %sp,%i0
> mov %g1, %i0
> ret
> restore
>
> The return value gets overwritten with whatever is in %g1. This need not
> be the current pc. The 3.2 compiler does not insert the extra mov
> instruction, so you get the behavior that you expected.
>
> For code that works with both compilers and no optimization, use:
>
> unsigned long get_sp (void)
> {
> __asm__("mov %sp,%g1");
> __asm__("mov %g1,%i0");
> }
>
> If you compile with -O (optimization), then 3.3.2 will not insert the
> extra mov instruction and you can use
>
> unsigned long get_sp (void)
> {
> __asm__("mov %sp,%o0");
> }
>
> with both compilers. Note that the mov destination must be OUTPUT register
> 0 because optimization will produce a leaf function.
>
> Thanks,
>
> Jon
>
>
>
Received on Jan 13 2004

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