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>
162 lines
2.7 KiB
ArmAsm
162 lines
2.7 KiB
ArmAsm
.file "foo.c"
|
|
.abiversion 2
|
|
.section ".toc","aw"
|
|
.section ".text"
|
|
.section .rodata
|
|
.align 3
|
|
.type kString, @object
|
|
.size kString, 12
|
|
kString:
|
|
.string "hello world"
|
|
.globl kExportedString
|
|
.align 3
|
|
.type kExportedString, @object
|
|
.size kExportedString, 26
|
|
kExportedString:
|
|
.string "hello world, more visibly"
|
|
.align 2
|
|
.type kGiantArray, @object
|
|
.size kGiantArray, 400000
|
|
kGiantArray:
|
|
.long 1
|
|
.long 0
|
|
.zero 399992
|
|
.lcomm bss,20,4
|
|
.type bss, @object
|
|
.align 3
|
|
.LC1:
|
|
.string "kString is %p\n"
|
|
.align 3
|
|
.LC2:
|
|
.string "kExportedString is %p\n"
|
|
.align 3
|
|
.LC4:
|
|
.string "function is %p\n"
|
|
.align 3
|
|
.LC5:
|
|
.string "exported_function is %p\n"
|
|
.align 3
|
|
.LC7:
|
|
.string "&kString[5] is %p\n"
|
|
.align 3
|
|
.LC9:
|
|
.string "&kGiantArray[0x12345] is %p\n"
|
|
.section ".toc","aw"
|
|
.LC0:
|
|
.quad stderr
|
|
.LC3:
|
|
.quad kExportedString
|
|
.LC6:
|
|
.quad exported_function
|
|
.LC8:
|
|
.quad kString+5
|
|
.LC10:
|
|
.quad kGiantArray+298260
|
|
.section ".text"
|
|
.align 2
|
|
.type function, @function
|
|
function:
|
|
0: addis 2,12,.TOC.-0b@ha
|
|
addi 2,2,.TOC.-0b@l
|
|
.localentry function,.-function
|
|
mflr 0
|
|
std 0,16(1)
|
|
std 31,-8(1)
|
|
stdu 1,-112(1)
|
|
mr 31,1
|
|
addis 10,2,.LC0@toc@ha
|
|
ld 9,.LC0@toc@l(10)
|
|
ld 9,0(9)
|
|
mr 3,9
|
|
addis 4,2,.LC1@toc@ha
|
|
addi 4,4,.LC1@toc@l
|
|
addis 5,2,kString@toc@ha
|
|
addi 5,5,kString@toc@l
|
|
bl fprintf
|
|
nop
|
|
addis 10,2,.LC0@toc@ha
|
|
ld 9,.LC0@toc@l(10)
|
|
ld 9,0(9)
|
|
mr 3,9
|
|
addis 4,2,.LC2@toc@ha
|
|
addi 4,4,.LC2@toc@l
|
|
addis 9,2,.LC3@toc@ha
|
|
ld 5,.LC3@toc@l(9)
|
|
bl fprintf
|
|
nop
|
|
addis 10,2,.LC0@toc@ha
|
|
ld 9,.LC0@toc@l(10)
|
|
ld 9,0(9)
|
|
mr 3,9
|
|
addis 4,2,.LC4@toc@ha
|
|
addi 4,4,.LC4@toc@l
|
|
addis 5,2,function@toc@ha
|
|
addi 5,5,function@toc@l
|
|
bl fprintf
|
|
nop
|
|
addis 10,2,.LC0@toc@ha
|
|
ld 9,.LC0@toc@l(10)
|
|
ld 9,0(9)
|
|
mr 3,9
|
|
addis 4,2,.LC5@toc@ha
|
|
addi 4,4,.LC5@toc@l
|
|
addis 9,2,.LC6@toc@ha
|
|
ld 5,.LC6@toc@l(9)
|
|
bl fprintf
|
|
nop
|
|
addis 10,2,.LC0@toc@ha
|
|
ld 9,.LC0@toc@l(10)
|
|
ld 9,0(9)
|
|
mr 3,9
|
|
addis 4,2,.LC7@toc@ha
|
|
addi 4,4,.LC7@toc@l
|
|
addis 9,2,.LC8@toc@ha
|
|
ld 5,.LC8@toc@l(9)
|
|
bl fprintf
|
|
nop
|
|
addis 10,2,.LC0@toc@ha
|
|
ld 9,.LC0@toc@l(10)
|
|
ld 9,0(9)
|
|
mr 3,9
|
|
addis 4,2,.LC9@toc@ha
|
|
addi 4,4,.LC9@toc@l
|
|
addis 9,2,.LC10@toc@ha
|
|
ld 5,.LC10@toc@l(9)
|
|
bl fprintf
|
|
nop
|
|
bl exported_function
|
|
nop
|
|
mr 3,9
|
|
addi 1,31,112
|
|
ld 0,16(1)
|
|
mtlr 0
|
|
ld 31,-8(1)
|
|
blr
|
|
.long 0
|
|
.byte 0,0,0,1,128,1,0,1
|
|
.size function,.-function
|
|
.align 2
|
|
.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 0,16(1)
|
|
std 31,-8(1)
|
|
stdu 1,-48(1)
|
|
mr 31,1
|
|
bl function
|
|
mr 3,9
|
|
addi 1,31,48
|
|
ld 0,16(1)
|
|
mtlr 0
|
|
ld 31,-8(1)
|
|
blr
|
|
.long 0
|
|
.byte 0,0,0,1,128,1,0,1
|
|
.size exported_function,.-exported_function
|
|
.ident "GCC: (Ubuntu 4.9.2-10ubuntu13) 4.9.2"
|
|
.section .note.GNU-stack,"",@progbits
|