基本上,我搞亂從加載和鏈接目標代碼到Linux內核從mach對象文件,我注意到一些奇怪的東西,當我從該對象內部做一個printk
。如果我用超過3個(4個或更多)參數調用printk(printk("%d,%d,%d \n", 1, 1, 1)
),系統將鎖定,但稍後(不會從系統調用返回並鎖定)。 實際的打印工作並在所有情況下打印預期值。奇怪的鎖在內核
現在,奇怪的是這隻發生在我使用Clang + LLVM構建它時發生。這裏是罪魁禍首代碼:
在另一方面,這是使用LLVM GCC建成,它工作得很好:
當與GNU GCC建這也適用:
任何人都可以提出鐺聲版本爲什麼會使系統鎖定的原因?所以基本上,第一個代碼片段出現了問題,它使得它鎖定而不存在於其他代碼中。我真的不知道什麼是錯的。
可能是在某個地方重要的事情的諷刺。在哪裏,我不知道。任何通過指令進行教學的機會? – Wug 2012-07-31 21:29:15
等待,您正在從* Mach *目標文件加載代碼?說明? – duskwuff 2012-07-31 21:30:08
@duskwuff長話短說,我寫了一個鏈接器,將mach對象文件鏈接並加載到linux內核中。鏈接器不是問題,其他一切正常。 – 2012-07-31 21:31:26