Comment 5 for bug 1902760

Revision history for this message
In , Hjl-tools (hjl-tools) wrote :

[hjl@gnu-cfl-2 pr26262]$ cat pr26262a.c
#include <stdio.h>

int counter;
extern void foo (void);
extern void bar (void);
extern void xxx (void);

int
main(void)
{
  bar ();
  foo ();
  xxx ();
  if (counter == 1)
    printf ("PASS\n");
  return 0;
}
[hjl@gnu-cfl-2 pr26262]$ cat pr26262b.c
__attribute__ ((noinline))
void
bar (void)
{
}
[hjl@gnu-cfl-2 pr26262]$ cat pr26262c.c
#include <stdlib.h>

extern int counter;

void
foo (void)
{
  counter++;
}

__attribute__((weak))
void
bar (void)
{
  abort ();
}
[hjl@gnu-cfl-2 pr26262]$ cat pr26262d.c
extern void bar (void);
void
xxx (void)
{
  bar ();
}
[hjl@gnu-cfl-2 pr26262]$ make
gcc -O2 -flto -c -o pr26262a.o pr26262a.c
gcc -O2 -flto -c -o pr26262b.o pr26262b.c
gcc -O2 -c -o pr26262c.o pr26262c.c
gcc -O2 -c -o pr26262d.o pr26262d.c
gcc -fuse-ld=bfd -O2 -o x pr26262a.o pr26262b.o pr26262c.o pr26262d.o
./x
make: *** [Makefile:11: all] Aborted (core dumped)
[hjl@gnu-cfl-2 pr26262]$