Can't declare .data in inline assembly

2019-09-21 00:26发布

问题:

Hello I have a problem where I can't seem to declare .data . I've tried various different things with my code and it always seems to break at this part

    asm(
       ".data\n"
       ".file:  .ascii \"/dev/mem\\000\"\n"
    );

I can also remove any information after the .data and it will still break at '.data'. This is done on a raspberry pi 2 with inline assembly on C. If the rest of the code is relevant let me know but I'm pretty sure it's not. Thanks for any help!

Edit: Apologies I forgot to include the error message

"ERROR: .size expression for 'method name here' does not evaluate to a constant

回答1:

You don't restore the section before the end of the inline assembly, and gcc generate code that relies on inline assembly not changing the current section.