2012-11-29 29 views
12

Bây giờ, chúng tôi đang triển khai thẻ phân tích cho llvm, sau this tutorial. và cần chuyển một đối số bổ sung cho plugin như sau:Có thể thêm đối số cho các thẻ được người dùng xác định trong llvm

opt -load /path/to/myplugin.so -mypass -mypass_option input.bc 

Tuy nhiên tôi không tìm thấy bất kỳ hướng dẫn nào cho tôi biết cách thực hiện. Vì vậy, tôi tự hỏi liệu có thể thực hành được hay không.

Xin cảm ơn trước.

+0

Ví dụ cụ thể đó không phải là tối ưu vì thành ngữ là để đọc từ 'stdin'. Có lẽ bạn có một trường hợp sử dụng trong tâm trí? –

+0

Bạn cần loại đối số nào? Theo như tôi biết một vượt qua nên mất tất cả mọi thứ nó cần từ IR và IR đầu ra một lần nữa. –

+0

@TobiasLangner Đó là một số đối số như cấp độ phân tích hoặc vị trí phân tích của thẻ '-mypass'. Có thể nó giống như mức tối ưu hóa gcc '-O1',' -O2', v.v. –

Trả lời

9

Bạn nên sử dụng thư viện CommandLine được tích hợp sẵn với LLVM. Về cơ bản, bạn chỉ cần đặt ở đầu tệp .cpp của thẻ:

#include "llvm/Support/CommandLine.h" 

static cl::opt<string> InputFilename("mypass_option", cl::desc("Specify input filename for mypass"), cl::value_desc("filename")); 

Nhưng tôi khuyên bạn nên kiểm tra liên kết ở trên, nó có tham chiếu đầy đủ + phần tiện lợi nhanh.

Ví dụ, hãy xem tích hợp loop unrolling pass - nó xác định hai tùy chọn boolean và chưa được ký hiệu, ngay ở đầu tệp nguồn, bằng cách sử dụng cl::opt<unsigned> và .

Các vấn đề liên quan