On Tue, Feb 23, 2016 at 12:31 PM, David Brown <david.br...@linaro.org> wrote: > On Mon, Feb 22, 2016 at 12:46:28PM -0800, Kees Cook wrote: >> >> On Thu, Feb 18, 2016 at 1:27 PM, PaX Team <pagee...@freemail.hu> wrote: >>> >>> On 18 Feb 2016 at 12:34, Ard Biesheuvel wrote: >>> >>>> However, that does not fix the issue Kees is trying to solve, where a >>>> .rodata section is emitted with the "x" bit set, which causes the >>>> linker to complain: >>>> >>>> /tmp/cc50ffWw.s: Assembler messages: >>>> /tmp/cc50ffWw.s:2: Warning: setting incorrect section attributes for >>>> .rodata.text >>> >>> >>> in that case why not use a top-level asm statement to set the section >>> and its attributes (and compile the file with fno-toplevel-reorder)? >> >> >> GCC really wants to declare the section. :( > > > Why not then just use its mechanism to set the section on the code?
It's noted in the quoted section above. :) The problem is that gcc emits: .section ".rodata","ax",@progbits But we need the flags to be "a" not "ax". (And I'd note that even "@" is arch-specific. % is used when @ is a comment start character.) objcopy can get me the "a", but it seems to require renaming lkdtm.c, which I really don't want to do. -Kees > > static void do_nothing_rodata(void) > __attribute__((section(".rodata"))) > { > return; > } > > David -- Kees Cook Chrome OS & Brillo Security