On Fri, 12 Jul 2019 at 08:06, Richard Sandiford <richard.sandif...@arm.com> wrote: > > Christophe Lyon <christophe.l...@st.com> writes: > > In FDPIC, we need to make sure __do_global_dtors_aux and frame_dummy > > are referenced by their address, not by pointers to the function > > descriptors. > > > > 2019-XX-XX Christophe Lyon <christophe.l...@st.com> > > Mickaël Guêné <mickael.gu...@st.com> > > > > * libgcc/crtstuff.c: Add support for FDPIC. > > > > Change-Id: I0bc4b1232fbf3c69068fb23a1b9cafc895d141b1 > > > > diff --git a/libgcc/crtstuff.c b/libgcc/crtstuff.c > > index 4927a9f..159b461 100644 > > --- a/libgcc/crtstuff.c > > +++ b/libgcc/crtstuff.c > > @@ -429,9 +429,18 @@ __do_global_dtors_aux (void) > > #ifdef FINI_SECTION_ASM_OP > > CRT_CALL_STATIC_FUNCTION (FINI_SECTION_ASM_OP, __do_global_dtors_aux) > > #elif defined (FINI_ARRAY_SECTION_ASM_OP) > > +#if defined(__FDPIC__) > > +__asm__( > > + " .section .fini_array\n" > > + " .align 2\n" > > + " .word __do_global_dtors_aux\n" > > +); > > +asm (TEXT_SECTION_ASM_OP); > > +#else /* defined(__FDPIC__) */ > > static func_ptr __do_global_dtors_aux_fini_array_entry[] > > __attribute__ ((__used__, section(".fini_array"), > > aligned(sizeof(func_ptr)))) > > = { __do_global_dtors_aux }; > > +#endif /* defined(__FDPIC__) */ > > #else /* !FINI_SECTION_ASM_OP && !FINI_ARRAY_SECTION_ASM_OP */ > > static void __attribute__((used)) > > __do_global_dtors_aux_1 (void) > > It'd be good to avoid hard-coding the pointer size. Would it work to do: > > __asm__("\t.equ\.t__do_global_dtors_aux_alias, __do_global_dtors_aux\n"); > extern char __do_global_dtors_aux_alias; > static void *__do_global_dtors_aux_fini_array_entry[] > __attribute__ ((__used__, section(".fini_array"), aligned(sizeof(void *)))) > = { &__do_global_dtors_aux_alias }; > > ? Similarly for the init_array. >
I'll take a look, thanks. > AFAICT this and 02/21 are the only patches that aren't Arm-specific, > is that right? Yes for compiler/libs changes. There are also testsuite changes that potentially include other targets in patches 16,17,18. Thanks, Christophe > Thanks, > Richard