Clang __usercall: towards native support for user defined calling conventions. Widberg, J., Narain, S., & Chen, Y. In Proceedings of the 30th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering, of ESEC/FSE 2022, pages 1746–1750, New York, NY, USA, November, 2022. Association for Computing Machinery. Paper doi abstract bibtex In reverse engineering interfacing with C/C++ functions is of great interest because it provides much more flexibility for product development and security purpose. However, it has been a great challenge when interfacing functions with user defined calling conventions due to the lack of sufficient and user-friendly tooling. In this work, we design and implement Clang __usercall, which aims to provide programmers with an elegant and familiar syntax to specify user defined calling conventions on functions in C/C++ source code. Our key novelties lie in mimicing the most popular syntax and adapting Clang for interfacing purpose. Our preliminary user study shows that our solution outperforms the existing ones in multiple key aspects including user experience and required lines of code. Clang __usercall is already added to the Compiler Explorer website as well.
@inproceedings{widberg_clang_2022,
address = {New York, NY, USA},
series = {{ESEC}/{FSE} 2022},
title = {Clang \_\_usercall: towards native support for user defined calling conventions},
isbn = {9781450394130},
shorttitle = {Clang \_\_usercall},
url = {https://doi.org/10.1145/3540250.3558921},
doi = {10.1145/3540250.3558921},
abstract = {In reverse engineering interfacing with C/C++ functions is of great interest because it provides much more flexibility for product development and security purpose. However, it has been a great challenge when interfacing functions with user defined calling conventions due to the lack of sufficient and user-friendly tooling. In this work, we design and implement Clang \_\_usercall, which aims to provide programmers with an elegant and familiar syntax to specify user defined calling conventions on functions in C/C++ source code. Our key novelties lie in mimicing the most popular syntax and adapting Clang for interfacing purpose. Our preliminary user study shows that our solution outperforms the existing ones in multiple key aspects including user experience and required lines of code. Clang \_\_usercall is already added to the Compiler Explorer website as well.},
urldate = {2024-02-08},
booktitle = {Proceedings of the 30th {ACM} {Joint} {European} {Software} {Engineering} {Conference} and {Symposium} on the {Foundations} of {Software} {Engineering}},
publisher = {Association for Computing Machinery},
author = {Widberg, Jared and Narain, Sashank and Chen, Yimin},
month = nov,
year = {2022},
keywords = {Calling Convention, Clang, Compiler, LLVM, Reverse engineering},
pages = {1746--1750},
}
Downloads: 0
{"_id":"KjxxH38s7PRc4SftW","bibbaseid":"widberg-narain-chen-clangusercalltowardsnativesupportforuserdefinedcallingconventions-2022","author_short":["Widberg, J.","Narain, S.","Chen, Y."],"bibdata":{"bibtype":"inproceedings","type":"inproceedings","address":"New York, NY, USA","series":"ESEC/FSE 2022","title":"Clang __usercall: towards native support for user defined calling conventions","isbn":"9781450394130","shorttitle":"Clang __usercall","url":"https://doi.org/10.1145/3540250.3558921","doi":"10.1145/3540250.3558921","abstract":"In reverse engineering interfacing with C/C++ functions is of great interest because it provides much more flexibility for product development and security purpose. However, it has been a great challenge when interfacing functions with user defined calling conventions due to the lack of sufficient and user-friendly tooling. In this work, we design and implement Clang __usercall, which aims to provide programmers with an elegant and familiar syntax to specify user defined calling conventions on functions in C/C++ source code. Our key novelties lie in mimicing the most popular syntax and adapting Clang for interfacing purpose. Our preliminary user study shows that our solution outperforms the existing ones in multiple key aspects including user experience and required lines of code. Clang __usercall is already added to the Compiler Explorer website as well.","urldate":"2024-02-08","booktitle":"Proceedings of the 30th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering","publisher":"Association for Computing Machinery","author":[{"propositions":[],"lastnames":["Widberg"],"firstnames":["Jared"],"suffixes":[]},{"propositions":[],"lastnames":["Narain"],"firstnames":["Sashank"],"suffixes":[]},{"propositions":[],"lastnames":["Chen"],"firstnames":["Yimin"],"suffixes":[]}],"month":"November","year":"2022","keywords":"Calling Convention, Clang, Compiler, LLVM, Reverse engineering","pages":"1746–1750","bibtex":"@inproceedings{widberg_clang_2022,\n\taddress = {New York, NY, USA},\n\tseries = {{ESEC}/{FSE} 2022},\n\ttitle = {Clang \\_\\_usercall: towards native support for user defined calling conventions},\n\tisbn = {9781450394130},\n\tshorttitle = {Clang \\_\\_usercall},\n\turl = {https://doi.org/10.1145/3540250.3558921},\n\tdoi = {10.1145/3540250.3558921},\n\tabstract = {In reverse engineering interfacing with C/C++ functions is of great interest because it provides much more flexibility for product development and security purpose. However, it has been a great challenge when interfacing functions with user defined calling conventions due to the lack of sufficient and user-friendly tooling. In this work, we design and implement Clang \\_\\_usercall, which aims to provide programmers with an elegant and familiar syntax to specify user defined calling conventions on functions in C/C++ source code. Our key novelties lie in mimicing the most popular syntax and adapting Clang for interfacing purpose. Our preliminary user study shows that our solution outperforms the existing ones in multiple key aspects including user experience and required lines of code. Clang \\_\\_usercall is already added to the Compiler Explorer website as well.},\n\turldate = {2024-02-08},\n\tbooktitle = {Proceedings of the 30th {ACM} {Joint} {European} {Software} {Engineering} {Conference} and {Symposium} on the {Foundations} of {Software} {Engineering}},\n\tpublisher = {Association for Computing Machinery},\n\tauthor = {Widberg, Jared and Narain, Sashank and Chen, Yimin},\n\tmonth = nov,\n\tyear = {2022},\n\tkeywords = {Calling Convention, Clang, Compiler, LLVM, Reverse engineering},\n\tpages = {1746--1750},\n}\n\n","author_short":["Widberg, J.","Narain, S.","Chen, Y."],"key":"widberg_clang_2022","id":"widberg_clang_2022","bibbaseid":"widberg-narain-chen-clangusercalltowardsnativesupportforuserdefinedcallingconventions-2022","role":"author","urls":{"Paper":"https://doi.org/10.1145/3540250.3558921"},"keyword":["Calling Convention","Clang","Compiler","LLVM","Reverse engineering"],"metadata":{"authorlinks":{}}},"bibtype":"inproceedings","biburl":"https://api.zotero.org/users/8994433/collections/66SDI5S7/items?key=ozCmKMmrE26WwEN9PAdOLaiV&format=bibtex&limit=100","dataSources":["8BDe79PKmLEoGEieK","Rxy8umoNP78qdq56v","kQ6oEMED6p4RGbihm","yM68t35RzDgJZajbn","nXz2cN22CbQDukEnJ"],"keywords":["calling convention","clang","compiler","llvm","reverse engineering"],"search_terms":["clang","usercall","towards","native","support","user","defined","calling","conventions","widberg","narain","chen"],"title":"Clang __usercall: towards native support for user defined calling conventions","year":2022}