Skip to content

Commit

Permalink
Issue google#110 - Fix afl-clang-fast -E and -shared regressions.
Browse files Browse the repository at this point in the history
  • Loading branch information
choller committed Aug 4, 2020
1 parent fcf734a commit 189737e
Showing 1 changed file with 22 additions and 1 deletion.
23 changes: 22 additions & 1 deletion llvm_mode/afl-clang-fast.c
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,8 @@ static void find_obj(u8* argv0) {

static void edit_params(u32 argc, char** argv) {

u8 fortify_set = 0, asan_set = 0, x_set = 0, bit_mode = 0;
u8 fortify_set = 0, asan_set = 0, x_set = 0, bit_mode = 0,
shared_linking = 0, preprocessor_only = 0;
u8 *name;

cc_params = ck_alloc((argc + 128) * sizeof(u8*));
Expand Down Expand Up @@ -158,6 +159,9 @@ static void edit_params(u32 argc, char** argv) {
if (!strcmp(cur, "-Wl,-z,defs") ||
!strcmp(cur, "-Wl,--no-undefined")) continue;

if (!strcmp(cur, "-E")) preprocessor_only = 1;
if (!strcmp(cur, "-shared")) shared_linking = 1;

cc_params[cc_par_cnt++] = cur;

}
Expand Down Expand Up @@ -277,6 +281,23 @@ static void edit_params(u32 argc, char** argv) {
cc_params[cc_par_cnt++] = "none";
}

if (preprocessor_only || shared_linking) {
/* In the preprocessor_only case (-E), we are not actually compiling at
all but requesting the compiler to output preprocessed sources only.
We must not add the runtime in this case because the compiler will
simply output its binary content back on stdout, breaking any build
systems that rely on a separate source preprocessing step.
The shared_linking case (-shared) is more complex. This flag should
only be passed when linking a shared object. When loading such a shared
object into a binary that has also been built with AFL, two AFL runtimes
will exist side-by-side. This is only a problem in the dynamic loading
case because for static linking, the compiler can de-duplicate the
runtime. We must hence avoid attaching the runtime to shared objects. */
cc_params[cc_par_cnt] = NULL;
return;
}

#ifndef __ANDROID__
switch (bit_mode) {

Expand Down

0 comments on commit 189737e

Please sign in to comment.