Strip symbols not working


#1

With current tip from master, Projucer set to project Type “Audio Plug-in”, debugging disabled, optimisation set to -O3 and having “Strip local symbols” turned on, I can still see many symbols of my own code when I do “nm Pluginname/Contents/Macos/Pluginname”.

Is this an error with Projucer, or am I missing something?


#2

A lot has happened on the develop branch recently - try that!


#3

I’ve just re-saved the project with the latest Projucer from the develop branch, but the generated XCode project is identically (except for the VST SDK path which disappeared from the HEADER_SEARCH_PATHS).

So, what could it be?


#4

Are the remaining symbols the symbols of your code or just symbols of 3rd party libraries, e.g. Juce, Intel IPP, … ?


#5

These are of my own code… (I am super glad that I was checking this before releasing an update.)


#6

I’ve also never had much luck with the Xcode strip symbols function, it never seems to do a very good job. Usually in installers that I make, I manually run the strip command with the right arguments via a build script.


#7

I did this before, too, but dropped it when the option was added to Projucer.

Why are you offering this option in Projucer then, if you know that it is unreliable?


#8

Well, some people use it, apparently, and requested that we support it.


#9

Then I’d recommend that you put some big red text next to this option… currently the option gives us wrong faith in that symbols are stripped.

Releasing a plugin without stripped symbols would be such a bad option. I’d say send out a newsletter to everyone to ask them to make sure that their software is released with stripped symbols, and that they did not accidentally use that option.


#10

…so I’m told that apparently it does work fine as long as you also enable “deployment post-processing”, which you can do with a flag.


#11

Ouch, my fault it seems…

So, DEPLOYMENT_POSTPROCESSING is already set to YES by Projucer for Release builds, and all is fine.

It seems I must have done a “Build for Running” or so, instead of “Build for Profiling”, thus actually not doing a Release build. I am super-sorry for the wrong noise.