diff options
Diffstat (limited to 'tools/gccld/gccld.cpp')
-rw-r--r-- | tools/gccld/gccld.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/tools/gccld/gccld.cpp b/tools/gccld/gccld.cpp index d06eb6ec05..9e344a61e2 100644 --- a/tools/gccld/gccld.cpp +++ b/tools/gccld/gccld.cpp @@ -212,9 +212,16 @@ int main(int argc, char **argv, char **envp) { // SIGINT signal. sys::RemoveFileOnSignal(sys::Path(RealBytecodeOutput)); - // Generate the bytecode file. + // Strip everything if Strip is set, otherwise if stripdebug is set, just + // strip debug info. int StripLevel = Strip ? 2 : (StripDebug ? 1 : 0); - if (GenerateBytecode(Composite.get(), StripLevel, !NoInternalize, &Out)) { + + // Internalize the module if neither -disable-internalize nor + // -link-as-library are passed in. + bool ShouldInternalize = !NoInternalize & !LinkAsLibrary; + + // Generate the bytecode file. + if (GenerateBytecode(Composite.get(), StripLevel, ShouldInternalize, &Out)){ Out.close(); return PrintAndReturn(argv[0], "error generating bytecode"); } |