Ticket #11705: GMP-ECM_PPC64_ELF_function_descriptors.patch

File GMP-ECM_PPC64_ELF_function_descriptors.patch, 2.8 KB (added by leif, 10 years ago)

Patch to GMP-ECM's PowerPC64 assembly[-generating] files to support dynamic linking (on ELF systems only). For reference only.

  • src/powerpc64/mulredc_1_2.m4

     
    5656
    5757`include(`config.m4')'
    5858
    59         TEXT
    60 .align 5 C powerPC 32 byte alignment
    6159        GLOBL GSYM_PREFIX``''mulredc`'LENGTH
    62         TYPE(GSYM_PREFIX``''mulredc``''LENGTH,``function'')
     60        GLOBL .GSYM_PREFIX``''mulredc`'LENGTH
    6361
     62        .section ".opd", "aw"
     63        .align  3
    6464GSYM_PREFIX``''mulredc`'LENGTH:
     65        .quad   .GSYM_PREFIX``''mulredc`'LENGTH, .TOC.@tocbase, 0
     66        .size   GSYM_PREFIX``''mulredc`'LENGTH, 24
     67
     68        TEXT
     69        .align  5       C powerPC 32 byte alignment
     70        TYPE(.GSYM_PREFIX``''mulredc``''LENGTH,``@function'')
     71.GSYM_PREFIX``''mulredc`'LENGTH:
    6572ifelse(eval(LENGTH),1,
    6673`               mulld   r8, r4, r5                      C x*y low half T0
    6774                mulhdu  r9, r4, r5                      C x*y high half T1
     
    141148                ldu     r13, 8(r1)
    142149                addi    r1, r1, 8
    143150                blr')
     151
     152        .size   .GSYM_PREFIX``''mulredc`'LENGTH, .-.GSYM_PREFIX``''mulredc`'LENGTH
     153
  • src/powerpc64/mulredc.m4

     
    4747
    4848`include(`config.m4')'
    4949
     50        GLOBL GSYM_PREFIX``''mulredc`'LENGTH
     51        GLOBL .GSYM_PREFIX``''mulredc`'LENGTH
    5052
     53        .section ".opd", "aw"
     54        .align  3
     55GSYM_PREFIX``''mulredc`'LENGTH:
     56        .quad   .GSYM_PREFIX``''mulredc`'LENGTH, .TOC.@tocbase, 0
     57        .size   GSYM_PREFIX``''mulredc`'LENGTH, 24
    5158
    52         TEXT
    53 .align 5 C powerPC 32 byte alignment
    54         GLOBL GSYM_PREFIX``''mulredc`'LENGTH
    55         TYPE(GSYM_PREFIX``''mulredc``''LENGTH,``function'')
    5659
    5760C Implements multiplication and REDC for two input numbers of LENGTH words
    5861
     
    121124C r15, so only LENGTH entries are used in the stack.
    122125
    123126
    124 
    125 GSYM_PREFIX``''mulredc`'LENGTH:
     127        TEXT
     128        .align  5       C powerPC 32 byte alignment
     129        TYPE(.GSYM_PREFIX``''mulredc``''LENGTH,``@function'')
     130.GSYM_PREFIX``''mulredc`'LENGTH:
    126131define(`S', `eval(8 * LENGTH)')dnl
    127132
    128133C ########################################################################
     
    304309        ldu     r13, 8(r1)
    305310        addi    r1, r1, 8
    306311        blr
     312
     313        .size   .GSYM_PREFIX``''mulredc`'LENGTH, .-.GSYM_PREFIX``''mulredc`'LENGTH
     314
  • src/powerpc64/redc.asm

     
    4040dnl')
    4141
    4242include(`config.m4')
    43         TEXT
    44         GLOBL GSYM_PREFIX`'ecm_redc3
    45         TYPE(GSYM_PREFIX`'ecm_redc3,`function')
    4643
     44        GLOBL GSYM_PREFIX`'ecm_redc3
     45        GLOBL .GSYM_PREFIX`'ecm_redc3
     46
     47        .section ".opd", "aw"
     48        .align  3
    4749GSYM_PREFIX`'ecm_redc3:
     50        .quad   .GSYM_PREFIX`'ecm_redc3, .TOC.@tocbase, 0
     51        .size   GSYM_PREFIX`'ecm_redc3, 24
     52
     53        TEXT
     54        .align  5               C 32 byte alignment
     55        TYPE(.GSYM_PREFIX`'ecm_redc3,`@function')
     56.GSYM_PREFIX`'ecm_redc3:
    4857
    4958        cmpdi   r5, 1                           C length = 1?
    5059        bne             1f
     
    318327    addi    r1, r1, 16          C restore stack ptr
    319328    mtlr    r0
    320329    blr
     330
     331        .size   .GSYM_PREFIX`'ecm_redc3, .-.GSYM_PREFIX`'ecm_redc3
     332