mirror of
https://github.com/upx/upx
synced 2025-09-28 19:06:07 +08:00
DEBUG for MIPS i386-linux.elf-main.c
This commit is contained in:
parent
0806e61df4
commit
ee37b42a91
|
@ -29,6 +29,9 @@
|
|||
<jreiser@users.sourceforge.net>
|
||||
*/
|
||||
|
||||
#ifndef DEBUG /*{*/
|
||||
#define DEBUG 0
|
||||
#endif /*}*/
|
||||
|
||||
#include "include/linux.h"
|
||||
void *mmap(void *, size_t, int, int, int, off_t);
|
||||
|
@ -43,11 +46,7 @@ ssize_t write(int, void const *, size_t);
|
|||
// it at an address different from it load address: there must be no
|
||||
// static data, and no string constants.
|
||||
|
||||
#ifndef DEBUG /*{*/
|
||||
#define DEBUG 0
|
||||
#endif /*}*/
|
||||
|
||||
#if !DEBUG || defined(__mips__) /*{*/
|
||||
#if !DEBUG /*{*/
|
||||
#define DPRINTF(a) /* empty: no debug drivel */
|
||||
#define DEBUG_STRCON(name, value) /* empty */
|
||||
#else /*}{ DEBUG */
|
||||
|
@ -62,30 +61,35 @@ ssize_t write(int, void const *, size_t);
|
|||
|
||||
#if defined(__i386__) /*{*/
|
||||
#define PIC_STRING(value, var) \
|
||||
char const *var; \
|
||||
__asm__ __volatile__ ( \
|
||||
"call 0f; .asciz \"" value "\"; \
|
||||
0: pop %0;" : "=a"(var) : \
|
||||
)
|
||||
); \
|
||||
return var;
|
||||
#elif defined(__arm__) /*}{*/
|
||||
#define PIC_STRING(value, var) \
|
||||
char const *var; \
|
||||
__asm__ __volatile__ ( \
|
||||
"mov r0,pc; ret; \
|
||||
.asciz \"" value "\"; .balign 4" : "=a"(var) : \
|
||||
)
|
||||
); \
|
||||
return var;
|
||||
#elif defined(__mips__) /*}{*/
|
||||
#define PIC_STRING(value, var) \
|
||||
register char const *rv asm("v0"); \
|
||||
__asm__ __volatile__ ( \
|
||||
"mov at,ra; bal 0f; move v0,ra; \
|
||||
".set noreorder; bal 0f; move %0,$31; .set reorder; \
|
||||
.asciz \"" value "\"; .balign 4; \
|
||||
0: jr at; nop" : "=a"(var) : \
|
||||
)
|
||||
0: " \
|
||||
: "+r"(rv) \
|
||||
); \
|
||||
return var;
|
||||
#endif /*}*/
|
||||
|
||||
|
||||
#define DEBUG_STRCON(name, value) \
|
||||
static char const *name(void) \
|
||||
{ \
|
||||
char *rv; PIC_STRING(value, rv); \
|
||||
return rv; \
|
||||
}
|
||||
static char const *name(void) { PIC_STRING(value, rv); }
|
||||
|
||||
|
||||
#ifdef __arm__ /*{*/
|
||||
|
@ -702,6 +706,10 @@ void *upx_main(
|
|||
xi.buf = CONST_CAST(char *, bi); xi.size = sz_compressed;
|
||||
xj.buf = CONST_CAST(char *, bi); xj.size = sz_compressed;
|
||||
|
||||
DPRINTF((STR_upx_main(),
|
||||
av, sz_compressed, f_decompress, f_unf, &xo, xo.size, xo.buf,
|
||||
&xi, xi.size, xi.buf, dynbase));
|
||||
|
||||
// ehdr = Uncompress Ehdr and Phdrs
|
||||
unpackExtent(&xj, &xo, f_decompress, 0); // never filtered?
|
||||
#else /*}{ !__mips__ */
|
||||
|
|
|
@ -511,7 +511,7 @@ static ssize_t open(char const *path, int kind, int mode)
|
|||
return v0;
|
||||
}
|
||||
|
||||
#if 0 /*{ UNUSED */
|
||||
#if DEBUG /*{*/
|
||||
static ssize_t write(int fd, void const *buf, size_t len)
|
||||
{
|
||||
#define __NR_write (4+ 4000)
|
||||
|
@ -520,7 +520,7 @@ static ssize_t write(int fd, void const *buf, size_t len)
|
|||
register size_t const a2 asm("a2") = len;
|
||||
register size_t v0 asm("v0") = __NR_write;
|
||||
__asm__ __volatile__(
|
||||
"bal sysgo"
|
||||
"b sysgo"
|
||||
: "+r"(v0)
|
||||
: "r"(a0), "r"(a1), "r"(a2)
|
||||
: "a3"
|
||||
|
|
|
@ -62,6 +62,7 @@ __NR_munmap = 91+ __NR_Linux
|
|||
__NR_open = 5+ __NR_Linux
|
||||
__NR_read = 3+ __NR_Linux
|
||||
__NR_readlink = 85+ __NR_Linux
|
||||
__NR_write = 4+ __NR_Linux
|
||||
|
||||
PATHSIZE=4096
|
||||
OVERHEAD=2048
|
||||
|
@ -183,6 +184,8 @@ sysret:
|
|||
or v0,v0,tmp
|
||||
read: .globl read
|
||||
b sysgo; li v0,__NR_read
|
||||
write: .globl write
|
||||
b sysgo; li v0,__NR_write
|
||||
open: .globl open
|
||||
b sysgo; li v0,__NR_open
|
||||
close: .globl close
|
||||
|
|
Loading…
Reference in New Issue
Block a user