Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Openssl
提交
b17ff188
T
Third Party Openssl
项目概览
OpenHarmony
/
Third Party Openssl
大约 1 年 前同步成功
通知
9
Star
18
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Third Party Openssl
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
b17ff188
编写于
8月 14, 2016
作者:
A
Andy Polyakov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
perlasm/ppc-xlate.pl: recognize .type directive.
Reviewed-by:
N
Rich Salz
<
rsalz@openssl.org
>
上级
fca8f5de
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
53 addition
and
19 deletion
+53
-19
crypto/perlasm/ppc-xlate.pl
crypto/perlasm/ppc-xlate.pl
+53
-19
未找到文件。
crypto/perlasm/ppc-xlate.pl
浏览文件 @
b17ff188
...
...
@@ -11,40 +11,65 @@ my $output = shift;
open
STDOUT
,"
>
$output
"
||
die
"
can't open
$output
: $!
";
my
%GLOBALS
;
my
%TYPES
;
my
$dotinlocallabels
=
(
$flavour
=~
/linux/
)?
1
:
0
;
################################################################
# directives which need special treatment on different platforms
################################################################
my
$type
=
sub
{
my
(
$dir
,
$name
,
$type
)
=
@_
;
$TYPES
{
$name
}
=
$type
;
if
(
$flavour
=~
/linux/
)
{
$name
=~
s|^\.||
;
"
.type
$name
,
$type
";
}
else
{
"";
}
};
my
$globl
=
sub
{
my
$junk
=
shift
;
my
$name
=
shift
;
my
$global
=
\
$GLOBALS
{
$name
};
my
$type
=
\
$TYPES
{
$name
};
my
$ret
;
$name
=~
s|^
[\.\_]
||
;
$name
=~
s|^
\.
||
;
SWITCH:
for
(
$flavour
)
{
/aix/
&&
do
{
$name
=
"
.
$name
";
/aix/
&&
do
{
if
(
!
$$type
)
{
$$type
=
"
\@
function
";
}
if
(
$$type
=~
/function/
)
{
$name
=
"
.
$name
";
}
last
;
};
/osx/
&&
do
{
$name
=
"
_
$name
";
last
;
};
/linux.*(32|64le)/
&&
do
{
$ret
.=
"
.globl
$name
\n
";
$ret
.=
"
.type
$name
,
\@
function
";
&&
do
{
$ret
.=
"
.globl
$name
";
if
(
!
$$type
)
{
$ret
.=
"
\n
.type
$name
,
\@
function
";
$$type
=
"
\@
function
";
}
last
;
};
/linux.*64/
&&
do
{
$ret
.=
"
.globl
$name
\n
";
$ret
.=
"
.type
$name
,
\@
function
\n
";
$ret
.=
"
.section
\"
.opd
\"
,
\"
aw
\"\n
";
$ret
.=
"
.align 3
\n
";
$ret
.=
"
$name
:
\n
";
$ret
.=
"
.quad .
$name
,.TOC.
\@
tocbase,0
\n
";
$ret
.=
"
.previous
\n
";
$name
=
"
.
$name
";
/linux.*64/
&&
do
{
$ret
.=
"
.globl
$name
";
if
(
!
$$type
)
{
$ret
.=
"
\n
.type
$name
,
\@
function
";
$$type
=
"
\@
function
";
}
if
(
$$type
=~
/function/
)
{
$ret
.=
"
\n
.section
\"
.opd
\"
,
\"
aw
\"
";
$ret
.=
"
\n
.align 3
";
$ret
.=
"
\n
$name
:
";
$ret
.=
"
\n
.quad .
$name
,.TOC.
\@
tocbase,0
";
$ret
.=
"
\n
.previous
";
$name
=
"
.
$name
";
}
last
;
};
}
...
...
@@ -70,9 +95,13 @@ my $machine = sub {
my
$size
=
sub
{
if
(
$flavour
=~
/linux/
)
{
shift
;
my
$name
=
shift
;
$name
=~
s|^[\.\_]||
;
my
$ret
=
"
.size
$name
,.-
"
.
(
$flavour
=~
/64$/
?"
.
":"")
.
$name
;
$ret
.=
"
\n
.size .
$name
,.-.
$name
"
if
(
$flavour
=~
/64$/
);
my
$name
=
shift
;
my
$real
=
$GLOBALS
{
$name
}
?
\
$GLOBALS
{
$name
}
:
\
$name
;
my
$ret
=
"
.size $
$real
,.-$
$real
";
$name
=~
s|^\.||
;
if
(
$$real
ne
$name
)
{
$ret
.=
"
\n
.size
$name
,.-$
$real
";
}
$ret
;
}
else
...
...
@@ -234,7 +263,7 @@ while($line=<>) {
$line
=~
s|\s+$||
;
# ... and at the end
{
$line
=~
s|\
b\
.L(\w+)|L$1|g
;
# common denominator for Locallabel
$line
=~
s|\.L(\w+)|L$1|g
;
# common denominator for Locallabel
$line
=~
s|\bL(\w+)|\.L$1|g
if
(
$dotinlocallabels
);
}
...
...
@@ -242,8 +271,13 @@ while($line=<>) {
$line
=~
s|(^[\.\w]+)\:\s*||
;
my
$label
=
$
1
;
if
(
$label
)
{
printf
"
%s:
",(
$GLOBALS
{
$label
}
or
$label
);
printf
"
\n
.localentry
\t
$GLOBALS
{
$label
},0
"
if
(
$GLOBALS
{
$label
}
&&
$flavour
=~
/linux.*64le/
);
my
$xlated
=
(
$GLOBALS
{
$label
}
or
$label
);
print
"
$xlated
:
";
if
(
$flavour
=~
/linux.*64le/
)
{
if
(
$TYPES
{
$label
}
=~
/function/
)
{
printf
"
\n
.localentry %s,0
\n
",
$xlated
;
}
}
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录