日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux ppc64 是什么,docker - 在(模拟)PPC64 Linux上的backtrace()segfaults - 堆栈内存溢出...

發(fā)布時(shí)間:2023/12/19 linux 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux ppc64 是什么,docker - 在(模拟)PPC64 Linux上的backtrace()segfaults - 堆栈内存溢出... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

我在文件backtrace.c創(chuàng)建了以下測(cè)試程序:

#include

#include

#include

int main(int argc,char**argv){

void *stack[128];

int frameCount = backtrace(stack, sizeof stack);

char **symbols = backtrace_symbols(stack, frameCount);

printf("Backtrace: %d frames\n", frameCount);

for (int i = 0; i < frameCount; i++) {

printf("\t%s\n", symbols[i]);

}

free(symbols);

return 0;

}

然后,我使用以下腳本在i386,amd64,arm32v5,arm64v8和s390x Debian Linux Docker容器中測(cè)試程序:

for arch in i386 amd64 arm32v5 arm32v7 arm64v8 s390x; do

echo "=== $arch ==="

docker run -w /work -v $(pwd -P):/work $arch/debian /bin/bash -c "apt-get update && apt-get install -y gcc && gcc -funwind-tables -o backtrace backtrace.c && ./backtrace"

done

(注意-funwind-tables是獲得arm32v5上任何幀所必需的。在其他體系結(jié)構(gòu)上,它不是必需的,但不會(huì)造成任何傷害。)

主機(jī)CPU體系結(jié)構(gòu)是amd64(實(shí)際上是Mac 2.1.0.1的Docker Desktop),因此arm *和s390x容器由QEMU用戶仿真通過binfmt_misc執(zhí)行。

無論如何,我在ppc64le上做同樣的事情,它是segfaults:

arch=ppc64le

docker run -w /work -v $(pwd -P):/work $arch/debian /bin/bash -c "apt-get update && apt-get install -y gcc && gcc -funwind-tables -o backtrace backtrace.c && ./backtrace"

為什么在ppc64le上不起作用? 關(guān)于gcc標(biāo)志嗎? (我嘗試使用-funwind-tables和不使用-funwind-tables進(jìn)行段-funwind-tables 。添加-fasynchronous-unwind-tables也沒有什么區(qū)別。)

總結(jié)

以上是生活随笔為你收集整理的linux ppc64 是什么,docker - 在(模拟)PPC64 Linux上的backtrace()segfaults - 堆栈内存溢出...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。