Sorry, I forgot to attach the patch itself. Here it is (attached). On 08/22/2018 02:37 PM, Bhargava Shastry wrote: > Hi Ben, > > The patch looks good to me. I have signed it here: > > https://github.com/bshastry/ovs/tree/try-patch-v3 > > that was rebased on top off latest master. > > Regards, > Bhargava > > On 08/22/2018 01:01 AM, Ben Pfaff wrote: >> I sent a v2: >> https://patchwork.ozlabs.org/patch/960749/ >> >> If you like it, I need a Signed-off-by from you. >> >> Q: What's a Signed-off-by and how do I provide one? >> >> A: Free and open source software projects usually require a contributor >> to >> provide some assurance that they're entitled to contribute the code that >> they provide. Some projects, for example, do this with a Contributor >> License Agreement (CLA) or a copyright assignment that is signed on paper >> or electronically. >> >> For this purpose, Open vSwitch has adopted something called the >> Developer's >> Certificate of Origin (DCO), which is also used by the Linux kernel and >> originated there. Informally stated, agreeing to the DCO is the >> developer's way of attesting that a particular commit that they are >> contributing is one that they are allowed to contribute. You should >> visit >> https://developercertificate.org/ to read the full statement of the DCO, >> which is less than 200 words long. >> >> To certify compliance with the Developer's Certificate of Origin for a >> particular commit, just add the following line to the end of your commit >> message, properly substituting your name and email address: >> >> Signed-off-by: Firstname Lastname <[email protected]> >> >> Git has special support for adding a Signed-off-by line to a commit >> message: when you run "git commit", just add the -s option, as in "git >> commit -s". If you use the "git citool" GUI for commits, you can add a >> Signed-off-by line to the commit message by pressing Control+S. Other >> Git >> user interfaces may provide similar support. >> >> Thanks, >> >> Ben. >> >> On Fri, Aug 03, 2018 at 10:51:39AM +0200, Bhargava Shastry wrote: >>> Hello, >>> >>> Gentle reminder to check if the proposed patch works :-) >>> >>> Thanks, >>> Bhargava >>> >>> On 07/30/2018 11:58 AM, Bhargava Shastry wrote: >>>> Any updates on the proposed patch? :-) >>>> >>>> On 07/16/2018 02:07 PM, Bhargava Shastry wrote: >>>>> Update: I fixed these errors in the attached patch that supersedes the >>>>> patch here (https://patchwork.ozlabs.org/patch/942118/) >>>>> >>>>> The major change is that I add the following line for each fuzz target >>>>> binary in the tests/oss-fuzz/automake.mk file: >>>>> >>>>> e.g., >>>>> tests_oss_fuzz_flow_extract_target_LDFLAGS = $(LIB_FUZZING_ENGINE) \ >>>>> -lc++ >>>>> >>>>> Regards, >>>>> Bhargava >>>>> >>>>> On 07/16/2018 11:45 AM, Bhargava Shastry wrote: >>>>>> Oops, here's the link failure log: >>>>>> >>>>>> ``` >>>>>> /usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../x86_64-linux-gnu/crt1.o: In >>>>>> function `_start': >>>>>> (.text+0x20): undefined reference to `main' >>>>>> clang-7: error: linker command failed with exit code 1 (use -v to see >>>>>> invocation) >>>>>> Makefile:4159: recipe for target 'tests/oss-fuzz/flow_extract_target' >>>>>> failed >>>>>> make: *** [tests/oss-fuzz/flow_extract_target] Error 1 >>>>>> fuzzers build failed. >>>>>> ``` >>>>>> >>>>>> The main symbol is provided by libfuzzer (clang++ -lFuzzingEngine) >>>>>> >>>>>> Regards, >>>>>> Bhargava >>>>>> >>>>>> On 07/16/2018 11:36 AM, Bhargava Shastry wrote: >>>>>>> Hi Ben, >>>>>>> >>>>>>>> Never mind that one, I failed to check in some of that. >>>>>>>> >>>>>>>> I sent it formally: >>>>>>>> https://patchwork.ozlabs.org/patch/942118/ >>>>>>> >>>>>>> Thanks for the patch. This fixes the previous error. Now, there are some >>>>>>> new errors during the compilation/linking process. I think most of this >>>>>>> can be fixed if I figure out how automake works. In a nutshell, here's >>>>>>> the problem: >>>>>>> >>>>>>> - oss-fuzz provides compilation flags that can be plugged in like so >>>>>>> ``` >>>>>>> CC=clang >>>>>>> CXX=clang++ >>>>>>> CFLAGS=-O1 -fno-omit-frame-pointer -gline-tables-only >>>>>>> -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -fsanitize=address >>>>>>> -fsanitize-address-use-after-scope -fsanitize=fuzzer-no-link >>>>>>> CXXFLAGS=-O1 -fno-omit-frame-pointer -gline-tables-only >>>>>>> -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -fsanitize=address >>>>>>> -fsanitize-address-use-after-scope -fsanitize=fuzzer-no-link >>>>>>> -stdlib=libc++ >>>>>>> ``` >>>>>>> >>>>>>> And here's what I used to do before >>>>>>> >>>>>>> - Use clang and CFLAGS above plus some additional includes to compile >>>>>>> each of the fuzzer tests >>>>>>> - Use clang++ and additional linker flags to link these into a fuzzer >>>>>>> binary >>>>>>> >>>>>>> Now, I see that the compilation works >>>>>>> ``` >>>>>>> depbase=`echo tests/oss-fuzz/flow_extract_target.o | sed >>>>>>> 's|[^/]*$|.deps/&|;s|\.o$||'`;\ >>>>>>> clang -DHAVE_CONFIG_H -I. -I ./include -I ./include -I ./lib -I ./lib >>>>>>> -I/usr/include -Wstrict-prototypes -Wall -Wextra -Wno-sign-compare >>>>>>> -Wpointer-arith -Wformat -Wformat-security -Wswitch-enum >>>>>>> -Wunused-parameter -Wbad-function-cast -Wcast-align -Wstrict-prototypes >>>>>>> -Wold-style-definition -Wmissing-prototypes -Wmissing-field-initializers >>>>>>> -Wthread-safety -fno-strict-aliasing -Wswitch-bool >>>>>>> -Wlogical-not-parentheses -Wsizeof-array-argument -Wshift-negative-value >>>>>>> -Qunused-arguments -Wshadow -Wno-null-pointer-arithmetic -O1 >>>>>>> -fno-omit-frame-pointer -gline-tables-only >>>>>>> -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -fsanitize=address >>>>>>> -fsanitize-address-use-after-scope -fsanitize=fuzzer-no-link -MT >>>>>>> tests/oss-fuzz/flow_extract_target.o -MD -MP -MF $depbase.Tpo -c -o >>>>>>> tests/oss-fuzz/flow_extract_target.o >>>>>>> tests/oss-fuzz/flow_extract_target.c &&\ >>>>>>> mv -f $depbase.Tpo $depbase.Po >>>>>>> ``` >>>>>>> >>>>>>> However, the linking fails >>>>>>> ``` >>>>>>> libtool: link: clang -Wstrict-prototypes -Wall -Wextra -Wno-sign-compare >>>>>>> -Wpointer-arith -Wformat -Wformat-security -Wswitch-enum >>>>>>> -Wunused-parameter -Wbad-function-cast -Wcast-align -Wstrict-prototypes >>>>>>> -Wold-style-definition -Wmissing-prototypes -Wmissing-field-initializers >>>>>>> -Wthread-safety -fno-strict-aliasing -Wswitch-bool >>>>>>> -Wlogical-not-parentheses -Wsizeof-array-argument -Wshift-negative-value >>>>>>> -Qunused-arguments -Wshadow -Wno-null-pointer-arithmetic -O1 >>>>>>> -fno-omit-frame-pointer -gline-tables-only >>>>>>> -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -fsanitize=address >>>>>>> -fsanitize-address-use-after-scope -fsanitize=fuzzer-no-link -o >>>>>>> tests/oss-fuzz/flow_extract_target tests/oss-fuzz/flow_extract_target.o >>>>>>> -L/usr/lib lib/.libs/libopenvswitch.a -lssl -lcrypto -latomic >>>>>>> ``` >>>>>>> >>>>>>> I think adding -lFuzzingEngine should fix this but another variable >>>>>>> between my build script and automake is the use of clang++ for linking. >>>>>>> >>>>>>> Do you know how I can experiment with different linker flags and >>>>>>> compiler/linker in automake? >>>>>>> >>>>>>> Regards, >>>>>>> Bhargava >>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >>> -- >>> Bhargava Shastry <[email protected]> >>> Security in Telecommunications >>> TU Berlin / Telekom Innovation Laboratories >>> Ernst-Reuter-Platz 7, Sekr TEL 17 / D - 10587 Berlin, Germany >>> phone: +49 30 8353 58235 >>> Keybase: https://keybase.io/bshastry >
-- Bhargava Shastry <[email protected]> Security in Telecommunications TU Berlin / Telekom Innovation Laboratories Ernst-Reuter-Platz 7, Sekr TEL 17 / D - 10587 Berlin, Germany phone: +49 30 8353 58235 Keybase: https://keybase.io/bshastry
_______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
