aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorvanhauser-thc <vh@thc.org>2021-03-17 12:44:07 +0100
committervanhauser-thc <vh@thc.org>2021-03-17 12:44:07 +0100
commit513bd703845283c4f94ae2760c48ca8cc38a0076 (patch)
tree9f53272fffb2b31b4bd2c7b97149d421685feb34 /src
parentcdd30c766b7102dcd5413efd8f009b4388b40425 (diff)
downloadafl++-513bd703845283c4f94ae2760c48ca8cc38a0076.tar.gz
shared linking fix
Diffstat (limited to 'src')
-rw-r--r--src/afl-cc.c29
1 files changed, 27 insertions, 2 deletions
diff --git a/src/afl-cc.c b/src/afl-cc.c
index c4f8f3fc..e13f285d 100644
--- a/src/afl-cc.c
+++ b/src/afl-cc.c
@@ -682,17 +682,42 @@ static void edit_params(u32 argc, char **argv, char **envp) {
/* Detect stray -v calls from ./configure scripts. */
+ u8 skip_next = 0;
while (--argc) {
u8 *cur = *(++argv);
+ if (skip_next) {
+
+ skip_next = 0;
+ continue;
+
+ }
+
if (!strncmp(cur, "--afl", 5)) continue;
if (lto_mode && !strncmp(cur, "-fuse-ld=", 9)) continue;
if (lto_mode && !strncmp(cur, "--ld-path=", 10)) continue;
if (!strncmp(cur, "-fno-unroll", 11)) continue;
if (strstr(cur, "afl-compiler-rt") || strstr(cur, "afl-llvm-rt")) continue;
- if (!strcmp(cur, "-Wl,-z,defs") || !strcmp(cur, "-Wl,--no-undefined"))
+ if (!strcmp(cur, "-Wl,-z,defs") || !strcmp(cur, "-Wl,--no-undefined") ||
+ !strcmp(cur, "--no-undefined")) {
+
continue;
+
+ }
+
+ if (!strcmp(cur, "-z")) {
+
+ u8 *param = *(argv + 1);
+ if (!strcmp(param, "defs")) {
+
+ skip_next = 1;
+ continue;
+
+ }
+
+ }
+
if (!strncmp(cur, "-fsanitize=fuzzer-", strlen("-fsanitize=fuzzer-")) ||
!strncmp(cur, "-fsanitize-coverage", strlen("-fsanitize-coverage"))) {
@@ -1015,7 +1040,7 @@ static void edit_params(u32 argc, char **argv, char **envp) {
}
#if !defined(__APPLE__) && !defined(__sun)
- if (!shared_linking)
+ if (shared_linking)
cc_params[cc_par_cnt++] =
alloc_printf("-Wl,--dynamic-list=%s/dynamic_list.txt", obj_path);
#endif