https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61577
--- Comment #173 from dave.anglin at bell dot net --- On 2020-02-13 1:11 p.m., peter.bisroev at groundlabs dot com wrote: > If I try to compare this to aCC dump in attachment 47840, I do not see any > calls to weak. Equivalent section to the above dump in gimple-expr.s > (_Z18tree_operand_checkPK9tree_nodeiPKciS3_) can be found on line 9007, also > gimple-expr.o.objdump on line 2099. I believe the place where with gcc we > expect to see a call to tree_operand_length() through PCREL21B reloc, aCC does > similar thing in gimple-expr.s line 9098 (gimple-expr.o.objdump line 2181). I looked at the definition and branches to _Z18tree_operand_checkPK9tree_nodeiPKciS3_ in the gimple-expr.s file that you uploaded. We have the following: .type _Z18tree_operand_checkPK9tree_nodeiPKciS3_,@function .global _Z18tree_operand_checkPK9tree_nodeiPKciS3_ .size _Z18tree_operand_checkPK9tree_nodeiPKciS3_, 784 // Routine [id=0064] ( tree_operand_check ) // === .secalias .abe$170.text, ".text" .section .abe$170.text = "axC", "progbits", .abe$comdat0010 .align 16 .proc _Z18tree_operand_checkPK9tree_nodeiPKciS3_ ..L0: // $start ARid768 = ;; // A ..L2: _Z18tree_operand_checkPK9tree_nodeiPKciS3_:: .prologue // $entry ARid770, S:r32, S:r33, S:r34, S:r35, S:r36 = ;; // A [tree.h: 3177/1] //file/line/col tree.h/3177/1 .save ar.pfs, r39 alloc r39 = ar.pfs, 5, 4, 5, 0 // M [tree.h: 3177/1] <snip> br.ret.dptk.many rp ;; // B [tree.h: 3181/3] ..L1: // $end ;; // A .endp _Z18tree_operand_checkPK9tree_nodeiPKciS3_ nop.m 0 // M nop.i 0 // I nop.m 0 // M nop.m 0 // M br.call.dptk.many rp = _Z18tree_operand_checkPK9tree_nodeiPKciS3_# ;; // B [gimple-expr.c: 658/3] add r9 = 0, r8 // M [gimple-expr.c: 658/3] .secalias .abe$comdat0010, "_Z18tree_operand_checkPK9tree_nodeiPKciS3_" The first thing to note is aCC doesn't use weak. Instead, it uses COMDAT sections. Probably, HP ld does support weak but it's unlikely there is support for linkonce sections. See defines in config/pa/som.h. There we implimented one only support using the linker's COMDAT support. Regarding the call to _Z18tree_operand_checkPK9tree_nodeiPKciS3_, this is preceeded by a bunch of nops. This is probably to allow linker to modify call should it select a different instance of _Z18tree_operand_checkPK9tree_nodeiPKciS3_.