5b2af7dd40
GCC 5 will fold symbol address comparison, assuming each symbol has a different address, which leads to abort. We should use separate functions to compare symbol address. PR gold/18663 * testsuite/Makefile.am (script_test_1_SOURCES): Set to script_test_1a.cc script_test_1b.cc. (script_test_11_r.o): Replace script_test_11.o with script_test_11a.o script_test_11b.o. (script_test_11.o): Removed. (script_test_11a.o): New. (script_test_11b.o): Likewise. * testsuite/Makefile.in: Regenerated. * testsuite/script_test_1.h: New file. * testsuite/script_test_1b.cc: Likewise. * testsuite/script_test_11.h: Likewise. * testsuite/script_test_11b.c: Likewise. * testsuite/script_test_1.cc: Renamed to ... * testsuite/script_test_1a.cc: This. Include "script_test_1.h". (main): Call check_int and check_ptr. * testsuite/script_test_11.c: Renamed to ... * testsuite/script_test_11a.c: This. Include "script_test_11.h". (main): Call ptr_equal.
19 lines
400 B
C
19 lines
400 B
C
#include "script_test_11.h"
|
|
|
|
static unsigned int buffer1[256] __attribute((used));
|
|
static unsigned int buffer2[256] __attribute((used)) = { 1 };
|
|
|
|
unsigned int foo __attribute__((section(".foo")));
|
|
extern char __foo_start;
|
|
extern char __foo_end;
|
|
|
|
int
|
|
main (void)
|
|
{
|
|
if (&__foo_end - &__foo_start != sizeof(foo))
|
|
return 1;
|
|
if (!ptr_equal(&__foo_start, (char *)&foo))
|
|
return 2;
|
|
return 0;
|
|
}
|