diff options
author | Chris Lattner <sabre@nondot.org> | 2004-12-02 21:26:10 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2004-12-02 21:26:10 +0000 |
commit | 3f14fb1a0b3fac070714caa82bf938c410bbe232 (patch) | |
tree | ba857791ca3f57e59361ea8b82419d23961aa998 /tools/gccld | |
parent | e3ad43c828280cf11e8631f1a814a51a0b168016 (diff) | |
download | external_llvm-3f14fb1a0b3fac070714caa82bf938c410bbe232.zip external_llvm-3f14fb1a0b3fac070714caa82bf938c410bbe232.tar.gz external_llvm-3f14fb1a0b3fac070714caa82bf938c410bbe232.tar.bz2 |
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
Diffstat (limited to 'tools/gccld')
-rw-r--r-- | tools/gccld/GenerateCode.cpp | 15 | ||||
-rw-r--r-- | tools/gccld/gccld.cpp | 13 | ||||
-rw-r--r-- | 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 f22319d..84eba1b 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 5a19866..c1f430a 100644 --- a/tools/gccld/gccld.cpp +++ b/tools/gccld/gccld.cpp @@ -58,7 +58,10 @@ namespace { cl::value_desc("library prefix")); cl::opt<bool> - Strip("s", cl::desc("Strip symbol info from executable")); + Strip("strip-all", cl::desc("Strip all symbol info from executable")); + cl::opt<bool> + StripDebug("strip-debug", + cl::desc("Strip debugger symbol info from executable")); cl::opt<bool> NoInternalize("disable-internalize", @@ -90,6 +93,11 @@ namespace { CO5("eh-frame-hdr", cl::Hidden, cl::desc("Compatibility option: ignored")); cl::opt<std::string> 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 6ac1ca0..48dcece 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); |