gcc plugin on MacOS failure
Iain Sandoe
idsandoe@googlemail.com
Thu Jul 22 20:16:30 GMT 2021
> On 22 Jul 2021, at 20:41, Andrew Pinski via Gcc <gcc@gcc.gnu.org> wrote:
>
> On Thu, Jul 22, 2021 at 7:37 AM Marc <mh@mh-sec.de> wrote:
>>
>> I have a gcc plugin (for afl++,
>> https://github.com/AFLplusplus/AFLplusplus) that works fine when
>> compiled on Linux but when compiled on MacOS (brew install gcc) it fails:
>>
>> ~/afl++ $ g++-11 -g -fPIC -std=c++11
>> -I/usr/local/Cellar/gcc/11.1.0_1/lib/gcc/11/gcc/x86_64-apple-darwin20/11.1.0/plugin/include
>> -I/usr/local/Cellar/gcc/11.1.0_1/lib/gcc/11/gcc/x86_64-apple-darwin20/11.1.0/plugin
>> -I/usr/local//Cellar/gmp/6.2.1/include -shared
>> instrumentation/afl-gcc-pass.so.cc -o afl-gcc-pass.so
>
> A few things, You are not building the plugin with the correct options
> for darwin.
> Basically you need to allow undefined references
-Wl, -undefined, dynamic_lookup
but if you expect those to bind to the main exe (e.g. cc1plus) at runtime, then you will need to build that with dynamic export. (-export_dynamic)
These things will *not* transfer to arm64 macOS and they will probably produce build warnings from newer linkers.
===
I suspect that we will need to find a different recipe for that case (possibly using the main exe as a "link library" on the plugin link line, I guess).
> and then also use
> dylib as the extension.
That’s a convention for shared libs but it won’t stop a plugin working (in fact things like python use .so on macOS)
for pluign modules, (e.g. Frameworks) even omitting the extension completely has been done.
(so this is not the source of the problem)
> A few other things too. I always forgot the exact options to use on
> Darwin really. GNU libtool can help with that.
perhaps, but I am not sure it’s maintained agressively .. so make sure to check what you find is up to date.
cheers,
Iain.
More information about the Gcc
mailing list