* ������PINC (PlugIN framework for Compiler)����openEuler��������Ĵ�����Ŀ���������������������ı������ڲ�������ʵ�ֶ��������Ż��ͱ��빤�ߵı�ݿ����� * �Ƽ��ˣ������@li-yancheng openEuler Compiler SIG maintainer, ����Ȩ@huang-xiaoquan openEuler Compiler SIG committer, ������@dguangya openEuler Compiler SIG committer��������@wumingchuan openEuler Compiler SIG committer * ������ַ�� https://gitee.com/openEuler/pin-gcc-client https://gitee.com/openeuler/pin-server
openEuler ������Ŀ������
* �Ƽ����� openEuler ���������Ŀ, openEuler ��ȼ���������Ŀ�� * ��Դ���� ��Ŀ�����й���openEuler�� * ��ҵӰ�� �ڿ�Դ����OSSEU23���������ݽ���������Ϊ�������ṩ���Ի�����ı�ݿ����� * �������� �������ṩ���ñ�����������Ӳ������Ѹ��ʹ�ܺ�����̬�������������MLIR�������У��ɴ�����ͬ������IR��ת����һ�ο����ɶ������ʹ�ã���������������̸������У�����������������������з��Ͳ��� * ��������������Ӫ ������Ϲ淶�����������ߣ����û�����������Ӧ��ʱ��
1. �������� ����������ı�������ܶ����ṩ�Լ��IJ��ʽ�������������㿪����Ա�����ڲ��ı����������Ϊ�����������µĹ��ܡ�����GCC Plugin������GCC 4.5.0��ʼ�����һ�������ܣ������û�ͨ���������ԤGCC�ı�����̲���ȡGCC��������еĸ������ݣ����������ı�����������ɵ��м����ݡ� GCC Pluginʹ������Ա����ͨ���ص��������ڱ����������������¹��ܣ����Ҳ���Ҫȥ�ı����������������IJ��ʽ�����ṩ���������ƣ�
1) �����˹����Ͳ����¹��������ʱ�䡣ֻ��Ҫ����ʵ���¹�������Ĵ��룬����Ҫ���±���GCC��
2) ���˿����ɱ�������Щ��Ҫ��GCC��û��ʱ�������ȥ����̽�ֱ������ڲ��Ŀ�����Ա���ṩ�������Ѷȵ͡�����Ч�Ŀ�����ʽ�� ���ǣ����ڱ������������ȫ���ڸ��Ա�������ܽ��п���ʵ�ֵģ������������汾����ϡ��ɴ������˱����������������Ҫ��ս�� ��սһ���ظ����������Ŀ���ά���ɱ� 2021����Linux�ں��������й���GCC��������ۡ����������ں����ұ�����Ŀ��Kernel Self Protection Project����һЩgrsecurity/PaX��patch��GCC�������ʽ����Kernel���ӹ�֧�֡����ǣ�������ЩGCC�����GCC�汾��ϵ�dz����ܣ�һ��Kernelʹ�õ�GCC�����汾�䶯����Щ�ӹ̲������Ҫ��ÿһ�α䶯��GCC�汾�������䣬�ɴ˸����ά���ߴ����˴�����ά��������������ͼ��ʾ�� [cid:image001.jpg@01D9FDC7.20EEF230] ͬʱ������������У�顢�����Լ��ȸ�����������漰�Ĺ������ܣ���ͬ�Ĺ���ȴ��Ҫ�ڲ�ͬ�IJ�����ظ�������ά��������ͼ������������������ߴ������ظ��Ŀ���ά���ɱ��� [cid:image002.jpg@01D9FDC7.20EEF230] ��ս������ͬ��������̬�����IJ���ظ�����ά���ɱ� ��ǰ�������������ı�������ܣ�GCCʹ����㣬�Ƚ���չ���ܽϺã�LLVM���ش��£���չѸ�١��г��ϴ����ı��빤�ߺͱ�����չ���������ǻ����������������ɵġ�����κα��빤����Ҫѡ�����ֱ�����֮һ�����ظ����п����� ��Ϊ��������ܵIJ�ͬ�����¼�ʹ����ͬ�Ĺ�������������뼸��û�취���á�����Ҫ�ڲ�ͬ�ı�������������ظ��Ĵ��뿪�����ֱ����ά����ֱ�������˹��ߵĿ�����ά���ɱ��� [cid:image003.jpg@01D9FDC7.20EEF230] ����ͼ��ʾ��Randstruct��ΪKernel�ӹ̹��ߣ���2017�����GCC���ʵ�֣�Ȼ���ڸ��꣬Ϊ������LLVM��ʹ�ܴ˹��ߣ�����Clang����ظ����п��������ǻ������ܺ�����ʵ��û��̫��仯��ʱ�����գ���Ȼ����һ���������ҪΪ������������̬ά��������ͬ����汾������� PINC�������������� Ϊ�˽�����߱����������������ս���������ʵ���˱����������ܣ�PINC��PlugIN Framework for Compiler���� [cid:image004.jpg@01D9FDC7.20EEF230] ����ͼ��ʾ�����ǵ�Ŀ�����û��ڱ�����������ع��߿�����ֻ��Ҫ��һ�ο����������ڶ����ͬ�����������أ�ͬʱ��Ϊ����ƽ̨���ṩ�Թ���������֧����ά���� �����������ܵ�����ܹ�����ͼ��ʾ�� [cid:image005.jpg@01D9FDC7.20EEF230] �����������ܵ����ܹ��ص������Ʋ�����������ͱ������ͻ���ģ����ɴ���ģʽ����������ֻ���ز�������������ڷ����ʹ�����������MLIR�Լ������ṩ��һϵ�в��API���п���������ע��۽��ڹ��ߵ��������������벻ͬ�������Ŀͻ��˶Խӣ���ͨ�������ͨ�Ŵ���IR����������������������ת��ӳ�䣬ִ���ڿͻ��˱������ϣ�ʵ��һ�ݴ��룬���������ص�Ŀ�ġ� ���ʹ����ֻ��Ҫ�����������Ŀ��ļ���У���ļ���ͨ����ܵ������ļ�������������ͻ�������ʹ�ܡ�����ͻ��˽���ΪGCC/LLVM Plugin���м��أ�ӵ������ȫ����Ҫ��GCC����������ʵ���¹��ܵ����ƣ��ܹ�����ݵ�ʹ�á�ͬʱ���ܿ����ά���ĸ��ֹ��������� ��ͼ�DZ����������ܵļܹ�ͼ�� [cid:image006.jpg@01D9FDC7.20EEF230] ��������������Ϊ����ƽ̨���ṩ������������ͳһ֧����ά����
�� ��־��¼���ܣ��ڷ���˺Ϳͻ��ˣ���֧����־��¼���ܡ����ִ�й����п��Դ�ӡ�ڲ��������־����¼���ִ�й��̹ؼ���ִ����Ϣ�����û����ԺͲ��ġ���־��¼�ṩERROR��WARN��INFO��DEBUG4���������Ϣ��������������ͨ�����ù����������û��������á�
�� ���м�������ڿ����ͨ�Ź����У��������ṩ���м������ȫ����ѡ���Լ������Ϸ��Խ���У�顣
�� ������У�飺�ڲ���ͻ��ˣ������ṩ�˶Բ���汾�����Ե�У�鹦�ܡ�
�� ������У�飺����˲�������ṩ������ǩ����������У����������ֹ�Բ�����ߵĶ����ġ� ��ʱ�������ܹ����֣�Ϊ��ʵ��һ�ο��������������ص�Ŀ�꣬���߿�����ʹ�õ�IRӦ���㹻����������ӵ�и�Ч����ת��������������IR��������Ϊ�ˣ��������������ṩPluginDialect�����������ʹ�ã���ѡ�����MLIR�������ʵ�֡� ���ǰ���ᵽ����ս���ظ����������Ŀ���ά���ɱ���������ڱ����������ܿ���ʵ�֣����ڿ�ܲ����������������������������Լ�����ٲ������ά��������Ҫά���İ汾���������Լ���ά���������� �������� �Բ�ѯԪ����չ�Ż���Array Widen Compare���ڱ������������ϵ�ʵ����Ϊ���������ܱ����������ܵ����ơ� [cid:image007.png@01D9FDC7.20EEF230] ��ѯԪ����չ�Ż���Ч������ͼ��ʾ�����Ż���Դ��GCC for openEuler���Ż����ԣ����ÿ��������Ͷ�ԭ����ָ������ã��ﵽһ�αȽ϶��Ԫ�ص�Ч���������Ż���GCC��ʵ�ֵ�ʱ��Լ��1���µĹ�������������ר����GCC��û�а취ֱ����ֲ��LLVM�������������������Ҫ��LLVM��ʹ�ܣ���Ҫ���¿�����������Ҫ�����1���¡� Ϊ�ˣ�ѡ�����PINC������ֲ����GCC�ϵIJ�ѯԪ����չ�Ż���ֲ���������������ϣ�������7���졣���б�����������ʵ�����Ż���GCC����п���ʹ��LLVM�Ļ��ᡣ���ұ�����������������ά���ļ����Լ�⡢������У��ȹ���������Ҳ���ò��������ֱ��ʹ�ã������˿����ߵ�ά���ɱ��� ��Ŀδ���ƻ� ����������������openEuler������Դ������������openEuler�����Ĵ�������ӣ�https://gitee.com/openeuler/pin-serverhttps://gitee.com/openeuler/pin-server��GCC��GCC�ͻ��˵����ӣ�https://gitee.com/openEuler/pin-gcc-clienthttps://gitee.com/openEuler/pin-gcc-clientG��LLVM�ͻ���Ҳ������openEuler������Դ����ӭ���ʹ�á����ۡ�һ���ס� ��δ��������רע�ڽ�һ����߲��API�Ĺ��ܺ�IRת���ĸ����ʡ���Բ�������Ժ͵��Ա���ԣ�������������һ�����ۣ���߱����������ܵĿͻ����顣��ǰ�����������ܵĿͻ��˾�����GCC�ȱ����������IJ��ϵͳ���������ֻ�ܴ����ж��Ż���δ����������������Ҳ��������������ǰ�ˡ���ˡ����ӵȽεIJ����ϵ���������÷�Χ�� 2. �������¼�
* 2022 openEuler Summit ��������̳ -- ������������https://www.openeuler.org/zh/interaction/summit-list/summit2022/ * 2023 openEuler Developer Day -- ����������������չ̨https://www.openeuler.org/zh/interaction/summit-list/devday2023/ * 2023 ����ԭ��ȫ��Դ��� �C ����������������չ̨https://gongyi.cctv.com/special/opensource/index.shtml * 2023 Open Source Summit Europe�����ݽ� -- The Compiler Plugin Framework to Facilitate Customized Compilation and Developmenthttps://osseu2023.sched.com/event/1OGjb/the-compiler-plugin-framework-to-facilitate-customerized-compilation-and-development-yongnian-le-mingchuan-wu-huawei-technologies