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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux gcc march arch,Gcc的spec中arch什么的指定

發布時間:2023/12/10 linux 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux gcc march arch,Gcc的spec中arch什么的指定 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

gcc/gcc.c中的set_collect_gcc_options這里面有COLLECT_GCC_OPTIONS='-march=armv4t' '-mtune=arm920t

(gdb) p switches[0]

$15 = {part1 = 0x80792b1 "march=armv4t", args = 0x0, live_cond = 1,

validated = 1 '\001', ordering = 0 '\000'}

(gdb) p switches[1]

$16 = {part1 = 0x80792c1 "mtune=arm920t", args = 0x0, live_cond = 0,

validated = 1 '\001', ordering = 0 '\000'}

(gdb) p switches[2]

$17 = {part1 = 0x80792d1 "mfloat-abi=soft", args = 0x0, live_cond = 0,

validated = 1 '\001', ordering = 0 '\000'}

(gdb) p switches[3]

$18 = {part1 = 0x0, args = 0xf7fb3420, live_cond = 1768697683,

validated = 98 'b', ordering = 47 '/'}

(gdb) p n_switches

$19 = 3

switches的賦值 在do_self_spec和process_command

多次調用do_self_spec

Breakpoint 1, do_self_spec (

spec=0xffffd150 "%{!march=*:%{!mcpu=*:-mcpu=arm920t}}")

at ../../gcc-4.4.5/gcc/gcc.c:4614

4614????? do_spec_2 (spec);

Breakpoint 1, do_self_spec (

spec=0xffffd150 "%{!march=*:%{!mcpu=*:-march=armv4t}}")

at ../../gcc-4.4.5/gcc/gcc.c:4614

4614????? do_spec_2 (spec);

bt的結果為:

(gdb) bt

#0? do_self_spec (spec=0xffffd150 "%{!march=*:%{!mcpu=*:-mcpu=arm920t}}")

at ../../gcc-4.4.5/gcc/gcc.c:4614

#1? 0x080523e2 in do_option_spec (name=,

spec=) at ../../gcc-4.4.5/gcc/gcc.c:4605

#2? 0x0805349b in main (argc=2, argv=0xffffd334)

at ../../gcc-4.4.5/gcc/gcc.c:6376

現在我看來看看main函數是怎么調用do_option_spec的

Breakpoint 2, do_option_spec (name=0x805f57a "tune",

spec=0x8062370 "%{!mcpu=*:%{!mtune=*:-mtune=%(VALUE)}} ")

at ../../gcc-4.4.5/gcc/gcc.c:4572

4572????? for (i = 0; i < ARRAY_SIZE (configure_default_options); i++)

(gdb) c

Continuing.

Breakpoint 1, do_self_spec (

spec=0xffffd150 "%{!mcpu=*:%{!mtune=*:-mtune=arm920t}} ")

at ../../gcc-4.4.5/gcc/gcc.c:4614

4614????? do_spec_2 (spec);

看到轉變了吧,我說調用gcc的 -dumpspecs找不到arm920t這樣的關鍵字。。。

在do_option_spec中的configure_default_options

(gdb) p configure_default_options

$23 = {{name = 0x805f576 "cpu", value = 0x805fdf8 "arm920t"}, {

name = 0x805f571 "arch", value = 0x805fe00 "armv4t"}, {

name = 0x805f57a "tune", value = 0x805fdf8 "arm920t"}, {

name = 0x8066f0a "float", value = 0x8066fb1 "soft"}}

configure_default_option是哪來的呢

cat > configargs.h <

/* Generated automatically. */

static const char configuration_arguments[] = "$gcc_config_arguments_str";

static const char thread_model[] = "$thread_file";

static const struct {

const char *name, *value;

} configure_default_options[] = $configure_default_options;

EOF

specs文件要放在

gcc -print-libgcc-file-name這個文件所在的文件夾中。

現在,用Android里的編譯器改下specs就可以編譯在mini2440上跑的android了嘿嘿。

不過目前還不知道android調用哪個版本的編譯器。。。

說到這還是不知道怎么編輯specs文件我們再來看看在main函數中是怎么調用do_option_spec的

Breakpoint 1, do_option_spec (name=0x805f571 "arch",

spec=0x8062320 "%{!march=*:%{!mcpu=*:-march=%(VALUE)}}")

at ../../gcc-4.4.5/gcc/gcc.c:4572

4572??? ../../gcc-4.4.5/gcc/gcc.c: No such file or directory.

in ../../gcc-4.4.5/gcc/gcc.c

static void do_option_spec (const char *name, const char *spec)

在main函數中

for (i = 0; i < ARRAY_SIZE (option_default_specs); i++)

do_option_spec (option_default_specs[i].name,

option_default_specs[i].spec);

(gdb) p option_default_specs

$1 = {{name = 0x805f571 "arch",

spec = 0x8062320 "%{!march=*:%{!mcpu=*:-march=%(VALUE)}}"}, {

name = 0x805f576 "cpu",

spec = 0x8062348 "%{!march=*:%{!mcpu=*:-mcpu=%(VALUE)}}"}, {

name = 0x805f57a "tune",

spec = 0x8062370 "%{!mcpu=*:%{!mtune=*:-mtune=%(VALUE)}}"}, {

name = 0x8066f0a "float",

spec = 0x8062398 "%{!msoft-float:%{!mhard-float:%{!mfloat-abi=*:-mfloat-abi=%(VALUE)}}}"}, {name = 0x805f57f "fpu",

spec = 0x805f583 "%{!mfpu=*:-mfpu=%(VALUE)}"}, {name = 0x8065fd3 "abi",

spec = 0x805f59d "%{!mabi=*:-mabi=%(VALUE)}"}, {name = 0x805f5b7 "mode",

spec = 0x80623e0 "%{!marm:%{!mthumb:-m%(VALUE)}}"}}

static const struct default_spec

option_default_specs[] = { OPTION_DEFAULT_SPECS };

OPTION_DEFAULT_SPECS在gcc/config/arm/arm.h中定義

這么看來怎么改咧。猜測是不是存在有specs文件時,這些默認的就無效。

總結

以上是生活随笔為你收集整理的linux gcc march arch,Gcc的spec中arch什么的指定的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美在线一区二区三区四区 | 日韩精品一区二区在线看 | 日韩一区二区三区不卡视频 | 午夜影院体验区 | 国产 日韩 一区 | zzjizzji亚洲日本少妇 | 天天舔天天摸 | 欧美日韩 一区二区三区 | 椎名由奈在线观看 | 99国产精 | 激情偷拍 | 淫妹妹影院 | 91老师片黄在线观看 | 久久久久亚洲av成人毛片韩 | 久草福利在线观看 | 久久久亚洲av波多野结衣 | 精品+无码+在线观看 | av一区二区在线观看 | 国产一级片a | 色网站在线免费观看 | 精品国产乱码久久久久久鸭王1 | 中文字幕免费播放 | 鬼灭之刃柱训练篇在线观看 | 亚洲一区欧洲二区 | 国产欧美一区二区三区四区 | 久久久九九九热 | 91精品国产91久久久久久 | 国产一级久久久久毛片精品 | 久草视频免费在线播放 | 欧美国产精品一区 | 久久久ww| 精品国产综合区久久久久久 | 久久久久久久久久久久久久av | 精品少妇一区二区三区在线观看 | 国产成人无码精品久在线观看 | 日本国产一区二区 | av直播在线观看 | 国产黄色免费看 | 99在线免费视频 | 国产三级按摩推拿按摩 | 色爱av| 国产亚洲一区二区三区在线观看 | 成人av在线资源 | 成人国产片 | 久久国产视频一区 | 小嫩女直喷白浆 | 综合激情视频 | 天天干天天摸天天操 | 亚洲天堂一区二区三区四区 | 高清免费av | 99亚洲欲妇 | 精品国产一区二区三区在线 | 欧美精品偷拍 | 日韩国产区| 最新中文字幕一区 | 美女人人操 | 亚洲天堂成人在线观看 | 丝袜理论片在线观看 | 成人无码精品1区2区3区免费看 | 亚洲成人第一网站 | 日本激情网 | 无码人妻一区二区三区精品视频 | 国产在线欧美日韩 | 黄色一集片 | 黄瓜视频在线观看污 | 欧美 日韩 国产 成人 在线 91 | 一区二区视频网站 | 一进一出视频 | 一级成人毛片 | 欧美一区二区三区在线免费观看 | 亚洲精品一区二区三区蜜桃 | 国产精品福利一区二区 | 少妇太爽了太深了太硬了 | 午夜av在线免费观看 | avav我爱av | 亚洲国产果冻传媒av在线观看 | 720url在线观看免费版 | 国产精品亚洲精品 | 精品黑人一区二区三区久久 | 91视频播放 | 久久伊人一区二区 | 亚洲成人免费观看 | 成人做爰66片免费看网站 | 91精品影视 | 激情aaa | 久久精品一区二区三区黑人印度 | 放荡的少妇2欧美版 | 红桃视频黄色 | 中文字幕乱码av | 久热精品在线 | 亚洲性图一区二区三区 | 少妇高潮av| 国产精品av免费观看 | 天天做天天爽 | 亚洲天天操 | 日韩h视频| 成人精品福利 | 欧美一区二区三区电影 | 看片在线|