Message ID | 20220118170928.3761906-1-hjl.tools@gmail.com |
---|---|
State | New |
Headers | show |
Series | libgcc: Align __EH_FRAME_BEGIN__ to pointer size | expand |
On 1/18/2022 10:09 AM, H.J. Lu via Gcc-patches wrote: > Aligne __EH_FRAME_BEGIN__ to pointer size since gcc/unwind-dw2-fde.h has > > /* The first few fields of a CIE. The CIE_id field is 0 for a CIE, > to distinguish it from a valid FDE. FDEs are aligned to an addressing > unit boundary, but the fields within are unaligned. */ > struct dwarf_cie > { > uword length; > sword CIE_id; > ubyte version; > unsigned char augmentation[]; > } __attribute__ ((packed, aligned (__alignof__ (void *)))); > > /* The first few fields of an FDE. */ > struct dwarf_fde > { > uword length; > sword CIE_delta; > unsigned char pc_begin[]; > } __attribute__ ((packed, aligned (__alignof__ (void *)))); > > which indicates that CIE/FDE should be aligned at the pointer size. > > PR libgcc/27576 > * crtstuff.c (__EH_FRAME_BEGIN__): Aligned to pointer size. OK. Though it's unclear how important this is in practice. jeff
diff --git a/libgcc/crtstuff.c b/libgcc/crtstuff.c index b98b86a5a88..b0d0062ad5b 100644 --- a/libgcc/crtstuff.c +++ b/libgcc/crtstuff.c @@ -261,7 +261,8 @@ STATIC func_ptr __DTOR_LIST__[1] /* Stick a label at the beginning of the frame unwind info so we can register and deregister it with the exception handling library code. */ STATIC EH_FRAME_SECTION_CONST char __EH_FRAME_BEGIN__[] - __attribute__((section(__LIBGCC_EH_FRAME_SECTION_NAME__), aligned(4))) + __attribute__((section(__LIBGCC_EH_FRAME_SECTION_NAME__), + aligned(__alignof__ (void *)))) = { }; #endif /* USE_EH_FRAME_REGISTRY */