mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	perf llvm: Display eBPF compiling command in debug output
In addition to template, display also the real compile command line with all the variables substituted. llvm compiling command template: $CLANG_EXEC -D__KERNEL__ -D__NR_CPUS__=$NR_CPUS ... llvm compiling command : /usr/bin/clang -D__KERNEL__ -D__NR_CPUS__=24 -DLINUX_VERSION_CODE=0x41000 ... Signed-off-by: Jiri Olsa <jolsa@kernel.org> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/20180312094313.18738-3-jolsa@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
		
							parent
							
								
									a3a4a3b37c
								
							
						
					
					
						commit
						5eab5a7ee0
					
				
					 1 changed files with 14 additions and 0 deletions
				
			
		| 
						 | 
					@ -433,6 +433,7 @@ int llvm__compile_bpf(const char *path, void **p_obj_buf,
 | 
				
			||||||
	char serr[STRERR_BUFSIZE];
 | 
						char serr[STRERR_BUFSIZE];
 | 
				
			||||||
	char *kbuild_dir = NULL, *kbuild_include_opts = NULL;
 | 
						char *kbuild_dir = NULL, *kbuild_include_opts = NULL;
 | 
				
			||||||
	const char *template = llvm_param.clang_bpf_cmd_template;
 | 
						const char *template = llvm_param.clang_bpf_cmd_template;
 | 
				
			||||||
 | 
						char *command_echo, *command_out;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (path[0] != '-' && realpath(path, abspath) == NULL) {
 | 
						if (path[0] != '-' && realpath(path, abspath) == NULL) {
 | 
				
			||||||
		err = errno;
 | 
							err = errno;
 | 
				
			||||||
| 
						 | 
					@ -487,6 +488,16 @@ int llvm__compile_bpf(const char *path, void **p_obj_buf,
 | 
				
			||||||
		      (path[0] == '-') ? path : abspath);
 | 
							      (path[0] == '-') ? path : abspath);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	pr_debug("llvm compiling command template: %s\n", template);
 | 
						pr_debug("llvm compiling command template: %s\n", template);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (asprintf(&command_echo, "echo -n \"%s\"", template) < 0)
 | 
				
			||||||
 | 
							goto errout;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err = read_from_pipe(command_echo, (void **) &command_out, NULL);
 | 
				
			||||||
 | 
						if (err)
 | 
				
			||||||
 | 
							goto errout;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						pr_debug("llvm compiling command : %s\n", command_out);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err = read_from_pipe(template, &obj_buf, &obj_buf_sz);
 | 
						err = read_from_pipe(template, &obj_buf, &obj_buf_sz);
 | 
				
			||||||
	if (err) {
 | 
						if (err) {
 | 
				
			||||||
		pr_err("ERROR:\tunable to compile %s\n", path);
 | 
							pr_err("ERROR:\tunable to compile %s\n", path);
 | 
				
			||||||
| 
						 | 
					@ -497,6 +508,8 @@ int llvm__compile_bpf(const char *path, void **p_obj_buf,
 | 
				
			||||||
		goto errout;
 | 
							goto errout;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						free(command_echo);
 | 
				
			||||||
 | 
						free(command_out);
 | 
				
			||||||
	free(kbuild_dir);
 | 
						free(kbuild_dir);
 | 
				
			||||||
	free(kbuild_include_opts);
 | 
						free(kbuild_include_opts);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -509,6 +522,7 @@ int llvm__compile_bpf(const char *path, void **p_obj_buf,
 | 
				
			||||||
		*p_obj_buf_sz = obj_buf_sz;
 | 
							*p_obj_buf_sz = obj_buf_sz;
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
errout:
 | 
					errout:
 | 
				
			||||||
 | 
						free(command_echo);
 | 
				
			||||||
	free(kbuild_dir);
 | 
						free(kbuild_dir);
 | 
				
			||||||
	free(kbuild_include_opts);
 | 
						free(kbuild_include_opts);
 | 
				
			||||||
	free(obj_buf);
 | 
						free(obj_buf);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue