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.
We assume that you already finished setup for executing ArduPilot, PX4 and Paparazzi on Ubuntu LTS / Debian Linux.
-
Installing pymavlink on Ubuntu 20.04
Installing pymavlink using pip is broken right now.
Instead, you can install pymavlink from source code.
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
cd ~
git clone https://github.com/purseclab/PGFuzz.git pgfuzz
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
If you want to closely look into bug cases discovered by PGFUZZ, please review the below documentation.
- 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.
- 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.
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}
}
Here, I would like to explain how to convert ArduPilot to a bitcode file because I got several emails asking about it.
- ArduPilot: copter 4.1 version (https://github.com/ArduPilot/ardupilot/commit/68619c308737e5199992a9523bacabe9710c8e7e)
- LLVM 13.0.0
- Ubuntu 20.04
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++')
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.
ArduPilot root folder> ./waf copter
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.)
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"
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
- PX4: v1.12.3 version (https://github.com/PX4/PX4-Autopilot/commit/2e8918da66af37922ededee1cc2d2efffec4cfb2)
- LLVM 13.0.0
- Ubuntu 20.04
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
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.
PX4 root folder$ llvm-link [all object files] -o px4.bc -S
- LLVM 13.0.0
- Ubuntu 20.04
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
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
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.
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
- '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
- 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.