[PATCH] Translate asm version of ELFNOTE macro into preprocessor macro

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Eric W. Biederman wrote:
> Jeremy Fitzhardinge <jeremy at goop.org> writes:
>
>   
>> Ian Campbell wrote:
>>     
>>>> OK, seems reasonable.  Eric Biederman solved this by having NOTE/ENDNOTE (or
>>>> something like that) in his "bzImage with ELF header" patch, but I don't
>>>> remember it being used in any way which is incompatible with using a CPP
>>>> macro.
>>>>
>>>>         
>>> I can't find that patch, does NOTE/ENDNOTE just do the push/pop .note
>>> section?
>>>
>>> That would solve the problem with the first argument of the macro being
>>> a string but the final argument could still be for .asciz note contents.
>>>
>>>       

I remember now why I decided to use the assembler macro rather than 
cpp.  The macro names the section after the note name (".note.NAME"), 
and it needs to be quoted so that the name can have spaces and other 
characters which would otherwise upset the assembler.  I couldn't work 
out a clean way to do this with the C preprocessor, since "as" doesn't 
support string concatenation like C does.


> I don't expect it to be much more cumbersome, as two pieces, and you need the extra
> alignment at the end to ensure each not entry is 4 byte aligned. 

Isn't it enough that each entry start have the alignment?  But you need 
some kind of end marker to get the size of the desc field regardless.


>  Being able to
> push and pop a section wouldn't hurt either. 

Yes, I think having each note contain its own .pushsection/popsection is 
the cleaner way of doing it.


    J


[Index of Archives]     [KVM Development]     [Libvirt Development]     [Libvirt Users]     [CentOS Virtualization]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux