On Thu, 24 Oct 2019 at 19:20, drug via D.gnu <d.gnu@puremagic.com> wrote: > > On 10/24/19 8:01 PM, Iain Buclaw wrote: > > You can do the following: > > > > void somefunc() > > { > > asm { > > "990: nop" ~ > > ".pushsection .note.stapsdt,\"?\",\"note\"" ~ > > ".balign 4" ~ > > ".4byte 992f-991f, 994f-993f, 3" ~ > > "991: .asciz \"stapsdt\"" ~ > > "992: .balign 4" ~ > > "993: .8byte 990b" ~ > > ".8byte _.stapsdt.base" ~ > > ".8byte 0" ~ > > ".asciz \"myapp\"" ~ > > ".asciz \"func_call\"" ~ > > ".asciz \"%n[_SDT_S1]@%[_SDT_A1] %n[_SDT_S2]@%[_SDT_A2]\"" ~ > > "994: .balign 4" ~ > > ".popsection\n" > > :: [_SDT_S1] "n" (4), > > [_SDT_A1] "nor" ((a)), > > [_SDT_S2] "n" (4), > > [_SDT_A2] "nor" ((b)) > > } // <= line 26 > > } > > > > The instruction string can be generated at CTFE. > > > Unfortunately I doesn't work https://godbolt.org/z/ly2yBT > ``` > source/app.d:26:3: error: expression expected, not '}' > ``` >
That's correct, because I forgot the semicolon (the hint is in the latter message: found 'EOF' when expecting ';'). >From what little information I'm going off on that macro, it seems that you want it to do something like the following: https://explore.dgnu.org/z/TtTcij -- Iain