f64a6eeaf0
Most importantly, this version of delocate works for ppc64le. It should also work for x86-64, but will need significant testing to make sure that it covers all the cases that the previous delocate.go covered. It's less stringtastic than the old code, however the parser isn't as nice as I would have liked. I thought that the reason we put up with AT&T syntax with Intel is so that assembly syntax could be somewhat consistent across platforms. At least for ppc64le, that does not appear to be the case. Change-Id: Ic7e3c6acc3803d19f2c3ff5620c5e39703d74212 Reviewed-on: https://boringssl-review.googlesource.com/16464 Reviewed-by: Adam Langley <agl@google.com> Commit-Queue: Adam Langley <agl@google.com> CQ-Verified: CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org>
227 lines
3.9 KiB
ArmAsm
227 lines
3.9 KiB
ArmAsm
.file "foo.c"
|
|
.abiversion 2
|
|
.section ".toc","aw"
|
|
.section ".text"
|
|
.section ".toc","aw"
|
|
.LC0:
|
|
.quad stderr
|
|
.LC3:
|
|
.quad kExportedString
|
|
.LC6:
|
|
.quad exported_function
|
|
.section ".text"
|
|
.align 2
|
|
.p2align 4,,15
|
|
.globl exported_function
|
|
.type exported_function, @function
|
|
exported_function:
|
|
0: addis 2,12,.TOC.-0b@ha
|
|
addi 2,2,.TOC.-0b@l
|
|
.localentry exported_function,.-exported_function
|
|
mflr 0
|
|
std 19,-104(1)
|
|
std 20,-96(1)
|
|
std 21,-88(1)
|
|
std 22,-80(1)
|
|
addis 21,2,.LC1@toc@ha
|
|
addis 22,2,.LC2@toc@ha
|
|
std 23,-72(1)
|
|
std 24,-64(1)
|
|
addis 23,2,.LC4@toc@ha
|
|
addis 24,2,function@toc@ha
|
|
std 25,-56(1)
|
|
std 26,-48(1)
|
|
addis 25,2,.LC5@toc@ha
|
|
addis 26,2,.LC7@toc@ha
|
|
std 27,-40(1)
|
|
std 28,-32(1)
|
|
addis 28,2,.LC8@toc@ha
|
|
addi 21,21,.LC1@toc@l
|
|
std 29,-24(1)
|
|
std 30,-16(1)
|
|
addis 29,2,.LANCHOR0@toc@ha
|
|
addi 22,22,.LC2@toc@l
|
|
std 31,-8(1)
|
|
std 0,16(1)
|
|
addi 29,29,.LANCHOR0@toc@l
|
|
addi 23,23,.LC4@toc@l
|
|
stdu 1,-208(1)
|
|
addis 31,2,.LC0@toc@ha # gpr load fusion, type long
|
|
ld 31,.LC0@toc@l(31)
|
|
addis 19,2,.LC3@toc@ha # gpr load fusion, type long
|
|
ld 19,.LC3@toc@l(19)
|
|
addis 30,29,0x5
|
|
addi 24,24,function@toc@l
|
|
addis 20,2,.LC6@toc@ha # gpr load fusion, type long
|
|
ld 20,.LC6@toc@l(20)
|
|
addi 25,25,.LC5@toc@l
|
|
addi 26,26,.LC7@toc@l
|
|
addi 27,29,5
|
|
addi 28,28,.LC8@toc@l
|
|
addi 30,30,-29404
|
|
.p2align 4,,15
|
|
.L2:
|
|
ld 3,0(31)
|
|
mr 5,21
|
|
mr 6,29
|
|
li 4,1
|
|
bl __fprintf_chk
|
|
nop
|
|
ld 3,0(31)
|
|
mr 5,22
|
|
mr 6,19
|
|
li 4,1
|
|
bl __fprintf_chk
|
|
nop
|
|
ld 3,0(31)
|
|
mr 5,23
|
|
mr 6,24
|
|
li 4,1
|
|
bl __fprintf_chk
|
|
nop
|
|
ld 3,0(31)
|
|
mr 5,25
|
|
mr 6,20
|
|
li 4,1
|
|
bl __fprintf_chk
|
|
nop
|
|
ld 3,0(31)
|
|
mr 5,26
|
|
mr 6,27
|
|
li 4,1
|
|
bl __fprintf_chk
|
|
nop
|
|
ld 3,0(31)
|
|
li 4,1
|
|
mr 5,28
|
|
mr 6,30
|
|
bl __fprintf_chk
|
|
nop
|
|
b .L2
|
|
.long 0
|
|
.byte 0,0,0,1,128,13,0,0
|
|
.size exported_function,.-exported_function
|
|
.section ".toc","aw"
|
|
.set .LC11,.LC0
|
|
.set .LC12,.LC3
|
|
.set .LC13,.LC6
|
|
.section ".text"
|
|
.align 2
|
|
.p2align 4,,15
|
|
.type function, @function
|
|
function:
|
|
0: addis 2,12,.TOC.-0b@ha
|
|
addi 2,2,.TOC.-0b@l
|
|
.localentry function,.-function
|
|
mflr 0
|
|
std 31,-8(1)
|
|
addis 31,2,.LC11@toc@ha # gpr load fusion, type long
|
|
ld 31,.LC11@toc@l(31)
|
|
addis 5,2,.LC1@toc@ha
|
|
std 30,-16(1)
|
|
addis 30,2,.LANCHOR0@toc@ha
|
|
addi 5,5,.LC1@toc@l
|
|
addi 30,30,.LANCHOR0@toc@l
|
|
li 4,1
|
|
mr 6,30
|
|
std 0,16(1)
|
|
stdu 1,-112(1)
|
|
ld 3,0(31)
|
|
bl __fprintf_chk
|
|
nop
|
|
addis 6,2,.LC12@toc@ha # gpr load fusion, type long
|
|
ld 6,.LC12@toc@l(6)
|
|
ld 3,0(31)
|
|
addis 5,2,.LC2@toc@ha
|
|
li 4,1
|
|
addi 5,5,.LC2@toc@l
|
|
bl __fprintf_chk
|
|
nop
|
|
ld 3,0(31)
|
|
addis 5,2,.LC4@toc@ha
|
|
addis 6,2,function@toc@ha
|
|
addi 5,5,.LC4@toc@l
|
|
addi 6,6,function@toc@l
|
|
li 4,1
|
|
bl __fprintf_chk
|
|
nop
|
|
addis 6,2,.LC13@toc@ha # gpr load fusion, type long
|
|
ld 6,.LC13@toc@l(6)
|
|
ld 3,0(31)
|
|
addis 5,2,.LC5@toc@ha
|
|
li 4,1
|
|
addi 5,5,.LC5@toc@l
|
|
bl __fprintf_chk
|
|
nop
|
|
ld 3,0(31)
|
|
addis 5,2,.LC7@toc@ha
|
|
addi 6,30,5
|
|
addi 5,5,.LC7@toc@l
|
|
li 4,1
|
|
bl __fprintf_chk
|
|
nop
|
|
ld 3,0(31)
|
|
addis 6,30,0x5
|
|
addis 5,2,.LC8@toc@ha
|
|
li 4,1
|
|
addi 5,5,.LC8@toc@l
|
|
addi 6,6,-29404
|
|
bl __fprintf_chk
|
|
nop
|
|
bl exported_function
|
|
nop
|
|
addi 1,1,112
|
|
ld 0,16(1)
|
|
ld 30,-16(1)
|
|
ld 31,-8(1)
|
|
mtlr 0
|
|
blr
|
|
.long 0
|
|
.byte 0,0,0,1,128,2,0,0
|
|
.size function,.-function
|
|
.globl kExportedString
|
|
.section .rodata
|
|
.align 4
|
|
.set .LANCHOR0,. + 0
|
|
.type kString, @object
|
|
.size kString, 12
|
|
kString:
|
|
.string "hello world"
|
|
.zero 4
|
|
.type kGiantArray, @object
|
|
.size kGiantArray, 400000
|
|
kGiantArray:
|
|
.long 1
|
|
.long 0
|
|
.zero 399992
|
|
.type kExportedString, @object
|
|
.size kExportedString, 26
|
|
kExportedString:
|
|
.string "hello world, more visibly"
|
|
.section .rodata.str1.8,"aMS",@progbits,1
|
|
.align 3
|
|
.LC1:
|
|
.string "kString is %p\n"
|
|
.zero 1
|
|
.LC2:
|
|
.string "kExportedString is %p\n"
|
|
.zero 1
|
|
.LC4:
|
|
.string "function is %p\n"
|
|
.LC5:
|
|
.string "exported_function is %p\n"
|
|
.zero 7
|
|
.LC7:
|
|
.string "&kString[5] is %p\n"
|
|
.zero 5
|
|
.LC8:
|
|
.string "&kGiantArray[0x12345] is %p\n"
|
|
.section ".bss"
|
|
.align 2
|
|
.type bss, @object
|
|
.size bss, 20
|
|
bss:
|
|
.zero 20
|
|
.ident "GCC: (Ubuntu 4.9.2-10ubuntu13) 4.9.2"
|
|
.section .note.GNU-stack,"",@progbits
|