This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[GOLD][PATCH] exempt ARM from test initpri3b


Hi Ian,

    This patch make the test initpri3b a no-op for the ARM target.
The test uses the --no-ctors-in-init-array option.  This test cannot
pass on ARM target because it does not use .ctors and .dtors sections.
 The function  __do_global_ctors_aux() in crtBegin*.o does not check
the constructor on ARM because all constructors should be in the
.init_array section.

#ifdef INIT_ARRAY_SECTION_ASM_OP

/* If we are using .init_array, there is nothing to do.  */

#elif defined(INIT_SECTION_ASM_OP)

#ifdef OBJECT_FORMAT_ELF
static void __attribute__((used))
__do_global_ctors_aux (void)
{
  func_ptr *p;
  for (p = __CTOR_END__ - 1; *p != (func_ptr) -1; p--)
    (*p) ();
}

The macro  INIT_ARRAY_SECTION_ASM_OP is defined in gcc/config/arm/bpabi.h:

/* The BPABI specifies the use of .{init,fini}_array.  Therefore, we
   do not want GCC to put anything into the .{init,fini} sections.  */
#undef INIT_SECTION_ASM_OP
#undef FINI_SECTION_ASM_OP
#define INIT_ARRAY_SECTION_ASM_OP ARM_EABI_CTORS_SECTION_OP
#define FINI_ARRAY_SECTION_ASM_OP ARM_EABI_DTORS_SECTION_OP


-Doug

-----------------------------------------------

2012-03-16  Doug Kwan  <dougkwan@google.com>

        * testsuite/Makefile.am (initpri3b_CFLAGS): New.
        * testsuite/Makefile.in: Regenerate.
        * testsuite/initpri3.c: Skip check for ARM target if
        --no-ctors-in-init-array linker option is used.

Attachment: patch.txt
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]