Code Monkey home page Code Monkey logo

libprotobuf-mutator_fuzzing_learning's People

Contributors

bruce30262 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

libprotobuf-mutator_fuzzing_learning's Issues

[Research] How to parse and mutate a protobuf structure

For now the custom mutator in 4_libprotobuf_aflpp_custom_mutator will NOT process the input from AFL++, meaning it will not process the input in in/. I remember I want to do something like:

TEST input = protobuf_mutator::ParseTextMessage(test_case);  // test_case == "a:1\nb: 'AAAA'"
protobuf_mutator::mutate(input); // THIS IS NOT A VALID CALL THOUGH
string raw_data = ProtoToData(input);
..................

But in the AFL++'s custom mutator it always failed while parsing the input data because AFL++ will always pass an invalid TEST text message into the custom mutator function ( most of them are incomplete input data from in/ ). Gotta do some research and see if this is doable.

clang: error: no such file or directory libprotobuf-mutator-libfuzzer.a

when I am doing EX2. There are two errors? How to fix it?

clang -g -fsanitize=fuzzer,address -I../1_simple_protobuf/genfiles -o lpm_libfuzz harness.o lpm_libfuzz.cc ../1_simple_protobuf/genfiles/test.pb.cc /home/sing/libprotobuf-mutator/build/src/libfuzzer/libprotobuf-mutator-libfuzzer.a /home/sing/libprotobuf-mutator/build/src/libprotobuf-mutator.a /home/sing/libprotobuf-mutator/build/external.protobuf/lib/libprotobufd.a -I/home/sing/libprotobuf-mutator/build/external.protobuf/include -I/home/sing/libprotobuf-mutator
clang: error: no such file or directory: '/home/sing/libprotobuf-mutator/build/src/libfuzzer/libprotobuf-mutator-libfuzzer.a'
clang: error: no such file or directory: '/home/sing/libprotobuf-mutator/build/src/libprotobuf-mutator.a'
make: *** [Makefile:21: lpm_libfuzz] Error 1

sing@Fuzz-learning:~/libprotobuf-mutator/build$ clang --version
Ubuntu clang version 14.0.0-1ubuntu1.1
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin

sing@Fuzz-learning:~/libprotobuf-mutator/build$ cmake --version
cmake version 3.28.1

My process of doing this program

When I run sudo ninja install.
No "libprotobuf-mutator-libfuzzer.a" and "libprotobuf-mutator.a" have been installed.

sing@Fuzz-learning:~/libprotobuf-mutator/build$ sudo ninja install
[0/1] Install the project...
-- Install configuration: "Debug"
-- Installing: /usr/local/lib/cmake/libprotobuf-mutator/libprotobuf-mutatorTargets.cmake
-- Installing: /usr/local/lib/cmake/libprotobuf-mutator/libprotobuf-mutatorTargets-debug.cmake
-- Installing: /usr/local/lib/cmake/libprotobuf-mutator/libprotobuf-mutatorConfig.cmake
-- Installing: /usr/local/OFF/libprotobuf-mutator.pc
-- Up-to-date: /usr/local/include/libprotobuf-mutator/port
-- Up-to-date: /usr/local/include/libprotobuf-mutator/port/gtest.h
-- Up-to-date: /usr/local/include/libprotobuf-mutator/port/protobuf.h
-- Up-to-date: /usr/local/include/libprotobuf-mutator/src
-- Up-to-date: /usr/local/include/libprotobuf-mutator/src/random.h
-- Up-to-date: /usr/local/include/libprotobuf-mutator/src/libfuzzer
-- Up-to-date: /usr/local/include/libprotobuf-mutator/src/libfuzzer/libfuzzer_macro.h
-- Up-to-date: /usr/local/include/libprotobuf-mutator/src/libfuzzer/libfuzzer_mutator.h
-- Up-to-date: /usr/local/include/libprotobuf-mutator/src/text_format.h
-- Up-to-date: /usr/local/include/libprotobuf-mutator/src/weighted_reservoir_sampler.h
-- Up-to-date: /usr/local/include/libprotobuf-mutator/src/utf8_fix.h
-- Up-to-date: /usr/local/include/libprotobuf-mutator/src/field_instance.h
-- Up-to-date: /usr/local/include/libprotobuf-mutator/src/binary_format.h
-- Up-to-date: /usr/local/include/libprotobuf-mutator/src/mutator.h
-- Installing: /usr/local/lib/libprotobuf-mutator.so.0
-- Up-to-date: /usr/local/lib/libprotobuf-mutator.so
-- Installing: /usr/local/lib/libprotobuf-mutator-libfuzzer.so.0
-- Set non-toolchain portion of runtime path of "/usr/local/lib/libprotobuf-mutator-libfuzzer.so.0" to ""

lpm_aflpp_custom_mutator_input.so fails to load. undefined symbol: _ZN4absl12lts_2023012512log_internal9kCharNullE

Protoc version: libprotoc 22.3
libprotobuf-mutator: 3b28530531b154a748fe9884bc9219b4966f0754

Here is my Dockerfile to setup the environment

FROM ubuntu:22.04

ENV DEBIAN_FRONTEND=noninteractive
ENV LC_CTYPE=C.UTF-8

RUN dpkg --add-architecture i386
RUN apt-get -y update &&\
    apt-get dist-upgrade -y &&\
    apt-get install -y ruby \
        build-essential \
        git \
        python3 \
        python3-pip \
        ipython3 \
        libc6:i386 \
        libncurses5:i386 \
        libstdc++6:i386 \
        socat \
        tmux \
        strace \
        ltrace \
        libcapstone-dev \
        seccomp \
        ruby-dev \
        xxd \
        netcat  \
        iproute2 \
        vim \
        elfutils \
        sudo \
        binutils-common \
        patchelf \
        automake \
        cmake \
        flex \
        bison \
        libglib2.0-dev \
        libpixman-1-dev \
        python3-setuptools \
        cargo \
        libgtk-3-dev

RUN apt-get install -y \
        lld \
        llvm-11 \
        llvm-11-dev \
        clang-11 \
        libfuzzer-11-dev

RUN apt-get install -y \
        zip \
        bison \
        cmake \
        flex \
        libedit-dev \
        zlib1g-dev \
        libelf-dev \
        libfl-dev \
        python3-setuptools \
        liblzma-dev \
        libdebuginfod-dev \
        netperf \
        iperf \
        libssl-dev \
        wget \
        python-is-python3 \
        neovim \
        gcc-multilib \
        libreadline-dev \
        bsdmainutils \
        meson \
        texinfo \
        ninja-build \
        protobuf-compiler \
        libprotobuf-dev \
        libz-dev \
        pkg-config \
        autoconf \
        libtool


RUN apt-get install -y gcc-$(gcc --version|head -n1|sed 's/\..*//'|sed 's/.* //')-plugin-dev libstdc++-$(gcc --version|head -n1|sed 's/\..*//'|sed 's/.* //')-dev


RUN rm -rf /var/lib/apt/lists/*
# RUN cd /opt && git clone --depth 1 --recurse-submodules https://github.com/pwndbg/pwndbg && cd pwndbg && ./setup.sh
RUN cd /opt && git clone https://github.com/AFLplusplus/AFLplusplus && cd AFLplusplus && make distrib && make install

RUN wget https://cmake.org/files/v3.28/cmake-3.28.0-rc4-linux-x86_64.sh
RUN mkdir /opt/cmake
RUN sh cmake-3.28.0-rc4-linux-x86_64.sh --prefix=/opt/cmake/ --skip-license
RUN ln -s /opt/cmake/bin/cmake /usr/local/bin/cmake

RUN git clone https://github.com/google/libprotobuf-mutator.git /opt/libprotobuf-mutator

# build libprotobuf-mutator and install the protobuf-compiler and libprotobuf from the external.protobuf build
RUN cd /opt/libprotobuf-mutator && \
    mkdir build && \
    cd build && \
    cmake .. -GNinja -DCMAKE_C_COMPILER=clang-11 \
    -DCMAKE_CXX_COMPILER=clang++-11 \
    -DCMAKE_BUILD_TYPE=Debug \
    -DLIB_PROTO_MUTATOR_DOWNLOAD_PROTOBUF=ON \
    -DCMAKE_C_FLAGS="-fPIC" -DCMAKE_CXX_FLAGS="-fPIC" && \
    ninja -j $(nproc) && \
    cd external.protobuf/src/external.protobuf-build && \
    cmake -DCMAKE_INSTALL_PREFIX=/usr/local/ ../external.protobuf && \
    cmake --build . --target install

RUN git clone https://github.com/bruce30262/libprotobuf-mutator_fuzzing_learning /opt/libprotobuf-mutator_fuzzing_learning

WORKDIR /root/
ENTRYPOINT ["tail", "-f", "/dev/null"]

here is my updated Makefile for 5_libprotobuf_aflpp_custom_mutator_input

TARGET=lpm_aflpp_custom_mutator_input
CXX=clang++-11
AFLCC=/opt/AFLplusplus/afl-gcc
PB_SRC=test.pb.cc

PROTOBUF_DIR=/opt/libprotobuf-mutator/build/external.protobuf
PROTOBUF_LIB=$(PROTOBUF_DIR)/lib/libprotobufd.a

LPM_DIR=/opt/libprotobuf-mutator
LPM_LIB=$(LPM_DIR)/build/src/libfuzzer/libprotobuf-mutator-libfuzzer.a $(LPM_DIR)/build/src/libprotobuf-mutator.a

INC=-I$(PROTOBUF_DIR)/include -I$(LPM_DIR) -I/opt

all: $(TARGET).so

$(TARGET).so: $(TARGET).cc $(PB_SRC)
        $(CXX) -fPIC -c $^ $(INC)
        $(CXX) -shared -Wall -O3 -o $@ *.o $(LPM_LIB) $(PROTOBUF_LIB)

vuln: vuln.c
        $(AFLCC) -o $@ $^

test_proto_serializer: test_proto_serializer.cc $(PB_SRC)
        $(CXX) -o $@ $^ $(PROTOBUF_LIB) $(INC)

.PHONY: clean
clean:
        rm *.so *.o vuln test_proto_serializer

generated new test.pb.cc and test.pb.h using the protoc built from libprotobuf-mutator

building the library

# make all
clang++-11 -fPIC -c lpm_aflpp_custom_mutator_input.cc test.pb.cc -I/opt/libprotobuf-mutator/build/external.protobuf/include -I/opt/libprotobuf-mutator -I/opt
clang++-11 -shared -Wall -O3 -o lpm_aflpp_custom_mutator_input.so *.o /opt/libprotobuf-mutator/build/src/libfuzzer/libprotobuf-mutator-libfuzzer.a /opt/libprotobuf-mutator/build/src/libprotobuf-mutator.a /opt/libprotobuf-mutator/build/external.protobuf/lib/libprotobufd.a
# 

running run_fuzz.sh crashes
image

Any Idea what is causing this?

Protoc Version

I tried fuzzing a sample program that utilizes the libprotobuf-mutator but encountered errors. When fuzzing programs that do not utilize libprotobuf-mutator, there are no errors. The errors occurred due to missing or incompatible header files of protobuf.

  1. I had successfully built the LLVM Project.

  2. There were no errors in building libprotobuf-mutator.

"By default, the system-installed version of protobuf is used. However, on some systems, the system version is too old. You can pass LIB_PROTO_MUTATOR_DOWNLOAD_PROTOBUF=ON to CMake to automatically download and build a working version of protobuf."

Since the above was mentioned in the GitHub repository of libprotobuf-mutator, I set the above-mentioned flag. There is a directory libprotobuf-mutator in the directory "/usr/local/include". So, I think that the header files of libprotobuf mutator are properly installed. However, there were some incompatibilities of header files with the protoc (protobuf compiler) version, resulting in errors.
4. When I built the libprotobuf-mutator, it had a protoc in the directory "/libprotobuf-mutator/build/external.protobuf/bin/protoc-25.2.0". I used this protoc by exporting the path, but I run into error that runtime_version.h was not found.

  1. Also, there was a system-installed version of protoc that can be installed using the package manager, with the version:

"Package: protobuf-compiler Version: 3.12.4-1ubuntu7.22.04.1"

Additionally, there were header files of protoc in the directory /usr/include/google/protobuf.

  1. I uninstalled the version of protoc that was installed from the package manager and then I rebuilt the libprotobuf-mutator, but then the header files were missing. I again installed the protoc from the package manager, but then there were some incompatibilities of header files with the protoc version, resulting in errors. From this, I derive that the header files of the protoc which are with libprotobuf-mutator are not installed.

  2. So, I tried building protobuf from source. I built the latest version of protobuf. Still, the header files were not in the /usr/include directory. And the errors of missing header files persisted. So, I copied the header files to the /usr/include directory and tried again. But then I got the error:

In file included from test_proto.cc:2:
./genfiles/ast.pb.h:15:2: error: "This file was generated by a newer version of protoc which is"
   15 | #error "This file was generated by a newer version of protoc which is"
      |  ^
./genfiles/ast.pb.h:16:2: error: "incompatible with your Protocol Buffer headers. Please update"
   16 | #error "incompatible with your Protocol Buffer headers. Please update"
      |  ^
In file included from calc.cc:2:
In file included from ./genfiles/ast.pb.h:26:
/usr/include/google/protobuf/io/coded_stream.h:110:10: fatal error: 'absl/log/absl_check.h' file not found
  110 | #include "absl/log/absl_check.h"
      |          ^~~~~~~~~~~~~~~~~~~~~~~
4 errors generated.

Note: The absl library is installed.

  1. I also tried another way. Since the version of protoc is 25.2.0 in the libprotobuf-mutator, I thought that it probably requires this version of protoc. So I built that version of protoc from source, but there were errors in building.
    Should I try building the protobuf version 25.2.0 again?

Kindly give me any insights that could resolve this and I can properly perform structure aware fuzzing in libfuzzer using libprotobuf-mutator. I understand that the points mentioned may be cluttered. Kindly notify me if it is too cluttered. Thank you for your time.

Will "mutated_out" cause memory leaks?

In the “afl_custom_fuzz” function, mutated_out allocates a piece of memory and assigns the pointer to out_buf. In AFLPP this piece of memory is not released, will this cause memory leak?

About protoc version

Hello, I want to learn about how to combine afl++ and libprotobuf-mutator. I fellow your command "cmake .. -GNinja -DCMAKE_C_COMPILER=clang-11
-DCMAKE_CXX_COMPILER=clang++-11
-DCMAKE_BUILD_TYPE=Debug
-DLIB_PROTO_MUTATOR_DOWNLOAD_PROTOBUF=ON
-DCMAKE_C_FLAGS="-fPIC" -DCMAKE_CXX_FLAGS="-fPIC" "
This will install protoc in libprotobuf-mutator/build/external.protobuf/bin/ , and the version of protoc is 3.17.3.
I fellow your tutorial in 5_libprotobuf_aflpp_custom_mutator_input and usd command make try to create lpm_aflpp_custom_mutator_input.so.But there has some trouble seems like because of protoc version
image
Looks like two questions, first is the version of protoc, second is can't find inlined_string_field.h. Can you help me? Thank you very much!

invalid UTF-8 data when serializing a protocol buffer

The field type is string, when I call Mutate method, the error blow occured.

[libprotobuf ERROR google/protobuf/wire_format_lite.cc:577] String field 'xxxxx' contains invalid UTF-8 data when serializing a protocol buffer. Use the 'bytes' type if you intend to send raw bytes.

/usr/bin/ld: final link failed: bad value

sorry about this, but when I trying to install and study this, I meet some errors and I cannot find any information about errors....
and I'm sure I followed environment settings in readme...

basically, when i use this:

cmake .. -GNinja -DCMAKE_C_COMPILER=clang-14 -DCMAKE_CXX_COMPILER=clang++-14 -DCMAKE_BUILD_TYPE=Debug -DLIB_PROTO_MUTATOR_DOWNLOAD_PROTOBUF=ON -DBUILD_SHARED_LIBS=ON

then I will receive errors in ninja check like /usr/bin/ld: final link failed: bad value

but i dont receive errors while using this:

cmake .. -GNinja -DCMAKE_C_COMPILER=clang-14 -DCMAKE_CXX_COMPILER=clang++-14 -DCMAKE_BUILD_TYPE=Debug -DLIB_PROTO_MUTATOR_DOWNLOAD_PROTOBUF=ON -DCMAKE_C_FLAGS="-fPIC" -DCMAKE_CXX_FLAGS="-fPIC"

I'm totally confused about this situation...

environment

root@truth:~# uname -a
Linux truth 6.2.0-36-generic #37~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Mon Oct  9 15:34:04 UTC 2 x86_64 x86_64 x86_64 GNU/Linux

root@truth:~# clang-14 --version
Ubuntu clang version 14.0.0-1ubuntu1.1
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin

root@truth:~# clang++-14 --version
Ubuntu clang version 14.0.0-1ubuntu1.1
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin

root@truth:~# cmake --version
cmake version 3.28.1

CMake suite maintained and supported by Kitware (kitware.com/cmake).

and I use these commands to clone libprotobuf-mutator and afl++

git clone --hrad af3bb1 https://github.com/google/libprotobuf-mutator.git
git clone --hard 61e77c https://github.com/AFLplusplus/AFLplusplus.git

install

root@truth:/code/libprotobuf-mutator-af3bb18/build#  cmake .. -GNinja -DCMAKE_C_COMPILER=clang-14 -DCMAKE_CXX_COMPILER=clang++-14 -DCMAKE_BUILD_TYPE=Debug -DLIB_PROTO_MUTATOR_DOWNLOAD_PROTOBUF=ON -DBUILD_SHARED_LIBS=ON
-- The CXX compiler identification is Clang 14.0.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/clang++-14 - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- The C compiler identification is Clang 14.0.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/clang-14 - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE  
-- Looking for lzma_auto_decoder in /usr/lib/x86_64-linux-gnu/liblzma.so
-- Looking for lzma_auto_decoder in /usr/lib/x86_64-linux-gnu/liblzma.so - found
-- Looking for lzma_easy_encoder in /usr/lib/x86_64-linux-gnu/liblzma.so
-- Looking for lzma_easy_encoder in /usr/lib/x86_64-linux-gnu/liblzma.so - found
-- Looking for lzma_lzma_preset in /usr/lib/x86_64-linux-gnu/liblzma.so
-- Looking for lzma_lzma_preset in /usr/lib/x86_64-linux-gnu/liblzma.so - found
-- Found LibLZMA: /usr/lib/x86_64-linux-gnu/liblzma.so (found version "5.2.5") 
-- Found ZLIB: /usr/lib/x86_64-linux-gnu/libz.so (found version "1.2.11")  
-- Performing Test LIB_PROTO_MUTATOR_HAS_SANITIZE_ADDRESS
-- Performing Test LIB_PROTO_MUTATOR_HAS_SANITIZE_ADDRESS - Success
-- Performing Test LIB_PROTO_MUTATOR_HAS_SANITIZE_SCOPE
-- Performing Test LIB_PROTO_MUTATOR_HAS_SANITIZE_SCOPE - Success
-- Performing Test LIB_PROTO_MUTATOR_HAS_NO_COVERAGE
-- Performing Test LIB_PROTO_MUTATOR_HAS_NO_COVERAGE - Success
-- Performing Test LIB_PROTO_MUTATOR_HAS_SANITIZE_FUZZER
-- Performing Test LIB_PROTO_MUTATOR_HAS_SANITIZE_FUZZER - Success
-- Performing Test LIB_PROTO_MUTATOR_HAS_NO_SANITIZE_FUZZER
-- Performing Test LIB_PROTO_MUTATOR_HAS_NO_SANITIZE_FUZZER - Success
-- Performing Test LIB_PROTO_MUTATOR_HAS_WSTRING_CONVERSION
-- Performing Test LIB_PROTO_MUTATOR_HAS_WSTRING_CONVERSION - Success
-- Found Protobuf: /usr/lib/x86_64-linux-gnu/libprotobuf.so (found version "3.12.4") 
-- Configuring done (1.3s)
-- Generating done (0.0s)
-- Build files have been written to: /code/libprotobuf-mutator-af3bb18/build
root@truth:/code/libprotobuf-mutator-af3bb18/build# ninja check
[5/75] Performing download step (git clone) for 'external.googletest'
......
......
[53/75] Linking CXX executable src/mutator_test
FAILED: src/mutator_test 
: && /usr/bin/clang++-14 -fno-exceptions -Werror -Wall -Wstring-conversion -g  src/CMakeFiles/mutator_test.dir/mutator_test.cc.o src/CMakeFiles/mutator_test.dir/utf8_fix_test.cc.o src/CMakeFiles/mutator_test.dir/weighted_reservoir_sampler_test.cc.o -o src/mutator_test  -Wl,-rpath,/code/libprotobuf-mutator-af3bb18/build/src  src/libprotobuf-mutator.so.0  src/libmutator-test-proto.so  /usr/lib/x86_64-linux-gnu/libz.so  external.googletest/lib/libgtest.a  external.googletest/lib/libgmock.a  external.googletest/lib/libgtest_main.a  -Xlinker --start-group  external.protobuf/lib/libprotobufd.a  external.protobuf/lib/libabsl_bad_any_cast_impl.a  external.protobuf/lib/libabsl_bad_optional_access.a  external.protobuf/lib/libabsl_bad_variant_access.a  external.protobuf/lib/libabsl_base.a  external.protobuf/lib/libabsl_city.a  external.protobuf/lib/libabsl_civil_time.a  external.protobuf/lib/libabsl_cord.a  external.protobuf/lib/libabsl_cord_internal.a  external.protobuf/lib/libabsl_cordz_functions.a  external.protobuf/lib/libabsl_cordz_handle.a  external.protobuf/lib/libabsl_cordz_info.a  external.protobuf/lib/libabsl_cordz_sample_token.a  external.protobuf/lib/libabsl_crc_cord_state.a  external.protobuf/lib/libabsl_crc_cpu_detect.a  external.protobuf/lib/libabsl_crc_internal.a  external.protobuf/lib/libabsl_crc32c.a  external.protobuf/lib/libabsl_debugging_internal.a  external.protobuf/lib/libabsl_demangle_internal.a  external.protobuf/lib/libabsl_die_if_null.a  external.protobuf/lib/libabsl_examine_stack.a  external.protobuf/lib/libabsl_exponential_biased.a  external.protobuf/lib/libabsl_failure_signal_handler.a  external.protobuf/lib/libabsl_flags.a  external.protobuf/lib/libabsl_flags_commandlineflag.a  external.protobuf/lib/libabsl_flags_commandlineflag_internal.a  external.protobuf/lib/libabsl_flags_config.a  external.protobuf/lib/libabsl_flags_internal.a  external.protobuf/lib/libabsl_flags_marshalling.a  external.protobuf/lib/libabsl_flags_parse.a  external.protobuf/lib/libabsl_flags_private_handle_accessor.a  external.protobuf/lib/libabsl_flags_program_name.a  external.protobuf/lib/libabsl_flags_reflection.a  external.protobuf/lib/libabsl_flags_usage.a  external.protobuf/lib/libabsl_flags_usage_internal.a  external.protobuf/lib/libabsl_graphcycles_internal.a  external.protobuf/lib/libabsl_hash.a  external.protobuf/lib/libabsl_hashtablez_sampler.a  external.protobuf/lib/libabsl_int128.a  external.protobuf/lib/libabsl_kernel_timeout_internal.a  external.protobuf/lib/libabsl_leak_check.a  external.protobuf/lib/libabsl_log_entry.a  external.protobuf/lib/libabsl_log_flags.a  external.protobuf/lib/libabsl_log_globals.a  external.protobuf/lib/libabsl_log_initialize.a  external.protobuf/lib/libabsl_log_internal_check_op.a  external.protobuf/lib/libabsl_log_internal_conditions.a  external.protobuf/lib/libabsl_log_internal_format.a  external.protobuf/lib/libabsl_log_internal_globals.a  external.protobuf/lib/libabsl_log_internal_log_sink_set.a  external.protobuf/lib/libabsl_log_internal_message.a  external.protobuf/lib/libabsl_log_internal_nullguard.a  external.protobuf/lib/libabsl_log_internal_proto.a  external.protobuf/lib/libabsl_log_severity.a  external.protobuf/lib/libabsl_log_sink.a  external.protobuf/lib/libabsl_low_level_hash.a  external.protobuf/lib/libabsl_malloc_internal.a  external.protobuf/lib/libabsl_periodic_sampler.a  external.protobuf/lib/libabsl_random_distributions.a  external.protobuf/lib/libabsl_random_internal_distribution_test_util.a  external.protobuf/lib/libabsl_random_internal_platform.a  external.protobuf/lib/libabsl_random_internal_pool_urbg.a  external.protobuf/lib/libabsl_random_internal_randen.a  external.protobuf/lib/libabsl_random_internal_randen_hwaes.a  external.protobuf/lib/libabsl_random_internal_randen_hwaes_impl.a  external.protobuf/lib/libabsl_random_internal_randen_slow.a  external.protobuf/lib/libabsl_random_internal_seed_material.a  external.protobuf/lib/libabsl_random_seed_gen_exception.a  external.protobuf/lib/libabsl_random_seed_sequences.a  external.protobuf/lib/libabsl_raw_hash_set.a  external.protobuf/lib/libabsl_raw_logging_internal.a  external.protobuf/lib/libabsl_scoped_set_env.a  external.protobuf/lib/libabsl_spinlock_wait.a  external.protobuf/lib/libabsl_stacktrace.a  external.protobuf/lib/libabsl_status.a  external.protobuf/lib/libabsl_statusor.a  external.protobuf/lib/libabsl_str_format_internal.a  external.protobuf/lib/libabsl_strerror.a  external.protobuf/lib/libabsl_string_view.a  external.protobuf/lib/libabsl_strings.a  external.protobuf/lib/libabsl_strings_internal.a  external.protobuf/lib/libabsl_symbolize.a  external.protobuf/lib/libabsl_synchronization.a  external.protobuf/lib/libabsl_throw_delegate.a  external.protobuf/lib/libabsl_time.a  external.protobuf/lib/libabsl_time_zone.a  external.protobuf/lib/libutf8_validity.a  -Xlinker --end-group && :
/usr/bin/ld: src/mutator_test: hidden symbol `_ZN6google8protobuf8internal8TcParser8FastMtS2EPNS0_11MessageLiteEPKcPNS1_12ParseContextENS1_11TcFieldDataEPKNS1_16TcParseTableBaseEm' in external.protobuf/lib/libprotobufd.a(generated_message_tctable_lite.cc.o) is referenced by DSO
/usr/bin/ld: final link failed: bad value
clang: error: linker command failed with exit code 1 (use -v to see invocation)
[54/75] Linking CXX executable src/libfuzzer/libfuzzer_test
FAILED: src/libfuzzer/libfuzzer_test 
: && /usr/bin/clang++-14 -fno-exceptions -Werror -Wall -Wstring-conversion -g  src/libfuzzer/CMakeFiles/libfuzzer_test.dir/libfuzzer_test.cc.o -o src/libfuzzer/libfuzzer_test  -Wl,-rpath,/code/libprotobuf-mutator-af3bb18/build/src/libfuzzer:/code/libprotobuf-mutator-af3bb18/build/src  src/libfuzzer/libprotobuf-mutator-libfuzzer.so.0  src/libmutator-test-proto.so  external.googletest/lib/libgtest.a  external.googletest/lib/libgmock.a  external.googletest/lib/libgtest_main.a  src/libprotobuf-mutator.so.0  -Xlinker --start-group  external.protobuf/lib/libprotobufd.a  external.protobuf/lib/libabsl_bad_any_cast_impl.a  external.protobuf/lib/libabsl_bad_optional_access.a  external.protobuf/lib/libabsl_bad_variant_access.a  external.protobuf/lib/libabsl_base.a  external.protobuf/lib/libabsl_city.a  external.protobuf/lib/libabsl_civil_time.a  external.protobuf/lib/libabsl_cord.a  external.protobuf/lib/libabsl_cord_internal.a  external.protobuf/lib/libabsl_cordz_functions.a  external.protobuf/lib/libabsl_cordz_handle.a  external.protobuf/lib/libabsl_cordz_info.a  external.protobuf/lib/libabsl_cordz_sample_token.a  external.protobuf/lib/libabsl_crc_cord_state.a  external.protobuf/lib/libabsl_crc_cpu_detect.a  external.protobuf/lib/libabsl_crc_internal.a  external.protobuf/lib/libabsl_crc32c.a  external.protobuf/lib/libabsl_debugging_internal.a  external.protobuf/lib/libabsl_demangle_internal.a  external.protobuf/lib/libabsl_die_if_null.a  external.protobuf/lib/libabsl_examine_stack.a  external.protobuf/lib/libabsl_exponential_biased.a  external.protobuf/lib/libabsl_failure_signal_handler.a  external.protobuf/lib/libabsl_flags.a  external.protobuf/lib/libabsl_flags_commandlineflag.a  external.protobuf/lib/libabsl_flags_commandlineflag_internal.a  external.protobuf/lib/libabsl_flags_config.a  external.protobuf/lib/libabsl_flags_internal.a  external.protobuf/lib/libabsl_flags_marshalling.a  external.protobuf/lib/libabsl_flags_parse.a  external.protobuf/lib/libabsl_flags_private_handle_accessor.a  external.protobuf/lib/libabsl_flags_program_name.a  external.protobuf/lib/libabsl_flags_reflection.a  external.protobuf/lib/libabsl_flags_usage.a  external.protobuf/lib/libabsl_flags_usage_internal.a  external.protobuf/lib/libabsl_graphcycles_internal.a  external.protobuf/lib/libabsl_hash.a  external.protobuf/lib/libabsl_hashtablez_sampler.a  external.protobuf/lib/libabsl_int128.a  external.protobuf/lib/libabsl_kernel_timeout_internal.a  external.protobuf/lib/libabsl_leak_check.a  external.protobuf/lib/libabsl_log_entry.a  external.protobuf/lib/libabsl_log_flags.a  external.protobuf/lib/libabsl_log_globals.a  external.protobuf/lib/libabsl_log_initialize.a  external.protobuf/lib/libabsl_log_internal_check_op.a  external.protobuf/lib/libabsl_log_internal_conditions.a  external.protobuf/lib/libabsl_log_internal_format.a  external.protobuf/lib/libabsl_log_internal_globals.a  external.protobuf/lib/libabsl_log_internal_log_sink_set.a  external.protobuf/lib/libabsl_log_internal_message.a  external.protobuf/lib/libabsl_log_internal_nullguard.a  external.protobuf/lib/libabsl_log_internal_proto.a  external.protobuf/lib/libabsl_log_severity.a  external.protobuf/lib/libabsl_log_sink.a  external.protobuf/lib/libabsl_low_level_hash.a  external.protobuf/lib/libabsl_malloc_internal.a  external.protobuf/lib/libabsl_periodic_sampler.a  external.protobuf/lib/libabsl_random_distributions.a  external.protobuf/lib/libabsl_random_internal_distribution_test_util.a  external.protobuf/lib/libabsl_random_internal_platform.a  external.protobuf/lib/libabsl_random_internal_pool_urbg.a  external.protobuf/lib/libabsl_random_internal_randen.a  external.protobuf/lib/libabsl_random_internal_randen_hwaes.a  external.protobuf/lib/libabsl_random_internal_randen_hwaes_impl.a  external.protobuf/lib/libabsl_random_internal_randen_slow.a  external.protobuf/lib/libabsl_random_internal_seed_material.a  external.protobuf/lib/libabsl_random_seed_gen_exception.a  external.protobuf/lib/libabsl_random_seed_sequences.a  external.protobuf/lib/libabsl_raw_hash_set.a  external.protobuf/lib/libabsl_raw_logging_internal.a  external.protobuf/lib/libabsl_scoped_set_env.a  external.protobuf/lib/libabsl_spinlock_wait.a  external.protobuf/lib/libabsl_stacktrace.a  external.protobuf/lib/libabsl_status.a  external.protobuf/lib/libabsl_statusor.a  external.protobuf/lib/libabsl_str_format_internal.a  external.protobuf/lib/libabsl_strerror.a  external.protobuf/lib/libabsl_string_view.a  external.protobuf/lib/libabsl_strings.a  external.protobuf/lib/libabsl_strings_internal.a  external.protobuf/lib/libabsl_symbolize.a  external.protobuf/lib/libabsl_synchronization.a  external.protobuf/lib/libabsl_throw_delegate.a  external.protobuf/lib/libabsl_time.a  external.protobuf/lib/libabsl_time_zone.a  external.protobuf/lib/libutf8_validity.a  -Xlinker --end-group && :
/usr/bin/ld: src/libfuzzer/libfuzzer_test: hidden symbol `_ZN6google8protobuf8internal8TcParser8FastMtS2EPNS0_11MessageLiteEPKcPNS1_12ParseContextENS1_11TcFieldDataEPKNS1_16TcParseTableBaseEm' in external.protobuf/lib/libprotobufd.a(generated_message_tctable_lite.cc.o) is referenced by DSO
/usr/bin/ld: final link failed: bad value
clang: error: linker command failed with exit code 1 (use -v to see invocation)
[56/75] Linking CXX executable examples/libfuzzer/libfuzzer_bin_example
FAILED: examples/libfuzzer/libfuzzer_bin_example 
: && /usr/bin/clang++-14 -fno-exceptions -Werror -Wall -Wstring-conversion -g -fsanitize=fuzzer examples/libfuzzer/CMakeFiles/libfuzzer_bin_example.dir/libfuzzer_bin_example.cc.o -o examples/libfuzzer/libfuzzer_bin_example  -Wl,-rpath,/code/libprotobuf-mutator-af3bb18/build/examples/libfuzzer:/code/libprotobuf-mutator-af3bb18/build/src/libfuzzer:/code/libprotobuf-mutator-af3bb18/build/src  examples/libfuzzer/libfuzzer-example-proto.so  src/libfuzzer/libprotobuf-mutator-libfuzzer.so.0  src/libprotobuf-mutator.so.0  -Xlinker --start-group  external.protobuf/lib/libprotobufd.a  external.protobuf/lib/libabsl_bad_any_cast_impl.a  external.protobuf/lib/libabsl_bad_optional_access.a  external.protobuf/lib/libabsl_bad_variant_access.a  external.protobuf/lib/libabsl_base.a  external.protobuf/lib/libabsl_city.a  external.protobuf/lib/libabsl_civil_time.a  external.protobuf/lib/libabsl_cord.a  external.protobuf/lib/libabsl_cord_internal.a  external.protobuf/lib/libabsl_cordz_functions.a  external.protobuf/lib/libabsl_cordz_handle.a  external.protobuf/lib/libabsl_cordz_info.a  external.protobuf/lib/libabsl_cordz_sample_token.a  external.protobuf/lib/libabsl_crc_cord_state.a  external.protobuf/lib/libabsl_crc_cpu_detect.a  external.protobuf/lib/libabsl_crc_internal.a  external.protobuf/lib/libabsl_crc32c.a  external.protobuf/lib/libabsl_debugging_internal.a  external.protobuf/lib/libabsl_demangle_internal.a  external.protobuf/lib/libabsl_die_if_null.a  external.protobuf/lib/libabsl_examine_stack.a  external.protobuf/lib/libabsl_exponential_biased.a  external.protobuf/lib/libabsl_failure_signal_handler.a  external.protobuf/lib/libabsl_flags.a  external.protobuf/lib/libabsl_flags_commandlineflag.a  external.protobuf/lib/libabsl_flags_commandlineflag_internal.a  external.protobuf/lib/libabsl_flags_config.a  external.protobuf/lib/libabsl_flags_internal.a  external.protobuf/lib/libabsl_flags_marshalling.a  external.protobuf/lib/libabsl_flags_parse.a  external.protobuf/lib/libabsl_flags_private_handle_accessor.a  external.protobuf/lib/libabsl_flags_program_name.a  external.protobuf/lib/libabsl_flags_reflection.a  external.protobuf/lib/libabsl_flags_usage.a  external.protobuf/lib/libabsl_flags_usage_internal.a  external.protobuf/lib/libabsl_graphcycles_internal.a  external.protobuf/lib/libabsl_hash.a  external.protobuf/lib/libabsl_hashtablez_sampler.a  external.protobuf/lib/libabsl_int128.a  external.protobuf/lib/libabsl_kernel_timeout_internal.a  external.protobuf/lib/libabsl_leak_check.a  external.protobuf/lib/libabsl_log_entry.a  external.protobuf/lib/libabsl_log_flags.a  external.protobuf/lib/libabsl_log_globals.a  external.protobuf/lib/libabsl_log_initialize.a  external.protobuf/lib/libabsl_log_internal_check_op.a  external.protobuf/lib/libabsl_log_internal_conditions.a  external.protobuf/lib/libabsl_log_internal_format.a  external.protobuf/lib/libabsl_log_internal_globals.a  external.protobuf/lib/libabsl_log_internal_log_sink_set.a  external.protobuf/lib/libabsl_log_internal_message.a  external.protobuf/lib/libabsl_log_internal_nullguard.a  external.protobuf/lib/libabsl_log_internal_proto.a  external.protobuf/lib/libabsl_log_severity.a  external.protobuf/lib/libabsl_log_sink.a  external.protobuf/lib/libabsl_low_level_hash.a  external.protobuf/lib/libabsl_malloc_internal.a  external.protobuf/lib/libabsl_periodic_sampler.a  external.protobuf/lib/libabsl_random_distributions.a  external.protobuf/lib/libabsl_random_internal_distribution_test_util.a  external.protobuf/lib/libabsl_random_internal_platform.a  external.protobuf/lib/libabsl_random_internal_pool_urbg.a  external.protobuf/lib/libabsl_random_internal_randen.a  external.protobuf/lib/libabsl_random_internal_randen_hwaes.a  external.protobuf/lib/libabsl_random_internal_randen_hwaes_impl.a  external.protobuf/lib/libabsl_random_internal_randen_slow.a  external.protobuf/lib/libabsl_random_internal_seed_material.a  external.protobuf/lib/libabsl_random_seed_gen_exception.a  external.protobuf/lib/libabsl_random_seed_sequences.a  external.protobuf/lib/libabsl_raw_hash_set.a  external.protobuf/lib/libabsl_raw_logging_internal.a  external.protobuf/lib/libabsl_scoped_set_env.a  external.protobuf/lib/libabsl_spinlock_wait.a  external.protobuf/lib/libabsl_stacktrace.a  external.protobuf/lib/libabsl_status.a  external.protobuf/lib/libabsl_statusor.a  external.protobuf/lib/libabsl_str_format_internal.a  external.protobuf/lib/libabsl_strerror.a  external.protobuf/lib/libabsl_string_view.a  external.protobuf/lib/libabsl_strings.a  external.protobuf/lib/libabsl_strings_internal.a  external.protobuf/lib/libabsl_symbolize.a  external.protobuf/lib/libabsl_synchronization.a  external.protobuf/lib/libabsl_throw_delegate.a  external.protobuf/lib/libabsl_time.a  external.protobuf/lib/libabsl_time_zone.a  external.protobuf/lib/libutf8_validity.a  -Xlinker --end-group && :
/usr/bin/ld: examples/libfuzzer/libfuzzer_bin_example: hidden symbol `_ZTVN6google8protobuf11MessageLiteE' in external.protobuf/lib/libprotobufd.a(message_lite.cc.o) is referenced by DSO
/usr/bin/ld: final link failed: bad value
clang: error: linker command failed with exit code 1 (use -v to see invocation)
[57/75] Building CXX object examples/expat/CMakeFiles/expat_example.dir/expat_example.cc.o^C
ninja: build stopped: interrupted by user.
root@truth:/code/libprotobuf-mutator-af3bb18/build#

by the way, when i use this command to cmake, it's ok:

cmake .. -GNinja -DCMAKE_C_COMPILER=clang-14 -DCMAKE_CXX_COMPILER=clang++-14 -DCMAKE_BUILD_TYPE=Debug -DLIB_PROTO_MUTATOR_DOWNLOAD_PROTOBUF=ON -DCMAKE_C_FLAGS="-fPIC" -DCMAKE_CXX_FLAGS="-fPIC"

I guess there's error while using option -DBUILD_SHARED_LIBS=ON
is this will be problem in learnings?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.