Prefer gcc-3.4.0 over gcc-3.4.1. Converted PF_TO_PROT into a macro (small size gain).
committer: mfx <mfx> 1088832985 +0000
This commit is contained in:
parent
61594f7873
commit
3878890783
@ -97,17 +97,17 @@ CC_LINUX_I386_GCC295 += -Os -fno-omit-frame-pointer
|
||||
CC_LINUX_I386_GCC295 += -malign-functions=0 -malign-jumps=0 -malign-loops=0
|
||||
CC_LINUX_I386_GCC295 += -Werror
|
||||
|
||||
# gcc 3.4.0 (fold_*.bin: 1482 / 931 / 1173)
|
||||
CC_LINUX_I386_GCC340 = gcc-3.4 -march=i386 -mtune=k6 -fno-exceptions -MMD
|
||||
CC_LINUX_I386_GCC340 += -Os -fno-omit-frame-pointer
|
||||
CC_LINUX_I386_GCC340 += -momit-leaf-frame-pointer
|
||||
CC_LINUX_I386_GCC340 += -fno-align-functions -fno-align-jumps -fno-align-labels -fno-align-loops
|
||||
##CC_LINUX_I386_GCC340 += -fweb
|
||||
CC_LINUX_I386_GCC340 += -Werror
|
||||
# gcc 3.4.0 (fold_*.bin: 1628 / 931 / 1210)
|
||||
CC_LINUX_I386_GCC34 = gcc-3.4.0 -march=i386 -mtune=k6 -fno-exceptions -MMD
|
||||
CC_LINUX_I386_GCC34 += -Os -fno-omit-frame-pointer
|
||||
CC_LINUX_I386_GCC34 += -momit-leaf-frame-pointer
|
||||
CC_LINUX_I386_GCC34 += -fno-align-functions -fno-align-jumps -fno-align-labels -fno-align-loops
|
||||
##CC_LINUX_I386_GCC34 += -fweb
|
||||
CC_LINUX_I386_GCC34 += -Werror
|
||||
|
||||
CC_LINUX_I386 = $(CC_LINUX_I386_GCC272)
|
||||
CC_LINUX_I386 = $(CC_LINUX_I386_GCC295)
|
||||
CC_LINUX_I386 = $(CC_LINUX_I386_GCC340)
|
||||
CC_LINUX_I386 = $(CC_LINUX_I386_GCC34)
|
||||
CC_LINUX_I386 += -nostdinc
|
||||
CC_LINUX_I386 += -Wall -W -Wcast-align -Wcast-qual -Wwrite-strings
|
||||
CC_LINUX_I386 += -funsigned-char
|
||||
|
||||
@ -241,17 +241,12 @@ auxv_up(Elf32_auxv_t *av, int const type, unsigned const value)
|
||||
((x)|((x)<<4)|((x)<<8)|((x)<<12)|((x)<<16)|((x)<<20)|((x)<<24)|((x)<<28))
|
||||
#define EXP8(y) \
|
||||
((1&(y)) ? 0xf0f0f0f0 : (2&(y)) ? 0xff00ff00 : (4&(y)) ? 0xffff0000 : 0)
|
||||
|
||||
static inline unsigned
|
||||
__attribute__((regparm(1), stdcall))
|
||||
pf_to_prot(unsigned const pf)
|
||||
{
|
||||
return (PROT_READ|PROT_WRITE|PROT_EXEC) & (
|
||||
( (REP8(PROT_EXEC ) & EXP8(PF_X))
|
||||
|(REP8(PROT_READ ) & EXP8(PF_R))
|
||||
|(REP8(PROT_WRITE) & EXP8(PF_W))
|
||||
) >> ((pf & (PF_R|PF_W|PF_X))<<2) );
|
||||
}
|
||||
#define PF_TO_PROT(pf) \
|
||||
((PROT_READ|PROT_WRITE|PROT_EXEC) & ( \
|
||||
( (REP8(PROT_EXEC ) & EXP8(PF_X)) \
|
||||
|(REP8(PROT_READ ) & EXP8(PF_R)) \
|
||||
|(REP8(PROT_WRITE) & EXP8(PF_W)) \
|
||||
) >> ((pf & (PF_R|PF_W|PF_X))<<2) ))
|
||||
|
||||
|
||||
// Find convex hull of PT_LOAD (the minimal interval which covers all PT_LOAD),
|
||||
@ -300,7 +295,7 @@ do_xmap(int const fdi, Elf32_Ehdr const *const ehdr, struct Extent *const xi,
|
||||
auxv_up(av, AT_PHDR, phdr->p_vaddr + reloc);
|
||||
}
|
||||
else if (PT_LOAD==phdr->p_type) {
|
||||
unsigned const prot = pf_to_prot(phdr->p_flags);
|
||||
unsigned const prot = PF_TO_PROT(phdr->p_flags);
|
||||
struct Extent xo;
|
||||
size_t mlen = xo.size = phdr->p_filesz;
|
||||
char *addr = xo.buf = (char *)phdr->p_vaddr;
|
||||
|
||||
@ -172,16 +172,11 @@ bzero(char *p, size_t len)
|
||||
((x)|((x)<<4)|((x)<<8)|((x)<<12)|((x)<<16)|((x)<<20)|((x)<<24)|((x)<<28))
|
||||
#define EXP8(y) \
|
||||
((1&(y)) ? 0xf0f0f0f0 : (2&(y)) ? 0xff00ff00 : (4&(y)) ? 0xffff0000 : 0)
|
||||
|
||||
static inline unsigned
|
||||
__attribute__((regparm(1), stdcall))
|
||||
pf_to_prot(unsigned const pf)
|
||||
{
|
||||
return 7 & (( (REP8(PROT_EXEC ) & EXP8(PF_X))
|
||||
|(REP8(PROT_READ ) & EXP8(PF_R))
|
||||
|(REP8(PROT_WRITE) & EXP8(PF_W)) )
|
||||
>> ((pf & (PF_R|PF_W|PF_X))<<2) );
|
||||
}
|
||||
#define PF_TO_PROT(pf) \
|
||||
(7 & (( (REP8(PROT_EXEC ) & EXP8(PF_X)) \
|
||||
|(REP8(PROT_READ ) & EXP8(PF_R)) \
|
||||
|(REP8(PROT_WRITE) & EXP8(PF_W)) ) \
|
||||
>> ((pf & (PF_R|PF_W|PF_X))<<2) ))
|
||||
|
||||
|
||||
// Find convex hull of PT_LOAD (the minimal interval which covers all PT_LOAD),
|
||||
@ -249,7 +244,7 @@ do_xmap(int const fdi, Elf32_Ehdr const *const ehdr, Elf32_auxv_t *const av)
|
||||
av[AT_PHDR -1].a_un.a_val = phdr->p_vaddr;
|
||||
}
|
||||
else if (PT_LOAD==phdr->p_type) {
|
||||
unsigned const prot = pf_to_prot(phdr->p_flags);
|
||||
unsigned const prot = PF_TO_PROT(phdr->p_flags);
|
||||
struct Extent xo;
|
||||
size_t mlen = xo.size = phdr->p_filesz;
|
||||
char *addr = xo.buf = (char *)phdr->p_vaddr;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user