From 3f14fb1a0b3fac070714caa82bf938c410bbe232 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Thu, 2 Dec 2004 21:26:10 +0000 Subject: [PATCH] Recognize --strip-all as a synonym for -s. Add -S and --strip-debug option support. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18441 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/gccld/GenerateCode.cpp | 15 ++++++++------- tools/gccld/gccld.cpp | 13 +++++++++++-- tools/gccld/gccld.h | 2 +- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/tools/gccld/GenerateCode.cpp b/tools/gccld/GenerateCode.cpp index f22319df5bf..84eba1b505b 100644 --- a/tools/gccld/GenerateCode.cpp +++ b/tools/gccld/GenerateCode.cpp @@ -130,13 +130,14 @@ static inline void addPass(PassManager &PM, Pass *P) { /// /// Inputs: /// M - The module for which bytecode should be generated. -/// Strip - Flags whether symbols should be stripped from the output. +/// StripLevel - 2 if we should strip all symbols, 1 if we should strip +/// debug info. /// Internalize - Flags whether all symbols should be marked internal. /// Out - Pointer to file stream to which to write the output. /// /// Returns non-zero value on error. /// -int llvm::GenerateBytecode(Module *M, bool Strip, bool Internalize, +int llvm::GenerateBytecode(Module *M, int StripLevel, bool Internalize, std::ostream *Out) { // In addition to just linking the input from GCC, we also want to spiff it up // a little bit. Do this now. @@ -208,11 +209,11 @@ int llvm::GenerateBytecode(Module *M, bool Strip, bool Internalize, addPass(Passes, createGlobalDCEPass()); } - // If the -s command line option was specified, strip the symbols out of the - // resulting program to make it smaller. -s is a GCC option that we are - // supporting. - if (Strip) - addPass(Passes, createSymbolStrippingPass()); + // If the -s or -S command line options were specified, strip the symbols out + // of the resulting program to make it smaller. -s and -S are GLD options + // that we are supporting. + if (StripLevel) + addPass(Passes, createStripSymbolsPass(StripLevel == 1)); // Make sure everything is still good. Passes.add(createVerifierPass()); diff --git a/tools/gccld/gccld.cpp b/tools/gccld/gccld.cpp index 5a19866bca4..c1f430affa4 100644 --- a/tools/gccld/gccld.cpp +++ b/tools/gccld/gccld.cpp @@ -58,7 +58,10 @@ namespace { cl::value_desc("library prefix")); cl::opt - Strip("s", cl::desc("Strip symbol info from executable")); + Strip("strip-all", cl::desc("Strip all symbol info from executable")); + cl::opt + StripDebug("strip-debug", + cl::desc("Strip debugger symbol info from executable")); cl::opt NoInternalize("disable-internalize", @@ -90,6 +93,11 @@ namespace { CO5("eh-frame-hdr", cl::Hidden, cl::desc("Compatibility option: ignored")); cl::opt CO6("h", cl::Hidden, cl::desc("Compatibility option: ignored")); + + cl::alias A0("s", cl::desc("Alias for --strip-all"), + cl::aliasopt(Strip)); + cl::alias A1("S", cl::desc("Alias for --strip-debug"), + cl::aliasopt(StripDebug)); } /// PrintAndReturn - Prints a message to standard error and returns true. @@ -199,7 +207,8 @@ int main(int argc, char **argv, char **envp) { sys::RemoveFileOnSignal(sys::Path(RealBytecodeOutput)); // Generate the bytecode file. - if (GenerateBytecode(Composite.get(), Strip, !NoInternalize, &Out)) { + int StripLevel = Strip ? 2 : (StripDebug ? 1 : 0); + if (GenerateBytecode(Composite.get(), StripLevel, !NoInternalize, &Out)) { Out.close(); return PrintAndReturn(argv[0], "error generating bytecode"); } diff --git a/tools/gccld/gccld.h b/tools/gccld/gccld.h index 6ac1ca00a85..48dcecee28d 100644 --- a/tools/gccld/gccld.h +++ b/tools/gccld/gccld.h @@ -22,7 +22,7 @@ namespace llvm { int GenerateBytecode (Module * M, - bool Strip, + int StripLevel, bool Internalize, std::ostream * Out);