Skip to content
This repository has been archived by the owner on Mar 22, 2024. It is now read-only.

AFL maybe_linking regression #110

Open
choller opened this issue Aug 3, 2020 · 3 comments · May be fixed by #112
Open

AFL maybe_linking regression #110

choller opened this issue Aug 3, 2020 · 3 comments · May be fixed by #112

Comments

@choller
Copy link

choller commented Aug 3, 2020

In 3ef34c1 the maybe_linking logic was removed, which will break any build system that invokes the compiler with -E for preprocessing only. We need to add the logic back at least for -E.

However, I am also concerned about the removal of the -shared case, which I added long ago to afl-clang-fast because it failed with mozilla-central otherwise. If multiple definitions of the runtime are linked into a single binary, the linker will deduplicate these in most cases (I wouldn't rely on this either, but I believe most modern linkers can deal with this). However, if you add the runtime to a shared library and a binary and then load the shared library into the binary, you will end up with two runtimes. This can potentially break stuff (we fixed this with sanitizers before, where it caused major problems).

I will try to come up with a PR later that adds the -E logic and maybe the -shared logic as well.

Cc @andreafioraldi

@choller
Copy link
Author

choller commented Aug 3, 2020

Cc @vanhauser-thc

@andreafioraldi
Copy link
Contributor

Some build systems seem to require to have afl-llvm-rt also when compiling, in fact they were failing with the old afl. Agree that -E is a special case, problably as you said the best option is to distinguish compilation and just preprocessing

@choller
Copy link
Author

choller commented Aug 3, 2020

Some build systems seem to require to have afl-llvm-rt also when compiling, in fact they were failing with the old afl.

Yes, this is difficult to get right for AFL in the first place, because it requires the same logic as the sanitizer runtime linking logic and that one is complex enough.

However, -shared also should be excluded, because that is passed when linking a dso and there should never be any runtimes linked to those. I think I will try a combined patch for -E and -shared and see if that can build mozilla-central.

choller added a commit to choller/AFL-1 that referenced this issue Aug 4, 2020
choller added a commit to choller/AFL-1 that referenced this issue Aug 5, 2020
choller added a commit to choller/AFL-1 that referenced this issue Aug 5, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants