Skip to content

purseclab/PGFuzz

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

PGFuzz

PGFuzz is a policy-guided fuzzing framework. You can freely use it to define and find more bugs. By specifying a metric temporal logic (MTL) formula, PGFuzz is able to mutate inputs related to the formula and to discover more interesting bug cases. Many of the ideas behind PGFuzz are documented in a paper published at NDSS 2021.

1. Setup

We assume that you already finished setup for executing ArduPilot, PX4 and Paparazzi on Ubuntu LTS / Debian Linux.

sudo apt-get install gcc python-dev libxml2-dev libxslt-dev
sudo apt-get install python-numpy python-pytest
sudo apt install curl
sudo apt install python2
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py
sudo python2 get-pip.py
sudo python2 -m pip install --upgrade future lxml

git clone https://github.com/ArduPilot/mavlink.git
cd mavlink
git submodule update --init --recursive
cd pymavlink
sudo MDEF=`pwd`/../message_definitions python2 -m pip install . -v

2. Download PGFuzz

cd ~
git clone https://github.com/purseclab/PGFuzz.git pgfuzz

3. Download a virtual machine image

If you are not used to ArduPilot build environment, I would recommand you to download the virtual machine image and run PGFuzz.

The image is created on VMware Workstation Player

OS: Ubuntu 18.04

User name: pgfuzz

password: pgfuzz

cd ~
cd pgfuzz

4. Bugs discovered by PGFuzz

If you want to closely look into bug cases discovered by PGFUZZ, please review the below documentation.

5. Demonstration videos

Case 1

  • Correct behavior of the parachute
  • (i) Buggy behavior of the parachute and (ii) parachute operations after patching the bug

    Q: Why is this case a logic bug?
    A: the ArduPilot official documentation states that the following four conditions must hold to deploy a parachute while preserving the drone safety: (1) the motors must be armed, (2) the vehicle must not be in the FLIP or ACRO flight modes, (3) the barometer must show that the vehicle is not climbing, and (4) the vehicle’s current altitude must be above the CHUTE_ALT_MIN parameter value.
    we found that ArduPilot improperly checks the first three requirements. This leads to a policy violation where the vehicle deploys the parachute when it is climbing, causing it to crash on the ground.

Case 2

  • Correct behavior of the GPS fail-safe
  • (i) Buggy behavior of the GPS fail-safe and (ii) GPS fail-safe operations after patching the bug
    Q: Why is this case a logic bug?
    A: The buggy behavior occurs because PX4 developers remove a parameter range check. PX4 v1.7.4 forces COM_POS_FS_DELAY parameter to have a value in the valid range. Thereafter, it checks whether the GPS fail-safe needs to be triggered. However, we found that the code lines to check the COM_POS_FS_DELAY parameter are removed by developers in PX4 v1.9 while updating the fail-safe code snippets.
    When a user assigns a negative value to the parameter, it affects the decision to trigger the fail-safe when the current flight mode is ORBIT or the drone is flying into a location. Specifically, if the flight mode is not ORBIT or the drone stays at the same location, PX4 correctly triggers the GPS fail-safe. This observation makes it difficult for the developers to notice the bug.

Note

We release implementation details below in the hope of benefiting others.
You are kindly asked to acknowledge usage of the effort by citing our paper.

@inproceedings{kim2021pgfuzz,
  title={PGFUZZ: Policy-Guided Fuzzing for Robotic Vehicles},
  author={Kim, Hyungsub and Ozmen, Muslum Ozgur and Bianchi, Antonio and Celik, Z Berkay and Xu, Dongyan},
  booktitle={Proceedings of the Network and Distributed System Security Symposium (NDSS)},
  year={2021}
}

6. Convert ArduPilot source code to a bitcode file for static analysis

Here, I would like to explain how to convert ArduPilot to a bitcode file because I got several emails asking about it.

1) Environment

2) Modify "Tools/ardupilotwaf/toolchain.py" file as follows

def configure(cfg):
- (before modifying)
    _filter_supported_c_compilers('gcc', 'clang')
    _filter_supported_cxx_compilers('g++', 'clang++')
- (After modifying)  
    _filter_supported_c_compilers('clang')
    _filter_supported_cxx_compilers('clang++')

3) Execute the following command

ArduPilot root folder>./waf configure --board sitl

4) Open "ArduPilot root folder/build/c4che/sitl_cache.py" file and modify the type of compiler as follows

CC_NAME=clang  
COMPILER_CC=clang
COMPILER_CXX=clang++
CXX_NAME=clang

Add following options into CFLAGS and CXXFLAGS arrays

'-c', '-Xclang', '-O0', '-emit-llvm', '-S', '-fno-discard-value-names', '-g'

Caution: '-g' option is to create debug symbols. I recommend you to turn on this option only if you need to leverage the debug symbols.

5) Execute the following command

ArduPilot root folder> ./waf copter

6) Handle multiple definitions of 'main()'

You need to change a function name 'main'. This is because there will be two main functions in *.o files.

  • libraries/AP_Scripting/lua/src/luac.c.0.o <-- main function
  • ArduCopter/Copter.cpp.30.o <-- main function (I just changed these main functions' name to main_1.)

7) Manually copy a list of *.o files after 5)

Paste the list into any text editor and then get rid of "End of Line" (EOL)
In my case, I used 'notepad'. Open notepad -> Edit -> Blank operations -> select "EOL to Space"

8) Link *.o files to make a bitcode file

Note that the command below is an example. When you build ArduPilot, i.e., step 5), it might produce different names of *.o files.

ArduPilot root folder/build/sitl>llvm-link ./modules/uavcan/libuavcan/src/uc_error.cpp.0.o ./modules/uavcan/libuavcan/src/node/uc_service_client.cpp.0.o ./modules/uavcan/libuavcan/src/node/uc_scheduler.cpp.0.o ./modules/uavcan/libuavcan/src/node/uc_timer.cpp.0.o ./modules/uavcan/libuavcan/src/node/uc_global_data_type_registry.cpp.0.o ./modules/uavcan/libuavcan/src/node/uc_generic_subscriber.cpp.0.o ./modules/uavcan/libuavcan/src/node/uc_generic_publisher.cpp.0.o ./modules/uavcan/libuavcan/src/uc_dynamic_memory.cpp.0.o ./modules/uavcan/libuavcan/src/driver/uc_can.cpp.0.o ./modules/uavcan/libuavcan/src/marshal/uc_bit_stream.cpp.0.o ./modules/uavcan/libuavcan/src/marshal/uc_float_spec.cpp.0.o ./modules/uavcan/libuavcan/src/marshal/uc_scalar_codec.cpp.0.o ./modules/uavcan/libuavcan/src/marshal/uc_bit_array_copy.cpp.0.o ./modules/uavcan/libuavcan/src/transport/uc_can_io.cpp.0.o ./modules/uavcan/libuavcan/src/transport/uc_transfer_receiver.cpp.0.o ./modules/uavcan/libuavcan/src/transport/uc_crc.cpp.0.o ./modules/uavcan/libuavcan/src/transport/uc_transfer.cpp.0.o ./modules/uavcan/libuavcan/src/transport/uc_can_acceptance_filter_configurator.cpp.0.o ./modules/uavcan/libuavcan/src/transport/uc_transfer_buffer.cpp.0.o ./modules/uavcan/libuavcan/src/transport/uc_outgoing_transfer_registry.cpp.0.o ./modules/uavcan/libuavcan/src/transport/uc_frame.cpp.0.o ./modules/uavcan/libuavcan/src/transport/uc_dispatcher.cpp.0.o ./modules/uavcan/libuavcan/src/transport/uc_transfer_listener.cpp.0.o ./modules/uavcan/libuavcan/src/transport/uc_transfer_sender.cpp.0.o ./modules/uavcan/libuavcan/src/uc_data_type.cpp.0.o ./modules/uavcan/libuavcan/src/protocol/uc_node_status_provider.cpp.0.o ./modules/uavcan/libuavcan/src/protocol/uc_dynamic_node_id_client.cpp.0.o ./ArduCopter/crash_check.cpp.39.o ./ArduCopter/heli.cpp.39.o ./ArduCopter/mode_land.cpp.39.o ./ArduCopter/RC_Channel.cpp.39.o ./ArduCopter/afs_copter.cpp.39.o ./ArduCopter/AP_Arming.cpp.39.o ./ArduCopter/mode_circle.cpp.39.o ./ArduCopter/Copter.cpp.39.o ./ArduCopter/landing_gear.cpp.39.o ./ArduCopter/mode_poshold.cpp.39.o ./ArduCopter/system.cpp.39.o ./ArduCopter/Parameters.cpp.39.o ./ArduCopter/autoyaw.cpp.39.o ./ArduCopter/mode_loiter.cpp.39.o ./ArduCopter/mode_sport.cpp.39.o ./ArduCopter/precision_landing.cpp.39.o ./ArduCopter/radio.cpp.39.o ./ArduCopter/fence.cpp.39.o ./ArduCopter/mode_rtl.cpp.39.o ./ArduCopter/mode_auto.cpp.39.o ./ArduCopter/events.cpp.39.o ./ArduCopter/tuning.cpp.39.o ./ArduCopter/land_detector.cpp.39.o ./ArduCopter/Log.cpp.39.o ./ArduCopter/mode_acro.cpp.39.o ./ArduCopter/mode_althold.cpp.39.o ./ArduCopter/mode_guided.cpp.39.o ./ArduCopter/mode_stabilize_heli.cpp.39.o ./ArduCopter/mode_avoid_adsb.cpp.39.o ./ArduCopter/standby.cpp.39.o ./ArduCopter/takeoff.cpp.39.o ./ArduCopter/GCS_Copter.cpp.39.o ./ArduCopter/esc_calibration.cpp.39.o ./ArduCopter/UserCode.cpp.39.o ./ArduCopter/leds.cpp.39.o ./ArduCopter/mode_systemid.cpp.39.o ./ArduCopter/AP_State.cpp.39.o ./ArduCopter/motor_test.cpp.39.o ./ArduCopter/commands.cpp.39.o ./ArduCopter/avoidance_adsb.cpp.39.o ./ArduCopter/inertia.cpp.39.o ./ArduCopter/mode_smart_rtl.cpp.39.o ./ArduCopter/sensors.cpp.39.o ./ArduCopter/Attitude.cpp.39.o ./ArduCopter/mode_zigzag.cpp.39.o ./ArduCopter/motors.cpp.39.o ./ArduCopter/compassmot.cpp.39.o ./ArduCopter/GCS_Mavlink.cpp.39.o ./ArduCopter/toy_mode.cpp.39.o ./ArduCopter/mode_flip.cpp.39.o ./ArduCopter/avoidance.cpp.39.o ./ArduCopter/mode.cpp.39.o ./ArduCopter/mode_brake.cpp.39.o ./ArduCopter/mode_stabilize.cpp.39.o ./ArduCopter/mode_follow.cpp.39.o ./ArduCopter/mode_acro_heli.cpp.39.o ./ArduCopter/surface_tracking.cpp.39.o ./ArduCopter/ekf_check.cpp.39.o ./ArduCopter/mode_autorotate.cpp.39.o ./ArduCopter/mode_guided_nogps.cpp.39.o ./ArduCopter/baro_ground_effect.cpp.39.o ./ArduCopter/mode_drift.cpp.39.o ./ArduCopter/navigation.cpp.39.o ./ArduCopter/UserParameters.cpp.39.o ./ArduCopter/terrain.cpp.39.o ./ArduCopter/mode_throw.cpp.39.o ./ArduCopter/AP_Rally.cpp.39.o ./ArduCopter/mode_autotune.cpp.39.o ./ArduCopter/mode_flowhold.cpp.39.o ./ArduCopter/failsafe.cpp.39.o ./libraries/AP_Rally/AP_Rally.cpp.3.o ./libraries/AP_ExternalAHRS/AP_ExternalAHRS.cpp.0.o ./libraries/AP_ExternalAHRS/AP_ExternalAHRS_VectorNav.cpp.0.o ./libraries/AP_ExternalAHRS/AP_ExternalAHRS_backend.cpp.0.o ./libraries/AP_Mount/AP_Mount_Alexmos.cpp.0.o ./libraries/AP_Mount/AP_Mount_SToRM32.cpp.0.o ./libraries/AP_Mount/SoloGimbal.cpp.0.o ./libraries/AP_Mount/SoloGimbal_Parameters.cpp.0.o ./libraries/AP_Mount/AP_Mount_Servo.cpp.0.o ./libraries/AP_Mount/AP_Mount_Backend.cpp.0.o ./libraries/AP_Mount/AP_Mount_SToRM32_serial.cpp.0.o ./libraries/AP_Mount/AP_Mount_SoloGimbal.cpp.0.o ./libraries/AP_Mount/AP_Mount.cpp.0.o ./libraries/AP_Mount/SoloGimbalEKF.cpp.0.o ./libraries/AP_TempCalibration/AP_TempCalibration.cpp.0.o ./libraries/AC_AutoTune/AC_AutoTune.cpp.3.o ./libraries/AP_HAL_Empty/GPIO.cpp.0.o ./libraries/AP_HAL_Empty/Scheduler.cpp.0.o ./libraries/AP_HAL_Empty/Semaphores.cpp.0.o ./libraries/AP_HAL_Empty/RCOutput.cpp.0.o ./libraries/AP_HAL_Empty/AnalogIn.cpp.0.o ./libraries/AP_HAL_Empty/UARTDriver.cpp.0.o ./libraries/AP_HAL_Empty/RCInput.cpp.0.o ./libraries/AP_HAL_Empty/HAL_Empty_Class.cpp.0.o ./libraries/AP_HAL_Empty/Storage.cpp.0.o ./libraries/AP_AHRS/AP_AHRS_View.cpp.0.o ./libraries/AP_AHRS/AP_AHRS_Logging.cpp.0.o ./libraries/AP_AHRS/AP_AHRS_DCM.cpp.0.o ./libraries/AP_AHRS/AP_AHRS_NavEKF.cpp.3.o ./libraries/AP_AHRS/AP_AHRS.cpp.3.o ./libraries/AP_GPS/AP_GPS_UAVCAN.cpp.0.o ./libraries/AP_GPS/AP_GPS_MTK.cpp.0.o ./libraries/AP_GPS/AP_GPS_SIRF.cpp.0.o ./libraries/AP_GPS/AP_GPS_GSOF.cpp.0.o ./libraries/AP_GPS/AP_GPS_ERB.cpp.0.o ./libraries/AP_GPS/AP_GPS_NMEA.cpp.0.o ./libraries/AP_GPS/GPS_Backend.cpp.0.o ./libraries/AP_GPS/AP_GPS_MAV.cpp.0.o ./libraries/AP_GPS/AP_GPS_SBF.cpp.0.o ./libraries/AP_GPS/AP_GPS_NOVA.cpp.0.o ./libraries/AP_GPS/MovingBase.cpp.0.o ./libraries/AP_GPS/AP_GPS_ExternalAHRS.cpp.0.o ./libraries/AP_GPS/AP_GPS_MSP.cpp.0.o ./libraries/AP_GPS/AP_GPS.cpp.0.o ./libraries/AP_GPS/RTCM3_Parser.cpp.0.o ./libraries/AP_GPS/AP_GPS_SBP2.cpp.0.o ./libraries/AP_GPS/AP_GPS_SBP.cpp.0.o ./libraries/AP_GPS/AP_GPS_MTK19.cpp.0.o ./libraries/AP_GPS/AP_GPS_UBLOX.cpp.0.o ./libraries/AC_Avoidance/AP_OAVisGraph.cpp.0.o ./libraries/AC_Avoidance/AP_OADatabase.cpp.3.o ./libraries/AC_Avoidance/AC_Avoid.cpp.3.o ./libraries/AC_Avoidance/AC_Avoidance_Logging.cpp.0.o ./libraries/AC_Avoidance/AP_OADijkstra.cpp.0.o ./libraries/AC_Avoidance/AP_OAPathPlanner.cpp.0.o ./libraries/AC_Avoidance/AP_OABendyRuler.cpp.3.o ./libraries/AP_AdvancedFailsafe/AP_AdvancedFailsafe.cpp.0.o ./libraries/AP_AccelCal/AccelCalibrator.cpp.0.o ./libraries/AP_AccelCal/AP_AccelCal.cpp.0.o ./libraries/AP_Math/SplineCurve.cpp.0.o ./libraries/AP_Math/location.cpp.0.o ./libraries/AP_Math/matrixN.cpp.0.o ./libraries/AP_Math/SCurve.cpp.0.o ./libraries/AP_Math/AP_GeodesicGrid.cpp.0.o ./libraries/AP_Math/polyfit.cpp.0.o ./libraries/AP_Math/control.cpp.0.o ./libraries/AP_Math/vector2.cpp.0.o ./libraries/AP_Math/vector3.cpp.0.o ./libraries/AP_Math/matrix3.cpp.0.o ./libraries/AP_Math/crc.cpp.0.o ./libraries/AP_Math/spline5.cpp.0.o ./libraries/AP_Math/matrix_alg.cpp.0.o ./libraries/AP_Math/quaternion.cpp.0.o ./libraries/AP_Math/AP_Math.cpp.0.o ./libraries/AP_Math/location_double.cpp.0.o ./libraries/AP_Math/polygon.cpp.0.o ./libraries/RC_Channel/RC_Channels.cpp.0.o ./libraries/RC_Channel/RC_Channel.cpp.0.o ./libraries/AP_SerialLED/AP_SerialLED.cpp.0.o ./libraries/AP_Radio/AP_Radio.cpp.0.o ./libraries/AP_Radio/AP_Radio_cypress.cpp.0.o ./libraries/AP_Radio/driver_bk2425.cpp.0.o ./libraries/AP_Radio/AP_Radio_backend.cpp.0.o ./libraries/AP_Radio/AP_Radio_bk2425.cpp.0.o ./libraries/AP_Radio/AP_Radio_cc2500.cpp.0.o ./libraries/AP_Radio/driver_cc2500.cpp.0.o ./libraries/SITL/SIM_BalanceBot.cpp.0.o ./libraries/SITL/SIM_Parachute.cpp.0.o ./libraries/SITL/SIM_Multicopter.cpp.0.o ./libraries/SITL/SIM_RF_LightWareSerial.cpp.0.o ./libraries/SITL/SITL.cpp.0.o ./libraries/SITL/SIM_AirSim.cpp.0.o ./libraries/SITL/SIM_RF_MaxsonarSerialLV.cpp.0.o ./libraries/SITL/SIM_BattMonitor_SMBus_Rotoye.cpp.0.o ./libraries/SITL/SIM_BattMonitor_SMBus_Maxell.cpp.0.o ./libraries/SITL/SIM_I2CDevice.cpp.0.o ./libraries/SITL/SIM_ICEngine.cpp.0.o ./libraries/SITL/SIM_PS_RPLidarA2.cpp.0.o ./libraries/SITL/SIM_CRRCSim.cpp.0.o ./libraries/SITL/SIM_EFI_MegaSquirt.cpp.0.o ./libraries/SITL/SIM_Motor.cpp.0.o ./libraries/SITL/SIM_Helicopter.cpp.0.o ./libraries/SITL/SIM_Gripper_EPM.cpp.0.o ./libraries/SITL/SIM_Battery.cpp.0.o ./libraries/SITL/SIM_CRSF.cpp.0.o ./libraries/SITL/SIM_Vicon.cpp.0.o ./libraries/SITL/SIM_ADSB.cpp.0.o ./libraries/SITL/SIM_Gripper_Servo.cpp.0.o ./libraries/SITL/SIM_ToneAlarm.cpp.0.o ./libraries/SITL/SIM_Sprayer.cpp.0.o ./libraries/SITL/SIM_RF_GYUS42v2.cpp.0.o ./libraries/SITL/SIM_Webots.cpp.0.o ./libraries/SITL/SIM_Precland.cpp.0.o ./libraries/SITL/SIM_Balloon.cpp.0.o ./libraries/SITL/SIM_BattMonitor_SMBus.cpp.0.o ./libraries/SITL/SIM_Frame.cpp.0.o ./libraries/SITL/SIM_RF_LeddarOne.cpp.0.o ./libraries/SITL/SIM_SingleCopter.cpp.0.o ./libraries/SITL/SIM_JSBSim.cpp.0.o ./libraries/SITL/SIM_SerialDevice.cpp.0.o ./libraries/SITL/SIM_RichenPower.cpp.0.o ./libraries/SITL/SIM_last_letter.cpp.0.o ./libraries/SITL/SIM_JSON.cpp.0.o ./libraries/SITL/SIM_Aircraft.cpp.0.o ./libraries/SITL/SIM_Buzzer.cpp.0.o ./libraries/SITL/SIM_I2C.cpp.0.o ./libraries/SITL/SIM_SMBusDevice.cpp.0.o ./libraries/SITL/SIM_Invensense_v3.cpp.0.o ./libraries/SITL/SIM_RF_Wasp.cpp.0.o ./libraries/SITL/SIM_RF_uLanding_v1.cpp.0.o ./libraries/SITL/SIM_Airspeed_DLVR.cpp.0.o ./libraries/SITL/SIM_FlightAxis.cpp.0.o ./libraries/SITL/SIM_QuadPlane.cpp.0.o ./libraries/SITL/SIM_IntelligentEnergy.cpp.0.o ./libraries/SITL/SIM_RF_LightWareSerialBinary.cpp.0.o ./libraries/SITL/SIM_PS_LightWare_SF45B.cpp.0.o ./libraries/SITL/SIM_RF_NMEA.cpp.0.o ./libraries/SITL/SIM_Frsky.cpp.0.o ./libraries/SITL/SIM_RF_Lanbao.cpp.0.o ./libraries/SITL/SIM_XPlane.cpp.0.o ./libraries/SITL/SIM_Blimp.cpp.0.o ./libraries/SITL/SIM_Gimbal.cpp.0.o ./libraries/SITL/SIM_Rover.cpp.0.o ./libraries/SITL/SIM_BattMonitor_SMBus_Generic.cpp.0.o ./libraries/SITL/SIM_RF_uLanding_v0.cpp.0.o ./libraries/SITL/SIM_ToshibaLED.cpp.0.o ./libraries/SITL/SIM_IntelligentEnergy24.cpp.0.o ./libraries/SITL/SIM_Frsky_D.cpp.0.o ./libraries/SITL/SIM_SerialProximitySensor.cpp.0.o ./libraries/SITL/SIM_SilentWings.cpp.0.o ./libraries/SITL/SIM_RF_Benewake.cpp.0.o ./libraries/SITL/SIM_Ship.cpp.0.o ./libraries/SITL/SIM_Tracker.cpp.0.o ./libraries/SITL/SIM_Gazebo.cpp.0.o ./libraries/SITL/SIM_Submarine.cpp.0.o ./libraries/SITL/SIM_Scrimmage.cpp.0.o ./libraries/SITL/SIM_Plane.cpp.0.o ./libraries/SITL/SIM_VectorNav.cpp.0.o ./libraries/SITL/SIM_PS_TeraRangerTower.cpp.0.o ./libraries/SITL/SIM_Sailboat.cpp.0.o ./libraries/SITL/SIM_RF_MAVLink.cpp.0.o ./libraries/SITL/SIM_SerialRangeFinder.cpp.0.o ./libraries/SITL/SIM_Morse.cpp.0.o ./libraries/SITL/SIM_RF_uLanding.cpp.0.o ./libraries/SITL/SIM_Calibration.cpp.0.o ./libraries/SITL/SIM_FETtecOneWireESC.cpp.0.o ./libraries/SITL/SIM_Temperature_TSYS01.cpp.0.o ./libraries/SITL/SIM_RF_BLping.cpp.0.o ./libraries/AP_OpticalFlow/AP_OpticalFlow_Pixart.cpp.0.o ./libraries/AP_OpticalFlow/OpticalFlow_backend.cpp.0.o ./libraries/AP_OpticalFlow/AP_OpticalFlow_MSP.cpp.0.o ./libraries/AP_OpticalFlow/OpticalFlow.cpp.0.o ./libraries/AP_OpticalFlow/AP_OpticalFlow_HereFlow.cpp.0.o ./libraries/AP_OpticalFlow/AP_OpticalFlow_PX4Flow.cpp.0.o ./libraries/AP_OpticalFlow/AP_OpticalFlow_UPFLOW.cpp.0.o ./libraries/AP_OpticalFlow/AP_OpticalFlow_CXOF.cpp.0.o ./libraries/AP_OpticalFlow/AP_OpticalFlow_MAV.cpp.0.o ./libraries/AP_OpticalFlow/AP_OpticalFlow_Onboard.cpp.0.o ./libraries/AP_OpticalFlow/AP_OpticalFlow_SITL.cpp.0.o ./libraries/AP_NavEKF3/AP_NavEKF3.cpp.3.o ./libraries/AP_NavEKF3/AP_NavEKF3_AirDataFusion.cpp.3.o ./libraries/AP_NavEKF3/AP_NavEKF3_VehicleStatus.cpp.3.o ./libraries/AP_NavEKF3/AP_NavEKF3_MagFusion.cpp.3.o ./libraries/AP_NavEKF3/AP_NavEKF3_OptFlowFusion.cpp.3.o ./libraries/AP_NavEKF3/AP_NavEKF3_RngBcnFusion.cpp.3.o ./libraries/AP_NavEKF3/AP_NavEKF3_Control.cpp.3.o ./libraries/AP_NavEKF3/AP_NavEKF3_Outputs.cpp.3.o ./libraries/AP_NavEKF3/AP_NavEKF3_Logging.cpp.3.o ./libraries/AP_NavEKF3/AP_NavEKF3_PosVelFusion.cpp.3.o ./libraries/AP_NavEKF3/AP_NavEKF3_GyroBias.cpp.3.o ./libraries/AP_NavEKF3/AP_NavEKF3_Measurements.cpp.3.o ./libraries/AP_NavEKF3/AP_NavEKF3_core.cpp.3.o ./libraries/AP_Compass/AP_Compass_Backend.cpp.3.o ./libraries/AP_Compass/Compass_PerMotor.cpp.0.o ./libraries/AP_Compass/CompassCalibrator.cpp.0.o ./libraries/AP_Compass/AP_Compass_LIS3MDL.cpp.0.o ./libraries/AP_Compass/AP_Compass_MAG3110.cpp.0.o ./libraries/AP_Compass/AP_Compass_RM3100.cpp.0.o ./libraries/AP_Compass/AP_Compass_ExternalAHRS.cpp.0.o ./libraries/AP_Compass/AP_Compass_LSM9DS1.cpp.0.o ./libraries/AP_Compass/AP_Compass_LSM303D.cpp.0.o ./libraries/AP_Compass/AP_Compass.cpp.3.o ./libraries/AP_Compass/AP_Compass_IST8308.cpp.0.o ./libraries/AP_Compass/AP_Compass_HMC5843.cpp.0.o ./libraries/AP_Compass/Compass_learn.cpp.0.o ./libraries/AP_Compass/AP_Compass_UAVCAN.cpp.0.o ./libraries/AP_Compass/AP_Compass_IST8310.cpp.0.o ./libraries/AP_Compass/AP_Compass_AK8963.cpp.0.o ./libraries/AP_Compass/AP_Compass_AK09916.cpp.0.o ./libraries/AP_Compass/AP_Compass_BMM150.cpp.0.o ./libraries/AP_Compass/AP_Compass_MMC5xx3.cpp.0.o ./libraries/AP_Compass/AP_Compass_Calibration.cpp.0.o ./libraries/AP_Compass/AP_Compass_QMC5883L.cpp.0.o ./libraries/AP_Compass/AP_Compass_MMC3416.cpp.0.o ./libraries/AP_Compass/AP_Compass_SITL.cpp.0.o ./libraries/AP_Compass/AP_Compass_MSP.cpp.0.o ./libraries/AP_Declination/tables.cpp.0.o ./libraries/AP_Declination/AP_Declination.cpp.0.o ./libraries/AC_Fence/AC_PolyFence_loader.cpp.0.o ./libraries/AC_Fence/AC_Fence.cpp.3.o ./libraries/AP_HAL_SITL/sitl_airspeed.cpp.0.o ./libraries/AP_HAL_SITL/GPIO.cpp.0.o ./libraries/AP_HAL_SITL/HAL_SITL_Class.cpp.0.o ./libraries/AP_HAL_SITL/DSP.cpp.0.o ./libraries/AP_HAL_SITL/Scheduler.cpp.0.o ./libraries/AP_HAL_SITL/Semaphores.cpp.0.o ./libraries/AP_HAL_SITL/RCOutput.cpp.0.o ./libraries/AP_HAL_SITL/Storage.cpp.3.o ./libraries/AP_HAL_SITL/CANSocketIface.cpp.0.o ./libraries/AP_HAL_SITL/AnalogIn.cpp.0.o ./libraries/AP_HAL_SITL/SITL_State.cpp.0.o ./libraries/AP_HAL_SITL/I2CDevice.cpp.0.o ./libraries/AP_HAL_SITL/SITL_cmdline.cpp.3.o ./libraries/AP_HAL_SITL/UART_utils.cpp.0.o ./libraries/AP_HAL_SITL/system.cpp.0.o ./libraries/AP_HAL_SITL/sitl_rangefinder.cpp.0.o ./libraries/AP_HAL_SITL/ToneAlarm_SF.cpp.0.o ./libraries/AP_HAL_SITL/sitl_gps.cpp.0.o ./libraries/AP_HAL_SITL/RCInput.cpp.0.o ./libraries/AP_HAL_SITL/SITL_Periph_State.cpp.0.o ./libraries/AP_HAL_SITL/Util.cpp.0.o ./libraries/AP_HAL_SITL/UARTDriver.cpp.3.o ./libraries/AP_Scripting/AP_Scripting_helpers.cpp.0.o ./libraries/AP_Scripting/lua_repl.cpp.0.o ./libraries/AP_Scripting/lua_boxed_numerics.cpp.0.o ./libraries/AP_Scripting/lua_scripts.cpp.0.o ./libraries/AP_Scripting/AP_Scripting.cpp.0.o ./libraries/AP_Scripting/lua_bindings.cpp.0.o ./libraries/AP_Scripting/lua/src/lcode.c.0.o ./libraries/AP_Scripting/lua/src/lstring.c.0.o ./libraries/AP_Scripting/lua/src/ltm.c.0.o ./libraries/AP_Scripting/lua/src/lgc.c.0.o ./libraries/AP_Scripting/lua/src/llex.c.0.o ./libraries/AP_Scripting/lua/src/lobject.c.0.o ./libraries/AP_Scripting/lua/src/ltable.c.0.o ./libraries/AP_Scripting/lua/src/luac.c.0.o ./libraries/AP_Scripting/lua/src/lbaselib.c.0.o ./libraries/AP_Scripting/lua/src/lbitlib.c.0.o ./libraries/AP_Scripting/lua/src/loadlib.c.0.o ./libraries/AP_Scripting/lua/src/ldblib.c.0.o ./libraries/AP_Scripting/lua/src/ldump.c.0.o ./libraries/AP_Scripting/lua/src/ldo.c.0.o ./libraries/AP_Scripting/lua/src/lauxlib.c.0.o ./libraries/AP_Scripting/lua/src/lparser.c.0.o ./libraries/AP_Scripting/lua/src/lctype.c.0.o ./libraries/AP_Scripting/lua/src/lstate.c.0.o ./libraries/AP_Scripting/lua/src/lmathlib.c.0.o ./libraries/AP_Scripting/lua/src/lzio.c.0.o ./libraries/AP_Scripting/lua/src/ldebug.c.0.o ./libraries/AP_Scripting/lua/src/linit.c.0.o ./libraries/AP_Scripting/lua/src/lundump.c.0.o ./libraries/AP_Scripting/lua/src/lcorolib.c.0.o ./libraries/AP_Scripting/lua/src/ltablib.c.0.o ./libraries/AP_Scripting/lua/src/lstrlib.c.0.o ./libraries/AP_Scripting/lua/src/lutf8lib.c.0.o ./libraries/AP_Scripting/lua/src/lmem.c.0.o ./libraries/AP_Scripting/lua/src/lvm.c.0.o ./libraries/AP_Scripting/lua/src/lfunc.c.0.o ./libraries/AP_Scripting/lua/src/liolib.c.0.o ./libraries/AP_Scripting/lua/src/lua.c.0.o ./libraries/AP_Scripting/lua/src/loslib.c.0.o ./libraries/AP_Scripting/lua/src/lapi.c.0.o ./libraries/AP_Scripting/lua/src/lopcodes.c.0.o ./libraries/AP_Scripting/lua_generated_bindings.cpp.3.o ./libraries/AP_Avoidance/AP_Avoidance.cpp.3.o ./libraries/AP_ServoRelayEvents/AP_ServoRelayEvents.cpp.0.o ./libraries/AP_Common/AP_Common.cpp.0.o ./libraries/AP_Common/ExpandingString.cpp.0.o ./libraries/AP_Common/Location.cpp.0.o ./libraries/AP_Common/AP_ExpandingArray.cpp.0.o ./libraries/AP_Common/NMEA.cpp.0.o ./libraries/AP_Common/c++.cpp.0.o ./libraries/AP_Common/AP_FWVersion.cpp.0.o ./libraries/AP_Proximity/AP_Proximity_LightWareSerial.cpp.0.o ./libraries/AP_Proximity/AP_Proximity_AirSimSITL.cpp.0.o ./libraries/AP_Proximity/AP_Proximity_RPLidarA2.cpp.0.o ./libraries/AP_Proximity/AP_Proximity_Backend_Serial.cpp.0.o ./libraries/AP_Proximity/AP_Proximity_LightWareSF40C_v09.cpp.0.o ./libraries/AP_Proximity/AP_Proximity_SITL.cpp.0.o ./libraries/AP_Proximity/AP_Proximity_Backend.cpp.0.o ./libraries/AP_Proximity/AP_Proximity_LightWareSF45B.cpp.0.o ./libraries/AP_Proximity/AP_Proximity.cpp.0.o ./libraries/AP_Proximity/AP_Proximity_MAV.cpp.0.o ./libraries/AP_Proximity/AP_Proximity_RangeFinder.cpp.0.o ./libraries/AP_Proximity/AP_Proximity_Boundary_3D.cpp.0.o ./libraries/AP_Proximity/AP_Proximity_TeraRangerTower.cpp.0.o ./libraries/AP_Proximity/AP_Proximity_TeraRangerTowerEvo.cpp.0.o ./libraries/AP_Proximity/AP_Proximity_LightWareSF40C.cpp.0.o ./libraries/AC_WPNav/AC_WPNav.cpp.0.o ./libraries/AC_WPNav/AC_Loiter.cpp.0.o ./libraries/AC_WPNav/AC_Circle.cpp.0.o ./libraries/AC_WPNav/AC_WPNav_OA.cpp.0.o ./libraries/AP_GyroFFT/AP_GyroFFT.cpp.3.o ./libraries/AP_KDECAN/AP_KDECAN.cpp.0.o ./libraries/AP_BoardConfig/board_drivers.cpp.0.o ./libraries/AP_BoardConfig/AP_BoardConfig.cpp.3.o ./libraries/AP_BoardConfig/IMU_heater.cpp.0.o ./libraries/AP_DAL/AP_DAL_Baro.cpp.0.o ./libraries/AP_DAL/AP_DAL_VisualOdom.cpp.3.o ./libraries/AP_DAL/AP_DAL_Airspeed.cpp.0.o ./libraries/AP_DAL/AP_DAL_InertialSensor.cpp.0.o ./libraries/AP_DAL/AP_DAL_RangeFinder.cpp.3.o ./libraries/AP_DAL/AP_DAL_Beacon.cpp.3.o ./libraries/AP_DAL/AP_DAL.cpp.3.o ./libraries/AP_DAL/AP_DAL_Compass.cpp.0.o ./libraries/AP_DAL/AP_DAL_GPS.cpp.0.o ./libraries/AP_SmartRTL/AP_SmartRTL.cpp.0.o ./libraries/AC_PID/AC_PID.cpp.0.o ./libraries/AC_PID/AC_HELI_PID.cpp.0.o ./libraries/AC_PID/AC_P.cpp.0.o ./libraries/AC_PID/AC_PI_2D.cpp.0.o ./libraries/AC_PID/AC_PID_2D.cpp.0.o ./libraries/AC_PID/AC_PID_Basic.cpp.0.o ./libraries/AC_PID/AC_P_1D.cpp.0.o ./libraries/AC_PID/AC_PI.cpp.0.o ./libraries/AC_PID/AC_P_2D.cpp.0.o ./libraries/AP_Motors/AP_MotorsHeli_Swash.cpp.0.o ./libraries/AP_Motors/AP_MotorsMulticopter.cpp.0.o ./libraries/AP_Motors/AP_MotorsHeli_Dual.cpp.0.o ./libraries/AP_Motors/AP_MotorsTri.cpp.3.o ./libraries/AP_Motors/AP_MotorsHeli.cpp.0.o ./libraries/AP_Motors/AP_MotorsMatrix_6DoF_Scripting.cpp.0.o ./libraries/AP_Motors/AP_MotorsSingle.cpp.0.o ./libraries/AP_Motors/AP_Motors6DOF.cpp.0.o ./libraries/AP_Motors/AP_Motors_Class.cpp.0.o ./libraries/AP_Motors/AP_MotorsHeli_RSC.cpp.0.o ./libraries/AP_Motors/AP_MotorsHeli_Quad.cpp.0.o ./libraries/AP_Motors/AP_MotorsMatrix.cpp.3.o ./libraries/AP_Motors/AP_MotorsCoax.cpp.0.o ./libraries/AP_Motors/AP_MotorsTailsitter.cpp.0.o ./libraries/AP_Motors/AP_MotorsUGV.cpp.0.o ./libraries/AP_Motors/AP_MotorsHeli_Single.cpp.0.o ./libraries/AP_RCProtocol/AP_RCProtocol_SBUS.cpp.0.o ./libraries/AP_RCProtocol/AP_RCProtocol_SRXL.cpp.0.o ./libraries/AP_RCProtocol/AP_RCProtocol.cpp.0.o ./libraries/AP_RCProtocol/AP_RCProtocol_DSM.cpp.3.o ./libraries/AP_RCProtocol/AP_RCProtocol_ST24.cpp.0.o ./libraries/AP_RCProtocol/AP_RCProtocol_SUMD.cpp.0.o ./libraries/AP_RCProtocol/AP_RCProtocol_FPort.cpp.3.o ./libraries/AP_RCProtocol/AP_RCProtocol_IBUS.cpp.0.o ./libraries/AP_RCProtocol/AP_RCProtocol_SRXL2.cpp.3.o ./libraries/AP_RCProtocol/AP_RCProtocol_FPort2.cpp.3.o ./libraries/AP_RCProtocol/SoftSerial.cpp.0.o ./libraries/AP_RCProtocol/AP_RCProtocol_PPMSum.cpp.0.o ./libraries/AP_RCProtocol/AP_RCProtocol_Backend.cpp.3.o ./libraries/AP_RCProtocol/spm_srxl.cpp.0.o ./libraries/AP_RCProtocol/AP_RCProtocol_CRSF.cpp.3.o ./libraries/AP_VisualOdom/AP_VisualOdom_IntelT265.cpp.0.o ./libraries/AP_VisualOdom/AP_VisualOdom_Logging.cpp.0.o ./libraries/AP_VisualOdom/AP_VisualOdom_MAV.cpp.0.o ./libraries/AP_VisualOdom/AP_VisualOdom_Backend.cpp.0.o ./libraries/AP_VisualOdom/AP_VisualOdom.cpp.0.o ./libraries/AP_ESC_Telem/AP_ESC_Telem_SITL.cpp.0.o ./libraries/AP_ESC_Telem/AP_ESC_Telem.cpp.0.o ./libraries/AP_ESC_Telem/AP_ESC_Telem_Backend.cpp.0.o ./libraries/AP_Winch/AP_Winch_PWM.cpp.0.o ./libraries/AP_Winch/AP_Winch_Backend.cpp.0.o ./libraries/AP_Winch/AP_Winch_Daiwa.cpp.0.o ./libraries/AP_Winch/AP_Winch.cpp.0.o ./libraries/AP_BattMonitor/AP_BattMonitor_Bebop.cpp.0.o ./libraries/AP_BattMonitor/AP_BattMonitor.cpp.3.o ./libraries/AP_BattMonitor/AP_BattMonitor_SMBus_Generic.cpp.0.o ./libraries/AP_BattMonitor/AP_BattMonitor_Backend.cpp.0.o ./libraries/AP_BattMonitor/AP_BattMonitor_SMBus_NeoDesign.cpp.0.o ./libraries/AP_BattMonitor/AP_BattMonitor_Generator.cpp.0.o ./libraries/AP_BattMonitor/AP_BattMonitor_ESC.cpp.0.o ./libraries/AP_BattMonitor/AP_BattMonitor_FuelFlow.cpp.0.o ./libraries/AP_BattMonitor/AP_BattMonitor_Logging.cpp.0.o ./libraries/AP_BattMonitor/AP_BattMonitor_FuelLevel_PWM.cpp.0.o ./libraries/AP_BattMonitor/AP_BattMonitor_UAVCAN.cpp.0.o ./libraries/AP_BattMonitor/AP_BattMonitor_Analog.cpp.0.o ./libraries/AP_BattMonitor/AP_BattMonitor_SMBus_Solo.cpp.0.o ./libraries/AP_BattMonitor/AP_BattMonitor_MPPT_PacketDigital.cpp.0.o ./libraries/AP_BattMonitor/AP_BattMonitor_SMBus_SUI.cpp.0.o ./libraries/AP_BattMonitor/AP_BattMonitor_Sum.cpp.0.o ./libraries/AP_BattMonitor/AP_BattMonitor_SMBus.cpp.0.o ./libraries/AP_BattMonitor/AP_BattMonitor_SMBus_Rotoye.cpp.0.o ./libraries/AP_BattMonitor/AP_BattMonitor_Params.cpp.3.o ./libraries/AC_AttitudeControl/AC_AttitudeControl_TS.cpp.0.o ./libraries/AC_AttitudeControl/AC_PosControl.cpp.3.o ./libraries/AC_AttitudeControl/ControlMonitor.cpp.0.o ./libraries/AC_AttitudeControl/AC_AttitudeControl_Multi.cpp.0.o ./libraries/AC_AttitudeControl/AC_AttitudeControl.cpp.3.o ./libraries/AC_AttitudeControl/AC_PosControl_Sub.cpp.0.o ./libraries/AC_AttitudeControl/AC_AttitudeControl_Multi_6DoF.cpp.0.o ./libraries/AC_AttitudeControl/AC_AttitudeControl_Sub.cpp.0.o ./libraries/AC_AttitudeControl/AC_AttitudeControl_Heli.cpp.0.o ./libraries/AP_NavEKF/EKFGSF_Logging.cpp.0.o ./libraries/AP_NavEKF/EKFGSF_yaw.cpp.0.o ./libraries/AP_NavEKF/AP_NavEKF_core_common.cpp.0.o ./libraries/AP_NavEKF/EKF_Buffer.cpp.0.o ./libraries/AP_NavEKF/AP_NavEKF_Source.cpp.0.o ./libraries/Filter/NotchFilter.cpp.0.o ./libraries/Filter/HarmonicNotchFilter.cpp.0.o ./libraries/Filter/DerivativeFilter.cpp.0.o ./libraries/Filter/SlewLimiter.cpp.0.o ./libraries/Filter/LowPassFilter2p.cpp.0.o ./libraries/Filter/LowPassFilter.cpp.0.o ./libraries/Filter/ModeFilter.cpp.0.o ./libraries/AP_LandingGear/AP_LandingGear.cpp.0.o ./libraries/AP_InertialNav/AP_InertialNav_NavEKF.cpp.0.o ./libraries/AP_InternalError/AP_InternalError.cpp.0.o ./libraries/SRV_Channel/SRV_Channel_aux.cpp.0.o ./libraries/SRV_Channel/SRV_Channels.cpp.3.o ./libraries/SRV_Channel/SRV_Channel.cpp.0.o ./libraries/AP_RSSI/AP_RSSI.cpp.0.o ./libraries/AP_ICEngine/AP_ICEngine.cpp.0.o ./libraries/AP_Stats/AP_Stats.cpp.0.o ./libraries/AP_RangeFinder/AP_RangeFinder_MAVLink.cpp.0.o ./libraries/AP_RangeFinder/AP_RangeFinder_LeddarVu8.cpp.0.o ./libraries/AP_RangeFinder/AP_RangeFinder_Wasp.cpp.0.o ./libraries/AP_RangeFinder/AP_RangeFinder_UAVCAN.cpp.0.o ./libraries/AP_RangeFinder/AP_RangeFinder_MaxsonarSerialLV.cpp.0.o ./libraries/AP_RangeFinder/AP_RangeFinder_LightWareSerial.cpp.0.o ./libraries/AP_RangeFinder/AP_RangeFinder_Benewake_CAN.cpp.0.o ./libraries/AP_RangeFinder/AP_RangeFinder.cpp.3.o ./libraries/AP_RangeFinder/AP_RangeFinder_Benewake.cpp.0.o ./libraries/AP_RangeFinder/AP_RangeFinder_Params.cpp.0.o ./libraries/AP_RangeFinder/AP_RangeFinder_MSP.cpp.0.o ./libraries/AP_RangeFinder/AP_RangeFinder_BBB_PRU.cpp.0.o ./libraries/AP_RangeFinder/AP_RangeFinder_PulsedLightLRF.cpp.0.o ./libraries/AP_RangeFinder/AP_RangeFinder_analog.cpp.0.o ./libraries/AP_RangeFinder/AP_RangeFinder_Backend.cpp.0.o ./libraries/AP_RangeFinder/AP_RangeFinder_Lanbao.cpp.0.o ./libraries/AP_RangeFinder/AP_RangeFinder_NMEA.cpp.0.o ./libraries/AP_RangeFinder/AP_RangeFinder_GYUS42v2.cpp.0.o ./libraries/AP_RangeFinder/AP_RangeFinder_HC_SR04.cpp.0.o ./libraries/AP_RangeFinder/AP_RangeFinder_VL53L0X.cpp.0.o ./libraries/AP_RangeFinder/AP_RangeFinder_BLPing.cpp.0.o ./libraries/AP_RangeFinder/AP_RangeFinder_VL53L1X.cpp.0.o ./libraries/AP_RangeFinder/AP_RangeFinder_LightWareI2C.cpp.0.o ./libraries/AP_RangeFinder/AP_RangeFinder_LeddarOne.cpp.0.o ./libraries/AP_RangeFinder/AP_RangeFinder_Benewake_TFMiniPlus.cpp.0.o ./libraries/AP_RangeFinder/AP_RangeFinder_uLanding.cpp.0.o ./libraries/AP_RangeFinder/AP_RangeFinder_MaxsonarI2CXL.cpp.0.o ./libraries/AP_RangeFinder/AP_RangeFinder_SITL.cpp.0.o ./libraries/AP_RangeFinder/AP_RangeFinder_Bebop.cpp.0.o ./libraries/AP_RangeFinder/AP_RangeFinder_USD1_CAN.cpp.0.o ./libraries/AP_RangeFinder/AP_RangeFinder_TeraRangerI2C.cpp.0.o ./libraries/AP_RangeFinder/AP_RangeFinder_Backend_Serial.cpp.0.o ./libraries/AP_RangeFinder/AP_RangeFinder_PWM.cpp.0.o ./libraries/AP_FlashStorage/AP_FlashStorage.cpp.0.o ./libraries/AP_Tuning/AP_Tuning.cpp.0.o ./libraries/AP_Beacon/AP_Beacon_Pozyx.cpp.0.o ./libraries/AP_Beacon/AP_Beacon_Marvelmind.cpp.0.o ./libraries/AP_Beacon/AP_Beacon.cpp.0.o ./libraries/AP_Beacon/AP_Beacon_Nooploop.cpp.0.o ./libraries/AP_Beacon/AP_Beacon_Backend.cpp.0.o ./libraries/AP_Beacon/AP_Beacon_SITL.cpp.0.o ./libraries/AP_SBusOut/AP_SBusOut.cpp.0.o ./libraries/AP_EFI/AP_EFI_Backend.cpp.0.o ./libraries/AP_EFI/AP_EFI_NWPMU.cpp.0.o ./libraries/AP_EFI/AP_EFI.cpp.0.o ./libraries/AP_EFI/AP_EFI_Serial_MS.cpp.0.o ./libraries/AC_Sprayer/AC_Sprayer.cpp.0.o ./libraries/AP_Airspeed/AP_Airspeed_UAVCAN.cpp.0.o ./libraries/AP_Airspeed/AP_Airspeed_SDP3X.cpp.0.o ./libraries/AP_Airspeed/AP_Airspeed.cpp.3.o ./libraries/AP_Airspeed/AP_Airspeed_analog.cpp.0.o ./libraries/AP_Airspeed/AP_Airspeed_Health.cpp.0.o ./libraries/AP_Airspeed/AP_Airspeed_Backend.cpp.0.o ./libraries/AP_Airspeed/AP_Airspeed_MSP.cpp.0.o ./libraries/AP_Airspeed/AP_Airspeed_MS5525.cpp.0.o ./libraries/AP_Airspeed/AP_Airspeed_NMEA.cpp.3.o ./libraries/AP_Airspeed/Airspeed_Calibration.cpp.0.o ./libraries/AP_Airspeed/AP_Airspeed_DLVR.cpp.0.o ./libraries/AP_Airspeed/AP_Airspeed_MS4525.cpp.0.o ./libraries/AP_Airspeed/AP_Airspeed_ASP5033.cpp.0.o ./libraries/AP_HAL/GPIO.cpp.0.o ./libraries/AP_HAL/DSP.cpp.0.o ./libraries/AP_HAL/HAL.cpp.0.o ./libraries/AP_HAL/Scheduler.cpp.0.o ./libraries/AP_HAL/Semaphores.cpp.0.o ./libraries/AP_HAL/RCOutput.cpp.0.o ./libraries/AP_HAL/Device.cpp.0.o ./libraries/AP_HAL/utility/packetise.cpp.0.o ./libraries/AP_HAL/utility/srxl.cpp.0.o ./libraries/AP_HAL/utility/utoa_invert.cpp.0.o ./libraries/AP_HAL/utility/replace.cpp.0.o ./libraries/AP_HAL/utility/BetterStream.cpp.0.o ./libraries/AP_HAL/utility/RCOutput_Tap_Linux.cpp.0.o ./libraries/AP_HAL/utility/Socket.cpp.0.o ./libraries/AP_HAL/utility/st24.cpp.0.o ./libraries/AP_HAL/utility/ftoa_engine.cpp.0.o ./libraries/AP_HAL/utility/RCOutput_Tap.cpp.0.o ./libraries/AP_HAL/utility/RingBuffer.cpp.0.o ./libraries/AP_HAL/utility/sumd.cpp.0.o ./libraries/AP_HAL/utility/getopt_cpp.cpp.0.o ./libraries/AP_HAL/utility/print_vprintf.cpp.0.o ./libraries/AP_HAL/utility/dsm.cpp.0.o ./libraries/AP_HAL/CANIface.cpp.0.o ./libraries/AP_HAL/system.cpp.0.o ./libraries/AP_HAL/EventHandle.cpp.0.o ./libraries/AP_HAL/Storage.cpp.0.o ./libraries/AP_HAL/Util.cpp.0.o ./libraries/AP_Arming/AP_Arming.cpp.3.o ./libraries/AP_RAMTRON/AP_RAMTRON.cpp.0.o ./libraries/AP_MSP/AP_MSP_Telem_Generic.cpp.0.o ./libraries/AP_MSP/msp.cpp.0.o ./libraries/AP_MSP/AP_MSP_Telem_Backend.cpp.0.o ./libraries/AP_MSP/AP_MSP_Telem_DJI.cpp.0.o ./libraries/AP_MSP/AP_MSP.cpp.0.o ./libraries/AP_MSP/msp_sbuf.cpp.0.o ./libraries/AP_Follow/AP_Follow.cpp.3.o ./libraries/AP_Baro/AP_Baro_SITL.cpp.3.o ./libraries/AP_Baro/AP_Baro_LPS2XH.cpp.0.o ./libraries/AP_Baro/AP_Baro_FBM320.cpp.0.o ./libraries/AP_Baro/AP_Baro_SPL06.cpp.0.o ./libraries/AP_Baro/AP_Baro_MSP.cpp.0.o ./libraries/AP_Baro/AP_Baro_MS5611.cpp.0.o ./libraries/AP_Baro/AP_Baro_Logging.cpp.0.o ./libraries/AP_Baro/AP_Baro_Backend.cpp.0.o ./libraries/AP_Baro/AP_Baro_KellerLD.cpp.0.o ./libraries/AP_Baro/AP_Baro_DPS280.cpp.0.o ./libraries/AP_Baro/AP_Baro.cpp.3.o ./libraries/AP_Baro/AP_Baro_BMP280.cpp.0.o ./libraries/AP_Baro/AP_Baro_Dummy.cpp.0.o ./libraries/AP_Baro/AP_Baro_BMP085.cpp.0.o ./libraries/AP_Baro/AP_Baro_UAVCAN.cpp.0.o ./libraries/AP_Baro/AP_Baro_Wind.cpp.0.o ./libraries/AP_Baro/AP_Baro_HIL.cpp.0.o ./libraries/AP_Baro/AP_Baro_ExternalAHRS.cpp.0.o ./libraries/AP_Baro/AP_Baro_BMP388.cpp.0.o ./libraries/AP_Baro/AP_Baro_ICM20789.cpp.0.o ./libraries/AP_ToshibaCAN/AP_ToshibaCAN.cpp.0.o ./libraries/AP_CANManager/AP_CANIfaceParams.cpp.0.o ./libraries/AP_CANManager/AP_CANTester_KDECAN.cpp.0.o ./libraries/AP_CANManager/AP_SLCANIface.cpp.0.o ./libraries/AP_CANManager/AP_CANDriver.cpp.3.o ./libraries/AP_CANManager/AP_CANManager.cpp.3.o ./libraries/AP_CANManager/AP_CANTester.cpp.0.o ./libraries/AP_CANManager/AP_CANSensor.cpp.0.o ./libraries/AP_PiccoloCAN/AP_PiccoloCAN.cpp.0.o ./libraries/AP_PiccoloCAN/piccolo_protocol/fieldencode.c.0.o ./libraries/AP_PiccoloCAN/piccolo_protocol/ESCCommands.c.0.o ./libraries/AP_PiccoloCAN/piccolo_protocol/ESCDefines.c.0.o ./libraries/AP_PiccoloCAN/piccolo_protocol/ServoCommands.c.0.o ./libraries/AP_PiccoloCAN/piccolo_protocol/ServoDefines.c.0.o ./libraries/AP_PiccoloCAN/piccolo_protocol/LegacyESCPackets.c.0.o ./libraries/AP_PiccoloCAN/piccolo_protocol/LegacyESCDefines.c.0.o ./libraries/AP_PiccoloCAN/piccolo_protocol/ServoProtocol.c.0.o ./libraries/AP_PiccoloCAN/piccolo_protocol/ESCPackets.c.0.o ./libraries/AP_PiccoloCAN/piccolo_protocol/ESCVelocityProtocol.c.0.o ./libraries/AP_PiccoloCAN/piccolo_protocol/ServoPackets.c.0.o ./libraries/AP_PiccoloCAN/piccolo_protocol/scaleddecode.c.0.o ./libraries/AP_PiccoloCAN/piccolo_protocol/fielddecode.c.0.o ./libraries/AP_PiccoloCAN/piccolo_protocol/scaledencode.c.0.o ./libraries/AP_RTC/AP_RTC.cpp.0.o ./libraries/AP_RTC/JitterCorrection.cpp.0.o ./libraries/AP_LTM_Telem/AP_LTM_Telem.cpp.0.o ./libraries/AP_Param/AP_Param.cpp.0.o ./libraries/AP_Frsky_Telem/AP_Frsky_SPort_Passthrough.cpp.0.o ./libraries/AP_Frsky_Telem/AP_Frsky_Parameters.cpp.0.o ./libraries/AP_Frsky_Telem/AP_Frsky_D.cpp.0.o ./libraries/AP_Frsky_Telem/AP_Frsky_MAVlite_SPortToMAVlite.cpp.0.o ./libraries/AP_Frsky_Telem/AP_Frsky_MAVliteMsgHandler.cpp.0.o ./libraries/AP_Frsky_Telem/AP_Frsky_Telem.cpp.0.o ./libraries/AP_Frsky_Telem/AP_Frsky_MAVlite_MAVliteToSPort.cpp.0.o ./libraries/AP_Frsky_Telem/AP_Frsky_SPort.cpp.0.o ./libraries/AP_Frsky_Telem/AP_Frsky_Backend.cpp.0.o ./libraries/AP_Frsky_Telem/AP_Frsky_MAVlite_Message.cpp.0.o ./libraries/AP_NMEA_Output/AP_NMEA_Output.cpp.0.o ./libraries/AP_Notify/NavigatorLED.cpp.0.o ./libraries/AP_Notify/DiscoLED.cpp.0.o ./libraries/AP_Notify/Buzzer.cpp.0.o ./libraries/AP_Notify/SITL_SFML_LED.cpp.0.o ./libraries/AP_Notify/DiscreteRGBLed.cpp.0.o ./libraries/AP_Notify/ToneAlarm.cpp.0.o ./libraries/AP_Notify/AP_BoardLED2.cpp.0.o ./libraries/AP_Notify/MMLPlayer.cpp.0.o ./libraries/AP_Notify/UAVCAN_RGB_LED.cpp.0.o ./libraries/AP_Notify/NeoPixel.cpp.0.o ./libraries/AP_Notify/NCP5623.cpp.0.o ./libraries/AP_Notify/PCA9685LED_I2C.cpp.0.o ./libraries/AP_Notify/Display_SSD1306_I2C.cpp.0.o ./libraries/AP_Notify/DShotLED.cpp.0.o ./libraries/AP_Notify/OreoLED_I2C.cpp.0.o ./libraries/AP_Notify/RGBLed.cpp.0.o ./libraries/AP_Notify/Led_Sysfs.cpp.0.o ./libraries/AP_Notify/RCOutputRGBLed.cpp.0.o ./libraries/AP_Notify/ProfiLED.cpp.0.o ./libraries/AP_Notify/SerialLED.cpp.0.o ./libraries/AP_Notify/ToshibaLED_I2C.cpp.0.o ./libraries/AP_Notify/ScriptingLED.cpp.0.o ./libraries/AP_Notify/Display.cpp.0.o ./libraries/AP_Notify/ExternalLED.cpp.0.o ./libraries/AP_Notify/VRBoard_LED.cpp.0.o ./libraries/AP_Notify/PixRacerLED.cpp.0.o ./libraries/AP_Notify/AP_BoardLED.cpp.0.o ./libraries/AP_Notify/Display_SITL.cpp.0.o ./libraries/AP_Notify/AP_Notify.cpp.0.o ./libraries/AP_Notify/Display_SH1106_I2C.cpp.0.o ./libraries/AP_FETtecOneWire/AP_FETtecOneWire.cpp.0.o ./libraries/AP_ADSB/AP_ADSB_uAvionix_MAVLink.cpp.0.o ./libraries/AP_ADSB/AP_ADSB_Sagetech.cpp.0.o ./libraries/AP_ADSB/AP_ADSB_Backend.cpp.0.o ./libraries/AP_ADSB/AP_ADSB.cpp.3.o ./libraries/AP_Vehicle/AP_Vehicle.cpp.3.o ./libraries/AP_SerialManager/AP_SerialManager.cpp.0.o ./libraries/AP_OSD/AP_OSD_Setting.cpp.0.o ./libraries/AP_OSD/AP_OSD_MSP.cpp.0.o ./libraries/AP_OSD/AP_OSD_SITL.cpp.0.o ./libraries/AP_OSD/AP_OSD_Backend.cpp.0.o ./libraries/AP_OSD/AP_OSD_ParamScreen.cpp.3.o ./libraries/AP_OSD/AP_OSD_MAX7456.cpp.0.o ./libraries/AP_OSD/AP_OSD_Screen.cpp.3.o ./libraries/AP_OSD/AP_OSD_ParamSetting.cpp.3.o ./libraries/AP_OSD/AP_OSD.cpp.0.o ./libraries/AP_IRLock/AP_IRLock_I2C.cpp.0.o ./libraries/AP_IRLock/AP_IRLock_SITL.cpp.0.o ./libraries/AP_IRLock/IRLock.cpp.0.o ./libraries/AP_IRLock/AP_IRLock_SITL_Gazebo.cpp.0.o ./libraries/AP_Parachute/AP_Parachute.cpp.0.o ./libraries/AP_UAVCAN/AP_UAVCAN_DNA_Server.cpp.0.o ./libraries/AP_UAVCAN/AP_UAVCAN_IfaceMgr.cpp.0.o ./libraries/AP_UAVCAN/AP_UAVCAN.cpp.0.o ./libraries/AP_NavEKF2/AP_NavEKF2_Logging.cpp.0.o ./libraries/AP_NavEKF2/AP_NavEKF2_OptFlowFusion.cpp.0.o ./libraries/AP_NavEKF2/AP_NavEKF2.cpp.3.o ./libraries/AP_NavEKF2/AP_NavEKF_GyroBias.cpp.0.o ./libraries/AP_NavEKF2/AP_NavEKF2_Outputs.cpp.0.o ./libraries/AP_NavEKF2/AP_NavEKF2_RngBcnFusion.cpp.0.o ./libraries/AP_NavEKF2/AP_NavEKF2_Measurements.cpp.0.o ./libraries/AP_NavEKF2/AP_NavEKF2_PosVelFusion.cpp.0.o ./libraries/AP_NavEKF2/AP_NavEKF2_VehicleStatus.cpp.0.o ./libraries/AP_NavEKF2/AP_NavEKF2_MagFusion.cpp.0.o ./libraries/AP_NavEKF2/AP_NavEKF2_AirDataFusion.cpp.0.o ./libraries/AP_NavEKF2/AP_NavEKF2_core.cpp.0.o ./libraries/AP_NavEKF2/AP_NavEKF2_Control.cpp.0.o ./libraries/AP_Filesystem/AP_Filesystem_posix.cpp.3.o ./libraries/AP_Filesystem/posix_compat.cpp.0.o ./libraries/AP_Filesystem/AP_Filesystem_Sys.cpp.0.o ./libraries/AP_Filesystem/AP_Filesystem_FATFS.cpp.0.o ./libraries/AP_Filesystem/AP_Filesystem.cpp.0.o ./libraries/AP_Filesystem/AP_Filesystem_ROMFS.cpp.0.o ./libraries/AP_Filesystem/AP_Filesystem_Mission.cpp.0.o ./libraries/AP_Filesystem/AP_Filesystem_Param.cpp.0.o ./libraries/AP_Filesystem/AP_Filesystem_backend.cpp.0.o ./libraries/AP_Scheduler/AP_Scheduler.cpp.3.o ./libraries/AP_Scheduler/PerfInfo.cpp.0.o ./libraries/AP_BLHeli/AP_BLHeli.cpp.3.o ./libraries/AP_ADC/AP_ADC_ADS1115.cpp.0.o ./libraries/AP_RPM/AP_RPM.cpp.0.o ./libraries/AP_RPM/RPM_SITL.cpp.0.o ./libraries/AP_RPM/RPM_EFI.cpp.0.o ./libraries/AP_RPM/RPM_Backend.cpp.0.o ./libraries/AP_RPM/RPM_Pin.cpp.0.o ./libraries/AP_RPM/RPM_HarmonicNotch.cpp.0.o ./libraries/AP_IOMCU/fw_uploader.cpp.0.o ./libraries/AP_IOMCU/AP_IOMCU.cpp.0.o ./libraries/AP_RobotisServo/AP_RobotisServo.cpp.0.o ./libraries/AP_Camera/AP_RunCam.cpp.0.o ./libraries/AP_Camera/AP_Camera_Logging.cpp.0.o ./libraries/AP_Camera/AP_Camera_SoloGimbal.cpp.0.o ./libraries/AP_Camera/AP_Camera.cpp.0.o ./libraries/AP_RCMapper/AP_RCMapper.cpp.0.o ./libraries/AP_Hott_Telem/AP_Hott_Telem.cpp.0.o ./libraries/AP_Relay/AP_Relay.cpp.0.o ./libraries/AP_Volz_Protocol/AP_Volz_Protocol.cpp.0.o ./libraries/AP_Terrain/TerrainIO.cpp.0.o ./libraries/AP_Terrain/AP_Terrain.cpp.0.o ./libraries/AP_Terrain/TerrainMission.cpp.0.o ./libraries/AP_Terrain/TerrainUtil.cpp.0.o ./libraries/AP_Terrain/TerrainGCS.cpp.0.o ./libraries/AP_VideoTX/AP_VideoTX.cpp.0.o ./libraries/AP_VideoTX/AP_SmartAudio.cpp.0.o ./libraries/AP_Generator/AP_Generator_IE_FuelCell.cpp.0.o ./libraries/AP_Generator/AP_Generator_RichenPower.cpp.0.o ./libraries/AP_Generator/AP_Generator_IE_2400.cpp.0.o ./libraries/AP_Generator/AP_Generator_Backend.cpp.0.o ./libraries/AP_Generator/AP_Generator_IE_650_800.cpp.0.o ./libraries/AP_Generator/AP_Generator.cpp.0.o ./libraries/GCS_MAVLink/GCS_Rally.cpp.0.o ./libraries/GCS_MAVLink/MissionItemProtocol_Fence.cpp.0.o ./libraries/GCS_MAVLink/GCS_serial_control.cpp.0.o ./libraries/GCS_MAVLink/GCS_FTP.cpp.0.o ./libraries/GCS_MAVLink/GCS.cpp.0.o ./libraries/GCS_MAVLink/GCS_Signing.cpp.0.o ./libraries/GCS_MAVLink/MissionItemProtocol.cpp.0.o ./libraries/GCS_MAVLink/GCS_Fence.cpp.0.o ./libraries/GCS_MAVLink/MissionItemProtocol_Rally.cpp.0.o ./libraries/GCS_MAVLink/MAVLink_routing.cpp.0.o ./libraries/GCS_MAVLink/GCS_DeviceOp.cpp.0.o ./libraries/GCS_MAVLink/MissionItemProtocol_Waypoints.cpp.0.o ./libraries/GCS_MAVLink/GCS_ServoRelay.cpp.0.o ./libraries/GCS_MAVLink/GCS_MAVLink.cpp.0.o ./libraries/GCS_MAVLink/GCS_Common.cpp.3.o ./libraries/GCS_MAVLink/GCS_Param.cpp.0.o ./libraries/AP_WheelEncoder/AP_WheelRateControl.cpp.0.o ./libraries/AP_WheelEncoder/WheelEncoder_SITL_Quadrature.cpp.0.o ./libraries/AP_WheelEncoder/WheelEncoder_Quadrature.cpp.0.o ./libraries/AP_WheelEncoder/WheelEncoder_Backend.cpp.0.o ./libraries/AP_WheelEncoder/AP_WheelEncoder.cpp.0.o ./libraries/AP_Devo_Telem/AP_Devo_Telem.cpp.0.o ./libraries/AP_Gripper/AP_Gripper_Backend.cpp.0.o ./libraries/AP_Gripper/AP_Gripper.cpp.0.o ./libraries/AP_Gripper/AP_Gripper_Servo.cpp.0.o ./libraries/AP_Gripper/AP_Gripper_EPM.cpp.0.o ./libraries/AP_RCTelemetry/AP_Spektrum_Telem.cpp.0.o ./libraries/AP_RCTelemetry/AP_CRSF_Telem.cpp.3.o ./libraries/AP_RCTelemetry/AP_RCTelemetry.cpp.3.o ./libraries/AC_PrecLand/AC_PrecLand_SITL_Gazebo.cpp.0.o ./libraries/AC_PrecLand/AC_PrecLand_IRLock.cpp.0.o ./libraries/AC_PrecLand/PosVelEKF.cpp.0.o ./libraries/AC_PrecLand/AC_PrecLand_Companion.cpp.0.o ./libraries/AC_PrecLand/AC_PrecLand_SITL.cpp.0.o ./libraries/AC_PrecLand/AC_PrecLand.cpp.0.o ./libraries/AP_InertialSensor/AP_InertialSensor_ExternalAHRS.cpp.0.o ./libraries/AP_InertialSensor/AP_InertialSensor_Invensensev2.cpp.0.o ./libraries/AP_InertialSensor/AP_InertialSensor_tempcal.cpp.0.o ./libraries/AP_InertialSensor/AP_InertialSensor_SITL.cpp.0.o ./libraries/AP_InertialSensor/AP_InertialSensor_Backend.cpp.0.o ./libraries/AP_InertialSensor/AP_InertialSensor_RST.cpp.0.o ./libraries/AP_InertialSensor/AuxiliaryBus.cpp.0.o ./libraries/AP_InertialSensor/AP_InertialSensor_ADIS1647x.cpp.0.o ./libraries/AP_InertialSensor/AP_InertialSensor_BMI088.cpp.0.o ./libraries/AP_InertialSensor/AP_InertialSensor.cpp.3.o ./libraries/AP_InertialSensor/BatchSampler.cpp.0.o ./libraries/AP_InertialSensor/AP_InertialSensor_Logging.cpp.0.o ./libraries/AP_InertialSensor/AP_InertialSensor_Invensensev3.cpp.0.o ./libraries/AP_InertialSensor/AP_InertialSensor_LSM9DS1.cpp.0.o ./libraries/AP_InertialSensor/AP_InertialSensor_L3G4200D.cpp.0.o ./libraries/AP_InertialSensor/AP_InertialSensor_LSM9DS0.cpp.0.o ./libraries/AP_InertialSensor/AP_InertialSensor_BMI160.cpp.0.o ./libraries/AP_InertialSensor/AP_InertialSensor_BMI055.cpp.0.o ./libraries/AP_InertialSensor/AP_InertialSensor_Invensense.cpp.0.o ./libraries/AP_Logger/AP_Logger_File.cpp.3.o ./libraries/AP_Logger/AP_Logger_MAVLinkLogTransfer.cpp.0.o ./libraries/AP_Logger/LogFile.cpp.0.o ./libraries/AP_Logger/AP_Logger_SITL.cpp.0.o ./libraries/AP_Logger/AP_Logger_Block.cpp.0.o ./libraries/AP_Logger/AP_Logger_Backend.cpp.3.o ./libraries/AP_Logger/AP_Logger_MAVLink.cpp.0.o ./libraries/AP_Logger/AP_Logger.cpp.3.o ./libraries/AP_Logger/AP_Logger_DataFlash.cpp.0.o ./libraries/AP_Logger/LoggerMessageWriter.cpp.0.o ./libraries/AC_Autorotation/AC_Autorotation.cpp.0.o ./libraries/AP_Module/AP_Module.cpp.0.o ./libraries/AP_Mission/AP_Mission.cpp.3.o ./libraries/AP_Mission/AP_Mission_Commands.cpp.0.o ./libraries/AP_ROMFS/tinfgzip.cpp.0.o ./libraries/AP_ROMFS/AP_ROMFS.cpp.0.o ./libraries/AP_ROMFS/tinflate.cpp.0.o ./libraries/AP_OLC/AP_OLC.cpp.0.o ./libraries/StorageManager/StorageManager.cpp.3.o ./libraries/AP_Button/AP_Button.cpp.0.o ./libraries/AC_InputManager/AC_InputManager_Heli.cpp.0.o ./libraries/AC_InputManager/AC_InputManager.cpp.0.o -o copter_4_1.bc -S

7. Convert PX4 source code to a bitcode file for static analysis

1) Environment

2) Add compile options

Open the following file

PX4 root folder/Firmware/cmake$ vim px4_add_common_flags.cmake

Add '-c', '-Xclang', '-O0', '-emit-llvm', '-S', '-fno-discard-value-names', '-g' options into 'add_compile_options'

add_compile_options(
                -g # Create debug symbols

                -c
                -Xclang
                -O0
                -emit-llvm
                -S
                -fno-discard-value-names

3) Compile PX4

PX4 root folder$ make px4_sitl_default-clang

It will probably produce some errors. You need to modify PX source code based on the error messages.

4) Link

PX4 root folder$ llvm-link [all object files] -o px4.bc -S

8. Data flow analysis (for mapping configuration parameters to related terms in the MTL formulas)

1) Environment

  • LLVM 13.0.0
  • Ubuntu 20.04

2) Install SVF (Static Value-Flow Analysis Framework)

sudo apt-get update 
sudo apt-get upgrade 
sudo snap install cmake --classic
sudo apt install build-essential 
sudo apt-get install libtinfo-dev 
sudo apt install zlib1g 
sudo apt install zlib1g-dev
sudo apt install libncurses5
sudo apt install xdot
git clone https://github.com/KimHyungSub/SVF.git
cd SVF
source ./build.sh

3) Install SVF-data-flow

Please note that this version is forked from SVF-example. You can find details of the implementation in here.

git clone https://github.com/KimHyungSub/SVF-data-flow.git
npm i --silent svf-lib --prefix ${HOME}
source ./env.sh
cmake . && make

⚠️ Troubleshooting

If the make command produces the error below,

a missing "SVF-FE/PAGBuilder.h"

Please check whether SVF version and SVF header files are correct or not. image image image

To suppress the error, you can also comment out "#include <SVF-FE/PAGBuilder.h>" in https://github.com/KimHyungSub/SVF-data-flow/blob/master/src/SVF-data-flow.cpp#L41

4) Analyze an ArduPilot bc file using svf-data-flow executable

  • 'trace_target_list.txt' contains a list of configuration parameters.
  • This executable reads 'trace_target_list.txt' and then collects all the uses of each configuration parameter.
  • You can check the analysis output in 'output.txt'.
./bin/svf-data-flow copter_4_1_llvm_13.bc > output.txt

5) Tips

  • The bc file must be complied by the same LLVM version of this SVF's one (LLVM 13.0.0).
  • If you want to analyze other configuration parameters, please put new configuration parameters into trace_target_list.txt
  • This data flow analysis also can be used to trace other variables in drone control software.
  • The sample bc file (copter_4_1_llvm_13.bc) does not contain whole ArduPilot source code.
  • Your machine must be equipped with 64GB - 128GB RAM when you analyze whole ArduPilot/PX4 bc files.

About

Policy-Guided Fuzzing for Robotic Vehicles

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages