| 
									
										
										
										
											2020-10-20 17:50:20 -07:00
										 |  |  | #!/usr/bin/env bash
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | bpf_sdk=$(cd "$(dirname "$0")/.." && pwd) | 
					
						
							|  |  |  | # shellcheck source=sdk/bpf/env.sh | 
					
						
							|  |  |  | source "$bpf_sdk"/env.sh | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | so=$1 | 
					
						
							|  |  |  | dump=$2 | 
					
						
							|  |  |  | if [[ -z $so ]] || [[ -z $dump ]]; then | 
					
						
							|  |  |  |   echo "Usage: $0 bpf-program.so dump.txt" | 
					
						
							|  |  |  |   exit 1 | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if [[ ! -r $so ]]; then | 
					
						
							|  |  |  |   echo "Error: File not found or readable: $so" | 
					
						
							|  |  |  |   exit 1 | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if ! command -v rustfilt > /dev/null; then | 
					
						
							|  |  |  |   echo "Error: rustfilt not found.  It can be installed by running: cargo install rustfilt" | 
					
						
							|  |  |  |   exit 1 | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-22 17:10:42 -07:00
										 |  |  | set -e | 
					
						
							|  |  |  | out_dir=$(dirname "$dump") | 
					
						
							|  |  |  | if [[ ! -d $out_dir ]]; then | 
					
						
							|  |  |  |   mkdir -p "$out_dir" | 
					
						
							|  |  |  | fi | 
					
						
							| 
									
										
										
										
											2020-10-20 17:50:20 -07:00
										 |  |  | dump_mangled=$dump.mangled | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ( | 
					
						
							|  |  |  |   set -ex | 
					
						
							|  |  |  |   ls -la "$so" > "$dump_mangled" | 
					
						
							| 
									
										
										
										
											2021-02-18 11:30:08 -08:00
										 |  |  |   "$bpf_sdk"/dependencies/bpf-tools/llvm/bin/llvm-readelf -aW "$so" >>"$dump_mangled" | 
					
						
							| 
									
										
										
										
											2021-03-10 18:13:38 +01:00
										 |  |  |   "$OBJDUMP" --print-imm-hex --source --disassemble "$so" >> "$dump_mangled" | 
					
						
							| 
									
										
										
										
											2020-10-20 17:50:20 -07:00
										 |  |  |   sed s/://g < "$dump_mangled" | rustfilt > "$dump" | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | rm -f "$dump_mangled" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if [[ ! -f "$dump" ]]; then | 
					
						
							|  |  |  |   echo "Error: Failed to create $dump" | 
					
						
							|  |  |  |   exit 1 | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | echo "Wrote $dump" |