From 2aaf6b30145f4cfed163fa6cba7bb21ebadfa14d Mon Sep 17 00:00:00 2001 From: Shinichiro Hamaji Date: Mon, 28 Mar 2011 21:00:36 +0900 Subject: [PATCH] Add a make target to create a release binary --- Makefile | 15 +++++++++------ ld-mac.cc | 8 ++++---- log.h | 9 +++++++++ mach-o.cc | 15 ++++++++++----- 4 files changed, 32 insertions(+), 15 deletions(-) diff --git a/Makefile b/Makefile index 03938c10b..37e522925 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ -PROFILE_FLAGS= -GCCFLAGS=-g -Iinclude -Wall -MMD -fno-omit-frame-pointer -O $(PROFILE_FLAGS) +GCC_EXTRA_FLAGS= +GCCFLAGS=-g -Iinclude -Wall -MMD -fno-omit-frame-pointer -O $(GCC_EXTRA_FLAGS) CXXFLAGS=$(GCCFLAGS) -W -Werror CFLAGS=$(GCCFLAGS) -fPIC @@ -31,7 +31,10 @@ endif all: $(EXES) profile: - make clean all PROFILE_FLAGS=-pg + make clean all GCC_EXTRA_FLAGS=-pg + +release: + make clean all "GCC_EXTRA_FLAGS=-DNOLOG -DNDEBUG" mach: $(MAC_TARGETS) @@ -52,13 +55,13 @@ $(MACTXTS): %.txt: %.bin # touch $@ extract: extract.o fat.o - $(CXX) $^ -o $@ -g -I. -W -Wall $(PROFILE_FLAGS) + $(CXX) $^ -o $@ -g -I. -W -Wall $(GCC_EXTRA_FLAGS) macho2elf: macho2elf.o mach-o.o fat.o log.o - $(CXX) $^ -o $@ -g $(PROFILE_FLAGS) + $(CXX) $^ -o $@ -g $(GCC_EXTRA_FLAGS) ld-mac: ld-mac.o mach-o.o fat.o log.o - $(CXX) $^ -o $@ -g -ldl -lpthread $(PROFILE_FLAGS) + $(CXX) $^ -o $@ -g -ldl -lpthread $(GCC_EXTRA_FLAGS) # TODO(hamaji): autotoolize? libmac/libmac.so: libmac/mac.o diff --git a/ld-mac.cc b/ld-mac.cc index a60eaecad..fd72f3750 100644 --- a/ld-mac.cc +++ b/ld-mac.cc @@ -90,7 +90,7 @@ class FileMap { void addWatchDog(uintptr_t addr) { bool r = maps_.insert(make_pair(addr, (SymbolMap*)NULL)).second; - assert(r); + CHECK(r); } const char* dumpSymbol(void* p) { @@ -316,7 +316,7 @@ class MachOLoader { LOG << "will rebase: filename=" << mach.filename() << ", vmaddr=" << (void*)vmaddr << ", last_addr=" << (void*)last_addr_ << endl; - assert(i == 0); + CHECK(i == 0); vmaddr = last_addr_; *slide = vmaddr - seg->vmaddr; } @@ -334,7 +334,7 @@ class MachOLoader { } if (vmsize != filesize) { - assert(vmsize > filesize); + CHECK(vmsize > filesize); LOG << "mmap(anon) " << mach.filename() << ' ' << name << ": " << (void*)(vmaddr + filesize) << "-" << (void*)(vmaddr + vmsize) @@ -553,7 +553,7 @@ class MachOLoader { LOG << "booting from " << (void*)mach.entry() << "..." << endl; fflush(stdout); - assert(argc > 0); + CHECK(argc > 0); boot(mach.entry(), argc, argv, envp); /* int (*fp)(int, char**, char**) = diff --git a/log.h b/log.h index 4c22ca98b..d02186e1b 100644 --- a/log.h +++ b/log.h @@ -28,6 +28,8 @@ #ifndef LOG_H_ #define LOG_H_ +#include + #include "env_flags.h" DECLARE_bool(LOG); @@ -42,4 +44,11 @@ DECLARE_bool(LOG); #define ERR cerr +#ifdef NDEBUG +// Do an extra check to avoid warning around unused local variables. +# define CHECK(r) do { if (!(r)) assert(r); } while (0) +#else +# define CHECK(r) assert(r); +#endif + #endif diff --git a/mach-o.cc b/mach-o.cc index 961a09b30..fce4e920a 100644 --- a/mach-o.cc +++ b/mach-o.cc @@ -25,7 +25,6 @@ // OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF // SUCH DAMAGE. -#include #include #include #include @@ -42,7 +41,13 @@ #include "mach-o.h" #include "mach-o/loader.h" -DEFINE_bool(READ_SYMTAB, true, "Read symtab for better backtrace"); +DEFINE_bool(READ_SYMTAB, +#ifdef NDEBUG + false, +#else + true, +#endif + "Read symtab for better backtrace"); DEFINE_bool(READ_DYSYMTAB, false, "Read dysymtab"); typedef long long ll; @@ -346,7 +351,7 @@ void MachO::readExport(const uint8_t* start, exports_.push_back(exp); - assert(expected_term_end == p); + CHECK(expected_term_end == p); } const uint8_t num_children = *p++; @@ -358,7 +363,7 @@ void MachO::readExport(const uint8_t* start, p++; uint64_t off = uleb128(p); - assert(off != 0); + CHECK(off != 0); readExport(start, start + off, end, name_buf); name_buf->resize(orig_name_size); @@ -383,7 +388,7 @@ MachO::MachO(const char* filename, int fd, size_t offset, size_t len, } void MachO::init(int fd, size_t offset, size_t len) { - assert(fd); + CHECK(fd); fd_ = fd; offset_ = offset; if (!len) {